官僚/账单

此包已弃用,不再维护。未建议替代包。

创建和格式化发票的数据类型

2.1.0 2019-12-15 13:00 UTC

This package is auto-updated.

Last update: 2019-12-15 13:13:21 UTC


README

弃用!此包已停用,将不再更新。

账单

Packagist Version Build Status Quality Score Scrutinizer Coverage

创建和格式化发票的数据类型。

安装

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();

实现您自己的账单和代理商

账单使用以接口为中心的设计

ItemAgent 提供了这些接口的简单实现,但您当然可以提供自己的实现并按需扩展接口。

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 获取非零增值税率的单位总成本和增值税总成本