From cbf4a8f42cd0d7e4ff994ee7f9b9e9c33b9c39c8 Mon Sep 17 00:00:00 2001
From: Demo <Demo@DESKTOP-CPA90BF>
Date: 星期三, 13 三月 2024 19:32:29 +0800
Subject: [PATCH] PDA取样出库拣货

---
 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs |  173 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 119 insertions(+), 54 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index 211d77a..785537c 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -1388,39 +1388,17 @@
                     }
 
 
-                    //鍑哄簱鍗�
-                    var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.AsnSampleNo == asnNo);
-                    BllExportNoticeDetail noticeDetail2;
-                    if (notice != null && notice.Status != "6")
-                    {
-                       
-                    }
-                    else
-                    {
-                        //鍒涘缓鍑哄簱鍗曞強鏄庣粏
-
-                    }
-                   
-                    //鍑哄簱鍗曟槑缁�
-                    var noticeDetail = Db.Queryable<BllExportNoticeDetail>()
-                        .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
-                    if (noticeDetail == null)
-                    {
-                        throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
-                    }
-                    //鍑哄簱鍒嗛厤淇℃伅
-                    var allot2 = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.Status == "5" && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
-                    if (allot2 == null)
-                    {
-                        throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
-                    }
-                    
-
                     //搴撳瓨鏄庣粏
-                    var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId);
+                    var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.ASNNo == asnNo && m.PalletNo == palletNo);
                     if (stockDetail == null)
                     {
-                        throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
+                        throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑搴撳瓨鏄庣粏淇℃伅锛�");
+                    }
+
+                    var sku = Db.Queryable<SysMaterials>().First(m=>m.IsDel == "0" && m.SkuNo == stockDetail.SkuNo);
+                    if (sku == null)
+                    {
+                        throw new Exception("鏈煡璇㈠埌褰撳墠鎵樼洏涓婄殑鐗╂枡淇℃伅");
                     }
                     //搴撳瓨鎬昏〃
                     var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
@@ -1429,11 +1407,111 @@
                         throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
                     }
 
+                    //鍑哄簱鍗�
+                    var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.AsnSampleNo == asnNo);
+                    //鍒涘缓鍑哄簱鍗�
+                    if (notice == null || (notice != null && notice.Status != "6"))
+                    {
+                        var billNo = "";
+                        var bl = true;
+                        do
+                        {
+                            //鑾峰彇鑷鍗曟嵁鍙�
+                            billNo = new Common().GetMaxNo("SO");
+                            var no = billNo;
+                            bl = Db.Queryable<BllExportNotice>().Any(m => m.SONo == no);
+                        } while (bl);
+
+                        
+                        var addNotice = new BllExportNotice()
+                        {
+                            SONo = billNo,
+                            Type = "3",
+                            Status = "4",
+                            Origin = "WMS",
+                           
+                            IsWave = "0",
+                            WaveNo = "",
+                            IsDespatch = "0",
+                            CompleteTime = DateTime.Now,
+                            CreateUser = 0,
+                        };
+
+                        var n = Db.Insertable(addNotice).ExecuteCommand();
+                        notice = addNotice;
+                    }
+
+                    //鍒涘缓鍑哄簱鍗曟槑缁�
+                    var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.SONo == notice.SONo && m.SkuNo == stockDetail.SkuNo && m.LotNo.Contains(stockDetail.LotNo));
+                    if (noticeDetail == null)
+                    {
+                        var addNoticeDetail = new BllExportNoticeDetail()
+                        {
+                            SONo = notice.SONo,
+                            SkuNo = sku.SkuNo,
+                            SkuName = sku.SkuName,
+                            Standard = sku.Standard,
+                            LotNo = stockDetail.LotNo,
+                            LotText = "",
+                            Qty = 0,
+                            AllotQty = 0,
+                            FactQty = 0,
+                            CompleteQty = 0,
+                            PackagNo = sku.PackagNo,
+                            Price = sku.Price,
+                            //Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * pickQty,
+                            IsBale = "",
+                            IsBelt = "",
+                            SupplierLot = stock.SupplierLot,
+                            IsWave = "0",
+                            WaveNo = "",
+                            IsIssueLotNo = "0",
+                            Status = "3",
+                            CreateUser = 0,
+                        };
+                        var m = Db.Insertable(addNoticeDetail).ExecuteCommand();
+                        noticeDetail = addNoticeDetail;
+                    }
+                    //鍑哄簱鍒嗛厤淇℃伅
+                    var allot2 = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.Status == "5" && m.SONo == notice.SONo && m.PalletNo == palletNo);
+                    if (allot2 == null)
+                    {
+                        //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+                        var addAllot = new BllExportAllot
+                        {
+                            SONo = notice.SONo,
+                            WaveNo = "",
+                            SODetailNo = noticeDetail.Id,
+                            StockId = stockDetail.Id,
+                            LotNo = stockDetail.LotNo,
+                            LotText = stockDetail.LotText,
+                            SupplierLot = stockDetail.SupplierLot,
+                            SkuNo = sku.SkuNo,
+                            SkuName = sku.SkuName,
+                            Standard = sku.Standard,
+                            PalletNo = palletNo,
+                            IsBale = "0" , //鏄惁瑁瑰寘
+                            IsBelt = "0" , //鏄惁鎵撳甫
+
+                            Qty = 0,
+                            CompleteQty = 0,
+
+                            Status = "5",
+                            LogisticsId = notice.LogisticsId,
+                            IsAdvance = "0",
+                            OutMode = "",//鍑哄簱鍙�
+
+                            CreateUser = userId,
+                            CreateTime = DateTime.Now
+                        };
+
+                        var fp = Db.Insertable(addAllot).ExecuteCommand();
+                        allot2 = addAllot;
+                    }
+                    
+
                     #endregion
 
