/** * Creates a transaction * * @param string $transactionDate * @param float $premium * @param float $insuranceNetAmount * @param int|null $previousId * @return bool */ protected function createTransaction($transactionDate, $premium, $insuranceNetAmount, $previousId = null) { $product = $this->container->get('rrp.legacy.datasource.product'); $productData = $product->getProductByName($this->appData->getProductName()); $ipt = round($premium * $this->iptPercent / 100.0, 2); $this->transData->setId(0)->setPreviousId($previousId)->setEnquiryId(0)->setAmount($premium + $ipt)->setStatusId($this->transStatusLive)->setInsuranceNetAmount($insuranceNetAmount)->setTransactionDate($transactionDate)->setTermId($this->termId)->setMtaId($this->mtaId); $transId = $this->transaction->createTransaction($this->transData); $this->tsData->setTransId($transId)->setEnquiryId(0)->setProductId($productData->key)->setAgentTypeId(0)->setDealAgentTypeId(0)->setGuarantor(0)->setBand($this->band)->setDuration($this->appData->getPolicyLength())->setRunningAmount($premium + $ipt)->setInsurance($insuranceNetAmount)->setIpt($ipt)->setIncome($premium - $insuranceNetAmount)->setInvoiced(0)->setTransDate($transactionDate); if ($previousId) { $this->tsData->setStatusChangeDate($this->currentDateAt->format('Y-m-d')); } $this->transactionAmount += $premium + $ipt; return $this->transactionSupport->createTransactionSupport($this->tsData); }
/** * Gets the latest transaction record for the given term Id * * @param int $termId * @param int|null $month * @param int|null $year * @return Model_Core_Transaction|null */ public function getLatestTransactionByTermId($termId, $month = null, $year = null) { $select = $this->select(); $select->where('termId = ?', $termId)->where('statusId = ?', Model_Core_Transaction::STATUS_LIVE); if ($month && $year) { $select->where('YEAR(TransactionDate) = ?', $year)->where('MONTH(TransactionDate) = ?', $month); } else { if ($month) { $select->where('MONTH(TransactionDate) = ?', $month); } else { $select->order('ID DESC'); } } $select->limit(1); $row = $this->fetchRow($select); // There should only be a single transaction with the given id if (count($row) == 1) { $transaction = new Model_Core_Transaction(); $transaction->setId($row->ID)->setPreviousId($row->PreviousID)->setEnquiryId($row->EnquiryID)->setAmount($row->Amount)->setStatusId($row->StatusID)->setInvoiceId($row->InvoiceID)->setCreditNoteId($row->CreditNoteID)->setInsuranceNetAmount($row->InsuranceNetAmount)->setTransactionDate($row->TransactionDate); return $transaction; } return null; }