| | |
| | | { |
| | | try |
| | | { |
| | | Dt_ReceiveOrder receiveOrder = _inboundRepository.ReceiveOrderRepository.QueryFirst(x => x.ReceiveOrderNo == orderNo); |
| | | Dt_ReceiveOrder receiveOrder = _inboundRepository.ReceiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == orderNo).Includes(x=>x.Details).First(); |
| | | if (receiveOrder == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥æ¶è´§å"); |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥ç©æçä¿¡æ¯"); |
| | | } |
| | | |
| | | Dt_PurchaseOrder purchaseOrder = _inboundRepository.PurchaseOrderRepository.QueryFirst(x => x.PurchaseOrderNo == model.PurchaseOrderNo); |
| | | //该æ¶è´§åä»åºæ¯å¦æè¯¥ç©æ |
| | | if (materielInfo.WarehouseId!= receiveOrder.WarehouseId) |
| | | { |
| | | return WebResponseContent.Instance.Error($"è¯¥ç©æä¸å±äºè¯¥ä»åº"); |
| | | } |
| | | Dt_PurchaseOrder purchaseOrder = _inboundRepository.PurchaseOrderRepository.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == model.PurchaseOrderNo).Includes(x=>x.Details).First(); |
| | | if (purchaseOrder == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥éè´å"); |
| | | } |
| | | |
| | | if (purchaseOrder.Details.Count == 0) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥éè´åæç»æ°æ®"); |
| | | } |
| | | if (purchaseOrder.SupplierCode != receiveOrder.SuppliersId) |
| | | { |
| | | return WebResponseContent.Instance.Error($"ä¾åºåä¸ä¸è´,请æ°å»ºæ¶è´§å"); |
| | | } |
| | | |
| | | if (purchaseOrder.PurchaseOrderStatus == PurchaseOrderStatusEnum.Received.ObjToInt()) |
| | | { |
| | | return WebResponseContent.Instance.Error($"该éè´åæ¶è´§å·²å®æ"); |
| | | } |
| | | |
| | | List<Dt_PurchaseOrderDetail> purchaseOrderDetails = _inboundRepository.PurchaseOrderDetailRepository.QueryData(x => x.PurchaseOrderId == purchaseOrder.Id); |
| | | if (purchaseOrderDetails == null || purchaseOrderDetails.Count == 0) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥éè´åæç»æ°æ®"); |
| | | } |
| | | |
| | | Dt_PurchaseOrderDetail? purchaseOrderDetail = purchaseOrderDetails.FirstOrDefault(x => x.PurchaseDetailQuantity == model.Quantity && x.MaterielCode == model.MaterielCode && x.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt()); |
| | | Dt_PurchaseOrderDetail? purchaseOrderDetail = purchaseOrder.Details.FirstOrDefault(x => x.MaterielCode == model.MaterielCode && (x.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt() || x.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.Receiving.ObjToInt())); |
| | | if (purchaseOrderDetail == null) |
| | | { |
| | | if (purchaseOrderDetails.Count > 0) |
| | | if (purchaseOrder.Details.Count > 0) |
| | | { |
| | | return WebResponseContent.Instance.Error($"该æç»æ¶è´§å·²å®æ"); |
| | | } |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°å¯¹åºçéè´åæç»æ°æ®"); |
| | | } |
| | | Dt_ReceiveOrderDetail detail = BaseDal.QueryFirst(x => x.PurchaseOrderNo == model.PurchaseOrderNo && x.PurchaseOrderDetailRowNo == purchaseOrderDetail.RowNo); |
| | | if (detail != null) |
| | | //夿æ¯å¦åå¨å¯¹åºéè´æç»çæ¶è´§æç» |
| | | Dt_ReceiveOrderDetail? detail = receiveOrder.Details.FirstOrDefault(x => x.PurchaseOrderNo == model.PurchaseOrderNo && x.PurchaseOrderDetailRowNo == purchaseOrderDetail.RowNo); |
| | | if (detail != null && detail.ReceivedQuantity == purchaseOrderDetail.PurchaseDetailQuantity) |
| | | { |
| | | return WebResponseContent.Instance.Error($"该æç»æ¶è´§å·²å®æ"); |
| | | return WebResponseContent.Instance.Error($"该æç»å·²æ¶è´§"); |
| | | } |
| | | |
| | | lock (_rowNoLocker) |
| | | { |
| | | int rowNo = 0; |
| | | List<Dt_ReceiveOrderDetail> receiveOrderDetails = BaseDal.QueryData(x => x.ReceiveOrderId == receiveOrder.ReceiveOrderId); |
| | | if (receiveOrderDetails != null && receiveOrderDetails.Count > 0) |
| | | if (detail!=null) |
| | | { |
| | | rowNo = receiveOrderDetails.Max(x => x.RowNo); |
| | | //åææ¶è´§æç»å¢å æ¶è´§æ°é |
| | | detail.ReceivedQuantity += model.Quantity; |
| | | purchaseOrderDetail.PurchaseDetailReceiveQty = detail.ReceivedQuantity; |
| | | if (purchaseOrderDetail.PurchaseDetailReceiveQty > purchaseOrderDetail.PurchaseDetailQuantity) |
| | | { |
| | | return WebResponseContent.Instance.Error($"éè´åè¯¥ç©ææ°éåæ¶è´§æ°éä¸ä¸è´"); |
| | | } |
| | | if(purchaseOrderDetail.PurchaseDetailReceiveQty ==purchaseOrderDetail.PurchaseDetailQuantity) |
| | | { |
| | | purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Received.ObjToInt(); |
| | | } |
| | | float sumQty = purchaseOrder.Details.Sum(x => x.PurchaseDetailReceiveQty) + model.Quantity; |
| | | _unitOfWorkManage.BeginTran(); |
| | | if (purchaseOrder.OrderQuantity == sumQty) |
| | | { |
| | | purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Received.ObjToInt(); |
| | | _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder); |
| | | } |
| | | BaseDal.UpdateData(detail); |
| | | _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | |
| | | Dt_ReceiveOrderDetail receiveOrderDetail = new Dt_ReceiveOrderDetail() |
| | | else |
| | | { |
| | | PurchaseOrderNo = model.PurchaseOrderNo, |
| | | ReceivedQuantity = model.Quantity, |
| | | MaterielCode = model.MaterielCode, |
| | | LotNo = model.LotNo, |
| | | ReceiveOrderId = receiveOrder.ReceiveOrderId, |
| | | PurchaseOrderDetailRowNo = purchaseOrderDetail.RowNo, |
| | | IfInspection = materielInfo.IsCheck.ObjToInt(), |
| | | CurrCode = "", |
| | | PriceInTax = 0, |
| | | TaxRate = "", |
| | | RowNo = rowNo + 1, |
| | | Unit = purchaseOrderDetail.Unit |
| | | }; |
| | | |
| | | if (receiveOrder.ReceiveOrderStatus == ReceiveOrderStatusEnum.NotStarted.ObjToInt()) |
| | | { |
| | | receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Receiving.ObjToInt(); |
| | | int rowNo = 0; |
| | | if (receiveOrder.Details.Count > 0) |
| | | { |
| | | rowNo = receiveOrder.Details.Max(x => x.RowNo); |
| | | } |
| | | Dt_ReceiveOrderDetail receiveOrderDetail = new Dt_ReceiveOrderDetail() |
| | | { |
| | | PurchaseOrderNo = model.PurchaseOrderNo, |
| | | ReceivedQuantity = model.Quantity, |
| | | MaterielCode = model.MaterielCode, |
| | | LotNo = model.LotNo, |
| | | ReceiveOrderId = receiveOrder.ReceiveOrderId, |
| | | PurchaseOrderDetailRowNo = purchaseOrderDetail.RowNo, |
| | | IfInspection = materielInfo.IsCheck.ObjToInt(), |
| | | CurrCode = "", |
| | | PriceInTax = 0, |
| | | TaxRate = "", |
| | | RowNo = rowNo + 1, |
| | | Unit = purchaseOrderDetail.Unit |
| | | }; |
| | | if (receiveOrder.ReceiveOrderStatus == ReceiveOrderStatusEnum.NotStarted.ObjToInt()) |
| | | { |
| | | receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Receiving.ObjToInt(); |
| | | } |
| | | //夿éè´æç»æ°é |
| | | if (purchaseOrderDetail.PurchaseDetailQuantity<model.Quantity) |
| | | { |
| | | return WebResponseContent.Instance.Error($"è¯·æ ¸å¯¹éè´åè¯¥ç©ææ°é"); |
| | | } |
| | | if (purchaseOrderDetail.PurchaseDetailReceiveQty>0) |
| | | { |
| | | purchaseOrderDetail.PurchaseDetailReceiveQty += model.Quantity; |
| | | } |
| | | else |
| | | { |
| | | purchaseOrderDetail.PurchaseDetailReceiveQty = model.Quantity; |
| | | } |
| | | if (purchaseOrderDetail.PurchaseDetailReceiveQty> purchaseOrderDetail.PurchaseDetailQuantity) |
| | | { |
| | | return WebResponseContent.Instance.Error($"éè´åè¯¥ç©ææ°éåæ¶è´§æ°éä¸ä¸è´"); |
| | | } |
| | | if (purchaseOrderDetail.PurchaseDetailQuantity == purchaseOrderDetail.PurchaseDetailReceiveQty) |
| | | { |
| | | purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Received.ObjToInt(); |
| | | } |
| | | float sumQty = purchaseOrder.Details.Sum(x => x.PurchaseDetailReceiveQty) + model.Quantity; |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.AddData(receiveOrderDetail); |
| | | if (purchaseOrder.OrderQuantity == sumQty) |
| | | { |
| | | purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Received.ObjToInt(); |
| | | _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder); |
| | | } |
| | | _inboundRepository.ReceiveOrderRepository.UpdateData(receiveOrder); |
| | | _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); |
| | | #region 注é |
| | | //if (materielInfo.IsCheck == WhetherEnum.True) |
| | | //{ |
| | | // Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); |
| | | // checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; |
| | | // checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; |
| | | // checkOrder.ScrappedQuantity = 0; |
| | | // checkOrder.ReturnQuantity = 0; |
| | | // checkOrder.DefectedQuantity = 0; |
| | | // _checkOrderRepository.AddData(checkOrder); |
| | | //} |
| | | #endregion |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Received.ObjToInt(); |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.AddData(receiveOrderDetail); |
| | | _inboundRepository.ReceiveOrderRepository.UpdateData(receiveOrder); |
| | | _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); |
| | | |
| | | if (materielInfo.IsCheck == WhetherEnum.True) |
| | | { |
| | | Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); |
| | | checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; |
| | | checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; |
| | | checkOrder.ScrappedQuantity = 0; |
| | | checkOrder.ReturnQuantity = 0; |
| | | checkOrder.DefectedQuantity = 0; |
| | | _checkOrderRepository.AddData(checkOrder); |
| | | } |
| | | |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | } |