Demo
2024-03-13 cbf4a8f42cd0d7e4ff994ee7f9b9e9c33b9c39c8
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();