Money, Currency and Accounting

3.1.1 2020-10-19 23:06 UTC

This package is auto-updated.

Last update: 2024-04-20 12:26:19 UTC


README

Build Status Scrutinizer Code Quality Code Coverage

Provides models for representing Money, Currency and an Accountant performing arithmetic on Money without causing rounding errors

The Models

Currency

$usd = new Assimtech\Fiat\Currency('USD');
echo (string)$usd; // Outputs USD
echo $usd->getFractionDigits(); // Outputs 2

$jpy = new Assimtech\Fiat\Currency('JPY');
echo $jpy->getFractionDigits(); // Outputs 0

$iqd = new Assimtech\Fiat\Currency('IQD');
echo $iqd->getFractionDigits(); // Outputs 3

Money

// assuming Locale is en-US
$money = new Assimtech\Fiat\Money(pi(), $usd);
echo (string)$money; // Outputs 3.14 USD
echo $money->getFormattedAmount(); // Outputs 3.14
echo $money->getFormattedAmount('de-DE'); // Outputs 3,14

The Accountant

$accountant = new Assimtech\Fiat\Accountant();

$threeUSD = $accountant->add($oneUSD, $twoUSD);

$sixUSD = $accountant->subtract($tenUSD, $fourUSD);

$eightUSD = $accountant->multiply($fourUSD, 2);

$threeUSD = $accountant->divide($nineUSD, 3);

$sixUSD = $accountant->sum([
    $oneUSD,
    $twoUSD,
    $threeUSD,
]);

Twig extension

The accountant is also exposed as a Twig extension

{{ add_money(money1, money2) }}

{{ subtract_money(money1, money2) }}

{{ multiply_money(money, fraction) }}

{{ divide_money(money, fraction) }}

{{ sum_money([ money1, money2, money3 ]) }}

Frameworks

Please see FiatBundle for integration with Symfony 4,5