| | |
| | | { |
| | | try |
| | | { |
| | | |
| | | var outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == model.UpperOrderNo).Includes(x => x.Details).First(); |
| | | var outboundOrder = Db.Queryable<Dt_OutboundOrder>() |
| | | .Where(x => x.UpperOrderNo == model.UpperOrderNo) |
| | | .Includes(x => x.Details) |
| | | .First(); |
| | | if (outboundOrder == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°åºåºåä¿¡æ¯"); |
| | |
| | | List<int> detailIds = new List<int>(); |
| | | |
| | | var materielCodes = model.Details.Select(x => x.MaterielCode).Distinct().ToList(); |
| | | var materielInfos = _materielInfoService.Db.Queryable<Dt_MaterielInfo>().Where(x => materielCodes.Contains(x.MaterielCode)).ToList(); |
| | | |
| | | var materielInfos = _materielInfoService.Db.Queryable<Dt_MaterielInfo>() |
| | | .Where(x => materielCodes.Contains(x.MaterielCode)) |
| | | .ToList(); |
| | | |
| | | foreach (var item in model.Details) |
| | | { |
| | | |
| | | var outboundOrderDetail = outboundOrder.Details.FirstOrDefault(x => x.lineNo == item.lineNo); |
| | | if (outboundOrderDetail == null) |
| | | { |
| | |
| | | BarcodeUnit = item.Unit, |
| | | }; |
| | | var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty); |
| | | item.Unit = issueoStockResult.Unit; |
| | | item.OrderQuantity = issueoStockResult.Quantity; |
| | | outboundOrderDetail.Unit = issueoStockResult.Unit; |
| | | outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity; |
| | | var moveissueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeMoveQty); |
| | | item.MoveQty = moveissueoStockResult.Quantity; |
| | | outboundOrderDetail.MoveQty = moveissueoStockResult.Quantity; |
| | | |
| | | if (materielInfos.Any()) |
| | | { |
| | | outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? ""; |
| | | } |
| | | |
| | | outboundOrderDetails.Add(outboundOrderDetail); |
| | | } |
| | | else |
| | | { |
| | | #region éå®ç¶æä¸éæ°éåæ®µä¸è´æ§æ ¡éª |
| | | if (outboundOrderDetail.LockQuantity != 0) |
| | | { |
| | | var isFieldChanged = !string.Equals(outboundOrderDetail.MaterielCode, item.MaterielCode) |
| | | || !string.Equals(outboundOrderDetail.SupplyCode, item.SupplyCode) |
| | | || !string.Equals(outboundOrderDetail.BatchNo, item.BatchNo) |
| | | || !string.Equals(outboundOrderDetail.Unit, item.Unit) |
| | | || !string.Equals(outboundOrderDetail.WarehouseCode, item.WarehouseCode) |
| | | || !string.Equals(outboundOrderDetail.lineNo, item.lineNo) |
| | | || outboundOrderDetail.MoveQty != item.MoveQty; |
| | | |
| | | if (isFieldChanged) |
| | | { |
| | | return WebResponseContent.Instance.Error($"è¡å·{item.lineNo}å·²éå®åºåºï¼é宿°éï¼{outboundOrderDetail.LockQuantity}ï¼ï¼ä»
å
许修æ¹è®¢åæ°éï¼ç¦æ¢ä¿®æ¹ç©æ/æ¹æ¬¡/ä»åºçå
¶ä»ä¿¡æ¯"); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region åææ°éæ ¡éªé»è¾ä¿ç |
| | | if(item.OrderQuantity < outboundOrderDetail.LockQuantity + outboundOrderDetail.MoveQty) |
| | | { |
| | | return WebResponseContent.Instance.Error($"ä¿®æ¹çè¡å·{item.lineNo}æ°éè¶
è¿äºæºä»åºåºé宿°éå 䏿ªææ°éï¼ä¸å
许修æ¹"); |
| | | } |
| | | #endregion |
| | | |
| | | #region åæ®µèµå¼é»è¾ï¼éå®ç¶æä»
æ¹æ°éï¼æªéå®åå
¨éæ´æ° |
| | | if(outboundOrderDetail.LockQuantity == 0) |
| | | { |
| | | outboundOrderDetail.lineNo = item.lineNo; |
| | |
| | | outboundOrderDetail.Unit = item.Unit; |
| | | outboundOrderDetail.WarehouseCode = item.WarehouseCode; |
| | | outboundOrderDetail.MoveQty = item.MoveQty; |
| | | outboundOrderDetail.OrderQuantity = item.OrderQuantity; |
| | | outboundOrderDetail.BarcodeMoveQty = item.MoveQty; |
| | | outboundOrderDetail.BarcodeQty = item.OrderQuantity; |
| | | outboundOrderDetail.BarcodeUnit = item.Unit; |
| | | |
| | | var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty); |
| | | outboundOrderDetail.Unit = issueoStockResult.Unit; |
| | | outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity; |
| | |
| | | { |
| | | outboundOrderDetail.OrderQuantity = item.OrderQuantity; |
| | | } |
| | | if (materielInfos.Any()) |
| | | { |
| | | #endregion |
| | | |
| | | outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? ""; |
| | | } |
| | | |
| | | updateoutboundOrderDetails.Add(outboundOrderDetail); |
| | | detailIds.Add(outboundOrderDetail.Id); |
| | | } |
| | | } |
| | | |
| | | |
| | | outboundOrder.UpperOrderNo = model.UpperOrderNo; |
| | | outboundOrder.BusinessType = model.BusinessType; |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error($"ååæ®è¡å·{item.lineNo}å·²ç»éå®åºåºï¼ä¸å
许å é¤ï¼è¯·éæ°æ´æ¹æ°æ®æ¨é"); |
| | | } |
| | | // _outboundOrderDetailRepository.DeleteAndMoveIntoHty(item, OperateTypeEnum.èªå¨å é¤); |
| | | _outboundOrderDetailRepository.DeleteData(item); |
| | | } |
| | | |
| | |
| | | outboundOrder.OrderStatus = (int)OutOrderStatusEnum.åºåºå®æ; |
| | | } |
| | | BaseDal.UpdateData(outboundOrder); |
| | | |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | return WebResponseContent.Instance.OK(); |