public void DeleteDebt(DebtEntry item) { DebtEntry oldItem = null; foreach (var entry in _debtEntries) { if (entry.Id == item.Id) { oldItem = entry; break; } } if (oldItem != null) { _debtEntries.Remove(oldItem); } }
public void UpdateDebt(DebtEntry newItem) { DebtEntry oldItem = null; foreach (var entry in _debtEntries) { if (entry.Id == newItem.Id) { oldItem = entry; break; } } if (oldItem != null) { _debtEntries.Remove(oldItem); } _debtEntries.Add(newItem); }
private AmortizationEntry ApplyMonthlyPayment(DateTime currentDate, DebtEntry debtEntry, PaymentManager paymentManager, ref double additionalPrincipal, bool applySnowball) { double startingBalance = debtEntry.CurrentBalance; double interestPortion = debtEntry.MonthlyInterest * debtEntry.CurrentBalance; double minimumMonthlyPayment = debtEntry.MinimumMonthlyPayment; if (debtEntry.DebtType == DebtType.CreditCard && minimumMonthlyPayment < debtEntry.MinimumMonthlyPaymentLimit) { minimumMonthlyPayment = debtEntry.MinimumMonthlyPaymentLimit; } double minimumPrincipal = debtEntry.MinimumMonthlyPayment - interestPortion; double principalPortion = minimumPrincipal + additionalPrincipal; double possibleBalance = debtEntry.CurrentBalance - principalPortion; if (possibleBalance < 0) { if (minimumPrincipal >= debtEntry.CurrentBalance) { minimumPrincipal = debtEntry.CurrentBalance - interestPortion; additionalPrincipal = 0; } else { additionalPrincipal = debtEntry.CurrentBalance - minimumPrincipal - interestPortion; } debtEntry.CurrentBalance = 0; if (applySnowball) { paymentManager.WindfallEntries.Add(new WindfallEntry(string.Empty, Math.Abs(possibleBalance), currentDate.AddMonths(1))); if (paymentManager.SnowballEntries.Count > 0) { paymentManager.SnowballEntries [0].Amount += debtEntry.MinimumMonthlyPayment; } else { paymentManager.SnowballEntries.Add (new SnowballEntry ("Temp", debtEntry.MinimumMonthlyPayment)); } } } else if (possibleBalance > debtEntry.CurrentBalance) { debtEntry.Name += " INVALID!"; debtEntry.CurrentBalance = -9999; } else { debtEntry.CurrentBalance = possibleBalance; } AmortizationEntry output = new AmortizationEntry( debtEntry.Name, debtEntry.DebtType, currentDate, startingBalance, interestPortion, minimumPrincipal, additionalPrincipal, debtEntry.CurrentBalance); // We always use up all of the additional principle, otherwise it gets added as a windfall the // following month additionalPrincipal = 0; return output; }
public void AssignDebt(DebtEntry debt) { if (debt != null) { _debtEntry = debt; } }