|
|
@@ -183,7 +183,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="DeliverDate">交付日期</param>
|
|
|
/// <param name="seorderentry_id">销售订单子表ID</param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task<List<mes_mooccupy>> CheckMorder(string bomNumber, decimal? Quantity, DateTime DeliverDate, crm_seorderentry seorderentry, ic_item ic_Item)
|
|
|
+ public async Task<List<mes_mooccupy>> CheckMorder(string bomNumber, decimal Quantity, DateTime DeliverDate, crm_seorderentry seorderentry, ic_item ic_Item)
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(bomNumber) || Quantity == null)
|
|
|
{
|
|
|
@@ -204,7 +204,7 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
//工单已被占用后要与占用表关联查询...减去占用量后 剩下生产数量可供下个销售工单使用。
|
|
|
var mes_mooccupyList = await _mes_mooccupy.GetManyByCondition(x => x.moo_state == 1 && !x.IsDeleted && x.tenant_id == seorderentry.tenant_id
|
|
|
- && x.fitem_number == seorderentry.item_number);
|
|
|
+ && x.fitem_number == ic_Item.number);
|
|
|
|
|
|
//首先满足需求数量工单其次判断是否满足交付日期、当数量不满足时继续查找最早交付日期订单 工单数量累加。
|
|
|
//当前工单计划日期-1天 小于交付日期 && 计算生产数量-入库数据并且大于需求产品数量。
|
|
|
@@ -216,6 +216,7 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
morderDataList = morderList.Where(x => x.moentry_sys_etime.GetValueOrDefault().AddDays(-1) < DeliverDate).OrderByDescending(x => x.planner_end_date).ToList();
|
|
|
}
|
|
|
+ var QuantityNumber = 0.00m;
|
|
|
//存在此数据满足当前BOM交付找到最早日期工单,则返回无需后续继续检查。
|
|
|
foreach (var item in morderDataList)
|
|
|
{
|
|
|
@@ -269,16 +270,24 @@ namespace Business.ResourceExamineManagement
|
|
|
//}
|
|
|
|
|
|
#endregion
|
|
|
- var Sum = item.morder_production_number - item.inventory_number - Sumqty;
|
|
|
+ var Sum = item.morder_production_number - item.inventory_number - Sumqty;//1000 Quantity:1100 //500
|
|
|
//剩余需要数量= 需要数量 -(计划数量 - 入库数量 - 已占用量)
|
|
|
- Quantity = Quantity - (item.morder_production_number - item.inventory_number - Sumqty);
|
|
|
- var mes_Mooccupy = GetMooccupies(seorderentry, ic_Item, item, Sum);
|
|
|
+ if (Sum - Quantity < 0)
|
|
|
+ {
|
|
|
+ QuantityNumber = Sum.GetValueOrDefault();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ QuantityNumber = Quantity;
|
|
|
+ }
|
|
|
+ var mes_Mooccupy = GetMooccupies(seorderentry, ic_Item, item, QuantityNumber);
|
|
|
mes_Mooccupies.Add(mes_Mooccupy);
|
|
|
//当剩余需要数量大于0则继续寻找可占用工单,已满足需要数量停止循环查找
|
|
|
- if (Quantity <= 0)
|
|
|
+ if (Quantity - Sum <= 0)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
+ Quantity = Quantity - Sum.GetValueOrDefault();
|
|
|
}
|
|
|
|
|
|
}
|