vladyslav.levenets / billing
1.0.4
2021-02-17 14:50 UTC
Requires
- php: ^7.1
- brick/money: ^0.5.0
README
PHP计费工具。
安装
库 vladyslav.levenets/billing 可以通过 Composer 安装
composer require vladyslav.levenets/billing
要求
此库需要PHP 7.1或更高版本。此库需要brick/money 0.5.0或更高版本。
货币
要创建 Monetary,请调用 init() 工厂方法或以 new Monetary() 的形式初始化
use Billing\Line\Monetary;
$money = Monetary::init(/*\Billing\Line\Monetary|\Brick\Money\Money|float*/10/*, 'EUR'*/);
$money->getValue(); // \Brick\Money\Money
$money->format(/*pt_PT*/); // (string)10.00 €
$money->plus(/*\Billing\Line\Monetary|\Brick\Money\Money|float*/$money); // new \Billing\Line\Monetary
$money->minus(/*\Billing\Line\Monetary|\Brick\Money\Money|float*/$money); // new \Billing\Line\Monetary
$money->multipliedBy(/*\Billing\Line\Monetary|\Brick\Money\Money|float*/$money); // new \Billing\Line\Monetary
$money->dividedBy(/*\Billing\Line\Monetary|\Brick\Money\Money|float*/$money); // new \Billing\Line\Monetary
$money->apply(/*\Billing\Line\Amount|\Billing\Line\Discount|\Billing\Line\Vat*/$var); // new \Billing\Line\Monetary
$money->list(/*\Billing\Line\Discount|\Billing\Line\Vat*/$var); // new \Billing\Line\Monetary[]
金额
要创建 Amount,请调用 init() 工厂方法或以 new Amount() 的形式初始化
use Billing\Line\Amount;
$amount = Amount::init(/*\Billing\Line\Amount|float*/10);
$amount->getAmount(); // (float)10
$amount->apply(/*\Brick\Money\Money*/$money); // new \Brick\Money\Money
折扣
要创建 Discount,请调用 init() 工厂方法或以 new Discount() 的形式初始化
use Billing\Line\Discount;
$discount = Discount::init(/*\Billing\Line\Discount|\Billing\Line\Monetary|\Brick\Money\Money|float*/50);
$discount->getDiscount(/*\Brick\Money\Money|null*/$money); // \Brick\Money\Money|null
$discount->getValue() // \Brick\Money\Money|float|null
$discount->apply(/*\Brick\Money\Money*/$money); // new \Brick\Money\Money
$discount->list(/*\Brick\Money\Money*/$money); // new \Brick\Money\Money[]
增值税
要创建 Vat,请调用 init() 工厂方法或以 new Vat() 的形式初始化
use Billing\Line\Vat;
$vat = Vat::init(/*\Billing\Line\Vat|float*/10/*, false*/);
$vat->setInValue(/*false*/); // new \Billing\Line\Vat
$vat->getVat(/*\Brick\Money\Money|null*/$money) // new \Brick\Money\Money|null
$vat->getValue() // float|null
$vat->getInValue() // bool|null
$vat->apply(/*\Brick\Money\Money*/$money); // new \Brick\Money\Money
$vat->list(/*\Brick\Money\Money*/$money); // new \Brick\Money\Money[]
行
要创建 Line,请调用 init() 工厂方法或以 new Line() 的形式初始化
use Billing\Line;
$data = [
'price' => $price,
'amount' => /*\Billing\Line\Amount|float|null*/$amount,
'discount' => /*\Billing\Line\Discount|float|null*/$discount // or [$discount1, $discount2],
'vat' => /*\Billing\Line\Vat|float|null*/$vat,
//... => ...
];
$line = Line::init($data);
$line->update($data); // \Billing\Line
$line->getData() // $data
$line->setExtraDiscounts(/*\Billing\Line\Discount|float|null*/$discount/* or [$discount1, $discount2]*/); // \Billing\Line
$line->getUnitPrice() // \Billing\Line\Monetary
$line->getPrice() // \Billing\Line\Monetary
$line->getAmount() // \Billing\Line\Amount
$line->getDiscount() // \Billing\Line\Monetary
$line->getIlliquidPrice() // \Billing\Line\Monetary
$line->getExtraDiscount() // \Billing\Line\Monetary
$line->getPriceWithoutVat() // \Billing\Line\Monetary
$line->getVat() // \Billing\Line\Monetary
$line->getTotal() // \Billing\Line\Monetary
计费
要创建 Billing,请调用 init() 工厂方法或以 new Billing() 的形式初始化
use Billing\Billing;
$billing = Billing::init(/*\Billing\Line|null*/$line/* or [$line1, $line2]*/);
$billing->setExtraDiscounts($discount/* or [$discount1, $discount2]*/); // \Billing\Billing
$billing->getLine(/*int|null*/$id); // \Billing\Line[]|\Billing\Line|null
$billing->addLine(/*\Billing\Line*/$line); // \Billing\Billing
$billing->deleteLine(); // \Billing\Billing
$billing->getVatList(); // array(vat_percent => [price(\Billing\Line\Monetary), vat(\Billing\Line\Monetary), total(\Billing\Line\Monetary)])
$billing->getPrice() // \Billing\Line\Monetary
$billing->getDiscount() // \Billing\Line\Monetary
$billing->getIlliquidPrice() // \Billing\Line\Monetary
$billing->getExtraDiscount() // \Billing\Line\Monetary
$billing->getPriceWithoutVat() // \Billing\Line\Monetary
$billing->getVat() // \Billing\Line\Monetary
$billing->getTotal() // \Billing\Line\Monetary