Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 /**
  * 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;
 }
Exemplo n.º 3
0
 /**
  * Write transaction to output
  */
 public function writeTransaction(Transaction $transaction, Output $output)
 {
     $output->writeln("\t#TRANS %s {} %s", $transaction->getAccount()->getId(), (string) $transaction->getAmount());
 }