public List <GetTongHopNo> GetSoTongHopNo(DateTime fromDate, DateTime toDate) { var dkData = BalanceLogic.GetSoDuDauKyCongNo(fromDate); dkData = dkData.Where(o => o.DebitBalance > 0 || o.CreditBalance > 0).ToList(); var psData = ReportDAO.GetSoTongHopNo(fromDate, toDate); // Thêm DK var dkNotPS = new List <GetTongHopNo>(); foreach (GetBalance item in dkData) { var psFind = psData.Find(o => o.AccountID == item.AccountID && o.AccountDetailID == item.AccountDetailID && o.CustomerID == item.CustomerID); // có ps if (psFind != null) { psFind.DKNo = item.DebitBalance; psFind.DKCo = item.CreditBalance; } // không có ps else { dkNotPS.Add(new GetTongHopNo { AccountID = item.AccountID, AccountDetailID = item.AccountDetailID, CustomerID = item.CustomerID, CustomerName = item.CustomerName, CustomerSName = item.CustomerSName, DKNo = item.DebitBalance, DKCo = item.CreditBalance }); } } // Thêm danh sách có đầu kỳ nhưng không có phát sinh psData.AddRange(dkNotPS); // Tính cuối kỳ foreach (var ps in psData) { decimal ckNo = ps.DKNo + ps.PSNo - ps.DKCo - ps.PSCo; if (ckNo > 0) { ps.CKNo = ckNo; } else { ps.CKCo = Math.Abs(ckNo); } } return(psData.OrderBy(o => o.AccountID).ThenBy(o => o.AccountDetailID).ThenBy(o => o.CustomerSName).ToList()); }