| | |
| | | throw new Exception($"请勿同时操作多个单据明细"); |
| | | } |
| | | Dt_OutboundOrder outboundOrder = _outboundRepository.OutboundOrderRepository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId); |
| | | List<Dt_OutboundOrderDetail> dt_OutboundOrderDetails = _outboundRepository.OutboundOrderDetailRepository.QueryData(x => x.OrderId == outboundOrder.Id); |
| | | List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); |
| | | List<Dt_OutboundOrderDetail> groupDetails = outboundOrderDetails.GroupBy(x => new { x.MaterielCode, x.BatchNo, x.LocationName }).Select(x => new Dt_OutboundOrderDetail { OrderQuantity = x.Sum(v => v.OrderQuantity) - x.Sum(v => v.LockQuantity), MaterielCode = x.Key.MaterielCode, BatchNo = x.Key.BatchNo, LocationName = x.Key.LocationName }).ToList(); |
| | | List<Dt_Warehouse> warehouse = new List<Dt_Warehouse>(); |
| | |
| | | List<IStockInfoService.residueQuantity> newResidueQuantitys = new List<IStockInfoService.residueQuantity>(); |
| | | if (warehouse.Any(x => x.WarehouseCode.Contains("DW")) || warehouse.Any(x => x.WarehouseCode.Contains("YS"))) |
| | | { |
| | | autoAssignStocks = _stockService.StockInfoService.DWANDYSGetOutboundStocks(stockInfos,groupDetails, out List<IStockInfoService.residueQuantity> residueQuantitys); |
| | | autoAssignStocks = _stockService.StockInfoService.DWANDYSGetOutboundStocks(stockInfos, dt_OutboundOrderDetails, out List<IStockInfoService.residueQuantity> residueQuantitys); |
| | | newResidueQuantitys.AddRange(residueQuantitys); |
| | | outStocks.AddRange(autoAssignStocks); |
| | | } |
| | | foreach(var residueQuantity in newResidueQuantitys) |
| | | { |
| | | foreach (var item in groupDetails) |
| | | foreach (var item in dt_OutboundOrderDetails) |
| | | { |
| | | if(residueQuantity.MaterielCode == item.MaterielCode && residueQuantity.BatchNo == item.BatchNo) |
| | | { |
| | |
| | | |
| | | decimal assignQuantity = needQuantity - residueQuantity.NewNeendQuantity; |
| | | |
| | | List<Dt_OutboundOrderDetail> details = outboundOrderDetails.Where(x => !string.IsNullOrEmpty(x.BatchNo) ? x.BatchNo == item.BatchNo : true && x.MaterielCode == item.MaterielCode).ToList(); |
| | | List<Dt_OutboundOrderDetail> details = dt_OutboundOrderDetails.Where(x => !string.IsNullOrEmpty(x.BatchNo) ? x.BatchNo == item.BatchNo : true && x.MaterielCode == item.MaterielCode).ToList(); |
| | | |
| | | for (int i = 0; i < details.Count; i++) |
| | | { |
| | |
| | | } |
| | | newResidueQuantitys = new List<IStockInfoService.residueQuantity>(); |
| | | } |
| | | return (outStocks, outboundOrderDetails, outStockLockInfos, locationInfos); |
| | | return (outStocks, dt_OutboundOrderDetails, outStockLockInfos, locationInfos); |
| | | } |
| | | |
| | | private (bool, string) CheckSelectStockDeital(Dt_OutboundOrderDetail outboundOrderDetail, List<StockSelectViewDTO> stockSelectViews) |