|
|
@@ -6350,7 +6350,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())
|
|
|
@@ -6382,7 +6382,8 @@ namespace Business.Replenishment
|
|
|
return Msg;
|
|
|
}
|
|
|
//获取采购明细数据:未关闭,且未交货数量(需求数量-已收数量)>0
|
|
|
- List<PurOrdDetail> purOrdDetails = _PurOrdDetail.Select(p => p.Domain == domain && itemnums.Contains(p.ItemNum) && p.Status.ToUpper() != "C" && (p.QtyOrded - p.RctQty)>0).OrderBy(p=>p.DueDate).ToList();
|
|
|
+ //DateTime endTime = Convert.ToDateTime("2024-01-01 00:00:00.000");
|
|
|
+ List<PurOrdDetail> purOrdDetails = _PurOrdDetail.Select(p => p.Domain == domain && itemnums.Contains(p.ItemNum) && p.Status.ToUpper() != "C" && (p.QtyOrded - p.RctQty) > 0).OrderBy(p => p.DueDate).ToList();
|
|
|
if (!purOrdDetails.Any())
|
|
|
{
|
|
|
Msg = "NO|没有可用的采购单";
|
|
|
@@ -6497,6 +6498,10 @@ namespace Business.Replenishment
|
|
|
//存在货源清单,采购单明细可用数量满足当前交货计划,则先计算供应商配额,计算当前供应商对应的采购明细是否满足配额,若满足则占用采购单明细可用数量
|
|
|
foreach (var pch in curChaes)
|
|
|
{
|
|
|
+ if (pch.quota_rate.GetValueOrDefault() == 0)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
//如果交货计划已分配数量>=交货计划净需求数量,则终止
|
|
|
if (allQty >= item.tosechedqty)
|
|
|
{
|
|
|
@@ -6505,12 +6510,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())
|
|
|
@@ -6521,7 +6527,7 @@ namespace Business.Replenishment
|
|
|
info.Icdsid = item.Id;
|
|
|
info.ItemNum = item.itemnum;
|
|
|
info.CreateTime = DateTime.Now;
|
|
|
- info.Remark = "物料[" + item.itemnum + "]对应供应商["+ pch.supplier_name + "]没有可用采购明细,无法转交货单";
|
|
|
+ info.Remark = "交货计划[" + item.itemnum + ":" + item.requestdate.ToString("yyyy-MM-dd") + "]对应供应商[" + pch.supplier_name + "]没有可用采购明细,无法转交货单";
|
|
|
info.OptTime = optime;
|
|
|
exceptions.Add(info);
|
|
|
|
|
|
@@ -6561,7 +6567,7 @@ namespace Business.Replenishment
|
|
|
info.Icdsid = item.Id;
|
|
|
info.ItemNum = item.itemnum;
|
|
|
info.CreateTime = DateTime.Now;
|
|
|
- info.Remark = "物料[" + item.itemnum + "]对应供应商[" + pch.supplier_name + "]采购明细可用数量不足,无法转交货单";
|
|
|
+ info.Remark = "交货计划[" + item.itemnum + ":" + item.requestdate.ToString("yyyy-MM-dd") + "]对应供应商[" + pch.supplier_name + "]采购明细可用数量不足,无法转交货单";
|
|
|
info.OptTime = optime;
|
|
|
exceptions.Add(info);
|
|
|
|