| | |
| | | { |
| | | throw new Exception("未查询到出库单据信息"); |
| | | } |
| | | if (notice.Status != "4") |
| | | //2025年12月08日可户要求少拣货也可以正常关单 |
| | | List<string> statusList = new List<string>() { "3", "4" }; |
| | | if (!statusList.Contains(notice.Status)) |
| | | { |
| | | 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(); |
| | | |
| | |
| | | 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(); |
| | |
| | | //{ |
| | | // throw new Exception("当前单据明细中计划数量与拣货数量不符,请核实"); |
| | | //} |
| | | #region 库存表减去锁定数量与总数量(PDA拣货的时候已经减去数量了) |
| | | |
| | | //库存表减去锁定数量与总数量(PDA拣货的时候已经减去数量了) |
| | | /*var sq = stocks.Where(s => s.SkuNo == d.SkuNo); |
| | | if (!string.IsNullOrWhiteSpace(d.LotNo)) |
| | | { |
| | |
| | | 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); |
| | | |
| | |
| | | } |
| | | //还需要分配的数量 |
| | | 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)) |