From ac8813cde64f7bf9882657416a1d102191aae960 Mon Sep 17 00:00:00 2001 From: helongyang <647556386@qq.com> Date: 星期六, 19 七月 2025 17:32:59 +0800 Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs | 267 ++++++++++++++++++++++++++++++----------------------- 1 files changed, 151 insertions(+), 116 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" index c700679..2ea2ca9 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" @@ -1,5 +1,6 @@ 锘縰sing AutoMapper; using Castle.Core.Resource; +using Org.BouncyCastle.Asn1.Cmp; using System; using System.Collections.Generic; using System.Linq; @@ -131,6 +132,7 @@ keyValuePairs.Add(item.SaleOrder, responseContent.Data[0].Endcustomer); } } + proOutOrderDetail.QtyPcs += proOutOrderDetail.SpareQty; proOutOrderDetails.Add(proOutOrderDetail); } Dt_ProOutOrder proOutOrder= new Dt_ProOutOrder() @@ -717,7 +719,7 @@ /// <summary> /// 鏌ヨERP璁㈠崟鎵i櫎搴撳瓨鏁伴噺 /// </summary> - public async Task<WebResponseContent> OutProErpSync(string outProOrderNo) + public WebResponseContent OutProErpSync(string outProOrderNo) { WebResponseContent content = new WebResponseContent(); try @@ -726,66 +728,59 @@ Dt_ProOutOrder proOutOrder = BaseDal.Db.Queryable<Dt_ProOutOrder>().Where(x=>x.ProOutOrderNo== outProOrderNo).Includes(x => x.Details).First(); if (proOutOrder==null) { - return await Task.FromResult(content.Error($"鏈壘鍒版垚鍝佸嚭搴撹鍗晎outProOrderNo}")); + return content.Error($"鏈壘鍒版垚鍝佸嚭搴撹鍗晎outProOrderNo}"); } if (proOutOrder.ProOrderStatus>=OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt()) { - return await Task.FromResult(content.Error($"鍑哄簱璁㈠崟宸插畬鎴愭垨鍏抽棴")); + return content.Error($"鍑哄簱璁㈠崟宸插畬鎴愭垨鍏抽棴"); } //璋冪敤erp鍑哄簱璁㈠崟搴撳瓨鏌ヨ鎺ュ彛 string response = _invokeERPService.InvokeOutProErpSync(outProOrderNo); ErpOutProSyncResponseContent erpOutProSyncResponse= response.DeserializeObject<ErpOutProSyncResponseContent>(); if (erpOutProSyncResponse.Code!=200) { - return await Task.FromResult(content.Error($"ERP鍑哄簱璁㈠崟鏌ヨ鎺ュ彛璋冪敤澶辫触,閿欒淇℃伅:{erpOutProSyncResponse.Msg}")); + return content.Error($"ERP鍑哄簱璁㈠崟鏌ヨ鎺ュ彛璋冪敤澶辫触,閿欒淇℃伅:{erpOutProSyncResponse.Msg}"); } List<OutProStock> outProStocks = erpOutProSyncResponse.Data; if (outProStocks.Count<=0 || outProStocks==null) { - return await Task.FromResult(content.Error($"鎴愬搧鍑哄簱璁㈠崟{outProOrderNo}ERP褰撳墠鏈湁鍑哄簱搴撳瓨淇℃伅")); + return content.Error($"鎴愬搧鍑哄簱璁㈠崟{outProOrderNo}ERP褰撳墠鏈湁鍑哄簱搴撳瓨淇℃伅"); + } + // 楠岃瘉鎵�鏈夊嚭搴撳崟鍙锋槸鍚︿竴鑷� + OutProStock? outExist = outProStocks.FirstOrDefault(x => x.ShippingNumber != outProOrderNo); + if (outExist != null) + { + return content.Error($"ERP杩斿洖浜嗗嚭搴撹鍗晎outExist.ShippingNumber}搴撳瓨淇℃伅"); } //鑾峰彇骞冲簱搴撳尯 Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA101.ToString()); if (warehouse==null) { - return await Task.FromResult(content.Error("鏈壘鍒板簱鍖轰俊鎭�")); + return content.Error("鏈壘鍒板簱鍖轰俊鎭�"); } + var productCodes = outProStocks.Select(x => x.Partnum).Distinct().ToList(); //鑾峰彇鎵�鏈夊钩搴撳簱瀛� - List<Dt_ProStockInfo> proStockInfos = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId).Includes(x => x.proStockInfoDetails).ToList(); - List<Dt_ProStockInfoDetail> proStockInfoDetails= new List<Dt_ProStockInfoDetail>(); - foreach (var item in proStockInfos) - { - proStockInfoDetails.AddRange(item.proStockInfoDetails); - } - proStockInfoDetails = proStockInfoDetails.OrderBy(x => x.DateCode).ThenBy(x => x.CreateDate).ToList() ; + List<Dt_ProStockInfoDetail> proStockInfoDetails = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo, Dt_ProStockInfoDetail>((master, detail) => master.Id == detail.ProStockId) + .Where((master, detail) => master.WarehouseId == warehouse.WarehouseId && productCodes.Contains(detail.ProductCode)) + .Select((master, detail) => detail) + .ToList(); + proStockInfoDetails = proStockInfoDetails.OrderBy(x => x.DateCode).ThenBy(x => x.CreateDate).ToList(); + List<int> stockIds = proStockInfoDetails.Select(x => x.ProStockId).Distinct().ToList(); + //鑾峰彇鎵�鏈夊钩搴撲富琛� + List<Dt_ProStockInfo> proStockInfos = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => stockIds.Contains(x.Id)).Includes(x => x.proStockInfoDetails).ToList(); List<Dt_ProStockInfo> delProStockInfos = new List<Dt_ProStockInfo>(); List<Dt_ProStockInfoDetail> delStockInfoDetails = new List<Dt_ProStockInfoDetail>(); foreach (var item in outProStocks) { - //鏌ヨ搴撳瓨璁板綍 - if (item.ShippingNumber != outProOrderNo) - { - return await Task.FromResult(content.Error($"ERP杩斿洖浜嗗嚭搴撹鍗晎item.ShippingNumber}搴撳瓨淇℃伅")); - } - //鑾峰彇搴撳瓨 - List<Dt_ProStockInfoDetail> outStocks = proStockInfoDetails.Where(x=>x.ProductCode==item.Partnum).ToList(); - if (outStocks.Count==0 || outStocks==null) - { - return await Task.FromResult(content.Error($"{item.Partnum}浜у搧鍨嬪彿搴撳瓨涓嶅瓨鍦�")); - } - foreach (var itemOut in outStocks) + foreach (var itemOut in proStockInfoDetails.Where(x => x.ProductCode == item.Partnum).ToList()) { if (item.Quantity==0) { break; } + Dt_ProOutOrderDetail? proOutOrderDetail = proOutOrder.Details.FirstOrDefault(x => x.SaleOrder == item.SoNumber && x.PCode == item.Partnum) ?? throw new Exception($"鍑哄簱鍗晎proOutOrder.ProOutOrderNo}鏈壘鍒伴攢鍞鍗晎item.SoNumber}鏄庣粏,璇锋鏌�"); if (item.Quantity >= itemOut.StockPcsQty) { - Dt_ProOutOrderDetail? proOutOrderDetail = proOutOrder.Details.FirstOrDefault(x => x.SaleOrder == item.SoNumber && x.PCode == item.Partnum); - if (proOutOrderDetail == null) - { - return await Task.FromResult(content.Error($"鍑哄簱鍗晎proOutOrder.ProOutOrderNo}鏈壘鍒伴攢鍞鍗晎item.SoNumber}鏄庣粏,璇锋鏌�")); - } //鏇存柊鍑哄簱鏄庣粏鍗曟暟閲� proOutOrderDetail.OverQtyPcs += itemOut.StockPcsQty; item.Quantity -= (int)itemOut.StockPcsQty; @@ -793,7 +788,7 @@ proStockInfoDetails.Remove(itemOut); if (proOutOrderDetail.OverQtyPcs > proOutOrderDetail.QtyPcs) { - return await Task.FromResult(content.Error($"鍑哄簱鍗晎proOutOrder.ProOutOrderNo}閿�鍞鍗晎item.SoNumber}鏁伴噺婧㈠嚭{proOutOrderDetail.OverQtyPcs - proOutOrderDetail.QtyPcs}")); + return content.Error($"鍑哄簱鍗晎proOutOrder.ProOutOrderNo}閿�鍞鍗晎item.SoNumber}鏁伴噺婧㈠嚭{proOutOrderDetail.OverQtyPcs - proOutOrderDetail.QtyPcs}"); } if (proOutOrderDetail.ProOrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt()) { @@ -806,20 +801,26 @@ } else if (item.Quantity < itemOut.StockPcsQty) { - Dt_ProOutOrderDetail? proOutOrderDetail = proOutOrder.Details.FirstOrDefault(x => x.SaleOrder == item.SoNumber && x.PCode == item.Partnum); - if (proOutOrderDetail == null) - { - return await Task.FromResult(content.Error($"鍑哄簱鍗晎proOutOrder.ProOutOrderNo}鏈壘鍒伴攢鍞鍗晎item.SoNumber}鏄庣粏,璇锋鏌�")); - } + //鏇存柊鍑哄簱鏄庣粏鍗曟暟閲� proOutOrderDetail.OverQtyPcs += item.Quantity; - item.Quantity -= item.Quantity; - float Range = itemOut.StockPcsQty / itemOut.SETQty; - itemOut.SETQty = item.Quantity / Range; + int Range = (int)itemOut.StockPcsQty / (int)itemOut.SETQty; + if (Range == 0) + { + return content.Error($"{itemOut.BagNo}鍗曞厓鏁伴噺杞崲澶辫触,璇锋鏌�,Range:{Range}"); + } + int outSet =item.Quantity / Range; + if (outSet == 0) + { + return content.Error($"{itemOut.BagNo}鍗曞厓鏁伴噺杞崲澶辫触,璇锋鏌�,outSet:{outSet}"); + } + itemOut.SETQty -= outSet; + itemOut.StockPcsQty -= item.Quantity; + item.Quantity = 0; if (proOutOrderDetail.OverQtyPcs > proOutOrderDetail.QtyPcs) { - return await Task.FromResult(content.Error($"鍑哄簱鍗晎proOutOrder.ProOutOrderNo}閿�鍞鍗晎item.SoNumber}鏁伴噺婧㈠嚭{proOutOrderDetail.OverQtyPcs - proOutOrderDetail.QtyPcs}")); + return content.Error($"鍑哄簱鍗晎proOutOrder.ProOutOrderNo}閿�鍞鍗晎item.SoNumber}鏁伴噺婧㈠嚭{proOutOrderDetail.OverQtyPcs - proOutOrderDetail.QtyPcs}"); } if (proOutOrderDetail.ProOrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt()) { @@ -831,6 +832,10 @@ } } } + if (item.Quantity>0) + { + return content.Error($"鏈壘鍒皗item.SoNumber}鍙墸鍑忓簱瀛�"); + } } if (proOutOrder.Details.Count == proOutOrder.Details.Where(x => x.ProOrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count()) { @@ -839,24 +844,34 @@ else { Dt_ProOutOrderDetail? proOutOrderDetail = proOutOrder.Details.FirstOrDefault(x => x.ProOrderDetailStatus <= OrderDetailStatusEnum.Over.ObjToInt()); - return await Task.FromResult(content.Error($"{proOutOrderDetail?.SaleOrder}閿�鍞鍗曟暟閲忛渶鍑簕proOutOrderDetail?.QtyPcs},鍙嚭{proOutOrderDetail?.OverQtyPcs}")); + return content.Error($"{proOutOrderDetail?.SaleOrder}閿�鍞鍗曟暟閲忛渶鍑簕proOutOrderDetail?.QtyPcs},鍙嚭{proOutOrderDetail?.OverQtyPcs}"); + } + //鑾峰彇鍒犻櫎鐨勫簱瀛樹富琛� + List<int> delStockIds = delStockInfoDetails.Select(x => x.ProStockId).Distinct().ToList(); + List<int> delStockDetailIds = delStockInfoDetails.Select(x => x.Id).ToList(); + foreach (var item in delStockIds) + { + Dt_ProStockInfo proStockInfo = proStockInfos.FirstOrDefault(x => x.Id == item); + Dt_ProStockInfoDetail? proStockInfoDetail = proStockInfo.proStockInfoDetails.FirstOrDefault(x => !delStockDetailIds.Contains(x.Id)); + if (proStockInfoDetail == null) + { + delProStockInfos.Add(proStockInfo); + } } //鏇存柊鏁版嵁 _unitOfWorkManage.BeginTran(); - if (delStockInfoDetails.Count > 0) - { - _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(delStockInfoDetails, OperateTypeEnum.鑷姩鍒犻櫎); - } - await _stockRepository.ProStockInfoDetailRepository.UpdateDataAsync(proStockInfoDetails); - await BaseDal.UpdateDataAsync(proOutOrder); - await _outboundRepository.ProOutOrderDetailRepository.UpdateDataAsync(proOutOrder.Details); + _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(delStockInfoDetails, OperateTypeEnum.鑷姩鍒犻櫎); + _stockRepository.ProStockInfoRepository.DeleteAndMoveIntoHty(delProStockInfos, OperateTypeEnum.鑷姩瀹屾垚); + _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfoDetails); + BaseDal.UpdateData(proOutOrder); + _outboundRepository.ProOutOrderDetailRepository.UpdateData(proOutOrder.Details); _unitOfWorkManage.CommitTran(); - return await Task.FromResult(content.OK()); + return content.OK(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); - return await Task.FromResult(content.Error(ex.Message)); + return content.Error(ex.Message); } } /// <summary> @@ -905,17 +920,17 @@ { return await Task.FromResult(content.Error("鏈壘鍒板簱鍖轰俊鎭�")); } - //鑾峰彇鎵�鏈夊钩搴撶殑鏁版嵁 - List<Dt_ProStockInfo> AllproStockInfos = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>() - .Where(x => x.WarehouseId == warehouse.WarehouseId) - .Includes(x => x.proStockInfoDetails).ToList(); - List<Dt_ProStockInfo> proStockInfos = new List<Dt_ProStockInfo>(); - List<Dt_ProStockInfoDetail> proStockInfoDetails = new List<Dt_ProStockInfoDetail>(); - foreach (var item in AllproStockInfos) - { - proStockInfoDetails.AddRange(item.proStockInfoDetails); - } + + //鑾峰彇鎵�鏈夊钩搴撳簱瀛� + List<Dt_ProStockInfoDetail> proStockInfoDetails = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo, Dt_ProStockInfoDetail>((master, detail) => master.Id == detail.ProStockId) + .Where((master, detail) => master.WarehouseId == warehouse.WarehouseId && outProInfos.Select(x=>x.ProductCode).Contains(detail.ProductCode)) + .Select((master, detail) => detail) + .ToList(); + List<int> stockIds = proStockInfoDetails.Select(x => x.ProStockId).Distinct().ToList(); + //鑾峰彇鎵�鏈夊钩搴撲富琛� + List<Dt_ProStockInfo> proStockInfos = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => stockIds.Contains(x.Id)).Includes(x=>x.proStockInfoDetails).ToList(); proStockInfoDetails = proStockInfoDetails.OrderBy(x => x.DateCode).ThenBy(x => x.CreateDate).ThenBy(x=>x.StockPcsQty).ToList(); + List<Dt_Warehouse> warehouses = await _basicRepository.WarehouseRepository.QueryDataAsync(x => x.WarehouseType == WarehouseTypEnum.鎴愬搧.ToString()); //灏嗗叾鍒嗙粍 outProInfos = outProInfos.GroupBy(x => x.ProductCode).Select(x=>new OutProInfoDTO() @@ -924,6 +939,7 @@ OutQtys=x.Sum(x=>x.OutQtys) }).ToList(); List<Dt_ProStockInfoDetail> UpStockInfoDetails = new List<Dt_ProStockInfoDetail>(); + List<Dt_ProStockInfo> DelStocks = new List<Dt_ProStockInfo>(); foreach (var item in outProInfos) { //鑾峰彇搴撳瓨 @@ -931,6 +947,10 @@ if (outStocks.Count <= 0 || outProInfos==null) { return await Task.FromResult(content.Error($"鏈壘鍒颁骇鍝亄item.ProductCode}搴撳瓨")); + } + if (outStocks.Sum(x=>x.StockPcsQty)< item.OutQtys) + { + return await Task.FromResult(content.Error($"鍙敤骞冲簱鏁伴噺{outStocks.Sum(x => x.StockPcsQty)}涓嶆弧瓒冲嚭搴撴暟閲弡item.OutQtys}")); } foreach (var outStock in outStocks) { @@ -972,6 +992,10 @@ else { outStock.OutSETQty = outStock.OutboundQuantity / Range; + } + if (outStock.OutSETQty==0) + { + return await Task.FromResult(content.Error($"{outStock.BagNo}鍗曞厓鏁伴噺杞崲澶辫触,璇锋鏌�")); } item.OutQtys -= (int)BeyondQtys; UpStockInfoDetails.Add(outStock); @@ -1026,7 +1050,11 @@ outStock.OutboundQuantity = BeyondQtys; float Range = outStock.StockPcsQty / outStock.SETQty; outStock.OutSETQty = outStock.OutboundQuantity / Range; - item.OutQtys -= (int)BeyondQtys; + if (outStock.OutSETQty == 0) + { + return await Task.FromResult(content.Error($"{outStock.BagNo}鍗曞厓鏁伴噺杞崲澶辫触,璇锋鏌�")); + } + item.OutQtys = 0; UpStockInfoDetails.Add(outStock); proStockInfoDetails.Remove(outStock); } @@ -1042,7 +1070,11 @@ outStock.OutboundQuantity = item.OutQtys; float Range = outStock.StockPcsQty / outStock.SETQty; outStock.OutSETQty = outStock.OutboundQuantity / Range; - item.OutQtys -= item.OutQtys; + if (outStock.OutSETQty == 0) + { + return await Task.FromResult(content.Error($"{outStock.BagNo}鍗曞厓鏁伴噺杞崲澶辫触,璇锋鏌�")); + } + item.OutQtys = 0; UpStockInfoDetails.Add(outStock); proStockInfoDetails.Remove(outStock); } @@ -1067,69 +1099,72 @@ return await Task.FromResult(content.Error($"{proOutOrderDetail?.SaleOrder}閿�鍞鍗曟暟閲忛渶鍑簕proOutOrderDetail?.QtyPcs},鍙嚭{proOutOrderDetail?.OverQtyPcs}")); } List<StockOutItemsItem> stockOutItems = new List<StockOutItemsItem>(); - if (proOutOrder.ProOrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt()) + //鑾峰彇鎵�鏈夊凡鎵爜寰呭彂璐х殑搴撳瓨 + List<Dt_ProStockInfoDetail> assOutStocks = _stockRepository.ProStockInfoDetailRepository.Db.Queryable<Dt_ProStockInfoDetail>() + .Where(x => x.OutProNo == ProOutNo).ToList(); + UpStockInfoDetails.AddRange(assOutStocks); + foreach (var item in UpStockInfoDetails) { - //鑾峰彇鎵�鏈夊凡鎵爜寰呭彂璐х殑搴撳瓨 - List<Dt_ProStockInfoDetail> assOutStocks = _stockRepository.ProStockInfoDetailRepository.Db.Queryable<Dt_ProStockInfoDetail>() - .Where(x => x.OutProNo == ProOutNo).ToList(); - UpStockInfoDetails.AddRange(assOutStocks); - foreach (var item in UpStockInfoDetails) + StockOutItemsItem outItemsItem = new StockOutItemsItem() { - StockOutItemsItem outItemsItem = new StockOutItemsItem() - { - PartNum = item.ProductCode, - Rev = item.ProductVersion, - SoNumber = item.OutDetailSaleNo, - BatchNumber = item.ProductCode, - QtyPcs = item.OutboundQuantity, - QtySet = item.OutSETQty - }; - stockOutItems.Add(outItemsItem); - } + PartNum = item.ProductCode, + Rev = item.ProductVersion, + SoNumber = item.OutDetailSaleNo, + BatchNumber = item.ProductCode, + QtyPcs = item.OutboundQuantity, + QtySet = item.OutSETQty + }; + stockOutItems.Add(outItemsItem); } Dt_Warehouse warehouseOut = warehouses.Where(x => x.WarehouseId == proOutOrder.WarehouseId).FirstOrDefault(); - _unitOfWorkManage.BeginTran(); - //澶勭悊搴撳瓨鏁版嵁鍜屼笂浼燛RP - if (proOutOrder.ProOrderStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt()) + //鑾峰彇鍒犻櫎搴撳瓨 + List<Dt_ProStockInfoDetail> delDetails = UpStockInfoDetails.Where(x => x.AssignDel == 1).ToList(); + List<Dt_ProStockInfoDetail> UpDetails = UpStockInfoDetails.Where(x => x.AssignDel != 1).ToList(); + //鑾峰彇鍒犻櫎鐨勫簱瀛樹富琛� + List<int> delStockIds = delDetails.Select(x => x.ProStockId).Distinct().ToList(); + List<int> delStockDetailIds = delDetails.Select(x => x.Id).ToList(); + foreach (var item in delStockIds) { - //鎴愬搧搴撳瓨璁板綍鍙樺姩寰呭姞鍏� - ERPProOutOrderModel proOutOrderModel = new ERPProOutOrderModel() + Dt_ProStockInfo proStockInfo = proStockInfos.FirstOrDefault(x=>x.Id==item); + Dt_ProStockInfoDetail? proStockInfoDetail= proStockInfo.proStockInfoDetails.FirstOrDefault(x=> !delStockDetailIds.Contains(x.Id)); + if (proStockInfoDetail==null) { - Way = 1, - StockOutCode = _outboundOrderService.CreateCodeByRule(nameof(RuleCodeEnum.ProOutCOdeRule)), - ConfirmedUserNo = App.User.UserName, - AssignUserNo = App.User.UserName, - WarehouseCode = warehouseOut.WarehouseCode, - ShipDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), - DeliverplanCode = proOutOrder.ProOutOrderNo, - Remark = proOutOrder.Remark, - StockOutItems = stockOutItems - }; - //鑾峰彇鍒犻櫎搴撳瓨 - List<Dt_ProStockInfoDetail> delDetails = UpStockInfoDetails.Where(x=>x.AssignDel==1).ToList(); - List<Dt_ProStockInfoDetail> UpDetails = UpStockInfoDetails.Where(x => x.AssignDel != 1).ToList(); - //鏇存柊鏁版嵁 - UpDetails.ForEach(x => - { - x.StockPcsQty -= x.OutboundQuantity; - x.SETQty -= x.OutSETQty; - x.OutDetailId = 0; - x.OutDetailSaleNo = null; - x.OutProNo = null; - }); - _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(delDetails, OperateTypeEnum.鑷姩瀹屾垚); - await _stockRepository.ProStockInfoDetailRepository.UpdateDataAsync(UpDetails); - //鍚屾ERP - string response = _invokeERPService.InvokeProOutApi(proOutOrderModel); - ErpRequestContent erpRequestContent = response.DeserializeObject<ErpRequestContent>(); - if (erpRequestContent.res != 1) - { - throw new Exception("鍚屾ERP澶辫触,閿欒淇℃伅:" + erpRequestContent.Data); + DelStocks.Add(proStockInfo); } } - else + _unitOfWorkManage.BeginTran(); + //澶勭悊搴撳瓨鏁版嵁鍜屼笂浼燛RP + //鎴愬搧搴撳瓨璁板綍鍙樺姩寰呭姞鍏� + ERPProOutOrderModel proOutOrderModel = new ERPProOutOrderModel() { - await _stockRepository.ProStockInfoDetailRepository.UpdateDataAsync(UpStockInfoDetails); + Way = 1, + StockOutCode = _outboundOrderService.CreateCodeByRule(nameof(RuleCodeEnum.ProOutCOdeRule)), + ConfirmedUserNo = App.User.UserName, + AssignUserNo = App.User.UserName, + WarehouseCode = warehouseOut.WarehouseCode, + ShipDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), + DeliverplanCode = proOutOrder.ProOutOrderNo, + Remark = proOutOrder.Remark, + StockOutItems = stockOutItems + }; + //鏇存柊鏁版嵁 + UpDetails.ForEach(x => + { + x.StockPcsQty -= x.OutboundQuantity; + x.SETQty -= x.OutSETQty; + x.OutDetailId = 0; + x.OutDetailSaleNo = null; + x.OutProNo = null; + }); + _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(delDetails, OperateTypeEnum.鑷姩瀹屾垚); + _stockRepository.ProStockInfoRepository.DeleteAndMoveIntoHty(DelStocks, OperateTypeEnum.鑷姩瀹屾垚); + await _stockRepository.ProStockInfoDetailRepository.UpdateDataAsync(UpDetails); + //鍚屾ERP + string response = _invokeERPService.InvokeProOutApi(proOutOrderModel); + ErpRequestContent erpRequestContent = response.DeserializeObject<ErpRequestContent>(); + if (erpRequestContent.res != 1) + { + throw new Exception("鍚屾ERP澶辫触,閿欒淇℃伅:" + erpRequestContent.Data); } await _outboundRepository.ProOutOrderDetailRepository.UpdateDataAsync(proOutOrder.Details); await BaseDal.UpdateDataAsync(proOutOrder); -- Gitblit v1.9.3