/** * 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; }