| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- <?php
 - 
 - namespace App\ValueObjects;
 - 
 - use App\Utilities\Currency\CurrencyAccessor;
 - use App\Utilities\Currency\CurrencyConverter;
 - 
 - class Money
 - {
 -     private int $amount;
 - 
 -     private string $currencyCode;
 - 
 -     private ?int $convertedAmount = null;
 - 
 -     public function __construct(int $amount, string $currencyCode)
 -     {
 -         $this->amount = $amount;
 -         $this->currencyCode = $currencyCode;
 -     }
 - 
 -     public function getAmount(): int
 -     {
 -         return $this->amount;
 -     }
 - 
 -     public function getCurrencyCode(): string
 -     {
 -         return $this->currencyCode;
 -     }
 - 
 -     public function getEffectiveAmount(): int
 -     {
 -         return $this->convertedAmount ?? $this->amount;
 -     }
 - 
 -     public function getConvertedAmount(): ?int
 -     {
 -         return $this->convertedAmount;
 -     }
 - 
 -     public function getValue(): float
 -     {
 -         return money($this->amount, $this->currencyCode)->getValue();
 -     }
 - 
 -     public function format(): string
 -     {
 -         return money($this->getEffectiveAmount(), $this->getCurrencyCode())->format();
 -     }
 - 
 -     public function formatSimple(): string
 -     {
 -         return money($this->getEffectiveAmount(), $this->getCurrencyCode())->formatSimple();
 -     }
 - 
 -     public function formatWithCode(bool $codeBefore = false): string
 -     {
 -         return money($this->getEffectiveAmount(), $this->getCurrencyCode())->formatWithCode($codeBefore);
 -     }
 - 
 -     public function convert(): self
 -     {
 -         // The journal entry sums are stored in the default currency not the account currency (transaction amounts are stored in the account currency)
 -         $fromCurrency = CurrencyAccessor::getDefaultCurrency();
 -         $toCurrency = $this->currencyCode;
 - 
 -         if ($fromCurrency !== $toCurrency) {
 -             $this->convertedAmount = CurrencyConverter::convertBalance($this->amount, $fromCurrency, $toCurrency);
 -         }
 - 
 -         return $this;
 -     }
 - 
 -     public function __toString(): string
 -     {
 -         return $this->formatSimple();
 -     }
 - }
 
 
  |