| | |
| | | { |
| | | 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(); |
| | |
| | | |
| | | 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); |