From 2c60540518b5f2071987dcbe6aa237af4b97c77a Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期一, 12 五月 2025 23:49:52 +0800
Subject: [PATCH] 修复了一些已知问题

---
 Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs |   41 +++++++++++++++++++++--------------------
 1 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs b/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs
index a78a02a..e8bd236 100644
--- a/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs
+++ b/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs
@@ -10,11 +10,7 @@
 using Tiger.Model;
 using Tiger.IBusiness;
 using Tiger.Business.WMS.Common;
-using Org.BouncyCastle.Ocsp;
-using Tiger.Model.Sharetronic.Shelf;
-using MailKit.Search;
 using Tiger.Business.WMS.Extensions;
-using static Tiger.Model.BIZ_WMS_PREP_BTH;
 
 namespace Tiger.Business.WMS.Transaction
 {
@@ -34,7 +30,7 @@
         #region Propertys & Variables
         public Preparation CurPREP { get; set; }
         private List<BIZ_WMS_PREP_SN> CurSn = new();
-        private BIZ_WMS_PREP_DTL CurPrepDtl = new();
+        private BIZ_WMS_PREP_DTL CurPrepDtl;
         public List<SuggestItem> Suggests { get; set; } = new();
         public List<WMS_ITEM_POOL> CurPoolList => Suggests.Where(q => !q.poolItem.IsNullOrEmpty()).Select(q => q.poolItem).ToList();
         public List<WMS_LOCATION> LocationHis { get; set; } = new();
@@ -51,7 +47,8 @@
             var action = new ApiAction<ScanOutput>(new ScanOutput());
             try
             {
-
+                //Result<List<SuggestItem>> result = Suggest("CurPrepDtl.ORDER_NO", "CurPrepDtl.ITEM_CODE", new SuggestOption(), new(), 100.0);
+                //action.LocaleMsg = result.LocaleMsg;
                 if (input.Command == "ScanOrder")
                 {
                     action = await ScanOrder(input);
@@ -131,7 +128,7 @@
 
                 if (CurPREP.Order.IsNullOrEmpty() || !CurPREP.Order.SourceOrders.Any(q => q.SOURCE_ORDER == inputOrder.SOURCE_ORDER))
                 {
-                    action = CurPREP.AddOrder(inputOrder.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>(), inputOrder.SOURCE_CODE);
+                    action = CurPREP.AddOrder(inputOrder.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>(), inputOrder.SOURCE_ORDER);
                 }
                 else
                 {
@@ -158,8 +155,8 @@
         public async Task<ApiAction<BIZ_WMS_PREP>> GetPrepInfo()
         {
             var action = new ApiAction<BIZ_WMS_PREP>();
-            CurPREP.Order = MainDB.Queryable<BIZ_WMS_PREP>().Where(q => q.ID == CurPREP.Order.ID).IncludesAllFirstLayer().First();
-
+            var prepId = CurPREP?.Order?.ID;
+            CurPREP.Order = MainDB.Queryable<BIZ_WMS_PREP>().Where(q => q.ID == prepId).IncludesAllFirstLayer().First();
             action.Data = CurPREP.Order;
             return action;
         }
@@ -222,7 +219,7 @@
                         var actQty = CurPrepDtl.QTY_PREP > CurPREP.BizType.GetActReqQty(CurPrepDtl) ? 0 : (CurPREP.BizType.GetActReqQty(CurPrepDtl) - CurPrepDtl.QTY_PREP);
                         if (inv != null && actQty > 0)
                         {
-                            inv.poolItem = inv.Item.GetPoolItem(OrgCode, nameof(CurPREP.Order), CurPrepDtl.ORDER_NO, CurPrepDtl.ORDER_LINE, actQty, true);
+                            inv.poolItem = inv.Item.GetPoolItem(OrgCode, TransID, nameof(CurPREP.Order), CurPrepDtl.ORDER_NO, CurPrepDtl.ORDER_LINE, actQty, true);
                         }
                         else
                         {
@@ -246,12 +243,13 @@
                     }
 
                     Suggests.Clear();
+                    Suggests = result.Data;
                     var remain = actQty;
                     Suggests.ForEach((inv) =>
                     {
                         if (remain > 0)
                         {
-                            inv.poolItem = inv.Item.GetPoolItem(input.AuthOption.OrgCode, nameof(CurPREP.Order), CurPrepDtl.ORDER_NO, CurPrepDtl.ORDER_LINE, remain, false);
+                            inv.poolItem = inv.Item.GetPoolItem(OrgCode, TransID, nameof(CurPREP.Order), CurPrepDtl.ORDER_NO, CurPrepDtl.ORDER_LINE, remain, false);
                             remain -= inv.poolItem.ALLOC_QTY;
                         }
                         else
@@ -290,12 +288,15 @@
         public async Task<ApiAction<BIZ_WMS_PREP_DTL>> GetCurPrepItem()
         {
             var action = new ApiAction<BIZ_WMS_PREP_DTL>();
-            var prepDtl = MainDB.Queryable<BIZ_WMS_PREP_DTL>().Where(q => q.ID == CurPrepDtl.ID).First();
-            prepDtl.Suggests = Suggests;
-            CurPrepDtl = prepDtl;
-            CurPREP.Order.Details.RemoveAll(q => q.ID == CurPrepDtl.ID);
-            CurPREP.Order.Details.Add(CurPrepDtl);
-            action.Data = CurPrepDtl;
+            if (!CurPrepDtl.IsNullOrEmpty())
+            {
+	            var prepDtl = MainDB.Queryable<BIZ_WMS_PREP_DTL>().Where(q => q.ID == CurPrepDtl.ID).First();
+	            prepDtl.Suggests = Suggests;
+	            CurPrepDtl = prepDtl;
+	            CurPREP.Order.Details.RemoveAll(q => q.ID == CurPrepDtl.ID);
+	            CurPREP.Order.Details.Add(CurPrepDtl);
+	            action.Data = CurPrepDtl;
+            }
             return action;
         }
 
@@ -789,7 +790,7 @@
         /// <returns></returns>
         public async Task<ApiAction> GenerateDlvyBatch(BaseInput input)
         {
-            var range = input.Data.ToInt32().GetEnum<BATCH_RANGEs>();
+            var range = input.Data.ToInt32().GetEnum<BIZ_WMS_PREP_BTH.BATCH_RANGEs>();
             var action = await CurPREP.Order.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>() .GenerateDlvyBatch(this, range);
             return action;
         }
@@ -803,7 +804,7 @@
         {
             ResetScan();
             CurPREP = new(MainDB, UserCode, OrgCode);
-            CurPrepDtl = new();
+            CurPrepDtl = null;
             CurScanShelf = null;
             base.ResetTrans();
         }
@@ -824,7 +825,7 @@
             //CloseLight(LocationHis).Wait();
             if (!(CurPREP?.Order?.ORDER_NO ?? "").IsNullOrEmpty())
             {
-                MainDB.Deleteable<WMS_ITEM_POOL>().Where(x => x.TRANS_NO == CurPREP.Order.ORDER_NO).ExecuteCommand();
+                MainDB.Deleteable<WMS_ITEM_POOL>().Where(q => q.TRANS_NO == CurPREP.Order.ORDER_NO || q.TRANS_ID == TransID).ExecuteCommand();
             }
 
             this.IsFinished = true;

--
Gitblit v1.9.3