public void CalculateLiabilityTest( decimal amount, decimal extraMoney, int days, int daysDelay, decimal interestRate, decimal liability) { var payment = new Payment { Amount = amount, DueDate = DateTime.Now.AddDays(-daysDelay) }; var result = PaymentHelper.CalculateLiability(payment, extraMoney, interestRate, days); Assert.IsTrue(Math.Abs(result - liability) < NumericConstants.Eps); }
public static IEnumerable <Payment> CalculateLiability(this IEnumerable <Payment> data, decimal extraMoney, Deal deal) { foreach (var payment in data.Where(x => !x.IsPaid).OrderBy(x => x.DueDate)) { if (extraMoney > 0) { payment.Liability = PaymentHelper.CalculateLiability(payment, extraMoney, deal.InterestRate, deal.DealPeriod); extraMoney = 0; } else { payment.Liability = PaymentHelper.CalculateLiability(payment, 0, deal.InterestRate, deal.DealPeriod); } } return(data); }