Example #1
0
 public function actionLogin()
 {
     if (!Yii::app()->user->isGuest) {
         $this->redirect(array('default/index'));
     }
     $this->pageTitle = 'Login page';
     $model = new LoginForm();
     $model_class_name = get_class($model);
     // collect user input data
     if (isset($_POST[$model_class_name])) {
         $model->attributes = $_POST[$model_class_name];
         $model->_identity = new UserIdentity($model->username, $model->password);
         $model->_identity->user = Users::model()->find('`username`=:t1 OR `email`=:t1', array(':t1' => $model->username));
         if ($model->validate()) {
             if ($model->_identity->login($model->rememberMe)) {
                 if (Controller::$user_level !== UserLevels::LEVEL_MEMBER) {
                     $this->redirect(Yii::app()->getModule('admin')->user->returnUrl);
                 }
                 $this->redirect(Yii::app()->user->returnUrl);
             }
         }
     } else {
         //recover loans overdue
         LoanRepayments::model()->recoverLoans(date('Y') . '-' . date('m') . '-' . date('d'));
     }
     $this->render('login', array('model' => $model));
 }
Example #2
0
</font></td>
                                    <td style="width: 50px; text-align: right"><font size="8"><?php 
                echo $expenditure->amount;
                $netExpenditures = $netExpenditures + $expenditure->amount;
                ?>
