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) }); } }