|
|
@@ -1225,87 +1225,82 @@ namespace Business.ResourceExamineManagement
|
|
|
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)
|
|
|
{
|
|
|
SRMPRDto sRMPR = new SRMPRDto();
|
|
|
- var supplier = supplierList.OrderBy(s=>s.quota_priority).ToList();//默认取配额优先级
|
|
|
+ var supplier = supplierList.OrderBy(s => s.quota_priority).FirstOrDefault();//默认取配额优先级
|
|
|
var plan = planList.Find(x => x.mysql_id == returnlist.item_id);
|
|
|
- sRMPR.srm_Pr_Main = new List<mo_srm_pr_main>();
|
|
|
- if (!supplier.Any() || plan == null)
|
|
|
+ sRMPR.srm_Pr_Main = new List<mo_srm_pr_main>();
|
|
|
+ if (supplier == null || plan == null)
|
|
|
{
|
|
|
sRMPR.lastStartTmie = DateTime.Now.AddDays(7);//默认采购提前期
|
|
|
return sRMPR;
|
|
|
//throw new NotImplementedException("未找到物料ic_factory_details或ic_item_pur或ic_plan信息!");
|
|
|
}
|
|
|
-
|
|
|
- supplier.ForEach(x =>
|
|
|
+ mo_srm_pr_main srm_Pr = new mo_srm_pr_main();
|
|
|
+ srm_Pr.GenerateNewId(help.NextId());
|
|
|
+ srm_Pr.mysql_id = help.NextId();
|
|
|
+ srm_Pr.pr_billno = returnlist.erp_cls == 2 ? getOrderNum("WWPR") : getOrderNum("PR");//pr单号
|
|
|
+ if (mes_morder != null)
|
|
|
{
|
|
|
- mo_srm_pr_main srm_Pr = new mo_srm_pr_main();
|
|
|
- srm_Pr.GenerateNewId(help.NextId());
|
|
|
- srm_Pr.mysql_id = help.NextId();
|
|
|
- srm_Pr.pr_billno = returnlist.erp_cls == 2 ? getOrderNum("WWPR") : getOrderNum("PR");//pr单号
|
|
|
- if (mes_morder != null)
|
|
|
- {
|
|
|
- srm_Pr.pr_mono = mes_morder.morder_no;//关联工单号
|
|
|
- srm_Pr.entity_id = 1;//工单行号
|
|
|
- }
|
|
|
- srm_Pr.IsRequireGoods = x.IsRequireGoods;
|
|
|
- srm_Pr.pr_purchaseid = x.supplier_id;//供应商id
|
|
|
- srm_Pr.pr_purchasenumber = x.supplier_number;//供应商编码
|
|
|
- srm_Pr.pr_purchasename = x.supplier_name;//供应商名称
|
|
|
- srm_Pr.pr_purchaser = x.purcher;//采购员
|
|
|
- srm_Pr.pr_purchaser_num = "";//采购员工号(采购信息表)
|
|
|
- //数量圆整 按最小包装量向上圆整
|
|
|
- decimal qty = Math.Ceiling(returnlist.lack_qty / (x.packaging_qty.GetValueOrDefault() == 0 ? 1 : x.packaging_qty.GetValueOrDefault()));
|
|
|
- //判断最小起订量
|
|
|
- qty = qty > x.qty_min ? qty : x.qty_min.GetValueOrDefault();
|
|
|
- srm_Pr.pr_rqty = returnlist.lack_qty;//需求数量
|
|
|
- srm_Pr.pr_aqty = qty;//申请数量
|
|
|
- srm_Pr.pr_sqty = qty;//建议数量
|
|
|
- srm_Pr.icitem_id = returnlist.item_id;//物料id
|
|
|
- srm_Pr.icitem_name = returnlist.item_name;//物料名称
|
|
|
- srm_Pr.num = returnlist.num;
|
|
|
- var tomorrow = DateTime.Now.Date.AddDays(1);
|
|
|
- srm_Pr.pr_order_type = 1;//单据类型
|
|
|
- srm_Pr.pr_ssend_date = tomorrow;//系统建议下单日期
|
|
|
- srm_Pr.pr_sarrive_date = DateTime.Now.AddDays((double)plan.order_leadtime).AddDays((double)plan.transportation_leadtime);//系统建议到达日期(建议到货日期)
|
|
|
- srm_Pr.pr_psend_date = tomorrow;//计划下单日期
|
|
|
- srm_Pr.pr_parrive_date = DateTime.Now.AddDays((double)plan.order_leadtime).AddDays((double)plan.transportation_leadtime);//计划到达日期
|
|
|
- srm_Pr.pr_rarrive_date = DateTime.Now.AddDays((double)plan.order_leadtime).AddDays((double)plan.transportation_leadtime);//需求到货日期
|
|
|
- srm_Pr.pr_sysprice = x.order_price;//系统价格(含税)
|
|
|
- srm_Pr.pr_orderprice = qty * x.order_price;//订单价格(含税)
|
|
|
- srm_Pr.pr_price = x.netpurchase_price;//采购净价(不含税)
|
|
|
- /*srm_Pr.pr_sysprice = qty * x.netpurchase_price * (1 + x.taxrate);//系统价格(含税)
|
|
|
- srm_Pr.pr_orderprice = qty * x.netpurchase_price * (1 + x.taxrate);//订单价格(含税)
|
|
|
- srm_Pr.pr_price = x.netpurchase_price;//采购净价(不含税)*/
|
|
|
- srm_Pr.pr_rate = x.taxrate;//税率
|
|
|
- srm_Pr.pr_unit = returnlist.unit;//单位
|
|
|
- srm_Pr.state = 1;//状态
|
|
|
- srm_Pr.old_apply_aqty = 0;//已申请数量
|
|
|
- srm_Pr.pr_type = orderType;//申请类型
|
|
|
- srm_Pr.currencytype = x.currency_type == null ? 1 : x.currency_type.Value;//币种
|
|
|
- srm_Pr.secInv_ratio = plan.secinv_ratio;//安全库存触发采购比例
|
|
|
- srm_Pr.tenant_id = companyId.GetValueOrDefault();
|
|
|
- srm_Pr.company_id = companyId;
|
|
|
- srm_Pr.factory_id = factoryid;
|
|
|
- srm_Pr.bang_id = bangId;
|
|
|
- if (sentrys != null)
|
|
|
- {
|
|
|
- srm_Pr.sentry_id = sentrys.Id;
|
|
|
- }
|
|
|
- //_srm_pr_main.InsertOne(srm_Pr);
|
|
|
- decimal? totalLeadTime = plan.transportation_leadtime + plan.stock_leadtime + plan.production_leadtime + plan.order_leadtime;
|
|
|
- srm_Pr.totalLeadTime= totalLeadTime;
|
|
|
- srm_Pr.create_time = DateTime.Now;
|
|
|
- srm_Pr.create_by_name = "admin";
|
|
|
- srm_Pr.update_time = DateTime.Now;
|
|
|
- srm_Pr.update_by_name = "admin";
|
|
|
- sRMPR.srm_Pr_Main.Add(srm_Pr);
|
|
|
- });
|
|
|
+ srm_Pr.pr_mono = mes_morder.morder_no;//关联工单号
|
|
|
+ srm_Pr.entity_id = 1;//工单行号
|
|
|
+ }
|
|
|
+ srm_Pr.IsRequireGoods = supplier.IsRequireGoods;
|
|
|
+ srm_Pr.pr_purchaseid = supplier.supplier_id;//供应商id
|
|
|
+ srm_Pr.pr_purchasenumber = supplier.supplier_number;//供应商编码
|
|
|
+ srm_Pr.pr_purchasename = supplier.supplier_name;//供应商名称
|
|
|
+ srm_Pr.pr_purchaser = supplier.purcher;//采购员
|
|
|
+ srm_Pr.pr_purchaser_num = "";//采购员工号(采购信息表)
|
|
|
+ //数量圆整 按最小包装量向上圆整
|
|
|
+ decimal qty = Math.Ceiling(returnlist.lack_qty / (supplier.packaging_qty.GetValueOrDefault() == 0 ? 1 : supplier.packaging_qty.GetValueOrDefault()));
|
|
|
+ //判断最小起订量
|
|
|
+ qty = qty > supplier.qty_min ? qty : supplier.qty_min.GetValueOrDefault();
|
|
|
+ srm_Pr.pr_rqty = returnlist.lack_qty;//需求数量
|
|
|
+ srm_Pr.pr_aqty = qty;//申请数量
|
|
|
+ srm_Pr.pr_sqty = qty;//建议数量
|
|
|
+ srm_Pr.icitem_id = returnlist.item_id;//物料id
|
|
|
+ srm_Pr.icitem_name = returnlist.item_name;//物料名称
|
|
|
+ srm_Pr.num = returnlist.num;
|
|
|
+ var tomorrow = DateTime.Now.Date.AddDays(1);
|
|
|
+ srm_Pr.pr_order_type = 1;//单据类型
|
|
|
+ srm_Pr.pr_ssend_date = tomorrow;//系统建议下单日期
|
|
|
+ srm_Pr.pr_sarrive_date = DateTime.Now.AddDays((double)plan.order_leadtime).AddDays((double)plan.transportation_leadtime);//系统建议到达日期(建议到货日期)
|
|
|
+ srm_Pr.pr_psend_date = tomorrow;//计划下单日期
|
|
|
+ srm_Pr.pr_parrive_date = DateTime.Now.AddDays((double)plan.order_leadtime).AddDays((double)plan.transportation_leadtime);//计划到达日期
|
|
|
+ srm_Pr.pr_rarrive_date = DateTime.Now.AddDays((double)plan.order_leadtime).AddDays((double)plan.transportation_leadtime);//需求到货日期
|
|
|
+ srm_Pr.pr_sysprice = supplier.order_price;//系统价格(含税)
|
|
|
+ srm_Pr.pr_orderprice = qty * supplier.order_price;//订单价格(含税)
|
|
|
+ srm_Pr.pr_price = supplier.netpurchase_price;//采购净价(不含税)
|
|
|
+ /*srm_Pr.pr_sysprice = qty * x.netpurchase_price * (1 + x.taxrate);//系统价格(含税)
|
|
|
+ srm_Pr.pr_orderprice = qty * x.netpurchase_price * (1 + x.taxrate);//订单价格(含税)
|
|
|
+ srm_Pr.pr_price = x.netpurchase_price;//采购净价(不含税)*/
|
|
|
+ srm_Pr.pr_rate = supplier.taxrate;//税率
|
|
|
+ srm_Pr.pr_unit = returnlist.unit;//单位
|
|
|
+ srm_Pr.state = 1;//状态
|
|
|
+ srm_Pr.old_apply_aqty = 0;//已申请数量
|
|
|
+ srm_Pr.pr_type = orderType;//申请类型
|
|
|
+ srm_Pr.currencytype = supplier.currency_type == null ? 1 : supplier.currency_type.Value;//币种
|
|
|
+ srm_Pr.secInv_ratio = plan.secinv_ratio;//安全库存触发采购比例
|
|
|
+ srm_Pr.tenant_id = companyId.GetValueOrDefault();
|
|
|
+ srm_Pr.company_id = companyId;
|
|
|
+ srm_Pr.factory_id = factoryid;
|
|
|
+ srm_Pr.bang_id = bangId;
|
|
|
+ if (sentrys != null)
|
|
|
+ {
|
|
|
+ srm_Pr.sentry_id = sentrys.Id;
|
|
|
+ }
|
|
|
+ decimal? totalLeadTime = plan.transportation_leadtime + plan.stock_leadtime + plan.production_leadtime + plan.order_leadtime;
|
|
|
+ srm_Pr.totalLeadTime = totalLeadTime;
|
|
|
+ srm_Pr.create_time = DateTime.Now;
|
|
|
+ srm_Pr.create_by_name = "admin";
|
|
|
+ srm_Pr.update_time = DateTime.Now;
|
|
|
+ srm_Pr.update_by_name = "admin";
|
|
|
+ sRMPR.srm_Pr_Main.Add(srm_Pr);
|
|
|
if (sRMPR.srm_Pr_Main.Any())
|
|
|
{
|
|
|
sRMPR.srm_Pr_Main.OrderBy(x => x.totalLeadTime.GetValueOrDefault()).ThenBy(x => x.pr_orderprice.GetValueOrDefault()).First().isbestoptions = true;
|
|
|
}
|
|
|
sRMPR.item_no = returnlist.num;
|
|
|
sRMPR.orderentry_id = returnlist.sentry_id;
|
|
|
- sRMPR.lastStartTmie = DateTime.Now.AddDays((double)(sRMPR.srm_Pr_Main.MinBy(x=>x.totalLeadTime).totalLeadTime.GetValueOrDefault()+plan.clean_leadtime.GetValueOrDefault()));//加上提前期和备料期,得到齐套时间
|
|
|
+ sRMPR.lastStartTmie = DateTime.Now.AddDays((double)(sRMPR.srm_Pr_Main.MinBy(x => x.totalLeadTime).totalLeadTime.GetValueOrDefault() + plan.clean_leadtime.GetValueOrDefault()));//加上提前期和备料期,得到齐套时间
|
|
|
return sRMPR;
|
|
|
}
|
|
|
// 生成订单编号 字母+年月日+8位随机数+时间戳
|