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(); }