public function addCreditPayment($data) { $this->db->trans_begin(); try { $salesTransactionModel = new Sales_transaction_model(); $salesTransaction = $salesTransactionModel->fetchById($data['salesTransactionId']); $updatedPaidAmount = (double) $data['amount'] + (double) $salesTransaction['totalAmountPaid']; if ($updatedPaidAmount > $salesTransaction['totalPrice']) { throw new Exception('Amount paid will exceed total transaction amount.'); } $creditPaymentModel = new Credit_payment_model(); $creditPaymentModel->customerId = $data['customerId']; $creditPaymentModel->salesTransactionId = $data['salesTransactionId']; $creditPaymentModel->amount = $data['amount']; $creditPaymentModel->insert(); $updateData = array('totalAmountPaid' => $updatedPaidAmount); if ($updatedPaidAmount == $salesTransaction['totalPrice']) { $updateData['isFullyPaid'] = 1; } $this->db->where('salesTransactionId', $data['salesTransactionId']); $this->db->update('SalesTransaction', $updateData); } catch (Exception $e) { $this->db->trans_rollback(); throw new Exception($e->getMessage()); } $this->db->trans_commit(); }
public function fetchDetailed($salesTransactionId) { if (empty($salesTransactionId)) { throw new InvalidArgumentException('salesTransactionId cannot be empty.'); } $salesTransaction = new Sales_transaction_model(); return $salesTransaction->fetchDetailed($salesTransactionId); }