Ejemplo n.º 1
0
        public LoanPaymentSchedule GetPaymentSchedule(Loan loan, LoanSummary summary)
        {
            var payments         = new List <LoanPayment>();
            var deliveryYear     = loan.DeliveryDate.Year;
            var deliveryMonth    = loan.DeliveryDate.Month;
            var nextPaymentMonth = GetNextPaymentMonth(deliveryMonth);
            var nextPaymentYear  = GetNextPaymentYear(deliveryMonth, deliveryYear);

            for (int i = 1; i <= loan.FinanceMonths; i++)
            {
                var lp = new LoanPayment();
                lp.MonthNumber = i;
                if (i == 1)
                {
                    lp.PaymentAmount = summary.InitialPaymentAmount;
                }
                else if (i == loan.FinanceMonths)
                {
                    lp.PaymentAmount = summary.FinalPaymentAmount;
                }
                else
                {
                    lp.PaymentAmount = summary.StandardMonthlyPaymentAmount;
                }

                var nextPaymentDate = GetFirstMondayOfMonth(nextPaymentYear, nextPaymentMonth);
                lp.PaymentDate = nextPaymentDate;

                nextPaymentYear  = GetNextPaymentYear(nextPaymentMonth, nextPaymentYear);
                nextPaymentMonth = GetNextPaymentMonth(nextPaymentMonth);
                payments.Add(lp);
            }

            var lps = new LoanPaymentSchedule();

            lps.LoanPayments = payments;

            return(lps);
        }
        public void Setup()
        {
            _loan = new Loan()
            {
                DeliveryDate  = new System.DateTime(2019, 05, 02),
                Deposit       = 500,
                FinanceMonths = 24,
                VehiclePrice  = 13999,
                LoanFee       = new Fee()
                {
                    ArrangementFee = 80,
                    CompletionFee  = 20
                }
            };

            _loanSummary = new LoanSummary()
            {
                Loan                         = _loan,
                TotalLoanAmount              = 13599,
                TotalMonths                  = 24,
                PaymentFrequency             = PaymentFrequency.Monthly,
                InitialPaymentAmount         = 646.62m,
                StandardMonthlyPaymentAmount = 566.62m,
                FinalPaymentAmount           = 586.62m
            };

            _loanPayments = new List <LoanPayment>()
            {
                new LoanPayment()
                {
                    MonthNumber = 1, PaymentDate = new System.DateTime(2019, 06, 03), PaymentAmount = _loanSummary.InitialPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 2, PaymentDate = new System.DateTime(2019, 07, 01), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 3, PaymentDate = new System.DateTime(2019, 08, 05), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 4, PaymentDate = new System.DateTime(2019, 09, 02), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 5, PaymentDate = new System.DateTime(2019, 10, 07), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 6, PaymentDate = new System.DateTime(2019, 11, 04), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 7, PaymentDate = new System.DateTime(2019, 12, 02), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 8, PaymentDate = new System.DateTime(2020, 01, 06), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 9, PaymentDate = new System.DateTime(2020, 02, 03), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 10, PaymentDate = new System.DateTime(2020, 03, 02), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 11, PaymentDate = new System.DateTime(2020, 04, 06), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 12, PaymentDate = new System.DateTime(2020, 05, 04), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 13, PaymentDate = new System.DateTime(2020, 06, 01), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 14, PaymentDate = new System.DateTime(2020, 07, 06), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 15, PaymentDate = new System.DateTime(2020, 08, 03), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 16, PaymentDate = new System.DateTime(2020, 09, 07), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 17, PaymentDate = new System.DateTime(2020, 10, 05), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 18, PaymentDate = new System.DateTime(2020, 11, 02), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 19, PaymentDate = new System.DateTime(2020, 12, 07), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 20, PaymentDate = new System.DateTime(2021, 01, 04), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 21, PaymentDate = new System.DateTime(2021, 02, 01), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 22, PaymentDate = new System.DateTime(2021, 03, 01), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 23, PaymentDate = new System.DateTime(2021, 04, 05), PaymentAmount = _loanSummary.StandardMonthlyPaymentAmount
                },
                new LoanPayment()
                {
                    MonthNumber = 24, PaymentDate = new System.DateTime(2021, 05, 03), PaymentAmount = _loanSummary.FinalPaymentAmount
                }
            };

            _loanPaymentSchedule = new LoanPaymentSchedule()
            {
                LoanPayments = _loanPayments
            };
        }