/**
  * Gets a Transaction Support record
  *
  * @param int $id
  * @return Model_Core_TransactionSupport|null
  */
 public function getTransactionSupport($id)
 {
     $select = $this->select();
     $select->where('TransID = ?', $id);
     $row = $this->fetchRow($select);
     // There should only be a single transactionSupport with the given id
     if (count($row) == 1) {
         $transactionSupport = new Model_Core_TransactionSupport();
         $transactionSupport->setTransId($row->TransID)->setEnquiryId($row->EnquiryID)->setProductId($row->ProductID)->setAgentTypeId($row->AgentTypeID)->setDealAgentTypeId($row->DealAgentTypeID)->setGuarantor($row->Guarantor)->setBand($row->Band)->setDuration($row->Duration)->setRenewal($row->Renewal)->setRunningAmount($row->RunningAmount)->setInsurance($row->Insurance)->setIpt($row->IPT)->setIncome($row->Income)->setInvoiced($row->Invoiced)->setTransdate($row->Transdate)->setStatusChangeDate($row->StatusChangeDate);
         return $transactionSupport;
     }
     return null;
 }
 /**
  * Cancels a transaction
  *
  * @param \DateTime $transactionAt
  * @return null|int
  */
 protected function cancelTransaction($transactionAt)
 {
     $monthNo = $transactionAt->format('m');
     $year = $transactionAt->format('Y');
     $this->transData = $this->transaction->getLatestTransactionByTermId($this->termId, $monthNo, $year);
     if ($this->transData) {
         if ($this->transData->getInvoiceID() > 0) {
             $this->transactionAmount += $this->transData->getAmount();
         }
         $this->transData->setStatusId($this->transStatusCancelled);
         $this->transaction->updateTransaction($this->transData);
         $previousId = $this->transData->getId();
         $this->tsData = $this->transactionSupport->getTransactionSupport($previousId);
         $this->tsData->setTransDate($transactionAt->format('Y-m-d'))->setBand($this->band);
         $this->transactionSupport->updateTransactionSupport($this->tsData);
         return $previousId;
     }
     return null;
 }