Ejemplo n.º 1
0
        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);
              }
        }
Ejemplo n.º 2
0
        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;
       }
 }