| | |
| | | Dt_OutboundOrderDetail outboundOrderDetail, |
| | | Dt_StockInfo outStock, |
| | | decimal assignQuantity, |
| | | string barcode = null) |
| | | string barcode = null,string outboundBatchNo = "") |
| | | { |
| | | // è·ååºåæç»ä¿¡æ¯ |
| | | var stockDetails = outStock.Details |
| | |
| | | |
| | | // ç¡®å®æ¡ç |
| | | string targetBarcode; |
| | | var firstAvailableDetail=new Dt_StockInfoDetail(); |
| | | if (!string.IsNullOrEmpty(barcode)) |
| | | { |
| | | // éªè¯æå®çæ¡ç æ¯å¦åå¨ |
| | | var specifiedBarcodeDetail = stockDetails.FirstOrDefault(x => x.Barcode == barcode); |
| | | if (specifiedBarcodeDetail == null) |
| | | firstAvailableDetail = stockDetails.FirstOrDefault(x => x.Barcode == barcode); |
| | | if (firstAvailableDetail == null) |
| | | { |
| | | throw new Exception($"æå®çæ¡ç [{barcode}]å¨åºåä¸ä¸åå¨"); |
| | | } |
| | | |
| | | targetBarcode = barcode; |
| | | } |
| | | else |
| | | { |
| | | // 使ç¨ç¬¬ä¸ä¸ªå¯ç¨æ¡ç |
| | | var firstAvailableDetail = stockDetails |
| | | firstAvailableDetail = stockDetails |
| | | .Where(x => x.StockQuantity > x.OutboundQuantity) |
| | | .OrderBy(x => x.CreateDate) |
| | | .OrderByDescending(x => x.CreateDate) |
| | | .FirstOrDefault(); |
| | | |
| | | if (firstAvailableDetail == null) |
| | |
| | | } |
| | | |
| | | return new Dt_OutStockLockInfo() |
| | | { |
| | | lineNo= outboundOrderDetail.lineNo, |
| | | |
| | | { |
| | | PalletCode = outStock.PalletCode, |
| | | AssignQuantity = assignQuantity, |
| | | MaterielCode = outboundOrderDetail.MaterielCode, |
| | | BatchNo = outboundOrderDetail.BatchNo ?? outStock.Details.FirstOrDefault()?.BatchNo, |
| | | AssignQuantity = assignQuantity, |
| | | LocationCode = outStock.LocationCode, |
| | | MaterielName = outboundOrderDetail.MaterielName, |
| | | OrderDetailId = outboundOrderDetail.Id, |
| | |
| | | .Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode) |
| | | .Sum(x => x.StockQuantity), |
| | | Status = (int)OutLockStockStatusEnum.å·²åé
, |
| | | StockId = outStock.Id, |
| | | Unit = outboundOrderDetail.Unit, |
| | | FactoryArea = outboundOrder.FactoryArea, |
| | | StockId = outStock.Id, |
| | | OrderType=outboundOrder.OrderType, |
| | | SupplyCode = outboundOrderDetail.SupplyCode, |
| | | WarehouseCode = outboundOrderDetail.WarehouseCode, |
| | | SupplyCode = firstAvailableDetail.SupplyCode, |
| | | WarehouseCode = firstAvailableDetail.WarehouseCode, |
| | | // æ°å¢å段 |
| | | CurrentBarcode = targetBarcode, |
| | | OriginalLockQuantity = assignQuantity, |
| | | IsSplitted = 0 |
| | | IsSplitted = 0, |
| | | MaterielCode = outboundOrderDetail.MaterielCode, |
| | | BatchNo = firstAvailableDetail.BatchNo, |
| | | Unit = firstAvailableDetail.Unit, |
| | | BarcodeQty = firstAvailableDetail.BarcodeQty, |
| | | BarcodeUnit = firstAvailableDetail.BarcodeUnit, |
| | | FactoryArea = firstAvailableDetail.FactoryArea, |
| | | lineNo = outboundOrderDetail.lineNo, |
| | | OutboundBatchNo= outboundBatchNo |
| | | }; |
| | | } |
| | | |
| | |
| | | |
| | | public List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId, OutLockStockStatusEnum? outStockStatus) |
| | | { |
| | | return BaseDal.QueryData(x => x.OrderDetailId == orderDetailId && outStockStatus == null ? true : x.Status == outStockStatus.ObjToInt()); |
| | | return BaseDal.QueryData(x => x.OrderDetailId == orderDetailId ); |
| | | } |
| | | |
| | | } |