Exemple #1
0
        private void DisplayInstallments(ref Loan pCredit)
        {
            listViewLoanInstallments.Items.Clear();

            if (pCredit.InstallmentList.Count == 0)
            {
                pCredit.Product = _product;
            }

            if (!pCredit.Disbursed)
            {
                if (!pCredit.ScheduleChangedManually)
                {
                    pCredit.InstallmentList = pCredit.Product.LoanType == OLoanTypes.DecliningFixedPrincipalWithRealInterest || pCredit.Product.IsExotic
                        ? pCredit.CalculateInstallments(true) : ServiceProvider.GetContractServices().SimulateScheduleCreation(pCredit);
                          pCredit.CalculateStartDates();
                }
            }

            OCurrency interestTotal = 0;
            OCurrency principalTotal = 0;

            foreach (Installment installment in pCredit.InstallmentList)
            {
                ListViewItem listViewItem = new ListViewItem(installment.Number.ToString());

                if (!_useGregorienCalendar)
                {
                    DateTime dt = new DateTime(installment.ExpectedDate.Year, installment.ExpectedDate.Month,
                                     installment.ExpectedDate.Day,
                                     currentCalendar);
                    listViewItem.SubItems.Add(string.Format("{0}/{1}/{2}", targetCalendar.GetDayOfMonth(dt), targetCalendar.GetMonth(dt), targetCalendar.GetYear(dt)));
                }
                else
                    listViewItem.SubItems.Add(installment.ExpectedDate.ToShortDateString());

                listViewItem.SubItems.Add(installment.InterestsRepayment.GetFormatedValue(pCredit.UseCents));
                listViewItem.SubItems.Add(installment.CapitalRepayment.GetFormatedValue(pCredit.UseCents));
                listViewItem.SubItems.Add(installment.Amount.GetFormatedValue(pCredit.UseCents));
                listViewItem.SubItems.Add(ServicesProvider.GetInstance().GetGeneralSettings().IsOlbBeforeRepayment
                                              ? installment.OLB.GetFormatedValue(pCredit.UseCents)
                                              : installment.OLBAfterRepayment.GetFormatedValue(pCredit.UseCents));
                listViewLoanInstallments.Items.Add(listViewItem);
                interestTotal += installment.InterestsRepayment;
                principalTotal += installment.CapitalRepayment;
            }
            // Add totals to the list view
            ListViewItem total = new ListViewItem
                                     {
                                         Font = new Font(listViewLoanInstallments.Font, FontStyle.Bold)
                                     };
            total.SubItems.Add("");
            total.SubItems.Add(interestTotal.GetFormatedValue(pCredit.UseCents));
            total.SubItems.Add(principalTotal.GetFormatedValue(pCredit.UseCents));
            total.SubItems.Add((interestTotal + principalTotal).GetFormatedValue(pCredit.UseCents));
            listViewLoanInstallments.Items.Add(total);
        }
        public void RepayInstallments_DontCancelFees_InitialAmount_RepaymentTwicelyADay()
        {
            LoanProduct package = new LoanProduct
            {
                InstallmentType = new InstallmentType(1, "10-days", 10, 0),
                LoanType = OLoanTypes.Flat,
                ChargeInterestWithinGracePeriod = true,
                Currency = new Currency { Id = 1 }
            };
            package.KeepExpectedInstallment = true;
            package.AnticipatedTotalRepaymentPenaltiesBase = OAnticipatedRepaymentPenaltiesBases.RemainingOLB;

            Loan myContract = new Loan(package, 8000, 0.03333m, 5, 0, new DateTime(2010, 1, 1), new User(), ApplicationSettings.GetInstance(""), NonWorkingDateSingleton.GetInstance(""), ProvisionTable.GetInstance(new User()), ChartOfAccounts.GetInstance(new User()));
            myContract.BadLoan = false;
            myContract.AnticipatedTotalRepaymentPenalties = 0.01;
            myContract.NonRepaymentPenalties = new NonRepaymentPenalties(0, 0, 0.0667, 0.01);

            myContract.CalculateInstallments(true);

            myContract.Disburse(new DateTime(2010, 1, 1), false, true);
            myContract.Repay(1, new DateTime(2010, 1, 8), 30, false, true);

            RepaymentEvent rPE = myContract.Repay(1, new DateTime(2010, 1, 11), 0, false, true);

            Assert.AreEqual(rPE.Penalties, 0);
        }