/** * Creates a Finished Transaction. * * @param $badgerDb object The DB object. * @param $account object The Account object who created this Transaction. * @param $data mixed An associative array with the values out of the DB OR the id of the Transaction. * @param $title string The title of the Transaction. * @param $amount object The Amount object with the amount of this Transaction. * @param $description string The description of the Transaction. * @param $valutaDate object The Date object with the valuta date of the Transaction. * @param $transactionPartner string The transaction partner of the Transaction * @param $outsideCapital boolean The origin of the Transaction. * @param $type string The type of the Transaction. */ function __construct(&$badgerDb, &$account, $data, $title = null, $amount = null, $description = null, $valutaDate = null, $transactionPartner = null, $category = null, $outsideCapital = null, $exceptional = null, $periodical = null, $sourcePlannedTransaction = null, $type = 'FinishedTransaction', $transferalTransaction = null) { $this->badgerDb = $badgerDb; $this->account = $account; if (is_array($data)) { $this->id = $data['finished_transaction_id']; $this->title = $data['title']; $this->description = $data['description']; $this->amount = new Amount($data['amount']); $this->outsideCapital = $data['outside_capital']; $this->transactionPartner = $data['transaction_partner']; if ($data['category_id']) { $cm = new CategoryManager($badgerDb); $this->category = $cm->getCategoryById($data['category_id']); } if ($data['valuta_date']) { $this->valutaDate = new Date($data['valuta_date']); } $this->exceptional = $data['exceptional']; $this->periodical = $data['periodical']; $this->balance = new Amount($data['balance']); $this->transferalSource = $data['transferal_source']; $planned = false; if ($data['planned_transaction_id']) { try { $this->sourcePlannedTransaction = $account->getPlannedTransactionById($data['planned_transaction_id']); $planned = true; } catch (BadgerException $ex) { $this->sourcePlannedTransaction = null; } } $transferal = false; if ($data['transferal_transaction_id']) { if (!is_null($title) && $data['transferal_transaction_id'] == $title->getId()) { $this->transferalTransaction = $title; $transferl = true; } else { $accountManager = new AccountManager($badgerDb); try { $transferalAccount = $accountManager->getAccountByFinishedTransactionId($data['transferal_transaction_id']); $this->transferalTransaction = $transferalAccount->getFinishedTransactionById($data['transferal_transaction_id'], $this); $transferal = true; } catch (BadgerException $ex) { $this->transferalTransaction = null; } } } $this->type = ($planned ? 'Planned' : 'Finished') . ($transferal ? 'Transferal' : '') . 'Transaction'; } else { $this->id = $data; $this->title = $title; $this->description = $description; $this->valutaDate = $valutaDate; $this->amount = $amount; $this->outsideCapital = $outsideCapital; $this->transactionPartner = $transactionPartner; $this->category = $category; $this->exceptional = $exceptional; $this->periodical = $periodical; $this->sourcePlannedTransaction = $sourcePlannedTransaction; $this->balance = null; $this->type = $type; $this->transferalTransaction = $transferalTransaction; $this->transferalSource = null; } //if database output given }