-                    
-                    
-                    
 
                     //鍒ゆ柇鏄暎鏀嫞璐ц繕鏄暟閲忔嫞璐�
                     var biaoShi = "0";//0锛氭暣绠辨嫞璐с��1锛氭暎鏀嫞璐с��2锛氭暟閲忔嫞璐�
@@ -1547,6 +1625,8 @@
                         }
                         pickQty += item.Qty;
                     }
+                    
+
                     //鏀瑰彉搴撳唴绠辩爜鏄惁闆剁淇℃伅
                     if (biaoShi == "1")
                     {
@@ -1561,31 +1641,14 @@
 
                     Db.Insertable(comList).ExecuteCommand();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
-                    allot.CompleteQty += pickQty;
-                    allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
-                    if (allot.Status == "5")
-                    {
-                        //鍒ゆ柇璇ユ墭鐩樻槸鍚﹁繕瀛樺湪鐗╂枡 瀛樺湪鏀逛负寰呭洖搴� 寰呭洖搴撳畬鎴愬悗鏀逛负宸插畬鎴�
-                    }
+                    allot2.Qty += pickQty;
+                    allot2.CompleteQty += pickQty;  
                     Db.Updateable(allot).ExecuteCommand();
 
                     //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
                     stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
                     stockDetail.Qty -= pickQty;
-                    stockDetail.LockQty -= pickQty;
-                    if (stockDetail.Qty == stockDetail.LockQty)
-                    {
-                        stockDetail.Status = "2";
-                    }
-                    else if (stockDetail.Qty > stockDetail.LockQty && stockDetail.LockQty > 0)
-                    {
-                        stockDetail.Status = "1";
-                    }
-                    else
-                    {
-                        stockDetail.Status = "0";
-                    }
-
+                    
                     if (stockDetail.Qty <= 0)
                     {
                         Db.Deleteable(stockDetail).ExecuteCommand();
@@ -1595,7 +1658,6 @@
                         Db.Updateable(stockDetail).ExecuteCommand();
                     }
                     stock.Qty -= pickQty;
-                    stock.LockQty -= pickQty;
                     if (stock.Qty <= 0)
                     {
                         Db.Deleteable(stock).ExecuteCommand();
@@ -1617,6 +1679,9 @@
                         Db.Updateable(pallet).ExecuteCommand();
                     }
                     //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
+                    noticeDetail.Qty += pickQty;
+                    noticeDetail.AllotQty += pickQty;
+                    noticeDetail.FactQty += pickQty;
                     noticeDetail.CompleteQty += pickQty;
                     Db.Updateable(noticeDetail).ExecuteCommand();
 

--
Gitblit v1.8.0