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>
Esempio n. 4
0
    }
    ?>
</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>
Esempio n. 5
0
                        <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>