admin
1 天以前 7584c97271e35d824d592f29c943715e0e2a0d34
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -1920,8 +1920,8 @@
                {
                    throw new Exception("参数异常,请检查状态是否为执行完成或订单关闭");
                }
                //总库存信息
                var stockList = Db.Queryable<DataStock>().ToList();
                ////总库存信息
                //var stockList = Db.Queryable<DataStock>().ToList();
                //出库单明细
                var noticeDetail = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == notice.SONo).ToList();
@@ -1934,11 +1934,14 @@
                    notice.UpdateTime = DateTime.Now;
                    Db.Updateable(notice).ExecuteCommand();
                    var skuList = noticeDetail.Select(d => d.SkuNo).ToList();
                    var stocks = stockList.Where(s => skuList.Contains(s.SkuNo)).ToList();
                    //var skuList = noticeDetail.Select(d => d.SkuNo).ToList();
                    //var stocks = stockList.Where(s => skuList.Contains(s.SkuNo)).ToList();
                    List<string> sqlList = new List<string>();
                    foreach (var d in noticeDetail)
                    {
                        #region MyRegion
                        //更改库存明细锁定数量
                        //var orders = dataContext.WmsExportOrder.Where(o => o.ExportDetailId == d.Id
                        //                && o.ExportExecuteFlag != "4" && o.ExportExecuteFlag == "3" && o.pickingType == 0).ToList();
@@ -1970,7 +1973,8 @@
                        //{
                        //    throw new Exception("当前单据明细中计划数量与拣货数量不符,请核实");
                        //}
                        #region 库存表减去锁定数量与总数量(PDA拣货的时候已经减去数量了)
                        //库存表减去锁定数量与总数量(PDA拣货的时候已经减去数量了)
                        /*var sq = stocks.Where(s => s.SkuNo == d.SkuNo);
                        if (!string.IsNullOrWhiteSpace(d.LotNo))
                        {
@@ -1997,7 +2001,58 @@
                            Db.Updateable(st).UpdateColumns(it => new { it.Qty, it.LockQty }).ExecuteCommand();
                        }*/
                        #endregion
                        //实际拣货表
                        string completeSql = $@"select PalletNo,Qty-CompleteQty as lessQty
   from BllExportAllot
   where IsDel='0' and SONo='{d.SONo}' and SkuNo='{d.SkuNo}' and LotNo='{d.LotNo}'";
                        DataTable completeDt = Db.Ado.GetDataTable(completeSql);
                        //修改托盘明细的锁定数量
                        foreach (DataRow dr in completeDt.Rows)
                        {
                            decimal lessQty = Convert.ToDecimal(dr["lessQty"]);
                            if (lessQty > 0)
                            {
                                //查看库存明细锁定数量-lessQty
                                string stockDetailSql = $@"select LockQty-{lessQty} as morelockQty from DataStockDetail where IsDel='0' and SkuNo='{d.SkuNo}' and LotNo='{d.LotNo}' and PalletNo='{dr["PalletNo"] + ""}'";
                                decimal morelockQty = Db.Ado.GetDecimal(stockDetailSql);
                                if (morelockQty >= 0)
                                {
                                    sqlList.Add($@"update DataStockDetail set LockQty=LockQty-{morelockQty} where IsDel='0' and SkuNo='{d.SkuNo}' and LotNo='{d.LotNo}' and PalletNo='{dr["PalletNo"] + ""}'");
                                }
                            }
                        }
                    }
                    //修改库存总表
                    string exportDetailSql = $@"select SkuNo,LotNo,sum(Qty)-sum(CompleteQty) as lessQty
   from BllExportNoticeDetail
   where IsDel='0' and SONo='{notice.SONo}'
   group by SkuNo,LotNo";
                    DataTable exportDetailDt = Db.Ado.GetDataTable(exportDetailSql);
                    foreach (DataRow dr in exportDetailDt.Rows)
                    {
                        decimal lessQty = Convert.ToDecimal(dr["lessQty"]);
                        if (lessQty > 0)
                        {
                            //查看库存锁定数量-lessQty
                            string stockDetailSql = $@"select LockQty-{lessQty} as morelockQty from DataStock where IsDel='0' and SkuNo='{dr["SkuNo"] + ""}' and LotNo='{dr["LotNo"] + ""}'";
                            decimal morelockQty = Db.Ado.GetDecimal(stockDetailSql);
                            if (morelockQty >= 0)
                            {
                                sqlList.Add($@"update DataStock set LockQty=LockQty-{morelockQty} where IsDel='0' and SkuNo='{dr["SkuNo"] + ""}' and LotNo='{dr["LotNo"] + ""}'");
                            }
                        }
                    }
                    foreach (string sqlStr in sqlList)
                    {
                        var end = Db.Ado.ExecuteCommand(sqlStr);
                    }
                    //添加操作日志记录
                    var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", notice.SONo, "关单", $"关闭了单据号为{notice.SONo}的单据信息", userId);
@@ -2793,11 +2848,11 @@
                        }
                        //还需要分配的数量
                        decimal needQty = detail.Qty - (detail.AllotQty == null ? 0 : decimal.Parse(detail.AllotQty.ToString()));
                        //排除车间库存
                        List<string> areaNoList = new List<string>() { "B06", "B07", "B09", "B24", "B26", "B27", "B28", "B29" };
                        //库存明细 Status 0:待分配 1:部分分配  2:已分配 
                        var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == detail.SkuNo && (m.Qty - m.FrozenQty - m.LockQty + m.InspectQty) > 0 && (m.Status == "0" || m.Status == "1") && m.IsDel == "0"
                        && m.AreaNo != "B06" && m.AreaNo != "B07" && m.AreaNo != "B09" && m.AreaNo != "B24" && m.AreaNo != "B26" && m.AreaNo != "B27" && m.AreaNo != "B28")//排除车间库存
                            .ToList();
                        var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == detail.SkuNo && (m.Qty - m.FrozenQty - m.LockQty + m.InspectQty) > 0 && (m.Status == "0" || m.Status == "1") && m.IsDel == "0" && !areaNoList.Contains(m.AreaNo)).ToList();
                        //判断单号是否指定批次
                        if (!string.IsNullOrWhiteSpace(detail.LotNo))