NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

TaxRate počíta základ, daň a sumu s daňou jedným presným zlomkom a jedným zaokrúhlením na volanie — bez float delenia, bez prevodu na int:

use RoundlyConsulting\Money\Tax\TaxRate;

$vat   = TaxRate::fromBasisPoints(2000, 'VAT');   // 20 %
$net   = Money::ofMajor('10', 'EUR');
$gross = Money::ofMajor('12', 'EUR');

$vat->taxOnNet($net);         // 2.00 EUR
$vat->grossFromNet($net);     // 12.00 EUR
$vat->netFromGross($gross);   // 10.00 EUR
$vat->taxInGross($gross);     // 2.00 EUR

$line = TaxRate::of('19')->breakdownFromGross(Money::ofMajor('10', 'EUR'));
$line->net;     // 8.40 EUR
$line->tax;     // 1.60 EUR
$line->gross;   // 10.00 EUR — net + tax === gross, always

TaxRate::of('8.875', 'Sales tax');   // precise to a thousandth of a percent
TaxRate::zero();
  • TaxRate::of($percent, ?$label), TaxRate::fromBasisPoints($bp, ?$label), TaxRate::zero().
  • taxOnNet() a grossFromNet() — pre ceny bez dane.
  • netFromGross() a taxInGross() — pre ceny s daňou.
  • breakdownFromNet() zaokrúhli daň a sumu s daňou dopočíta; breakdownFromGross() zaokrúhli základ a daň dopočíta.

V oboch smeroch platí presne základ + daň === suma s daňou: jedna strana sa zaokrúhli, druhá sa dopočíta odčítaním. Balík to overuje property testami na 10 000 náhodných sumách vo všetkých ôsmich režimoch zaokrúhľovania.

Súhrny pre faktúry

use RoundlyConsulting\Money\Tax\TaxSummary;

$vat     = TaxRate::of(20, 'VAT');
$reduced = TaxRate::of(10, 'Reduced');

$summary = TaxSummary::of(
    $vat->breakdownFromNet(Money::ofMajor('10', 'EUR')),
    $vat->breakdownFromNet(Money::ofMajor('25', 'EUR')),
    $reduced->breakdownFromNet(Money::ofMajor('8', 'EUR')),
);

$summary->perRate();   // list<TaxBreakdown>, one per rate, sorted by rate:
                       // 10 %: 8.00 + 0.80 = 8.80 · 20 %: 35.00 + 7.00 = 42.00
$summary->net();       // 43.00 EUR
$summary->tax();       // 7.80 EUR
$summary->gross();     // 50.80 EUR

TaxSummary agreguje riadky bez opätovného zaokrúhľovania. Či sa daň zaokrúhľuje po riadkoch alebo z celku, je vaše rozhodnutie — preto existujú obe možnosti. Zmiešané meny vyhodia CurrencyMismatch.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.