From 695571c6009ecbc12e7d4a4fb147df7967a1260e Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 07 七月 2025 20:21:19 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs | 263 +++++++++++++++++++++++++++++----------------------
1 files changed, 149 insertions(+), 114 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..9ea6759 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;
+ if (Range == 0)
+ {
+ return content.Error($"{itemOut.BagNo}鍗曞厓鏁伴噺杞崲澶辫触,璇锋鏌�");
+ }
+ int outSet = (int)(item.Quantity / Range);
+ if (outSet == 0)
+ {
+ return content.Error($"{itemOut.BagNo}鍗曞厓鏁伴噺杞崲澶辫触,璇锋鏌�");
+ }
+ itemOut.SETQty -= outSet;
+
itemOut.StockPcsQty -= item.Quantity;
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