diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ScrapNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ScrapNoteEventHandler.cs index d28b17034..0f474b9c2 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ScrapNoteEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ScrapNoteEventHandler.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using DocumentFormat.OpenXml.Vml.Spreadsheet; using Volo.Abp.EventBus; using Volo.Abp.Uow; using Win_in.Sfs.Basedata.Application.Contracts; @@ -40,31 +41,32 @@ public class ScrapNoteEventHandler private async Task AddTransactionsAsync(List scrapNotes) { + var isScrapLocation = await SettingManager.IsTrueAsync(StoreSettings.Common.EnableScrapLocation).ConfigureAwait(false); //如果WMS管理报废库,生成报废库存转移(从HOLD库先转移到线边) var holdLocation = await LocationAclService.GetFirstByTypeAsync(EnumLocationType.HOLD).ConfigureAwait(false); //隔离库位 var transferLogs = new List(); - var transactions = new List(); - //如果WMS管理报废库,生成报废库存转移(从HOLD库先转移到线边) - if (await SettingManager.IsTrueAsync(StoreSettings.Common.EnableScrapLocation).ConfigureAwait(false)) + var transactions = new List();//更新库存的事务 + var emptyTransactions = new List();//不更新库存的事务 + foreach (var scrapNote in scrapNotes) { - foreach (var scrapNote in scrapNotes) + if (isScrapLocation && scrapNote.Worker == "MES")//管理隔离库并且是mes接口来的从隔离库直接报废(但是要先移到线边) + { + transferLogs.AddRange(BuildTransferLogs(scrapNote, holdLocation)); + emptyTransactions.AddRange(BuildTransactions(scrapNote)); + } + else { - - if (await SettingManager.IsTrueAsync(StoreSettings.Common.EnableScrapLocation).ConfigureAwait(false)) - { - transferLogs.AddRange(BuildTransferLogs(scrapNote, holdLocation)); - } transactions.AddRange(BuildTransactions(scrapNote)); } + + } + if (transferLogs.Count > 0) + { //报废是库存世界变动是隔离库数量-1,但是增加了一个移库日志从Hold到线边,库存事务是三个,Hold库-1(移库),线边+1(移库),线边-1(报废) - await TransferLogAppService.AddManyWithTransferAsync(transferLogs, transactions).ConfigureAwait(false); - await TransactionAppService.AddManyEmptyAsync(transactions).ConfigureAwait(false); + await TransferLogAppService.AddManyWithTransferAsync(transferLogs, emptyTransactions).ConfigureAwait(false); + await TransactionAppService.AddManyEmptyAsync(emptyTransactions).ConfigureAwait(false); } - else + if (transactions.Count > 0) { - foreach (var scrapNote in scrapNotes) - { - transactions.AddRange(BuildTransactions(scrapNote)); - } await TransactionAppService.AddManyAsync(transactions).ConfigureAwait(false); } } @@ -72,7 +74,7 @@ public class ScrapNoteEventHandler private List BuildTransferLogs(ScrapNote scrapNote, LocationDTO holdLocation) { var transferLogs = new List(); - + foreach (var detail in scrapNote.Details.Where(detail => detail.Qty != 0)) { var transferLog = ObjectMapper.Map(detail);