billing calculations

1.0.4 2021-02-17 14:50 UTC

This package is auto-updated.

Last update: 2024-05-17 21:57:53 UTC


README

A billing for PHP.

Installation

The library vladyslav.levenets/billing is installable via Composer:

composer require vladyslav.levenets/billing

Requirements

This library requires PHP 7.1 or later. This library requires brick/money 0.5.0 or later.

Monetary

To create Monetary, call the init() factory method or initialize as 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

To create Amount, call the init() factory method or initialize as 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

To create Discount, call the init() factory method or initialize as 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

To create Vat, call the init() factory method or initialize as 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

To create Line, call the init() factory method or initialize as 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

To create Billing, call the init() factory method or initialize as 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