Пример #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);
        }
Пример #2
0
        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;
        }