|
|
@@ -6693,7 +6693,7 @@ namespace Business.Replenishment
|
|
|
string Msg = "OK|交货单生成成功";
|
|
|
//获取已发布且净需求数量大于0的交货计划数据
|
|
|
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 demandplans = _icdemandschedule.GetListAsync(p => p.factory_id.ToString() == domain && p.status.ToUpper() == "P" && p.itemnum == "93000169" && p.tosechedqty > 0 && !p.IsDeleted).Result.OrderBy(p => p.arrivaldate).ToList();
|
|
|
+ //var demandplans = _icdemandschedule.GetListAsync(p => p.factory_id.ToString() == domain && p.status.ToUpper() == "P" && p.itemnum == "94000266" && 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>();
|
|
|
@@ -6956,8 +6956,9 @@ namespace Business.Replenishment
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- //采购单按照需求日期从小到大排
|
|
|
- pchPurDtls = pchPurDtls.OrderBy(p => p.DueDate).ToList();
|
|
|
+ //采购单明细优先级:先PO,按照交货日期从早到晚占用;再DO,按照交货日期从早到晚占用
|
|
|
+ //pchPurDtls = pchPurDtls.OrderBy(p => p.DueDate).ToList();
|
|
|
+ pchPurDtls = CalcPurDetailPriority(pchPurDtls);
|
|
|
for (int k = 0; k < pchPurDtls.Count; k++)
|
|
|
{
|
|
|
if (sumNeedQty >= needQty)
|
|
|
@@ -7088,5 +7089,29 @@ namespace Business.Replenishment
|
|
|
}
|
|
|
return Msg;
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 计算采购单明细的占用优先级
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="details"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public List<PurOrdDetail> CalcPurDetailPriority(List<PurOrdDetail> details)
|
|
|
+ {
|
|
|
+ List<PurOrdDetail> newDetails = new List<PurOrdDetail>();
|
|
|
+ //获取DO
|
|
|
+ var doLists = details.Where(p => p.PurOrd.StartsWith("DO")).OrderBy(p=>p.DueDate).ToList();
|
|
|
+ //获取PO
|
|
|
+ var poLists = details.Where(p => !doLists.Select(m => m.PurOrd).Contains(p.PurOrd)).OrderBy(p => p.DueDate).ToList();
|
|
|
+ foreach (var item in poLists)
|
|
|
+ {
|
|
|
+ newDetails.Add(item);
|
|
|
+ }
|
|
|
+ foreach (var item in doLists)
|
|
|
+ {
|
|
|
+ newDetails.Add(item);
|
|
|
+ }
|
|
|
+ return newDetails;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|