Exemplo n.º 1
0
        protected internal virtual void LoadPaymentPlan()
        {
            var paymentPlan = new PaymentPlan();

            var ydelse  = decimal.Round(LoanCalculations.Ydelse, 2);
            var mdRente = LoanSettings.PålydendeRente / 12m;

            var current = new PaymentDetail
            {
                Ydelse        = ydelse
                , Rente       = 0m
                , Afdrag      = 0m
                , Nummer      = 0
                , PrimoVærdi  = 0m
                , UltimoVærdi = LoanSettings.Lånebeøb
            };

            for (var termin = 0; termin < LoanSettings.Løbetid; termin++)
            {
                var last = current;

                var rente  = decimal.Round(last.UltimoVærdi * mdRente, 2);
                var afdrag = decimal.Round(LoanCalculations.Ydelse - rente, 2);

                current = new PaymentDetail
                {
                    Ydelse        = ydelse
                    , Rente       = rente
                    , Afdrag      = afdrag
                    , Nummer      = termin + 1
                    , PrimoVærdi  = last.UltimoVærdi
                    , UltimoVærdi = last.UltimoVærdi - afdrag
                };

                paymentPlan.PaymentDetailList.Add(current);
            }

            // Adjust last for minor roundings.
            // ReSharper disable once PossibleNullReferenceException
            current.Afdrag      = current.PrimoVærdi;
            current.Ydelse      = current.Afdrag + current.Rente;
            current.UltimoVærdi = 0m;

            PaymentPlan = paymentPlan;
        }
 public PaymentPlanService(IPaymentPlan paymentPlanRepository, IMapper mapper)
 {
     _paymentPlanRepo = paymentPlanRepository ?? throw new ArgumentNullException(nameof(paymentPlanRepository));
     _mapper          = mapper ?? throw new ArgumentNullException(nameof(mapper));
 }