计费计算

1.0.4 2021-02-17 14:50 UTC

This package is auto-updated.

Last update: 2024-09-17 22:37:01 UTC


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