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 RescheduleLoanEvent Reschedule(ReschedulingOptions ro, Loan contract, NonWorkingDateSingleton nwdS, ApplicationSettings applicationSettings) { _contract = contract; _nwdS = nwdS; _generalSettings = applicationSettings; switch (contract.Product.LoanType) { case OLoanTypes.Flat: _Reschedule_Flat(ro); break; case OLoanTypes.DecliningFixedPrincipal: _Reschedule_FixedPrincipal(ro); break; case OLoanTypes.DecliningFixedInstallments: _Reschedule_DecliningFixedInstallments(ro); break; } _Reschedule_AdjustOverpaid(); RescheduleLoanEvent rSe = new RescheduleLoanEvent { Date = ro.ReschedulingDate, Amount = contract.CalculateActualOlb(), Interest = contract.GetTotalInterestDue(), ClientType = contract.ClientType, BadLoan = contract.BadLoan, NbOfMaturity = ro.NewInstallments, DateOffset = ro.RepaymentDateOffset, GracePeriod = ro.GracePeriod, ChargeInterestDuringShift = ro.ChargeInterestDuringShift, ChargeInterestDuringGracePeriod = ro.ChargeInterestDuringGracePeriod, InstallmentNumber = contract.GetLastFullyRepaidInstallment() == null ? 1 : contract.GetLastFullyRepaidInstallment().Number + 1 }; _contract.CalculateStartDates(); return rSe; }