Exemple #1
0
            private static double GetDaysBewteenInstalments(InstalmentFrequency instalmentFrequency)
            {
                switch (instalmentFrequency)
                {
                case InstalmentFrequency.Daily:
                    return(1);

                case InstalmentFrequency.Weekly:
                    return(7);

                case InstalmentFrequency.Fortnightly:
                    return(14);

                case InstalmentFrequency.FourWeekly:
                    return(28);

                case InstalmentFrequency.Monthly:
                    return(365.25 / 12);

                case InstalmentFrequency.Quarterly:
                    return(365.25 / 4);

                case InstalmentFrequency.Annually:
                    return(365.25);
                }
                return(1);
            }
        public void AddRegularInstalments(decimal amount, int numberOfInstalments, InstalmentFrequency instalmentFrequency, decimal daysAfterFirstAdvancefirstInstalment = 0)
        {
            decimal daysBetweenInstalments = getDaysBewteenInstalments(instalmentFrequency);

            if (daysAfterFirstAdvancefirstInstalment == 0)
            {
                daysAfterFirstAdvancefirstInstalment = daysBetweenInstalments;
            }
            for (int i = 0; i < numberOfInstalments; i++)
            {
                _Payments.Add(new Instalment()
                {
                    Amount = amount, DaysAfterFirstAdvance = daysAfterFirstAdvancefirstInstalment + (daysBetweenInstalments * i)
                });
            }
        }
        public void AddDecreasingInstalments(decimal amount, decimal interest, int numberOfInstalments, InstalmentFrequency instalmentFrequency, decimal daysAfterFirstAdvancefirstInstalment = 0)
        {
            decimal daysBetweenInstalments = getDaysBewteenInstalments(instalmentFrequency);

            if (daysAfterFirstAdvancefirstInstalment == 0)
            {
                daysAfterFirstAdvancefirstInstalment = daysBetweenInstalments;
            }
            decimal glavnica = amount / numberOfInstalments;

            decimal lihva = interest;

            for (int i = 0; i < numberOfInstalments; i++)
            {
                decimal vnoskaLihva = (amount * lihva / 100) / 12;
                decimal finalInst   = vnoskaLihva + glavnica;
                amount = amount - glavnica;

                if (i % 12 == 0 && i < numberOfInstalments - 1 && i != 0)
                {
                    finalInst += 5000;
                }

                _Payments.Add(new Instalment()
                {
                    Amount = finalInst, DaysAfterFirstAdvance = daysAfterFirstAdvancefirstInstalment + (daysBetweenInstalments * i)
                });
            }
        }