| | |
| | | index++; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | for (int i = 0; i < stockInfos.Count; i++) |
| | | { |
| | | Dt_ProStockInfo stockInfo = stockInfos[i]; |
| | | float useableStockQuantity = stockInfo.proStockInfoDetails |
| | | .Where(x => x.SaleOrder == mesRworkOutboundOrder.SaleOrder |
| | | && x.ProductCode == mesRworkOutboundOrder.ProductCode |
| | | && x.ProductVersion == mesRworkOutboundOrder.ProductVersion |
| | | && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode)) |
| | | .Sum(x => x.StockPcsQty - x.OutboundQuantity); |
| | | if (useableStockQuantity < needQuantity) |
| | | { |
| | | stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty); |
| | | needQuantity -= useableStockQuantity; |
| | | } |
| | | else |
| | | { |
| | | stockInfo.proStockInfoDetails.ForEach(x => |
| | | { |
| | | if (x.StockPcsQty > x.OutboundQuantity && x.SaleOrder == mesRworkOutboundOrder.SaleOrder |
| | | && x.ProductCode == mesRworkOutboundOrder.ProductCode |
| | | && x.ProductVersion == mesRworkOutboundOrder.ProductVersion |
| | | && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode)) |
| | | { |
| | | if (x.StockPcsQty - x.OutboundQuantity >= needQuantity) |
| | | { |
| | | x.OutboundQuantity += needQuantity; |
| | | needQuantity = 0; |
| | | } |
| | | else |
| | | { |
| | | needQuantity -= (x.StockPcsQty - x.OutboundQuantity); |
| | | x.OutboundQuantity = x.StockPcsQty; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | assignOutStocks.Add(stockInfo); |
| | | } |
| | | } |
| | | residueQuantity = needQuantity; |
| | | return assignOutStocks; |
| | | } |
| | |
| | | // } |
| | | // return (deleteStockDetails, updateStockDetails); |
| | | //} |
| | | public WebResponseContent GetProCodeByWarehouse(int warehouseId) |
| | | { |
| | | try |
| | | { |
| | | List<Dt_ProStockInfo> proStockInfo = BaseDal.QueryData(x => x.WarehouseId == warehouseId); |
| | | List<int> proStockId = proStockInfo.Select(x => x.Id).ToList(); |
| | | List<Dt_ProStockInfoDetail> proStockInfoDetails = BaseDal.Db.Queryable<Dt_ProStockInfoDetail>().Where(x => proStockId.Contains(x.OutDetailId)).ToList(); |
| | | List<string> proCode = proStockInfoDetails.Select(x => x.ProductCode).ToList(); |
| | | return WebResponseContent.Instance.OK(data: proCode); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent GetProVersionByCode(string scrapProCode, int warehouseId) |
| | | { |
| | | try |
| | | { |
| | | List<Dt_ProStockInfo> proStockInfo = BaseDal.QueryData(x => x.WarehouseId == warehouseId); |
| | | List<int> proStockId = proStockInfo.Select(x => x.Id).ToList(); |
| | | List<Dt_ProStockInfoDetail> proStockInfoDetails = BaseDal.Db.Queryable<Dt_ProStockInfoDetail>().Where(x => scrapProCode.Contains(x.ProductCode) && proStockId.Contains(x.OutDetailId)).ToList(); |
| | | List<string> productVersion = proStockInfoDetails.Select(x => x.ProductVersion).ToList(); |
| | | return WebResponseContent.Instance.OK(data: productVersion); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent GetProLotNoByCode(string scrapProCode, int warehouseId) |
| | | { |
| | | try |
| | | { |
| | | List<Dt_ProStockInfo> proStockInfo = BaseDal.QueryData(x => x.WarehouseId == warehouseId); |
| | | List<int> proStockId = proStockInfo.Select(x => x.Id).ToList(); |
| | | List<Dt_ProStockInfoDetail> proStockInfoDetails = BaseDal.Db.Queryable<Dt_ProStockInfoDetail>().Where(x => scrapProCode.Contains(x.ProductCode) && proStockId.Contains(x.OutDetailId)).ToList(); |
| | | List<string> lotNumber = proStockInfoDetails.Select(x => x.LotNumber).ToList(); |
| | | return WebResponseContent.Instance.OK(data: lotNumber); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | } |
| | | } |