|
|
@@ -6667,6 +6667,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())
|
|
|
{
|
|
|
//交货计划存在已发布或者已关闭状态的交货单
|
|
|
@@ -6679,9 +6680,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|没有需要生成的交货单";
|