Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }