public MonthlyCashStatement(MonthlyCashStatementCategory category, YearMonth month, DateTime date, int amount, string description) { Category = category; Month = month; Date = date; Amount = amount; Description = description; isFinalPayment = false; }
private void AddExpense(List <MonthlyCashStatement> result, YearMonth month, MonthlyCashStatementCategory category, List <MonthlyCashStatement> movements) { var actualMovements = movements.Where(m => m.Category == category && m.Month == month).ToList(); var paidAmount = actualMovements.Sum(_ => _.Amount); var wasPaid = actualMovements.Any(_ => _.IsFinalPayment) || Math.Abs(category.Amount) <= Math.Abs(paidAmount); var expenseDate = month.GetDate(category.DayOfMonth); if (!wasPaid && CalculationPeriod.Contains(expenseDate) && category.Effective.Contains(expenseDate)) { result.Add(new MonthlyCashStatement(category, month, expenseDate, category.Amount - paidAmount, "<план>")); } }