|
|
@@ -4435,7 +4435,7 @@ namespace Business.Replenishment
|
|
|
//周计划没有生成周工单的不校验优先级重复
|
|
|
if(weekPlan!=null && !string.IsNullOrEmpty(weekPlan.ProductionOrder))
|
|
|
{
|
|
|
- var isExistSamePriority = _workOrdMaster.Select(a => a.WorkOrd !=weekPlan.ProductionOrder && (string.IsNullOrEmpty(a.Status) || a.Status.ToUpper()=="P") && a.Priority == newpriority);
|
|
|
+ var isExistSamePriority = _workOrdMaster.Select(a => a.WorkOrd !=weekPlan.ProductionOrder && (string.IsNullOrEmpty(a.Status) || a.Status.ToUpper()=="P") && (string.IsNullOrEmpty(a.Typed) || (!string.IsNullOrEmpty(a.Typed) && a.Typed.ToUpper() != "PW" && a.BusinessID > 0)) && a.Priority == newpriority);
|
|
|
if (isExistSamePriority.Any())
|
|
|
return "优先级重复,请重新调整。";
|
|
|
}
|
|
|
@@ -6684,6 +6684,7 @@ namespace Business.Replenishment
|
|
|
var demandplans = _icdemandschedule.GetListAsync(p => p.factory_id.ToString() == domain && p.status.ToUpper() == "P" && p.tosechedqty > 0 && !p.IsDeleted).Result.OrderBy(p => p.arrivaldate).ToList();
|
|
|
//获取已以生成交货单的交货计划
|
|
|
var alreadys = _srmpolistds.Select(p => p.domain == domain && demandplans.Select(m => m.Id).Contains(p.icdsid) && p.isactive == 1).ToList();
|
|
|
+ List<ic_demandschedule> newPlans = new List<ic_demandschedule>();
|
|
|
if (alreadys.Any())
|
|
|
{
|
|
|
//交货计划存在已发布或者已关闭状态的交货单
|
|
|
@@ -6696,9 +6697,28 @@ namespace Business.Replenishment
|
|
|
//删除未发布的交货单
|
|
|
_srmpolistds.Update(wfbDs);
|
|
|
}
|
|
|
- //过滤掉存在已发布或者已关闭交货单的交货计划
|
|
|
- demandplans = demandplans.Where(p => !yfbIds.Contains(p.Id)).ToList();
|
|
|
+ //未发布交货单的交货计划
|
|
|
+ var wfbPlans = demandplans.Where(p => !yfbIds.Contains(p.Id)).ToList();
|
|
|
+ if (wfbPlans.Any())
|
|
|
+ {
|
|
|
+ newPlans.AddRange(wfbPlans);
|
|
|
+ }
|
|
|
+ //如果已生成交货单的数量小于交货计划的净需求数量,则需要重新生成交货单
|
|
|
+ var yfbJhds = alreadys.Where(p => yfbIds.Contains(p.icdsid)).ToList();
|
|
|
+ var yfbPlans = demandplans.Where(p => yfbIds.Contains(p.Id)).ToList();
|
|
|
+ foreach (var item in yfbPlans)
|
|
|
+ {
|
|
|
+ var curJhds = yfbJhds.Where(p=>p.icdsid == item.Id).ToList();
|
|
|
+ decimal sumQty = curJhds.Where(p => p.status.ToUpper() == "C").Sum(p => p.sentqty) + curJhds.Where(p => p.status.ToUpper() != "C").Sum(p => p.schedqty);
|
|
|
+ if (item.tosechedqty <= sumQty)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ item.tosechedqty = item.tosechedqty - sumQty;
|
|
|
+ newPlans.Add(item);
|
|
|
+ }
|
|
|
}
|
|
|
+ demandplans = newPlans;
|
|
|
if (!demandplans.Any())
|
|
|
{
|
|
|
Msg = "OK|没有需要生成的交货单";
|
|
|
@@ -6804,7 +6824,7 @@ namespace Business.Replenishment
|
|
|
//采购单明细的剩余未交数量:采购明细的需求数量-送货单需求数量(不是交货单转的送货单)
|
|
|
sumRestQty = curPurDtls.Sum(p => p.QtyOrded) - curShds.Sum(p=>p.sh_delivery_quantity);
|
|
|
//交货单占用数量:交货单的需求数量
|
|
|
- sumDbOccupy = curDbOccupys.Sum(p => p.schedqty);
|
|
|
+ sumDbOccupy = curDbOccupys.Where(p=>p.status.ToUpper() == "C").Sum(p => p.sentqty) + curDbOccupys.Where(p=>p.status.ToUpper() != "C").Sum(p=>p.schedqty);
|
|
|
//本次计算交货单占用数量:本次计算交货单的需求数量
|
|
|
sumCurOccupy = curCalcOccupys.Sum(p => p.schedqty);
|
|
|
//剩余可用数量
|
|
|
@@ -6893,7 +6913,8 @@ namespace Business.Replenishment
|
|
|
//采购单明细剩余可用数量
|
|
|
sumRestQty = pchPurDtls.Sum(p => p.QtyOrded) - pchShds.Sum(p=>p.sh_delivery_quantity);
|
|
|
//交货单占用数量:交货单的剩余需要采购数量
|
|
|
- sumDbOccupy = curDbOccupys.Where(p => pchPurDtls.Select(m => m.PurOrd).Contains(p.ponumber)).Sum(p => p.schedqty);
|
|
|
+ var pchDbOccupys = curDbOccupys.Where(p => pchPurDtls.Select(m => m.PurOrd).Contains(p.ponumber)).ToList();
|
|
|
+ sumDbOccupy = pchDbOccupys.Where(p=>p.status.ToUpper() == "C").Sum(p => p.sentqty) + pchDbOccupys.Where(p => p.status.ToUpper() != "C").Sum(p => p.schedqty);
|
|
|
//本次计算交货单占用数量:本次计算交货单的需求数量
|
|
|
sumCurOccupy = curCalcOccupys.Where(p => pchPurDtls.Select(m => m.PurOrd).Contains(p.ponumber)).Sum(p => p.schedqty);
|
|
|
//剩余可用数量
|
|
|
@@ -6926,8 +6947,8 @@ namespace Business.Replenishment
|
|
|
//当前采购明细剩余数量=订单数量-送货单数量(不是由交货单转的送货单)
|
|
|
decimal syQty = pchPurDtls[k].QtyOrded - pchShds.Where(p => p.po_billline == pchPurDtls[k].Line.ToString()).Sum(p=>p.sh_delivery_quantity);
|
|
|
//当前采购明细被占用数量(已占用数量)
|
|
|
- var occupy = curDbOccupys.Where(p => p.ponumber == pchPurDtls[k].PurOrd && p.itemnum == pchPurDtls[k].ItemNum && p.poline == pchPurDtls[k].Line).ToList();
|
|
|
- decimal yzyQty = occupy.Sum(p => p.schedqty);
|
|
|
+ var occupy = pchDbOccupys.Where(p => p.ponumber == pchPurDtls[k].PurOrd && p.itemnum == pchPurDtls[k].ItemNum && p.poline == pchPurDtls[k].Line).ToList();
|
|
|
+ decimal yzyQty = occupy.Where(p=>p.status.ToUpper() == "C").Sum(p => p.sentqty) + occupy.Where(p=>p.status.ToUpper() != "C").Sum(p=>p.schedqty);
|
|
|
//当前计算中采购明细被占用数量(本次计算占用数量)
|
|
|
var calcs = inserts.Where(p => p.ponumber == pchPurDtls[k].PurOrd && p.itemnum == pchPurDtls[k].ItemNum && p.poline == pchPurDtls[k].Line).ToList();
|
|
|
decimal bzyQty = calcs.Sum(p => p.schedqty);
|