</font></td>
                                </tr>

                                <?php 
                if ($member != ContributionsByMembers::PAYMENT_BY_CASH && $member != ContributionsByMembers::PAYMENT_BY_BANK) {
                    ?>
                                    <?php 
                    if ($expenditure->trans_channes == Expenditures::LOANING_CHANNEL) {
                        ?>
                                        <?php 
                        $loanValues = LoanRepayments::model()->profitEarnedOrToBeEarnedOnLoanBetweenAndIncludingTheseDates($expenditure->associated_id, $till);
                        ?>
                                        <?php 
                        if (!empty($loanValues[LoanRepayments::INTEREST])) {
                            ?>
                                            <tr>
                                                <td style="width: 50px"><font size="8"><?php 
                            if ($expenditure->date != $prvsDate) {
                                echo $expenditure->date;
                            }
                            ?>
</font></td>
                                                <td style="width: 150px"><font size="8">Interest</font></td>
                                                <td style="width: 50px; text-align: right"><font size="8"><?php 
                            echo $loanValues[LoanRepayments::INTEREST];
                            $netExpenditures = $netExpenditures + $loanValues[LoanRepayments::INTEREST];
Example #3
0
 /**
  * 
  * @param \LoanApplications $loans models
  * @param date $endDate
  * @return double
  */
 public function computeTotals($loans, $endDate)
 {
     $totalLoans = 0;
     foreach ($loans as $loan) {
         $totalLoans = $totalLoans + LoanRepayments::model()->loanBalanceOfMemberAfterThisDate($loan, $endDate);
     }
     return "{$totalLoans}";
 }
Example #4
0
 /**
  * 
  * @param int $savingId saving id
  * @param date $dateDue yyyy-mm-dd
  * @return double amount (to be) accumulated on a loan application
  */
 public function evaluateSavingsAmountForStatement($savingId, $dateDue)
 {
     $saving = Savings::model()->findByPk($savingId);
     if (is_object($saving)) {
         if (Savings::model()->savingIsWithdrawableByThisDate($savingId, $dateDue)) {
             return Savings::model()->totalWithDrawals(Savings::model()->withdrawalsfromASavingBetweenAndIncludingTheseDates($savingId, '0000-00-00', $dateDue));
         }
         return LoanRepayments::model()->amountDue($saving->principal, $saving->interest_rate_per_annum, $saving->date_of_investment, $dateDue, 0);
     }
 }
Example #5
0
 /**
  * 
  * @param int $savingId Savings id
  * @param date $since yyyy-mm-dd
  * @param date $till yyyy-mm-dd
  * @return array saving values
  */
 public function profitEarnedOrToBeEarnedOnSavingBetweenAndIncludingTheseDates($savingId, $since, $till)
 {
     if (is_object($saving = $this->findByPk($savingId))) {
         return array(self::PRINCIPAL => $saving->principal, self::AMOUNT_WITHDRAWN => $accumulatedSaving = $this->totalWithDrawals($latestSavingHistory = $this->latestSavingHistoryBetweenAndIncludingTheseDates($saving->savings_id, $since, $till)), self::REDUCING_BALANCE => $remainingSaving = isset($latestSavingHistory[0]) && $latestSavingHistory[0]->principal > 0 && empty($latestSavingHistory[0]->accumulated_amount) ? LoanRepayments::model()->amountDue($latestSavingHistory[0]->principal, $latestSavingHistory[0]->interest_rate_per_annum, $latestSavingHistory[0]->date_of_investment, $till, 0) : 0, self::ACCUMULATED_SAVING => $accumulatedSaving = $accumulatedSaving + $remainingSaving, self::INTEREST => round($accumulatedSaving - $saving->principal, 2));
     }
     return array();
 }
Example #6
0
                </font>
            </td>
        </tr>

    <?php 
}
?>

    <?php 
$amountDue = $transaction[Loanrepayments::REDUCING_BALANCE];
?>
    <?php 
if (($principal = $amountDue) != 0 && $transaction[ContributionsByMembers::DATE] != ($endDate = date('Y') . '-' . date('m') . '-' . date('d'))) {
    ?>
        <?php 
    $amountDue = round(LoanRepayments::model()->amountDue($principal, $loanApplication->interest_rate, $transaction[ContributionsByMembers::DATE], $endDate, $transactions[0][ContributionsByMembers::DATE] == $endDate && count($transactions) == 1 ? 1 : 0), 3);
    ?>

        <?php 
    $endDate = substr($endDate, 8, 2) . ' ' . substr(Defaults::monthName(substr($endDate, 5, 2)), 0, 3) . ' ' . substr($endDate, 0, 4);
    ?>
        <tr>
            <td style="display:table-cell; text-align:center; width:65px; height: 12px; border-left: 2px solid #000000; border-right: 1px solid #000000">
                <font style="font-family: sans-serif; font-weight: normal" size="8">
                <?php 
    echo $endDate;
    ?>
                </font>
            </td>
            <td style="display:table-cell; text-align:center; width:60px; height: 12px; border-right: 1px solid #000000">
                <font style="font-family: sans-serif; font-weight: normal" size="8"></font>
 /**
  * 
  * @param \ContributionsByMembers $contributions models
  * @param \LoanRepayments $loanRecoveries models
  * @return double
  */
 public function membersContributionsBtwnDates($contributions, $loanRecoveries)
 {
     return $this->computeTotals($contributions) - LoanRepayments::model()->totalRecoveries($loanRecoveries);
 }
Example #8
0
 /**
  * 
  * @param type $member
  * @param date $since yyyy-mm-dd
  * @param date $till yyyy-mm-dd
  * @return array total expenditures
  */
 public function totalExpenditureOnMemberFromStartToIncludingThisDate($member, $since, $till)
 {
     $total = 0;
     $pendingLoanAmounts = 0;
     foreach ($this->expendituresOnMemberBetweenAndIncludingThisDates($member, '0000-00-00', $since) as $expenditure) {
         $total = $total + $expenditure->amount;
         if ($expenditure->trans_channes == Expenditures::LOANING_CHANNEL) {
             $loanValues = LoanRepayments::model()->profitEarnedOrToBeEarnedOnLoanBetweenAndIncludingTheseDates($expenditure->associated_id, $since);
             if (!empty($loanValues[LoanRepayments::INTEREST])) {
                 $total = $total + $loanValues[LoanRepayments::INTEREST];
                 if ($loanValues[LoanRepayments::REDUCING_BALANCE] > 0) {
                     $newLoanValues = LoanRepayments::model()->profitEarnedOrToBeEarnedOnLoanBetweenAndIncludingTheseDates($expenditure->associated_id, $till);
                     $paymentsWithinDates = LoanRepayments::model()->memberLoanRepaymentsBtwnDatesAgain($expenditure->associated_id, LoanApplications::model()->dayAfter($since), $till);
                     $pendingLoanAmounts = $pendingLoanAmounts + $newLoanValues[LoanRepayments::INTEREST] - (empty($paymentsWithinDates) ? $loanValues[LoanRepayments::INTEREST] : 0);
                 }
             }
         }
     }
     return array('total' => $total, 'pendingTotal' => $pendingLoanAmounts);
 }
Example #9
0
 /**
  * 
  * @param \LoanRepayments $repayment
  */
 public function updateRecoveryModel($repayment)
 {
     $loanApplication = LoanApplications::model()->returnALoanApplication($repayment->loan_application);
     if ($repayment->isNewRecord) {
         $repayment->save(false);
     } else {
         $repayment->update(array('recoveryamount', 'amountrecovered', 'newbalance', 'recoverydate'));
     }
     $this->serviceLoanApplication($repayment, $loanApplication);
 }
 /**
  * 
  * @param \Loanrepayments $loanRepayments models
  * @param \Loanapplications $loanApplication models
  * @param \CashWithdrawals $withdrawals models
  * @param date $startDate
  * @param date $endDate
  * @return array
  */
 public function orderLoanRepaymentTransactions($loanRepayments, $loanApplication, $startDate, $endDate)
 {
     $transactions = array();
     $separations = $this->separateRecoveriesFromRepayments($loanRepayments);
     $transactions[$count = count($transactions)][Loanrepayments::PRINCIPAL] = $loanApplication->amout_borrowed;
     $transactions[$count][Loanrepayments::AMOUNT_DUE] = null;
     $transactions[$count][Loanrepayments::INTEREST] = null;
     $transactions[$count][Loanrepayments::AMOUNT_PAID] = null;
     $transactions[$count][Loanrepayments::DEDUCTION_FROM_CONTRIBUTIONS] = null;
     $transactions[$count][Loanrepayments::REDUCING_BALANCE] = round(LoanRepayments::model()->amountDue($loanApplication->amout_borrowed, $loanApplication->interest_rate, $loanApplication->close_date, $loanApplication->close_date, 0), 3);
     $transactions[$count][ContributionsByMembers::RECEIPT] = null;
     $transactions[$count][ContributionsByMembers::DATE] = $loanApplication->close_date;
     while ($startDate <= $endDate) {
         foreach ($loanRepayments as $l => $loanRepayment) {
             if (!empty($loanRepayment->contribution_toward_loan)) {
                 if (isset($separations[self::REPAYMENTS][$loanRepayment->primaryKey])) {
                     $contribution = ContributionsByMembers::model()->findByPk($loanRepayment->contribution_toward_loan);
                     $repayment = $separations[self::REPAYMENTS][$loanRepayment->primaryKey];
                     if ($repayment->recoverydate == $startDate) {
                         $transactions[$count = count($transactions)][Loanrepayments::PRINCIPAL] = $transactions[$count - 1][LoanRepayments::REDUCING_BALANCE];
                         $transactions[$count][Loanrepayments::AMOUNT_DUE] = $loanRepayment->amount_due;
                         $transactions[$count][Loanrepayments::INTEREST] = round($transactions[$count][Loanrepayments::AMOUNT_DUE] - $transactions[$count][Loanrepayments::PRINCIPAL], 3);
                         //round($loanRepayment->amount_due - $transactions[$count - 1][LoanRepayments::REDUCING_BALANCE], 3);
                         $transactions[$count][Loanrepayments::AMOUNT_PAID] = $loanRepayment->amount_due - $loanRepayment->balance;
                         $transactions[$count][Loanrepayments::DEDUCTION_FROM_CONTRIBUTIONS] = null;
                         $transactions[$count][Loanrepayments::REDUCING_BALANCE] = $loanRepayment->balance;
                         $transactions[$count][ContributionsByMembers::RECEIPT] = $contribution->receiptno == ContributionsByMembers::FALSE_RECEIPT ? null : $contribution->receiptno;
                         $transactions[$count][ContributionsByMembers::DATE] = $startDate;
                     }
                 }
             }
             if (isset($separations[self::RECOVERIES][$loanRepayment->primaryKey])) {
                 $contribution = ContributionsByMembers::model()->findByPk($loanRepayment->contribution_toward_loan);
                 $repayment = $separations[self::RECOVERIES][$loanRepayment->primaryKey];
                 if ($repayment->recoverydate == $startDate) {
                     $transactions[$count = count($transactions)][Loanrepayments::PRINCIPAL] = $transactions[$count - 1][LoanRepayments::REDUCING_BALANCE];
                     $transactions[$count][Loanrepayments::AMOUNT_DUE] = $loanRepayment->recoveryamount;
                     $transactions[$count][Loanrepayments::INTEREST] = round($transactions[$count][Loanrepayments::AMOUNT_DUE] - $transactions[$count][Loanrepayments::PRINCIPAL], 3);
                     //round($loanRepayment->recoveryamount - $transactions[$count - 1][LoanRepayments::REDUCING_BALANCE], 3);
                     $transactions[$count][Loanrepayments::AMOUNT_PAID] = null;
                     $transactions[$count][Loanrepayments::DEDUCTION_FROM_CONTRIBUTIONS] = $loanRepayment->amountrecovered;
                     $transactions[$count][Loanrepayments::REDUCING_BALANCE] = $loanRepayment->newbalance;
                     $transactions[$count][ContributionsByMembers::RECEIPT] = Loanrepayments::INSTEAD_OF_RECEIPT;
                     $transactions[$count][ContributionsByMembers::DATE] = $startDate;
                 }
             }
         }
         $startDate = LoanApplications::model()->dayAfter($startDate);
     }
     if (count($transactions) < 2) {
         $transactions[$count = count($transactions)][Loanrepayments::PRINCIPAL] = $transactions[$count - 1][LoanRepayments::REDUCING_BALANCE];
         $transactions[$count][Loanrepayments::AMOUNT_DUE] = round(LoanRepayments::model()->amountDue($transactions[$count][Loanrepayments::PRINCIPAL], $loanApplication->interest_rate, $loanApplication->close_date, $endDate, $transactions[$count - 1][ContributionsByMembers::DATE] == $endDate ? 1 : 0), 3);
         $transactions[$count][Loanrepayments::INTEREST] = round($transactions[$count][Loanrepayments::AMOUNT_DUE] - $transactions[$count][Loanrepayments::PRINCIPAL], 3);
         $transactions[$count][Loanrepayments::AMOUNT_PAID] = null;
         $transactions[$count][Loanrepayments::DEDUCTION_FROM_CONTRIBUTIONS] = null;
         $transactions[$count][Loanrepayments::REDUCING_BALANCE] = $transactions[$count][Loanrepayments::AMOUNT_DUE];
         $transactions[$count][ContributionsByMembers::RECEIPT] = null;
         $transactions[$count][ContributionsByMembers::DATE] = $endDate;
     }
     return $transactions;
 }