function createPaymentSchedule(&$trans_obj, $payment_mode, $bSeparateTaxesFromFees, $bIsUpdate, $admin) { $arrayDivisor = array(TRANS_PAYMENT_MODE_MONTHLY => 12, TRANS_PAYMENT_MODE_QUARTERLY => 4, TRANS_PAYMENT_MODE_SEMIANNUAL => 2, TRANS_PAYMENT_MODE_ANNUAL => 1); $divisor = $arrayDivisor[$payment_mode]; if ($divisor == "") { $this->setError(-1, "Payment mode invalid {$payment_mode}!"); $this->debug("Payment mode invalid {$payment_mode}!"); return -1; } $this->debug("createPaymentSchedule( &{$trans_obj}, {$payment_mode}, {$bSeparateTaxesFromFees}, {$bIsUpdate}, {$admin} )"); $clsPayables = new EBPLSTransactionFee($this->m_dbLink, false); $i = 0; if ($bSeparateTaxesFromFees) { // group all fee records payments as one payment $fee_records = $clsPayables->listFee($trans_obj->getData(TRANS_ID), array(PAYABLE_TYPE_FEE, PAYABLE_TYPE_TAX)); $i = $this->_createPaymentSchedule($trans_obj, $payment_mode, $fee_records, 1, $bIsUpdate); $this->debug("created payment sched for fees {$i}"); $payable_amount = 0; if (is_array($fee_records) && count($fee_records)) { for ($fee_index = 0; $fee_index < count($fee_records); $fee_index++) { $payable_amount += $fee_records[$fee_index]->getData(TF_TAX_TOTAL_AMOUNT_DUE); } } // distribute tax payments to the opted payment schedule $tax_records = $clsPayables->listFee($trans_obj->getData(TRANS_ID), PAYABLE_TYPE_BUSTAX); $i += $this->_createPaymentSchedule($trans_obj, $payment_mode, $tax_records, $divisor, $bIsUpdate); if (is_array($tax_records) && count($tax_records)) { for ($fee_index = 0; $fee_index < count($tax_records); $fee_index++) { $payable_amount += $tax_records[$fee_index]->getData(TF_TAX_TOTAL_AMOUNT_DUE); } } $this->debug("created payment sched for taxes {$i}, pay = {$payable_amount}"); } else { // distribute taxes/fees payments to the opted payment schedule $fee_records = $clsPayables->listFee($trans_obj->getData(TRANS_ID)); $i = $this->_createPaymentSchedule($trans_obj, $payment_mode, $fee_records, $divisor, $bIsUpdate); $payable_amount = 0; if (is_array($fee_records) && count($fee_records)) { for ($fee_index = 0; $fee_index < count($fee_records); $fee_index++) { $payable_amount += $fee_records[$fee_index]->getData(TF_TAX_TOTAL_AMOUNT_DUE); } } $this->debug("created payment sched for taxes/fees {$i}, pay = {$payable_amount}"); } if ($i > 0) { $this->debug("_setTransPaymentModeINTERNAL {$payable_amount}"); // update parent table payment mode and payment mode $trans_obj->_setTransPaymentModeINTERNAL($payment_mode, $payable_amount, NULL, $bSeparateTaxesFromFees, $admin); } return $i; }
function getFeesList() { if (!is_numeric($this->getData(TRANS_ID))) { $this->debug("getFeesListt Failed, transaction not loaded, load by invoking loadTransaction."); $this->setError(-1, "getFeesListt Failed, transaction not loaded, load by invoking loadTransaction."); return -1; } $clsTransReq = new EBPLSTransactionFee($this->m_dbLink); $fees_list = $clsTransReq->listFee($this->getData(TRANS_ID)); return $fees_list; }