BudgetAnalyser.Engine.Widgets.OverspentWarning.SearchForOtherNonLedgerBookOverspentBuckets C# (CSharp) Метод

SearchForOtherNonLedgerBookOverspentBuckets() приватный Метод

private SearchForOtherNonLedgerBookOverspentBuckets ( StatementModel statement, GlobalFilterCriteria filter, IBudgetCurrencyContext budget, decimal>.IDictionary overspendingSummary ) : int
statement BudgetAnalyser.Engine.Statement.StatementModel
filter GlobalFilterCriteria
budget IBudgetCurrencyContext
overspendingSummary decimal>.IDictionary
Результат int
        private int SearchForOtherNonLedgerBookOverspentBuckets(
            StatementModel statement,
            GlobalFilterCriteria filter,
            IBudgetCurrencyContext budget,
            IDictionary<BudgetBucket, decimal> overspendingSummary)
        {
            var warnings = 0;
            List<Transaction> transactions = statement.Transactions.Where(t => t.Date < filter.BeginDate?.Date.AddMonths(1)).ToList();
            foreach (var expense in budget.Model.Expenses.Where(e => e.Bucket is BillToPayExpenseBucket))
            {
                if (overspendingSummary.ContainsKey(expense.Bucket))
                {
                    continue;
                }

                var bucketBalance = expense.Amount +
                                    transactions.Where(t => t.BudgetBucket == expense.Bucket).Sum(t => t.Amount);
                overspendingSummary.Add(expense.Bucket, bucketBalance);
                if (bucketBalance < -Tolerance)
                {
                    warnings++;
                }
            }

            return warnings;
        }
    }