chengsc
2024-10-25 bdb17191cc1fde34791cd3ff200714020c85f117
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -1243,9 +1243,9 @@
                {
                    throw new Exception("未查询到出库单据信息");
                }
                if (notice.Status != "4")
                if (notice.Status != "4" && notice.Status != "3")
                {
                    throw new Exception("参数异常,请检查状态是否为执行完成或订单关闭");
                    throw new Exception("参数异常,请检查状态是否为正在执行或执行完成");
                }
                //总库存信息
                var stockList = Db.Queryable<DataStock>().ToList();
@@ -1266,64 +1266,67 @@
                    foreach (var d in noticeDetail)
                    {
                        //更改库存明细锁定数量
                        //var orders = dataContext.WmsExportOrder.Where(o => o.ExportDetailId == d.Id
                        //                && o.ExportExecuteFlag != "4" && o.ExportExecuteFlag == "3" && o.pickingType == 0).ToList();
                        //foreach (var o in orders)
                        //{
                        //    if (o.ExportQuantity > o.PickedNum) //判断拣货是否已拣完
                        //    {
                        //        var pq = dataContext.WmsStockTray.Where(t => t.StockGoodId == o.ExportGoodsCode && t.StockStockCode == o.ExportStockCode);
                        //        if (string.IsNullOrWhiteSpace(o.ExportLotNo))
                        //        {
                        //            pq = pq.Where(t => t.StockLotNo == null || t.StockLotNo == "");
                        //        }
                        //        else
                        //        {
                        //            pq = pq.Where(t => t.StockLotNo == o.ExportLotNo);
                        //        }
                        //        var pallet = pq.FirstOrDefault();
                        //        //库存托盘信息锁定数量还原为未锁定
                        //        if (pq != null)
                        //        {
                        //            pallet.LockQuantity -= o.ExportQuantity.Value - o.PickedNum;
                        //            pallet.StockQuantity += o.ExportQuantity.Value - o.PickedNum;
                        //        }
                        //    }
                        //}
                        if (d.Qty != d.CompleteQty)
                        if (notice.Type == "0")//成品出库
                        {
                            throw new Exception("当前单据明细中计划数量与拣货数量不符,请核实");
                        }
                        #region 库存表减去锁定数量与总数量(PDA拣货的时候已经减去数量了)
                        /*var sq = stocks.Where(s => s.SkuNo == d.SkuNo);
                        if (!string.IsNullOrWhiteSpace(d.LotNo))
                        {
                            sq = sq.Where(s => s.LotNo == d.LotNo);
                        }
                        else
                        {
                            sq = sq.Where(s => string.IsNullOrWhiteSpace(s.LotNo));
                        }
                        var st = sq.FirstOrDefault();
                        if (st != null)
                        {
                            if (d.CompleteQty <= d.Qty)
                            if (d.Qty != d.CompleteQty)
                            {
                                st.Qty += d.Qty - d.CompleteQty.Value;
                                throw new Exception("当前单据明细中计划数量与拣货数量不符,请核实");
                            }
                        }
                        if (d.Qty < d.CompleteQty)
                        {
                            //更改库存明细锁定数量
                            var allotList = Db.Queryable<BllExportAllot>().Where(o => o.SODetailNo == d.Id && o.Status == "3" && o.IsDel == "0").ToList();
                            foreach (var o in allotList)
                            {
                                if (o.Qty > o.CompleteQty) //判断拣货是否已拣完
                                {
                                    var pq = Db.Queryable<DataStockDetail>().Where(t => t.IsDel == "0" && t.Id == o.StockId && t.SkuNo == o.SkuNo);
                                    if (string.IsNullOrWhiteSpace(o.LotNo))
                                    {
                                        pq = pq.Where(t => string.IsNullOrWhiteSpace(t.LotNo));
                                    }
                                    else
                                    {
                                        pq = pq.Where(t => t.LotNo == o.LotNo);
                                    }
                                    var pallet = pq.First();
                                    //库存托盘信息锁定数量还原为未锁定
                                    if (pq != null)
                                    {
                                        //pallet.Qty -= o.CompleteQty.Value - o.Qty;
                                        pallet.LockQty -= o.Qty - o.CompleteQty.Value;
                                        Db.Updateable(pallet).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
                                    }
                                }
                            }
                            #region 库存表减去锁定数量与总数量(PDA拣货的时候已经减去数量了)
                            var sq = stocks.Where(s => s.SkuNo == d.SkuNo);
                            if (!string.IsNullOrWhiteSpace(d.LotNo))
                            {
                                sq = sq.Where(s => s.LotNo == d.LotNo);
                            }
                            else
                            {
                                st.Qty -= d.CompleteQty.Value - d.Qty;
                                sq = sq.Where(s => string.IsNullOrWhiteSpace(s.LotNo));
                            }
                            st.LockQty -= d.Qty;
                            st.Qty -= d.Qty;
                            //修改总库存表
                            Db.Updateable(st).UpdateColumns(it => new { it.Qty, it.LockQty }).ExecuteCommand();
                        }*/
                        #endregion
                            if (notice.Type == "6")//代储
                            {
                                sq = sq.Where(s => s.OwnerNo == notice.CustomerNo);
                            }
                            var st = sq.FirstOrDefault();
                            if (st != null)
                            {
                                st.LockQty -= d.Qty - d.CompleteQty.Value;
                                //修改总库存表
                                Db.Updateable(st).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
                            }
                            #endregion
                        }
                    }
                    //添加操作日志记录
                    var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", notice.SONo, "关单", $"关闭了单据号为{notice.SONo}的单据信息", userId);