예제 #1
0
        public bool SaveWarehouseStockOut(List <WarehouseStockDetailDTO> warehouseStockDetailDTOs, long userId, long orgId, string flag)
        {
            List <WarehouseStockDetail> warehouseStockDetails = new List <WarehouseStockDetail>();
            bool isValidate = true;

            switch (flag)
            {
            case
                #region Production Requistion
                "Production Requistion":
                var items = warehouseStockDetailDTOs.Select(s => s.ItemId).ToList();
                var stock = _warehouseStockInfoBusiness.GetAllWarehouseStockInfoByOrgId(orgId).Where(s => items.Contains(s.ItemId.Value)).Select(s => s.ItemId).ToList();

                if (items.Count() == stock.Count())
                {
                    foreach (var item in warehouseStockDetailDTOs)
                    {
                        var warehouseInfo = _warehouseStockInfoBusiness.GetAllWarehouseStockInfoByOrgId(orgId).Where(s => s.ItemId == item.ItemId && (s.StockInQty - s.StockOutQty) >= item.Quantity).FirstOrDefault();
                        if (warehouseInfo != null)
                        {
                            warehouseInfo.StockOutQty += item.Quantity;
                            warehouseInfo.UpUserId     = userId;
                            warehouseInfo.UpdateDate   = DateTime.Now;

                            WarehouseStockDetail warehouseStockDetail = new WarehouseStockDetail()
                            {
                                WarehouseId      = item.WarehouseId,
                                ItemTypeId       = item.ItemTypeId,
                                ItemId           = item.ItemId,
                                Quantity         = item.Quantity,
                                EUserId          = userId,
                                EntryDate        = DateTime.Now,
                                OrganizationId   = orgId,
                                Remarks          = item.Remarks,
                                StockStatus      = item.StockStatus,
                                RefferenceNumber = item.RefferenceNumber
                            };
                            warehouseStockInfoRepository.Update(warehouseInfo);
                            warehouseStockDetails.Add(warehouseStockDetail);
                        }
                        else
                        {
                            isValidate = false;
                        }
                    }
                }
                if (isValidate == true)
                {
                    warehouseStockDetailRepository.InsertAll(warehouseStockDetails);
                    return(warehouseStockDetailRepository.Save());
                }
                break;

                #endregion
            default:
                break;
            }
            return(false);
        }
예제 #2
0
        public bool SaveWarehouseStockIn(List <WarehouseStockDetailDTO> warehouseStockDetailDTO, long userId, long orgId)
        {
            List <WarehouseStockDetail> warehouseStockDetails = new List <WarehouseStockDetail>();

            foreach (var item in warehouseStockDetailDTO)
            {
                WarehouseStockDetail stockDetail = new WarehouseStockDetail();
                stockDetail.WarehouseId    = item.WarehouseId;
                stockDetail.ItemTypeId     = item.ItemTypeId;
                stockDetail.ItemId         = item.ItemId;
                stockDetail.Quantity       = item.Quantity;
                stockDetail.OrganizationId = orgId;
                stockDetail.EUserId        = userId;
                stockDetail.Remarks        = item.Remarks;
                stockDetail.UnitId         = _itemBusiness.GetItemById(item.ItemId.Value, orgId).UnitId;
                stockDetail.EntryDate      = DateTime.Now;
                stockDetail.StockStatus    = "Stock-In";

                var warehouseInfo = _warehouseStockInfoBusiness.GetAllWarehouseStockInfoByOrgId(orgId).Where(o => o.ItemTypeId == item.ItemTypeId && o.ItemId == item.ItemId).FirstOrDefault();
                if (warehouseInfo != null)
                {
                    warehouseInfo.StockInQty += item.Quantity;
                    warehouseStockInfoRepository.Update(warehouseInfo);
                }
                else
                {
                    WarehouseStockInfo warehouseStockInfo = new WarehouseStockInfo();
                    warehouseStockInfo.WarehouseId    = item.WarehouseId;
                    warehouseStockInfo.ItemTypeId     = item.ItemTypeId;
                    warehouseStockInfo.ItemId         = item.ItemId;
                    warehouseStockInfo.UnitId         = stockDetail.UnitId;
                    warehouseStockInfo.StockInQty     = item.Quantity;
                    warehouseStockInfo.StockOutQty    = 0;
                    warehouseStockInfo.OrganizationId = orgId;
                    warehouseStockInfo.EUserId        = userId;
                    warehouseStockInfo.EntryDate      = DateTime.Now;
                    warehouseStockInfoRepository.Insert(warehouseStockInfo);
                }
                warehouseStockDetails.Add(stockDetail);
            }
            warehouseStockDetailRepository.InsertAll(warehouseStockDetails);
            return(warehouseStockDetailRepository.Save());
        }