|
|
@@ -199,7 +199,7 @@ namespace Business.ResourceExamineManagement
|
|
|
level1Dto.sqty = level1Dto.sqty < 0 ? 0 : level1Dto.sqty;
|
|
|
level1Dto.lack_qty = level1Dto.needCount - level1Dto.sqty;
|
|
|
level1Dto.lack_qty = level1Dto.lack_qty < 0 ? 0 : level1Dto.lack_qty;
|
|
|
- level1Dto.needCount = level1Dto.lack_qty;
|
|
|
+ //level1Dto.needCount = level1Dto.lack_qty;
|
|
|
if (level1Dto.sqty != 0)
|
|
|
{
|
|
|
if (level1Dto.lack_qty > 0)
|
|
|
@@ -275,7 +275,7 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
//占用不够,占用后减少缺料数量
|
|
|
level1Dto.lack_qty -= moo_qty;
|
|
|
- level1Dto.needCount = level1Dto.lack_qty;
|
|
|
+ //level1Dto.needCount = level1Dto.lack_qty;
|
|
|
//平铺需要数量
|
|
|
CaclMaterialShortage(returnlist);
|
|
|
//先设定在制的齐套时间
|
|
|
@@ -322,28 +322,30 @@ namespace Business.ResourceExamineManagement
|
|
|
else if (level1Dto.erp_cls == 3)
|
|
|
{
|
|
|
//先找在途
|
|
|
- CalcInTransit(sentrys, level1Dto, bangid, plan_date.GetValueOrDefault());
|
|
|
- if (level1Dto.lack_qty > 0)
|
|
|
+ decimal occqty = CalcInTransit(sentrys, level1Dto, bangid, plan_date.GetValueOrDefault());
|
|
|
+ if (level1Dto.lack_qty - occqty > 0)
|
|
|
{
|
|
|
decimal itemPRQty = srm_Pr_Mains.Where(x => x.icitem_id.Value == level1Dto.item_id && x.pr_sarrive_date <= plan_date).Sum(y => y.pr_aqty.GetValueOrDefault());
|
|
|
- if (itemPRQty < level1Dto.lack_qty)
|
|
|
+ if (itemPRQty < level1Dto.lack_qty - occqty)
|
|
|
{
|
|
|
- level1Dto.lack_qty = level1Dto.lack_qty - itemPRQty;
|
|
|
+ //level1Dto.lack_qty = level1Dto.lack_qty - itemPRQty;
|
|
|
+ decimal lack_qty = level1Dto.lack_qty - itemPRQty;
|
|
|
//采购申请
|
|
|
- PackageSRMPR(level1Dto, bangid, sentrys, plan_date);
|
|
|
+ PackageSRMPR(level1Dto, bangid, sentrys, plan_date, lack_qty);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else if (level1Dto.erp_cls == 2)
|
|
|
{
|
|
|
//先找在途
|
|
|
- CalcInTransit(sentrys, level1Dto, bangid, plan_date.GetValueOrDefault());
|
|
|
- if (level1Dto.lack_qty > 0)
|
|
|
+ decimal occqty = CalcInTransit(sentrys, level1Dto, bangid, plan_date.GetValueOrDefault());
|
|
|
+ decimal lack_qty = level1Dto.lack_qty - occqty;
|
|
|
+ if (lack_qty > 0)
|
|
|
{
|
|
|
//1.先生成委外工单。
|
|
|
- var mesorder = CreateMesOOder(level1Dto, param.company_id, param.factoryId, bangid, leadTimeList, supplierList, plan_date.Value);
|
|
|
+ var mesorder = CreateMesOOder(level1Dto, lack_qty, param.company_id, param.factoryId, bangid, leadTimeList, supplierList, plan_date.Value);
|
|
|
mesorder.ooentry_etime = plan_date.GetValueOrDefault().AddDays(-1);
|
|
|
- var srmprDto = PackageSRMPR(level1Dto, bangid, sentrys, plan_date);
|
|
|
+ var srmprDto = PackageSRMPR(level1Dto, bangid, sentrys, plan_date, lack_qty);
|
|
|
mesorder.ooentry_stime = plan_date.GetValueOrDefault().AddDays(-srmprDto.totalLeadTime.GetValueOrDefault());
|
|
|
|
|
|
//先计算末级数据的齐套时间。
|
|
|
@@ -353,7 +355,7 @@ namespace Business.ResourceExamineManagement
|
|
|
level1Dto.kitting_time = childList.Max(s => s.kitting_time).GetValueOrDefault().AddDays(srmprDto.totalLeadTime.GetValueOrDefault());//加上物料的采购提前期
|
|
|
}
|
|
|
|
|
|
- level1Dto.subcontracting_qty = level1Dto.lack_qty;
|
|
|
+ level1Dto.subcontracting_qty = lack_qty;
|
|
|
level1Dto.subcontracting_list = new List<ooder>();
|
|
|
ooder oo = new ooder();
|
|
|
oo.Id = mesorder.Id;
|
|
|
@@ -848,11 +850,12 @@ namespace Business.ResourceExamineManagement
|
|
|
if (param.checkflag || param.checkPlan)
|
|
|
{
|
|
|
//先找在途
|
|
|
- CalcInTransit(sentrys, item, bangid, plan_date.GetValueOrDefault());
|
|
|
- if (item.lack_qty > 0)
|
|
|
+ decimal occqty = CalcInTransit(sentrys, item, bangid, plan_date.GetValueOrDefault());
|
|
|
+ decimal lack_qty = item.lack_qty - occqty;
|
|
|
+ if (lack_qty > 0)
|
|
|
{
|
|
|
//采购申请
|
|
|
- PackageSRMPR(item, bangid, sentrys, plan_date);
|
|
|
+ PackageSRMPR(item, bangid, sentrys, plan_date, lack_qty);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -862,13 +865,14 @@ namespace Business.ResourceExamineManagement
|
|
|
if (param.checkflag || param.checkPlan)
|
|
|
{
|
|
|
//先找在途
|
|
|
- CalcInTransit(sentrys, item, bangid, plan_date.GetValueOrDefault());
|
|
|
- if (item.lack_qty > 0)
|
|
|
+ decimal occqty = CalcInTransit(sentrys, item, bangid, plan_date.GetValueOrDefault());
|
|
|
+ decimal lack_qty = item.lack_qty - occqty;
|
|
|
+ if (lack_qty > 0)
|
|
|
{
|
|
|
//1.先生成委外工单。
|
|
|
- var mesorder = CreateMesOOder(item, param.company_id, param.factoryId, bangid, leadTimeList, supplierList, plan_date.GetValueOrDefault());
|
|
|
+ var mesorder = CreateMesOOder(item, lack_qty, param.company_id, param.factoryId, bangid, leadTimeList, supplierList, plan_date.GetValueOrDefault());
|
|
|
mesorder.ooentry_etime = plan_date.GetValueOrDefault().AddDays(-1);
|
|
|
- var srmprDto = PackageSRMPR(item, bangid, sentrys, plan_date);
|
|
|
+ var srmprDto = PackageSRMPR(item, bangid, sentrys, plan_date, lack_qty);
|
|
|
mesorder.ooentry_stime = mesorder.ooentry_etime.GetValueOrDefault().AddDays(-(srmprDto.totalLeadTime.GetValueOrDefault() - 1));
|
|
|
//先计算末级数据的齐套时间。
|
|
|
if (cilList.Count > 0)
|
|
|
@@ -885,7 +889,7 @@ namespace Business.ResourceExamineManagement
|
|
|
mesorder.ooentry_etime = mesorder.ooentry_stime.GetValueOrDefault().AddDays(srmprDto.totalLeadTime.GetValueOrDefault());
|
|
|
}
|
|
|
}
|
|
|
- item.subcontracting_qty = item.lack_qty;
|
|
|
+ item.subcontracting_qty = lack_qty;
|
|
|
item.subcontracting_list = new List<ooder>();
|
|
|
ooder oo = new ooder();
|
|
|
oo.Id = mesorder.Id;
|
|
|
@@ -1400,11 +1404,12 @@ namespace Business.ResourceExamineManagement
|
|
|
if (param.checkflag || param.checkPlan)
|
|
|
{
|
|
|
//先找在途
|
|
|
- CalcInTransit(sentrys, sct, bangid, plan_date.GetValueOrDefault());
|
|
|
- if (sct.lack_qty > 0)
|
|
|
+ decimal occqty = CalcInTransit(sentrys, sct, bangid, plan_date.GetValueOrDefault());
|
|
|
+ decimal lack_qty = sct.lack_qty - occqty;
|
|
|
+ if (lack_qty > 0)
|
|
|
{
|
|
|
//采购申请
|
|
|
- PackageSRMPR(sct, bangid, sentrys, plan_date);
|
|
|
+ PackageSRMPR(sct, bangid, sentrys, plan_date, lack_qty);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1413,13 +1418,14 @@ namespace Business.ResourceExamineManagement
|
|
|
if (param.checkflag || param.checkPlan)
|
|
|
{
|
|
|
//先找在途
|
|
|
- CalcInTransit(sentrys, sct, bangid, plan_date.GetValueOrDefault());
|
|
|
- if (sct.lack_qty > 0)
|
|
|
+ decimal occqty = CalcInTransit(sentrys, sct, bangid, plan_date.GetValueOrDefault());
|
|
|
+ decimal lack_qty = sct.lack_qty - occqty;
|
|
|
+ if (lack_qty > 0)
|
|
|
{
|
|
|
//1.先生成委外工单。
|
|
|
- var mesorder = CreateMesOOder(sct, param.company_id, param.factoryId, bangid, leadTimeList, supplierList, plan_date.GetValueOrDefault());
|
|
|
+ var mesorder = CreateMesOOder(sct, lack_qty, param.company_id, param.factoryId, bangid, leadTimeList, supplierList, plan_date.GetValueOrDefault());
|
|
|
mesorder.ooentry_etime = plan_date.GetValueOrDefault().AddDays(-1);
|
|
|
- var srmprDto = PackageSRMPR(sct, bangid, sentrys, plan_date);
|
|
|
+ var srmprDto = PackageSRMPR(sct, bangid, sentrys, plan_date, lack_qty);
|
|
|
mesorder.start_time = mesorder.ooentry_etime.GetValueOrDefault().AddDays(-(srmprDto.totalLeadTime.GetValueOrDefault() - 1));
|
|
|
|
|
|
//先计算末级数据的齐套时间。
|
|
|
@@ -1428,7 +1434,7 @@ namespace Business.ResourceExamineManagement
|
|
|
CalcIcitem(cilList, returnlist, bangid, sklist, mesorder.ooentry_stime, icitemlist, sentrys, childidList);
|
|
|
sct.kitting_time = cilList.Max(s => s.kitting_time).GetValueOrDefault().AddDays(srmprDto.totalLeadTime.GetValueOrDefault());//加上物料的采购提前期
|
|
|
}
|
|
|
- sct.subcontracting_qty = sct.lack_qty;
|
|
|
+ sct.subcontracting_qty = lack_qty;
|
|
|
sct.subcontracting_list = new List<ooder>();
|
|
|
ooder oo = new ooder();
|
|
|
oo.Id = mesorder.Id;
|
|
|
@@ -1494,7 +1500,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="returnlist"></param>
|
|
|
/// <param name="factoryid"></param>
|
|
|
/// <param name="orderType">2委外采购申请单,3采购申请单</param>
|
|
|
- private SRMPRDto CreateSRMPR(BomChildExamineDto returnlist, long? companyId, long factoryid, long bangId, int orderType, List<ICItemLeadTimeDto> iCItemLeadTimes, List<mo_srm_purchase> supplierList, List<mo_ic_item> planList, crm_seorderentry sentrys, DateTime? plan_date)
|
|
|
+ private SRMPRDto CreateSRMPR(BomChildExamineDto returnlist, decimal lack_qty, long? companyId, long factoryid, long bangId, int orderType, List<ICItemLeadTimeDto> iCItemLeadTimes, List<mo_srm_purchase> supplierList, List<mo_ic_item> planList, crm_seorderentry sentrys, DateTime? plan_date)
|
|
|
{
|
|
|
SRMPRDto sRMPR = new SRMPRDto();
|
|
|
mo_srm_purchase supplier = null;
|
|
|
@@ -1607,16 +1613,16 @@ namespace Business.ResourceExamineManagement
|
|
|
srm_Pr.pr_purchasename = supplier.supplier_name;//供应商名称
|
|
|
srm_Pr.pr_purchaser = supplier.order_rector_name;//采购员
|
|
|
srm_Pr.pr_purchaser_num = supplier.order_rector_num;//采购员工号(采购信息表)
|
|
|
- decimal qty = returnlist.lack_qty;
|
|
|
+ decimal qty = lack_qty;
|
|
|
//数量圆整 按最小包装量向上圆整
|
|
|
if (supplier.packaging_qty.GetValueOrDefault() != 0)
|
|
|
{
|
|
|
- decimal count = Math.Ceiling(returnlist.lack_qty / supplier.packaging_qty.GetValueOrDefault());
|
|
|
+ decimal count = Math.Ceiling(lack_qty / supplier.packaging_qty.GetValueOrDefault());
|
|
|
qty = count * supplier.packaging_qty.GetValueOrDefault();
|
|
|
}
|
|
|
//判断最小起订量
|
|
|
qty = qty > supplier.qty_min.GetValueOrDefault() ? qty : supplier.qty_min.GetValueOrDefault();
|
|
|
- srm_Pr.pr_rqty = returnlist.lack_qty;//需求数量
|
|
|
+ srm_Pr.pr_rqty = lack_qty;//需求数量
|
|
|
srm_Pr.pr_aqty = qty;//申请数量
|
|
|
srm_Pr.pr_sqty = qty;//建议数量
|
|
|
srm_Pr.icitem_id = returnlist.item_id;//物料id
|
|
|
@@ -1692,7 +1698,7 @@ namespace Business.ResourceExamineManagement
|
|
|
srm_Po_Occupy.morder_id = mes_morder.Id;
|
|
|
srm_Po_Occupy.morder_mo = mes_morder.morder_no;
|
|
|
}
|
|
|
- srm_Po_Occupy.qty = returnlist.lack_qty;
|
|
|
+ srm_Po_Occupy.qty = lack_qty;
|
|
|
srm_Po_Occupy.type = MorderEnum.Zyjc_Type;//TODO:类型未知
|
|
|
srm_Po_Occupy.stime = srm_Pr.pr_ssend_date;
|
|
|
srm_Po_Occupy.etime = srm_Pr.pr_sarrive_date;
|
|
|
@@ -1718,7 +1724,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// </summary>
|
|
|
/// <param name="returnlist"></param>
|
|
|
/// <param name="factoryid"></param>
|
|
|
- private mo_mes_oorder CreateMesOOder(BomChildExamineDto returnlist, long? companyId, long factoryid, long bangId, List<ICItemLeadTimeDto> iCItemLeadTimes, List<mo_srm_purchase> supplierList, DateTime deliveryDate)
|
|
|
+ private mo_mes_oorder CreateMesOOder(BomChildExamineDto returnlist, decimal lack_qty, long? companyId, long factoryid, long bangId, List<ICItemLeadTimeDto> iCItemLeadTimes, List<mo_srm_purchase> supplierList, DateTime deliveryDate)
|
|
|
{
|
|
|
mo_mes_oorder oOrder = new mo_mes_oorder();
|
|
|
oOrder.GenerateNewId(help.NextId());
|
|
|
@@ -1742,9 +1748,9 @@ namespace Business.ResourceExamineManagement
|
|
|
oOrder.bom_number = returnlist.bom_number;//bom编码
|
|
|
oOrder.unit = returnlist.unit;//单位
|
|
|
oOrder.morder_progress = "";//工单进度
|
|
|
- oOrder.morder_production_number = returnlist.lack_qty;//工单生产数量(计划数量)
|
|
|
- oOrder.need_number = returnlist.lack_qty;//需求数量
|
|
|
- oOrder.remaining_number = returnlist.lack_qty;//剩余可用数量
|
|
|
+ oOrder.morder_production_number = lack_qty;//工单生产数量(计划数量)
|
|
|
+ oOrder.need_number = lack_qty;//需求数量
|
|
|
+ oOrder.remaining_number = lack_qty;//剩余可用数量
|
|
|
oOrder.work_number = 0;//报工数量
|
|
|
oOrder.inspection_number = 0;//报检数量
|
|
|
oOrder.qualified_number = 0;//合格数量
|
|
|
@@ -1774,7 +1780,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <summary>
|
|
|
/// 计算在途
|
|
|
/// </summary>
|
|
|
- public void CalcInTransit(crm_seorderentry sentrys, BomChildExamineDto item, long bangid, DateTime plan_date)
|
|
|
+ public decimal CalcInTransit(crm_seorderentry sentrys, BomChildExamineDto item, long bangid, DateTime plan_date)
|
|
|
{
|
|
|
_purchaseOrderAppService.mo_Srm_Po_Lists = srm_Po_Lists; //采购明细
|
|
|
_purchaseOrderAppService.srm_Po_Occupies = srm_Po_Occupies; //采购明细
|
|
|
@@ -1782,11 +1788,12 @@ namespace Business.ResourceExamineManagement
|
|
|
_purchaseOrderAppService.mes_morder = mes_morder;//当前工单传递进去。
|
|
|
|
|
|
var occupylist = _purchaseOrderAppService.CheckPurchaseOrder(sentrys, item.item_id, item.lack_qty, plan_date, ic_item_List, bangid);
|
|
|
+ decimal occqty = 0;
|
|
|
if (occupylist.Any())
|
|
|
{
|
|
|
- decimal occqty = occupylist.Sum(s => s.qty.GetValueOrDefault());
|
|
|
+ occqty = occupylist.Sum(s => s.qty.GetValueOrDefault());
|
|
|
item.purchase_occupy_qty = occqty;
|
|
|
- item.lack_qty -= occqty;
|
|
|
+ //item.lack_qty -= occqty;
|
|
|
item.purchase_occupy_list = new List<purchase_occupy>();
|
|
|
item.kitting_time = occupylist[0].etime;
|
|
|
occupylist.ForEach(s => {
|
|
|
@@ -1811,12 +1818,13 @@ namespace Business.ResourceExamineManagement
|
|
|
srm_Po_Occupies.AddRange(occupylist);
|
|
|
srm_Po_OccupiesInsert.AddRange(occupylist);
|
|
|
}
|
|
|
+ return occqty;
|
|
|
}
|
|
|
|
|
|
- public SRMPRDto PackageSRMPR(BomChildExamineDto item,long bangid, crm_seorderentry sentrys, DateTime? plan_date)
|
|
|
+ public SRMPRDto PackageSRMPR(BomChildExamineDto item,long bangid, crm_seorderentry sentrys, DateTime? plan_date, decimal lack_qty)
|
|
|
{
|
|
|
//采购申请
|
|
|
- var SRMPRDto = CreateSRMPR(item, param.company_id, param.factoryId, bangid, item.erp_cls, leadTimeList, supplierList, ic_item_List, sentrys, plan_date);
|
|
|
+ var SRMPRDto = CreateSRMPR(item, lack_qty, param.company_id, param.factoryId, bangid, item.erp_cls, leadTimeList, supplierList, ic_item_List, sentrys, plan_date);
|
|
|
item.purchase_list = new List<purchase>();
|
|
|
if (SRMPRDto.srm_Pr_Main != null)
|
|
|
{
|
|
|
@@ -1843,7 +1851,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
if (item.erp_cls == 3)
|
|
|
{
|
|
|
- item.purchase_qty = item.lack_qty;
|
|
|
+ item.purchase_qty = lack_qty;
|
|
|
item.purchase_list = new List<purchase>();
|
|
|
}
|
|
|
if (SRMPRDto.lastStartTmie > item.kitting_time)
|