Ver Fonte

交货单生成调整:存在已发布或者已关闭交货单的交货计划,如果净需求数量大于交货单占用数量,则重新生成余量交货单

heteng há 2 anos atrás
pai
commit
974bfe1d6d

+ 22 - 2
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -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|没有需要生成的交货单";