|
|
@@ -6315,7 +6315,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;
|
|
|
+ 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();
|
|
|
if (alreadys.Any())
|
|
|
@@ -6470,12 +6470,13 @@ namespace Business.Replenishment
|
|
|
//供应商占用数量置0
|
|
|
sumNeedQty = 0m;
|
|
|
//计算当前供应商分配数量
|
|
|
- needQty = item.tosechedqty * pch.quota_rate.GetValueOrDefault() / 100.00m;
|
|
|
+ needQty = Math.Ceiling(item.tosechedqty * pch.quota_rate.GetValueOrDefault() / 100.00m);
|
|
|
//如果交货计划剩余数量小于按照供应商配额计算的数量,则当前供应商需分配数量为交货计划剩余数量
|
|
|
if (item.tosechedqty - allQty < needQty)
|
|
|
{
|
|
|
needQty = item.tosechedqty - allQty;
|
|
|
}
|
|
|
+ //以下为供应商是采购申请场景
|
|
|
//获取当前供应商对应的采购单明细数据,按照交货日期从小到大开始占用
|
|
|
var pchPurMsts = curPurMsts.Where(p => p.Supp == pch.supplier_number).ToList();
|
|
|
if (!pchPurMsts.Any())
|
|
|
@@ -6534,6 +6535,67 @@ namespace Business.Replenishment
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+ //如果当前供应商为要货令,则查找对应的要货令,直接转成交货单
|
|
|
+ if (pch.IsRequireGoods == 1)
|
|
|
+ {
|
|
|
+ DateTime startDay = item.requestdate.AddDays(-10);
|
|
|
+ DateTime endDay = item.requestdate.AddDays(-4);
|
|
|
+ //获取对应要货令数据
|
|
|
+ var yhlDtls = pchPurDtls.Where(p=> p.PurOrd.StartsWith("DO") && (p.QtyOrded - p.RctQty) == needQty && p.DueDate >= startDay && p.DueDate <= endDay).ToList();
|
|
|
+ if (yhlDtls.Any())
|
|
|
+ {
|
|
|
+ foreach (var yhl in yhlDtls)
|
|
|
+ {
|
|
|
+ //生成实体
|
|
|
+ entity = new srm_polist_ds();
|
|
|
+ entity.Id = help.NextId();
|
|
|
+ entity.domain = domain;
|
|
|
+ entity.icdsid = item.Id;
|
|
|
+ //交货单号最后一次性生成
|
|
|
+ entity.dsnum = "";
|
|
|
+ entity.status = "N";
|
|
|
+ entity.itemnum = item.itemnum;
|
|
|
+ entity.um = "";
|
|
|
+ entity.purgroup = "";
|
|
|
+ entity.suppliercode = pch.supplier_number;
|
|
|
+ entity.supplier = pch.supplier_name;
|
|
|
+ entity.requestdate = item.arrivaldate;
|
|
|
+ entity.needdate = item.requestdate;
|
|
|
+ entity.ponumber = yhl.PurOrd;
|
|
|
+ entity.poline = yhl.Line;
|
|
|
+ entity.schedqty = needQty;
|
|
|
+ entity.lastsentqty = 0m;
|
|
|
+ entity.sentqty = 0m;
|
|
|
+ entity.restqty = needQty;
|
|
|
+ entity.createtime = DateTime.Now;
|
|
|
+ entity.createuser = user;
|
|
|
+ entity.remarks = "";
|
|
|
+ entity.isactive = 1;
|
|
|
+ curInserts.Add(entity);
|
|
|
+ }
|
|
|
+
|
|
|
+ //当前交货计划已分配数量累加
|
|
|
+ allQty += needQty;
|
|
|
+ //当前供应商已分配数量累加
|
|
|
+ sumNeedQty += needQty;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ //当前供应商可用采购单明细不足,则当前交货计划无法转交货单
|
|
|
+ info = new DeliveryExceptionMaster();
|
|
|
+ info.Domain = domain;
|
|
|
+ info.Icdsid = item.Id;
|
|
|
+ info.ItemNum = item.itemnum;
|
|
|
+ info.CreateTime = DateTime.Now;
|
|
|
+ info.Remark = "物料[" + item.itemnum + "]对应供应商[" + pch.supplier_name + "]要货令明细可用数量不足,无法转交货单";
|
|
|
+ info.OptTime = optime;
|
|
|
+ exceptions.Add(info);
|
|
|
+
|
|
|
+ flag = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
foreach (var pud in pchPurDtls)
|
|
|
{
|
|
|
if (sumNeedQty >= needQty)
|