Skip to content
This repository has been archived by the owner on Dec 15, 2019. It is now read-only.

byrokrat/billing

Repository files navigation

ABANDONED! This package is discontinued and will not be updated.

Billing

Packagist Version Build Status Quality Score Scrutinizer Coverage

Data types for creating and formatting invoices.

Installation

composer require byrokrat/billing

Usage

Invoices are created using the InvoiceBuilder:

namespace byrokrat\billing;

use byrokrat\amount\Currency\EUR;

// 1 unit of a 100 EUR item with 25% VAT
$item = new Item('Description', new EUR('100'), 1, .25);

$invoice = (new InvoiceBuilder)
    ->setSerial('1')
    ->setSeller(new Agent('Company X'))
    ->setBuyer(new Agent('Mrs Y'))
    ->generateOcr()
    ->addItem($item)
    ->setAttribute('message', 'custom invoice message')
    ->buildInvoice();

// prints 125 (100 EUR plus 25% VAT)
echo $invoice->getInvoiceTotal();

Implementing your own billables and agents

Billing uses an interface centered design:

Item and Agent offers simple implementations of these interfaces, but you may of course provide your own implementations and extend the interfaces as needed.

API

Method signature description
setSerial(string $serial): self Set invoice serial number
setSeller(AgentInterface $seller): self Set seller
setBuyer(AgentInterface $buyer): self Set buyer
setOcr(string $ocr): self Set invoice reference number
generateOcr(): self Generate invoice reference number from serial number
addItem(Billable $billable): self Add billable to invoice
setBillDate(DateTimeInterface $date): self Set date of invoice creation
setExpiresAfter(int $nrOfDays): self Set number of days before invoice expires
setDeduction(Amount $deduction): self Set deduction (amount prepaid)
setAttribute(string $key, $value): self Set attribute defined by key
buildInvoice(): Invoice Build invoice
Method signature description
getSerial(): string Get invoice serial number
getSeller(): AgentInterface Get registered seller
getBuyer(): AgentInterface Get registered buyer
getOcr(): string Get invoice reference number
getItems(): ItemBasket Get item basket
getInvoiceTotal(): Amount Get charged amount (VAT included)
getBillDate(): DateTimeInterface Get date of invoice creation
getExpiresAfter(): int Get number of days before invoice expires
getExpirationDate(): DateTimeInterface Get date when invoice expires
getDeduction(): Amount Get deducted prepaid amound
getAttribute(string $key, $default = ''): mixed Get attribute or default if attribute is not set
getAttributes(): array Get all loaded attributes
Method signature description
getIterator(): Traversable Iterate over ItemEnvelope objects
getNrOfItems(): int Get number of items in basket
getNrOfUnits(): int Get number of units in basket (each item may contain multiple units)
getTotalUnitCost(): Amount Get total cost of all items (VAT excluded)
getTotalVatCost(): Amount Get total VAT cost for all items
getTotalCost(): Amount Get total cost of all items (VAT included)
getVatRates(): array Get unit and vat totals for non-zero vat rates

About

Data types for creating and formatting invoices.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages