/// <summary> /// Lấy dữ liệu thẻ kho tổng hợp /// </summary> /// <param name="fromDate">ngày bắt đầu</param> /// <param name="toDate">ngày kết thúc</param> /// <param name="warehouseID">mã kho</param> /// <param name="isPhatSinh">chỉ lấy PS</param> /// <returns></returns> public List <TheKho> GetTongHopTheKho(DateTime fromDate, DateTime toDate, string warehouseID, bool isPhatSinh) { // Lấy dữ liệu phát sinh trong kỳ List <TheKho> psData = ReportDAO.GetTongHopTheKho(fromDate, toDate, warehouseID); // Lấy dữ liệu đầu kỳ var dauKyData = this.GetWarehouseBalances(fromDate, warehouseID); dauKyData = dauKyData .GroupBy(o => o.ItemID) .OrderBy(o => o.Key) .Select(o => new GetWarehouseBalance { ItemID = o.Key, WarehouseListID = o.Max(s => s.WarehouseListID), BalanceDate = o.Max(s => s.BalanceDate), Quantity = o.Sum(s => s.Quantity), Amount = o.Sum(s => s.Amount) }).ToList(); // Thêm đầu kỳ vào dữ liệu phát sinh AddDKToPS(psData, dauKyData); if (!isPhatSinh) { // xử lý trường hợp có đầu kỳ nhưng lại không có phát sinh AddDKNotPSToPS(psData, dauKyData); } AddTheKhoName(psData); return(psData); }
/// <summary> /// Lấy dữ liệu thẻ kho /// </summary> /// <param name="fromDate">ngày bắt đầu</param> /// <param name="toDate">ngày kết thúc</param> /// <param name="warehouseID">mã kho</param> /// <param name="isPhatSinh">chỉ lấy PS</param> /// <returns></returns> public List <TheKho> GetTheKho(DateTime fromDate, DateTime toDate, string warehouseID, string itemID, bool isPhatSinh) { // Lấy dữ liệu phát sinh trong kỳ List <TheKho> psData = ReportDAO.GetTongHopTheKho(fromDate, toDate, warehouseID); psData = psData.Where(o => o.ItemID == itemID).ToList(); // Lấy dữ liệu đầu kỳ var dauKyData = this.GetWarehouseBalances(fromDate, warehouseID); dauKyData = dauKyData.Where(o => o.ItemID == itemID).ToList(); // Thêm đầu kỳ vào dữ liệu phát sinh decimal balanceQuantity = 0; decimal balanceAmount = 0; string preKey = string.Empty; foreach (var item in psData) { if (item.WarehouseListID != preKey) { preKey = item.WarehouseListID; var find = dauKyData.Find(o => o.WarehouseListID == preKey); if (find != null) { balanceQuantity = find.Quantity; balanceAmount = find.Amount; } else { balanceQuantity = 0; balanceAmount = 0; } } item.LuongDK = balanceQuantity; item.TienDK = balanceAmount; // giữ lại gái trị cuối kì trước đó làm đầu kì tiếp theo balanceQuantity = item.LuongCK; balanceAmount = item.TienCK; } if (!isPhatSinh) { // xử lý trường hợp có đầu kỳ nhưng lại không có phát sinh foreach (var item in dauKyData) { if (psData.Find(o => o.WarehouseListID == item.WarehouseListID) == null) { psData.Add(new TheKho { ItemID = item.ItemID, WarehouseListID = item.WarehouseListID, LuongDK = item.Quantity, TienDK = item.Amount }); } } } AddTheKhoName(psData); return(psData); }