官僚 / 账单
此包已弃用,不再维护。未建议替代包。
创建和格式化发票的数据类型
2.1.0
2019-12-15 13:00 UTC
Requires
- php: >=7.1
- byrokrat/amount: ^2
- byrokrat/banking: ^2
- byrokrat/checkdigit: ^2
- byrokrat/id: ^2
- setasign/fpdf: ~1.7.0
Requires (Dev)
- hanneskod/readme-tester: 1.0-beta.3
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2019-12-15 13:13:21 UTC
README
弃用!此包已停用,将不再更新。
账单
创建和格式化发票的数据类型。
安装
composer require byrokrat/billing
使用
使用 Invoices
创建发票,该发票使用 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();
实现您自己的账单和代理商
账单使用以接口为中心的设计
Billable
代表可购买的商品。AgentInterface
代表销售或购买方。
Item
和 Agent
提供了这些接口的简单实现,但您当然可以提供自己的实现并按需扩展接口。
API
InvoiceBuilder
方法签名 | 描述 |
---|---|
setSerial(string $serial): self | 设置发票序列号 |
setSeller(AgentInterface $seller): self |
设置卖家 |
setBuyer(AgentInterface $buyer): self |
设置买家 |
setOcr(string $ocr): self | 设置发票参考号 |
generateOcr(): self | 从序列号生成发票参考号 |
addItem(Billable $billable): self |
将账单添加到发票 |
setBillDate(DateTimeInterface $date): self |
设置发票创建日期 |
setExpiresAfter(int $nrOfDays): self | 设置发票到期前的天数 |
setDeduction(Amount $deduction): self |
设置扣除(预付款金额) |
setAttribute(string $key, $value): self | 设置由键定义的属性 |
buildInvoice(): Invoice |
构建发票 |
Invoice
方法签名 | 描述 |
---|---|
getSerial(): string | 获取发票序列号 |
getSeller(): AgentInterface |
获取已注册的卖家 |
getBuyer(): AgentInterface |
获取已注册的买家 |
getOcr(): string | 获取发票参考号 |
getItems(): ItemBasket |
获取商品篮 |
getInvoiceTotal(): Amount |
获取收费金额(含增值税) |
getBillDate(): DateTimeInterface |
获取发票创建日期 |
getExpiresAfter(): int | 获取发票到期前的天数 |
getExpirationDate(): DateTimeInterface |
获取发票到期日期 |
getDeduction(): Amount |
获取扣除的预付款金额 |
getAttribute(string $key, $default = ''): mixed | 获取属性或未设置时返回默认值 |
getAttributes(): array | 获取所有已加载的属性 |
ItemBasket
方法签名 | 描述 |
---|---|
getIterator(): Traversable |
遍历 ItemEnvelope 对象 |
getNrOfItems(): int | 获取篮中的商品数量 |
getNrOfUnits(): int | 获取篮中的单位数量(每个商品可能包含多个单位) |
getTotalUnitCost(): Amount |
获取所有商品的总成本(不含增值税) |
getTotalVatCost(): Amount |
获取所有商品的总增值税成本 |
getTotalCost(): Amount |
获取所有商品的总成本(含增值税) |
getVatRates(): array | 获取非零增值税率的单位总成本和增值税总成本 |