|  |  |  | 
|---|
|  |  |  | using WIDESEA_Core.BaseServices; | 
|---|
|  |  |  | using WIDESEA_Core.Enums; | 
|---|
|  |  |  | using WIDESEA_Core.Helper; | 
|---|
|  |  |  | using WIDESEA_External.Model; | 
|---|
|  |  |  | using WIDESEA_IApprovalRepository; | 
|---|
|  |  |  | using WIDESEA_ICheckRepository; | 
|---|
|  |  |  | using WIDESEA_ICheckService; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return content; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public WebResponseContent CommitCheckResult(ERPCheckModel checkModel) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | WebResponseContent content = new WebResponseContent(); | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderNo == checkModel.Code); | 
|---|
|  |  |  | //è·åè´¨æ£å对åºçæ¶è´§å | 
|---|
|  |  |  | if (checkOrder == null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return content.Error($"æªæ¾å°è¯¥è´¨æ£å"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First(); | 
|---|
|  |  |  | if (receiveOrder.ReceiveOrderStatus != ReceiveOrderStatusEnum.Completed.ObjToInt()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return content.Error($"{receiveOrder.ReceiveOrderNo}æ¶è´§åæªå®ææ æ³è´¨æ£"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (checkOrder.CheckOrderStatus == CheckOrderStatusEnum.Checked.ObjToInt()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return content.Error($"è¯¥åæ®å·²ç»æ£éªå®æ"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Dt_CheckOrderResult? checkOrderResult = null; | 
|---|
|  |  |  | Dt_PurchaseOrder? purchaseOrder = null; | 
|---|
|  |  |  | Dt_PurchaseOrderDetail? purchaseOrderDetail = null; | 
|---|
|  |  |  | if (checkModel.Details.Count>0) | 
|---|
|  |  |  | { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ERPCheckResult eRPCheckResult = checkModel.Details.FirstOrDefault(); | 
|---|
|  |  |  | if (eRPCheckResult.Result == CheckResultEnum.Return.ToString())//éè´§ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | checkOrder.DefectedNote = eRPCheckResult.Result; | 
|---|
|  |  |  | checkOrder.ReturnQuantity += (float)Convert.ToDecimal(eRPCheckResult.Quantity); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return content.Error($"æªæ¾å°ç¼ºé·ç±»å"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | checkOrderResult = new Dt_CheckOrderResult() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Quantity = (float)Convert.ToDecimal(eRPCheckResult.Quantity), | 
|---|
|  |  |  | CheckOrderId = checkOrder.CheckOrderId, | 
|---|
|  |  |  | DefectCode = eRPCheckResult.DefectCode, | 
|---|
|  |  |  | Result = eRPCheckResult.Result, | 
|---|
|  |  |  | Note = eRPCheckResult.Note, | 
|---|
|  |  |  | SampleCount = 0, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | //è·å对åºéè´å | 
|---|
|  |  |  | Dt_ReceiveOrderDetail receiveOrderDetail = receiveOrder.Details.First(x => x.RowNo == checkOrder.ReceiveDetailRowNo); | 
|---|
|  |  |  | purchaseOrder = _purchaseOrderRepository.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == receiveOrderDetail.PurchaseOrderNo).Includes(x => x.Details).Where(x => x.Details.Any(v => v.RowNo == receiveOrderDetail.PurchaseOrderDetailRowNo)).First(); | 
|---|
|  |  |  | if (purchaseOrder == null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return content.Error("æªæ¾å°å¯¹åºæ¶è´§éè´å"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | purchaseOrderDetail = purchaseOrder.Details.FirstOrDefault(); | 
|---|
|  |  |  | if (purchaseOrderDetail == null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return content.Error("æªæ¾å°é货对åºçéè´åæç»"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | purchaseOrderDetail.PurchaseDetailReceiveQty -= (float)Convert.ToDecimal(eRPCheckResult.Quantity); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (checkModel.Result == CheckAcceptEnum.Accept.ToString()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | checkOrder.Result = CheckAcceptEnum.Accept.ToString(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if (checkModel.Result == CheckAcceptEnum.UnAccept.ToString()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | checkOrder.Result = CheckAcceptEnum.UnAccept.ToString(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return content.Error("æªæ¾å°æ£éªç±»å"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | checkOrder.CheckOrderStatus = CheckOrderStatusEnum.Checked.ObjToInt(); | 
|---|
|  |  |  | if (checkOrderResult != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity - checkOrderResult.Quantity; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | checkOrder.CheckUserName = App.User.UserName; | 
|---|
|  |  |  | _unitOfWorkManage.BeginTran(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (checkOrderResult != null && purchaseOrder != null && purchaseOrderDetail != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | BaseDal.AddData(checkOrderResult); | 
|---|
|  |  |  | if (purchaseOrder.PurchaseOrderStatus >= PurchaseOrderStatusEnum.Received.ObjToInt()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Receiving.ObjToInt(); | 
|---|
|  |  |  | _purchaseOrderRepository.UpdateData(purchaseOrder); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (purchaseOrderDetail.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.Received.ObjToInt()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Receiving.ObjToInt(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | _purchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (string.IsNullOrEmpty(checkModel.CreatorCode)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //ERP䏿¥ | 
|---|
|  |  |  | WebResponseContent responseContent = _checkOrderService.FeedbackCheckResult(checkOrder, checkOrderResult != null ? new List<Dt_CheckOrderResult> { checkOrderResult } : new List<Dt_CheckOrderResult>()); | 
|---|
|  |  |  | if (!responseContent.Status) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new Exception(responseContent.Message); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | checkOrder.UploadStatus = CheckUploadEnum.UploadOk.ObjToInt(); | 
|---|
|  |  |  | _checkOrderRepository.UpdateData(checkOrder); | 
|---|
|  |  |  | _unitOfWorkManage.CommitTran(); | 
|---|
|  |  |  | content.OK(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | _unitOfWorkManage.RollbackTran(); | 
|---|
|  |  |  | return content.Error($"{ex.Message}"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return content; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// æäº¤éæ£ç¡®è®¤ç»æ | 
|---|
|  |  |  | /// </summary> | 
|---|