| | |
| | | } |
| | | //库存 |
| | | List<DataStock> stocks; |
| | | |
| | | decimal q1 = 0; |
| | | Dictionary<int, decimal> dic = new Dictionary<int, decimal>(); |
| | | |
| | | if (!string.IsNullOrWhiteSpace(d.LotNo)) |
| | | { |
| | | stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList(); |
| | | if (stocks.Count < 1) |
| | | { |
| | | throw new Exception($"总库存中未查询到出库物料信息:{d.SkuNo}"); |
| | | } |
| | | //判断数量 |
| | | var qty = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty; |
| | | if (d.Qty > qty) |
| | | { |
| | | throw new Exception($"总库存中出库物料信息:{d.SkuNo}、{d.LotNo} 库存数量不足"); |
| | | } |
| | | if (qty > d.Qty - q1) |
| | | { |
| | | q1 += d.Qty - q1; |
| | | dic.Add(stocks.First().Id, d.Qty - q1); |
| | | } |
| | | else |
| | | { |
| | | q1 += qty; |
| | | dic.Add(stocks.First().Id, qty); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); |
| | | stocks = stockList.Where(m=> m.SkuNo == d.SkuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList(); |
| | | |
| | | foreach (var demo in stocks) |
| | | { |
| | | if (q1 >= d.Qty) |
| | | { |
| | | continue; |
| | | } |
| | | var q2 = demo.Qty - demo.LockQty - demo.FrozenQty; |
| | | |
| | | if (q2 > d.Qty - q1) |
| | | { |
| | | q1 += d.Qty - q1; |
| | | dic.Add(demo.Id, d.Qty - q1); |
| | | } |
| | | else |
| | | { |
| | | q1 += q2; |
| | | dic.Add(demo.Id,q2); |
| | | } |
| | | |
| | | } |
| | | if (d.Qty >= q1) |
| | | { |
| | | stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); |
| | | if (stocks.Count == 0) |
| | | { |
| | | throw new Exception($"总库存中出库物料信息:{d.SkuNo}库存数量不足"); |
| | | } |
| | | var q2 = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty; |
| | | if (q2 > d.Qty - q1) |
| | | { |
| | | q1 += d.Qty - q1; |
| | | dic.Add(stocks.First().Id, d.Qty - q1); |
| | | } |
| | | else |
| | | { |
| | | q1 += q2; |
| | | dic.Add(stocks.First().Id, q2); |
| | | } |
| | | } |
| | | if (d.Qty > q1) |
| | | { |
| | | throw new Exception($"总库存中出库物料信息:{d.SkuNo} 库存数量不足"); |
| | | } |
| | | } |
| | | if (stocks.Count < 1) |
| | | { |
| | | throw new Exception($"总库存中未查询到出库物料信息:{d.SkuNo}"); |
| | | } |
| | | |
| | | |
| | | var item = new BllExportNoticeDetail() |
| | | { |
| | | SONo = billNo, |
| | |
| | | CreateUser = 0, |
| | | }; |
| | | list.Add(item); |
| | | stocks.First().LockQty += d.Qty;//锁定数量 |
| | | |
| | | var i = Db.Updateable(stocks.First()).UpdateColumns(it => new { it.LockQty }) |
| | | .ExecuteCommand(); |
| | | |
| | | foreach (var s in dic) |
| | | { |
| | | var st = stockList.First(m => m.Id == s.Key); |
| | | st.LockQty += s.Value;//锁定数量 |
| | | var i = Db.Updateable(st).UpdateColumns(it => new { it.LockQty }) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | | } |
| | | var notice = new BllExportNotice() |
| | | { |
| | |
| | | } |
| | | //库存 |
| | | List<DataStock> stocks; |
| | | //List<DataStockDetail> pallets; |
| | | |
| | | decimal q1 = 0; |
| | | Dictionary<int, decimal> dic = new Dictionary<int, decimal>(); |
| | | if (!string.IsNullOrWhiteSpace(d.LotNo)) |
| | | { |
| | | stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList(); |
| | | //pallets = palletList.Where(p => p.SkuNo == d.SkuNo && p.LotNo == d.LotNo).ToList(); |
| | | //if (stocks.Count < 1) |
| | | //{ |
| | | // throw new Exception($"总库存中未查询到出库物料信息:{d.SkuNo}"); |
| | | //} |
| | | ////判断数量 |
| | | //var qty = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty; |
| | | //if (d.Qty > qty) |
| | | //{ |
| | | // throw new Exception($"总库存中出库物料信息:{d.SkuNo}、{d.LotNo} 库存数量不足"); |
| | | //} |
| | | //if (qty > d.Qty - q1) |
| | | //{ |
| | | // q1 += d.Qty - q1; |
| | | // dic.Add(stocks.First().Id, d.Qty - q1); |
| | | //} |
| | | //else |
| | | //{ |
| | | // q1 += qty; |
| | | // dic.Add(stocks.First().Id, qty); |
| | | //} |
| | | } |
| | | else |
| | | { |
| | | stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); |
| | | //pallets = palletList.Where(p => p.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(p.LotNo)).ToList(); |
| | | } |
| | | if (stocks.Count < 1) |
| | | { |
| | | throw new Exception($"总库存中未查询到出库物料信息:{d.SkuNo}"); |
| | | } |
| | | //stocks = stockList.Where(m => m.SkuNo == d.SkuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList(); |
| | | |
| | | //判断数量 |
| | | var qty = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty; |
| | | if (d.Qty > qty) |
| | | { |
| | | throw new Exception($"总库存中出库物料信息:{d.SkuNo}、{d.LotNo} 库存数量不足"); |
| | | } |
| | | //foreach (var demo in stocks) |
| | | //{ |
| | | // if (q1 >= d.Qty) |
| | | // { |
| | | // continue; |
| | | // } |
| | | // var q2 = demo.Qty - demo.LockQty - demo.FrozenQty; |
| | | |
| | | // if (q2 > d.Qty - q1) |
| | | // { |
| | | // q1 += d.Qty - q1; |
| | | // dic.Add(demo.Id, d.Qty - q1); |
| | | // } |
| | | // else |
| | | // { |
| | | // q1 += q2; |
| | | // dic.Add(demo.Id, q2); |
| | | // } |
| | | |
| | | //} |
| | | //if (d.Qty >= q1) |
| | | //{ |
| | | stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); |
| | | // if (stocks.Count == 0) |
| | | // { |
| | | // throw new Exception($"总库存中出库物料信息:{d.SkuNo}库存数量不足"); |
| | | // } |
| | | // var q2 = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty; |
| | | // if (q2 > d.Qty - q1) |
| | | // { |
| | | // q1 += d.Qty - q1; |
| | | // dic.Add(stocks.First().Id, d.Qty - q1); |
| | | // } |
| | | // else |
| | | // { |
| | | // q1 += q2; |
| | | // dic.Add(stocks.First().Id, q2); |
| | | // } |
| | | //} |
| | | //if (d.Qty > q1) |
| | | //{ |
| | | // throw new Exception($"总库存中出库物料信息:{d.SkuNo} 库存数量不足"); |
| | | //} |
| | | } |
| | | |
| | | var item = new BllExportNoticeDetail() |
| | | { |
| | | SONo = billNo, |
| | |
| | | CreateUser = userId, |
| | | }; |
| | | list.Add(item); |
| | | stocks.First().LockQty += d.Qty;//锁定数量 |
| | | |
| | | |
| | | stocks.First().LockQty += d.Qty;//锁定数量 |
| | | var i = Db.Updateable(stocks.First()).UpdateColumns(it => new { it.LockQty }) |
| | | .ExecuteCommand(); |
| | | |
| | | //foreach (var s in dic) |
| | | //{ |
| | | // var st = stockList.First(m => m.Id == s.Key); |
| | | // st.LockQty += s.Value;//锁定数量 |
| | | // var i = Db.Updateable(st).UpdateColumns(it => new { it.LockQty }) |
| | | // .ExecuteCommand(); |
| | | //} |
| | | |
| | | } |
| | | var notice = new BllExportNotice() |
| | |
| | | |
| | | try |
| | | { |
| | | //删除旧 |
| | | foreach (var d in noticeDetail) |
| | | if (notice.Origin == "WMS") |
| | | { |
| | | var mq = model.Detail.Where(o => o.SkuNo == d.SkuNo).ToList(); |
| | | if (!string.IsNullOrWhiteSpace(d.LotNo)) |
| | | //删除旧 |
| | | foreach (var d in noticeDetail) |
| | | { |
| | | mq = mq.Where(o => o.LotNo == d.LotNo).ToList(); |
| | | } |
| | | if (mq.Any()) //如果有这个物料及批次则跳过 |
| | | { |
| | | continue; |
| | | } |
| | | // |
| | | var fl = stockList.Where(s => s.SkuNo == d.SkuNo).ToList(); |
| | | DataStock fls; |
| | | if (!string.IsNullOrWhiteSpace(d.LotNo)) |
| | | { |
| | | fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo); |
| | | } |
| | | else |
| | | { |
| | | fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)); |
| | | } |
| | | if (fls == null) |
| | | { |
| | | throw new Exception($"未找到物料{d.SkuNo}、批次{d.LotNo} 的库存信息"); |
| | | } |
| | | fls.LockQty -= d.Qty; |
| | | d.IsDel = "1"; |
| | | d.UpdateUser = userId; |
| | | d.UpdateTime = DateTime.Now; |
| | | Db.Updateable(d).ExecuteCommand(); |
| | | Db.Updateable(fls).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); |
| | | } |
| | | |
| | | //更新出库单 |
| | | foreach (var d in model.Detail) |
| | | { |
| | | if (d.Qty < 1) |
| | | { |
| | | throw new Exception("出库数据必须大于0"); |
| | | } |
| | | var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo); |
| | | if (sku == null) |
| | | { |
| | | throw new Exception("出库物品为空"); |
| | | } |
| | | //库存 |
| | | List<DataStock> stocks; |
| | | List<DataStockDetail> pallet; |
| | | if (!string.IsNullOrWhiteSpace(d.LotNo)) |
| | | { |
| | | stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList(); |
| | | pallet = palletList.Where(p => p.SkuNo == d.SkuNo && p.LotNo == d.LotNo).ToList(); |
| | | } |
| | | else |
| | | { |
| | | stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); |
| | | pallet = palletList.Where(p => p.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(p.LotNo)).ToList(); |
| | | } |
| | | |
| | | if (stocks.Count < 1) |
| | | { |
| | | throw new Exception("出库物品库存不足"); |
| | | } |
| | | var stock = stocks.First();//总库存 |
| | | // |
| | | BllExportNoticeDetail old; |
| | | if (string.IsNullOrWhiteSpace(d.LotNo)) |
| | | { |
| | | old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(o.LotNo)); |
| | | } |
| | | else |
| | | { |
| | | old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && o.LotNo == d.LotNo); |
| | | } |
| | | |
| | | //新加项 |
| | | if (old == null) |
| | | { |
| | | //判断数量 |
| | | var qty = stock.Qty - stock.LockQty - stock.FrozenQty; |
| | | if (d.Qty > qty) |
| | | var mq = model.Detail.Where(o => o.SkuNo == d.SkuNo).ToList(); |
| | | if (!string.IsNullOrWhiteSpace(d.LotNo)) |
| | | { |
| | | throw new Exception($"总库存中出库物料信息:{d.SkuNo}、{d.LotNo} 库存数量不足"); |
| | | mq = mq.Where(o => o.LotNo == d.LotNo).ToList(); |
| | | } |
| | | |
| | | var item = new BllExportNoticeDetail() |
| | | if (mq.Any()) //如果有这个物料及批次则跳过 |
| | | { |
| | | SONo = notice.SONo, |
| | | SkuNo = sku.SkuNo, |
| | | SkuName = sku.SkuName, |
| | | Standard = sku.Standard, |
| | | LotNo = d.LotNo, |
| | | LotText = "", |
| | | Status = "0", |
| | | Qty = d.Qty, |
| | | AllotQty = 0, |
| | | FactQty = 0, |
| | | CompleteQty = 0, |
| | | PackagNo = sku.PackagNo, |
| | | Price = sku.Price, |
| | | Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * qty, |
| | | IsBale = d.IsBale, |
| | | IsBelt = d.IsBelt, |
| | | SupplierLot = stocks.First().SupplierLot, |
| | | IsWave = "0", |
| | | WaveNo = "", |
| | | |
| | | CreateUser = userId, |
| | | }; |
| | | |
| | | stock.LockQty += d.Qty;//锁定数量 |
| | | var m = Db.Insertable<BllExportNoticeDetail>(item).ExecuteCommand(); |
| | | var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); |
| | | } |
| | | else if (old.Qty != d.Qty || old.IsBale != d.IsBale || old.IsBelt != d.IsBelt) |
| | | { |
| | | if (d.Qty > (stock.Qty - stock.FrozenQty - stock.LockQty) + old.Qty) |
| | | { |
| | | throw new Exception("物品库存数量不足"); |
| | | continue; |
| | | } |
| | | //增加 |
| | | if (d.Qty > old.Qty) |
| | | // |
| | | var fl = stockList.Where(s => s.SkuNo == d.SkuNo).ToList(); |
| | | DataStock fls; |
| | | if (!string.IsNullOrWhiteSpace(d.LotNo)) |
| | | { |
| | | stock.LockQty += d.Qty - old.Qty; |
| | | fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo); |
| | | } |
| | | else |
| | | { |
| | | stock.LockQty -= old.Qty - d.Qty; |
| | | fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)); |
| | | } |
| | | old.IsBale = d.IsBale; |
| | | old.IsBelt = d.IsBelt; |
| | | old.Qty = d.Qty; |
| | | old.UpdateUser = userId; |
| | | old.UpdateTime = DateTime.Now; |
| | | var m = Db.Updateable(old).UpdateColumns(it => new { it.IsBale, it.IsBelt, it.Qty, it.UpdateUser, it.UpdateTime }).ExecuteCommand(); |
| | | var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); |
| | | if (fls == null) |
| | | { |
| | | throw new Exception($"未找到物料{d.SkuNo}、批次{d.LotNo} 的库存信息"); |
| | | } |
| | | fls.LockQty -= d.Qty; |
| | | d.IsDel = "1"; |
| | | d.UpdateUser = userId; |
| | | d.UpdateTime = DateTime.Now; |
| | | Db.Updateable(d).ExecuteCommand(); |
| | | Db.Updateable(fls).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); |
| | | } |
| | | |
| | | //更新出库单 |
| | | foreach (var d in model.Detail) |
| | | { |
| | | if (d.Qty < 1) |
| | | { |
| | | throw new Exception("出库数据必须大于0"); |
| | | } |
| | | var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo); |
| | | if (sku == null) |
| | | { |
| | | throw new Exception("出库物品为空"); |
| | | } |
| | | //库存 |
| | | List<DataStock> stocks; |
| | | List<DataStockDetail> pallet; |
| | | if (!string.IsNullOrWhiteSpace(d.LotNo)) |
| | | { |
| | | stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList(); |
| | | pallet = palletList.Where(p => p.SkuNo == d.SkuNo && p.LotNo == d.LotNo).ToList(); |
| | | } |
| | | else |
| | | { |
| | | stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); |
| | | pallet = palletList.Where(p => p.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(p.LotNo)).ToList(); |
| | | } |
| | | |
| | | if (stocks.Count < 1) |
| | | { |
| | | throw new Exception("出库物品库存不足"); |
| | | } |
| | | var stock = stocks.First();//总库存 |
| | | // |
| | | BllExportNoticeDetail old; |
| | | if (string.IsNullOrWhiteSpace(d.LotNo)) |
| | | { |
| | | old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(o.LotNo)); |
| | | } |
| | | else |
| | | { |
| | | old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && o.LotNo == d.LotNo); |
| | | } |
| | | |
| | | //新加项 |
| | | if (old == null) |
| | | { |
| | | //判断数量 |
| | | var qty = stock.Qty - stock.LockQty - stock.FrozenQty; |
| | | if (d.Qty > qty) |
| | | { |
| | | throw new Exception($"总库存中出库物料信息:{d.SkuNo}、{d.LotNo} 库存数量不足"); |
| | | } |
| | | |
| | | var item = new BllExportNoticeDetail() |
| | | { |
| | | SONo = notice.SONo, |
| | | SkuNo = sku.SkuNo, |
| | | SkuName = sku.SkuName, |
| | | Standard = sku.Standard, |
| | | LotNo = d.LotNo, |
| | | LotText = "", |
| | | Status = "0", |
| | | Qty = d.Qty, |
| | | AllotQty = 0, |
| | | FactQty = 0, |
| | | CompleteQty = 0, |
| | | PackagNo = sku.PackagNo, |
| | | Price = sku.Price, |
| | | Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * qty, |
| | | IsBale = d.IsBale, |
| | | IsBelt = d.IsBelt, |
| | | SupplierLot = stocks.First().SupplierLot, |
| | | IsWave = "0", |
| | | WaveNo = "", |
| | | |
| | | CreateUser = userId, |
| | | }; |
| | | |
| | | stock.LockQty += d.Qty;//锁定数量 |
| | | var m = Db.Insertable<BllExportNoticeDetail>(item).ExecuteCommand(); |
| | | var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); |
| | | } |
| | | else if (old.Qty != d.Qty || old.IsBale != d.IsBale || old.IsBelt != d.IsBelt) |
| | | { |
| | | if (d.Qty > (stock.Qty - stock.FrozenQty - stock.LockQty) + old.Qty) |
| | | { |
| | | throw new Exception("物品库存数量不足"); |
| | | } |
| | | //增加 |
| | | if (d.Qty > old.Qty) |
| | | { |
| | | stock.LockQty += d.Qty - old.Qty; |
| | | } |
| | | else |
| | | { |
| | | stock.LockQty -= old.Qty - d.Qty; |
| | | } |
| | | old.IsBale = d.IsBale; |
| | | old.IsBelt = d.IsBelt; |
| | | old.Qty = d.Qty; |
| | | old.UpdateUser = userId; |
| | | old.UpdateTime = DateTime.Now; |
| | | var m = Db.Updateable(old).UpdateColumns(it => new { it.IsBale, it.IsBelt, it.Qty, it.UpdateUser, it.UpdateTime }).ExecuteCommand(); |
| | | var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); |
| | | } |
| | | } |
| | | |
| | | //客户信息 |
| | | var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList().FirstOrDefault(); |
| | | notice.Type = model.Type; |
| | | notice.CustomerNo = model.CustomerNo; |
| | | notice.CustomerName = customer == null ? "" : customer.CustomerName; |
| | | notice.LogisticsId = model.LogisticsId; |
| | | notice.UpdateUser = userId; |
| | | notice.UpdateTime = DateTime.Now; |
| | | |
| | | var n = Db.Updateable(notice).ExecuteCommand(); |
| | | if (n <= 0) |
| | | { |
| | | Db.RollbackTran(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | //客户信息 |
| | | var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList().FirstOrDefault(); |
| | | notice.Type = model.Type; |
| | | notice.CustomerNo = model.CustomerNo; |
| | | notice.CustomerName = customer == null ? "" : customer.CustomerName; |
| | | notice.LogisticsId = model.LogisticsId; |
| | | notice.UpdateUser = userId; |
| | | notice.UpdateTime = DateTime.Now; |
| | | |
| | | var n = Db.Updateable(notice).ExecuteCommand(); |
| | | if (n <= 0) |
| | | else //erp/mes |
| | | { |
| | | Db.RollbackTran(); |
| | | return false; |
| | | //更新出库单 |
| | | foreach (var d in model.Detail) |
| | | { |
| | | if (d.Qty < 1) |
| | | { |
| | | throw new Exception("出库数据必须大于0"); |
| | | } |
| | | var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo); |
| | | if (sku == null) |
| | | { |
| | | throw new Exception("出库物品为空"); |
| | | } |
| | | //库存 |
| | | List<DataStock> stocks; |
| | | if (!string.IsNullOrWhiteSpace(d.LotNo)) |
| | | { |
| | | stocks = stockList.Where(s => s.SkuNo == d.SkuNo && d.LotNo.Contains(s.LotNo)).ToList(); |
| | | } |
| | | else |
| | | { |
| | | stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); |
| | | } |
| | | |
| | | if (stocks.Count < 1) |
| | | { |
| | | throw new Exception("出库物品库存不足"); |
| | | } |
| | | var stock = stocks.First();//总库存 |
| | | // |
| | | BllExportNoticeDetail old; |
| | | if (string.IsNullOrWhiteSpace(d.LotNo)) |
| | | { |
| | | old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(o.LotNo)); |
| | | } |
| | | else |
| | | { |
| | | old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && o.LotNo == d.LotNo); |
| | | } |
| | | |
| | | //新加项 |
| | | if (old == null) |
| | | { |
| | | //判断数量 |
| | | var qty = stock.Qty - stock.LockQty - stock.FrozenQty; |
| | | if (d.Qty > qty) |
| | | { |
| | | throw new Exception($"总库存中出库物料信息:{d.SkuNo}、{d.LotNo} 库存数量不足"); |
| | | } |
| | | |
| | | var item = new BllExportNoticeDetail() |
| | | { |
| | | SONo = notice.SONo, |
| | | SkuNo = sku.SkuNo, |
| | | SkuName = sku.SkuName, |
| | | Standard = sku.Standard, |
| | | LotNo = d.LotNo, |
| | | LotText = "", |
| | | Status = "0", |
| | | Qty = d.Qty, |
| | | AllotQty = 0, |
| | | FactQty = 0, |
| | | CompleteQty = 0, |
| | | PackagNo = sku.PackagNo, |
| | | Price = sku.Price, |
| | | Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * qty, |
| | | IsBale = d.IsBale, |
| | | IsBelt = d.IsBelt, |
| | | SupplierLot = stocks.First().SupplierLot, |
| | | IsWave = "0", |
| | | WaveNo = "", |
| | | |
| | | CreateUser = userId, |
| | | }; |
| | | |
| | | stock.LockQty += d.Qty;//锁定数量 |
| | | var m = Db.Insertable<BllExportNoticeDetail>(item).ExecuteCommand(); |
| | | var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); |
| | | } |
| | | else if (old.Qty != d.Qty || old.IsBale != d.IsBale || old.IsBelt != d.IsBelt) |
| | | { |
| | | if (d.Qty > (stock.Qty - stock.FrozenQty - stock.LockQty) + old.Qty) |
| | | { |
| | | throw new Exception("物品库存数量不足"); |
| | | } |
| | | //增加 |
| | | if (d.Qty > old.Qty) |
| | | { |
| | | stock.LockQty += d.Qty - old.Qty; |
| | | } |
| | | else |
| | | { |
| | | stock.LockQty -= old.Qty - d.Qty; |
| | | } |
| | | old.IsBale = d.IsBale; |
| | | old.IsBelt = d.IsBelt; |
| | | old.Qty = d.Qty; |
| | | old.UpdateUser = userId; |
| | | old.UpdateTime = DateTime.Now; |
| | | var m = Db.Updateable(old).UpdateColumns(it => new { it.IsBale, it.IsBelt, it.Qty, it.UpdateUser, it.UpdateTime }).ExecuteCommand(); |
| | | var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); |
| | | } |
| | | } |
| | | |
| | | //客户信息 |
| | | var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList().FirstOrDefault(); |
| | | notice.Type = model.Type; |
| | | notice.CustomerNo = model.CustomerNo; |
| | | notice.CustomerName = customer == null ? "" : customer.CustomerName; |
| | | notice.LogisticsId = model.LogisticsId; |
| | | notice.UpdateUser = userId; |
| | | notice.UpdateTime = DateTime.Now; |
| | | |
| | | var n = Db.Updateable(notice).ExecuteCommand(); |
| | | if (n <= 0) |
| | | { |
| | | Db.RollbackTran(); |
| | | return false; |
| | | } |
| | | } |
| | | //添加操作日志记录 |
| | | var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", notice.SONo, "编辑", $"编辑了单据号为{notice.SONo}的单据信息", userId); |
| | |
| | | } |
| | | |
| | | var sd = Db.Updateable(s).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand(); |
| | | if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1:领料出库、 |
| | | { |
| | | if (string.IsNullOrWhiteSpace(detail.LotNo)) |
| | | { |
| | | detail.LotNo = s.LotNo; |
| | | //if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1:领料出库、 |
| | | //{ |
| | | // if (string.IsNullOrWhiteSpace(detail.LotNo)) |
| | | // { |
| | | // detail.LotNo = s.LotNo; |
| | | |
| | | } |
| | | else |
| | | { |
| | | if (!detail.LotNo.Contains(s.LotNo)) |
| | | { |
| | | detail.LotNo += ";" + s.LotNo; |
| | | } |
| | | } |
| | | } |
| | | // } |
| | | // else |
| | | // { |
| | | // if (!detail.LotNo.Contains(s.LotNo)) |
| | | // { |
| | | // detail.LotNo += ";" + s.LotNo; |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | } |
| | | detail.AllotQty += qty; |
| | |
| | | d.UpdateUser = userId; |
| | | d.UpdateTime = DateTime.Now; |
| | | |
| | | if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1:领料出库、 |
| | | { |
| | | if (d.IsIssueLotNo != "1") |
| | | { |
| | | d.LotNo = ""; |
| | | } |
| | | //if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1:领料出库、 |
| | | //{ |
| | | // if (d.IsIssueLotNo != "1") |
| | | // { |
| | | // d.LotNo = ""; |
| | | // } |
| | | |
| | | } |
| | | //} |
| | | } |
| | | notice.Status = "0"; |
| | | notice.UpdateUser = userId; |