public function AutomatedExecutionHandler() { AutomatedTransactionCustomers::model()->deleteAll(); $modelCredits = CustomersCredit::model()->findAll(array('order' => 'credited_date')); foreach (SalesInvoices::model()->findAll() as $indSalesInv) { $indSalesInv->credited = 0; $indSalesInv->save(); } foreach ($modelCredits as $indCredits) { $modelInvoices = SalesInvoices::model()->findAll(array('condition' => 'customer_id=:customer_id', 'params' => array(':customer_id' => $indCredits->customer_id))); $temp_ind_credit = $indCredits->amount; while ($temp_ind_credit > 0) { foreach ($modelInvoices as $indInvoices) { $actualBalance = $indInvoices->balance - $indInvoices->credited; if ($actualBalance > 0) { $transactionModel = new AutomatedTransactionCustomers(); if ($temp_ind_credit >= $actualBalance) { $indInvoices->credited += $actualBalance; $temp_ind_credit -= $actualBalance; $amount = $actualBalance; } else { $indInvoices->credited += $temp_ind_credit; $temp_ind_credit = 0; $amount = $temp_ind_credit; } $indInvoices->save(); $transactionModel->received_date = $indCredits->credited_date; $transactionModel->customer_id = $indCredits->customer_id; $transactionModel->amount = $amount; $transactionModel->from_sales_invoice_id = $indCredits->credited_from; $transactionModel->to_sales_invoice_id = $indInvoices->id; $transactionModel->save(); } } } } }
public function actionAutomatedTransaction($id, $mode) { $salesInv = SalesInvoices::model()->findByPk($id); $customersCredit = CustomersCredit::model()->find(array('condition' => 'credited_from=:invoice', 'params' => array(':invoice' => $id))); $remainingCredit = $salesInv->credited - $salesInv->balance; if ($remainingCredit > 0) { $salesInv->credited = $salesInv->balance; $modelsCreditedFrom = AutomatedTransactionCustomers::model()->findAll(array('condition' => 'to_sales_invoice_id=:invoice_id', 'params' => array(':invoice_id' => $salesInv->id))); $creditedModels = array(); foreach ($modelsCreditedFrom as $indCredited) { $i = 0; $creditAssigned = $indCredited->amount; $creditedModel = CustomersCredit::model()->find(array('condition' => 'credited_from=:invoice', 'params' => array(':invoice' => $indCredited->from_sales_invoice_id))); if ($remainingCredit >= $creditAssigned) { $indCredited->delete(); $creditedModel->credit_assigned -= $creditAssigned; $creditedModel->save(); $remainingCredit -= $creditAssigned; $creditedModels[$i] = $creditedModel; $i++; } else { $indCredited->amount -= $remainingCredit; $creditedModel->credit_assigned -= $remainingCredit; $creditedModel->save(); $indCredited->save(); $creditedModels[$i] = $creditedModel; break; } } $salesInv->save(); foreach ($creditedModels as $indvCredited) { $this->TransferringCredit($indvCredited); } } else { if ($remainingCredit < 0) { $remainingCredit = -1 * $remainingCredit; $this->GetCreditfor($salesInv, $remainingCredit); } } if (isset($customersCredit)) { $creditRemainingOfThisModel = $customersCredit->amount - $customersCredit->credit_assigned; if ($creditRemainingOfThisModel > 0) { $this->TransferringCredit($customersCredit); } else { if ($creditRemainingOfThisModel < 0) { $overAssignedCredit = -1 * $creditRemainingOfThisModel; $creditTakers = AutomatedTransactionCustomers::model()->findAll(array('condition' => 'from_sales_invoice_id=:invoice', 'params' => array(':invoice' => $customersCredit->credited_from))); $creditTakerInvoices = array(); $i = 0; foreach ($creditTakers as $creditTaker) { if ($overAssignedCredit > 0) { $creditTakerInvoice = SalesInvoices::model()->findByPk($creditTaker->to_sales_invoice_id); if ($creditTaker->amount <= $overAssignedCredit) { $creditDeducted = $creditTaker->amount; $creditTaker->delete(); } else { $creditDeducted = $overAssignedCredit; $creditTaker->amount -= $creditDeducted; $creditTaker->save(); } $creditTakerInvoice->credited -= $creditDeducted; $creditTakerInvoice->save(); $overAssignedCredit -= $creditDeducted; $creditTakerInvoices[$i] = $creditTakerInvoice; $i++; } else { } } } if ($customersCredit->amount == 0) { $customersCredit->delete(); } else { $customersCredit->credit_assigned = $customersCredit->amount; $customersCredit->save(); } foreach ($creditTakerInvoices as $creditTakerInv) { $creditToPay = $creditTakerInv->balance - $creditTakerInv->credited; $this->GetCreditfor($creditTakerInv, $creditToPay); } } } if ($mode == 'delete') { $salesInv->delete(); $this->redirect(array('index')); } $this->redirect(array('view', 'id' => $id)); }
<?php echo $receipt->amount; ?> </td> <td> <?php $balance += $receipt->amount; echo $balance; ?> </td> </tr> <?php } ?> <?php foreach (AutomatedTransactionCustomers::model()->findAll(array('order' => 'received_date', 'condition' => 'customer_id=:customer', 'params' => array(':customer' => $id))) as $receipt) { ?> <tr> <td> </td> <td> </td> <td> <?php echo $receipt->received_date; ?> </td> <td> </td>
} ?> </span> <?php if ($balance >= 0) { echo $balance; } ?> </td> </tr> <?php } ?> <?php foreach (AutomatedTransactionCustomers::model()->findAll(array('condition' => 'to_sales_invoice_id=:invoice', 'params' => array(':invoice' => $id))) as $receipt) { ?> <tr> <td> </td> <td> </td> <td> <?php echo $receipt->received_date; ?> </td> <td> </td>
<td colspan="8"><?php echo $creditRow->credited_date . '- ' . $creditRow->customer->customerName . '-OverPayment on SalesInvoice #' . $salesInv->id . ' transferred to customer credit'; ?> </td> <td></td> <td><?php $total_credit_customerCredit += $creditRow->amount; echo $creditRow->amount; ?> </td> </tr> <?php } foreach (AutomatedTransactionCustomers::model()->findAll(array('condition' => 'received_date>=:start_date AND received_date<=:end_date', 'params' => array(':start_date' => $model->from_date, ':end_date' => $model->to_date))) as $transac) { ?> <tr> <td colspan="8"><?php echo $transac->received_date . '- ' . $transac->customer->customerName . '-Automatic credit allocation to sales invoice #' . $transac->to_sales_invoice_id; ?> </td> <td><?php $total_debit_customerCredit += $transac->amount; echo $transac->amount; ?> </td> <td></td> </tr>