Example #1
0
        private void UpdatePeriodBalances(FiscalYear fiscalYear)
        {
            var tempClosingBalances = erpNodeDBContext.Ledgers
                                      .Where(j => j.TransactionDate >= fiscalYear.StartDate && j.TransactionDate <= fiscalYear.EndDate)
                                      .Where(j => j.TransactionType != TransactionTypes.FiscalYearClosing && j.TransactionType != TransactionTypes.OpeningEntry)
                                      .GroupBy(o => o.AccountId)
                                      .Select(go => new TempClosingEntry
            {
                Id           = Guid.NewGuid(),
                FiscalYearId = fiscalYear.Id,
                AccountGuid  = go.Key,
                Account      = go.FirstOrDefault().accountItem,
                Credit       = go.Select(l => l.Credit)
                               .DefaultIfEmpty(0)
                               .Sum() ?? 0,
                Debit = go.Select(l => l.Debit)
                        .DefaultIfEmpty(0)
                        .Sum() ?? 0,
            })
                                      .ToList();

            foreach (var tempBalance in tempClosingBalances)
            {
                fiscalYear.UpdatePeriodBalance(tempBalance.Account, tempBalance.Debit, tempBalance.Credit);
            }

            fiscalYear.ClosingAccountsCalculateDateTime = DateTime.Today;


            erpNodeDBContext.SaveChanges();
        }