/** * Create a new transaction object * * @param Account $account Account this transaction concerns * @param Dimension[] $dimensions Other dimensions this transaction concerns * @param Currency $amount Transacted amounts * @param \DateTimeInterface $date Date of accounting action * @param string $desc Free text description * @param Amount $quantity Quantity if defined * @param string $sign Signature */ public function createTransaction(Account $account, array $dimensions, Currency $amount, \DateTimeInterface $date = null, string $desc = '', Amount $quantity = null, string $sign = '') : Transaction { $transaction = new Transaction($account, $amount, $quantity, ...$dimensions); if ($date) { $transaction->setDate($date); } if ($desc) { $transaction->setDescription($desc); } if ($sign) { $transaction->setSignature($sign); } return $transaction; }
/** * Add transaction to summary calculations */ public function addToSummary(Transaction $transaction) : self { if (!$this->isInitialized()) { $this->initialize($transaction->getAmount()->subtract($transaction->getAmount())); } $this->balance = $this->balance->add($transaction->getAmount()); if ($transaction->getAmount()->isPositive()) { $this->debit = $this->debit->add($transaction->getAmount()); } else { $this->credit = $this->credit->add($transaction->getAmount()->getAbsolute()); } return $this; }
/** * Write transaction to output */ public function writeTransaction(Transaction $transaction, Output $output) { $output->writeln("\t#TRANS %s {} %s", $transaction->getAccount()->getId(), (string) $transaction->getAmount()); }