Bladeren bron

交货单生成逻辑调整:采购订单待交数量计算逻辑调整

heteng 2 jaren geleden
bovenliggende
commit
7d1a169b26

+ 5 - 5
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -6992,14 +6992,14 @@ namespace Business.Replenishment
                     //获取当前供应商对应的采购单明细数据,按照交货日期从小到大开始占用
                     var pchPurMsts = curPurMsts.Where(p => p.Supp == curChaes[j].supplier_number).ToList();
                     var pchPurDtls = curPurDtls.Where(p => pchPurMsts.Select(m => m.PurOrd).Contains(p.PurOrd)).ToList();
+                    //交货单占用数量:交货单的剩余需要采购数量,如果交货单关联了送货单,那么取送货单的送货数量参与计算
+                    var pchDbOccupys = curDbOccupys.Where(p => pchPurDtls.Select(m => m.PurOrd).Contains(p.ponumber)).ToList();
                     //送货单占用数量
                     //var pchShds = curShds.Where(p => pchPurMsts.Select(m => m.PurOrd).Contains(p.po_bill)).ToList();
-                    var pchShds = curShds.Where(p => pchPurMsts.Select(m => m.PurOrd).Contains(p.po_bill) && string.IsNullOrEmpty(p.jhdbh)).ToList();
+                    var pchShds = curShds.Where(p => pchPurMsts.Select(m => m.PurOrd).Contains(p.po_bill) && !pchDbOccupys.Select(m=>m.dsnum).Contains(p.jhdbh)).ToList();
                     //校验当前供应商的采购明细剩余可用数量是否满足供应商的配额
                     //采购单明细剩余可用数量
                     sumRestQty = pchPurDtls.Sum(p => p.QtyOrded) - pchShds.Sum(p=>p.sh_delivery_quantity);
-                    //交货单占用数量:交货单的剩余需要采购数量,如果交货单关联了送货单,那么取送货单的送货数量参与计算
-                    var pchDbOccupys = curDbOccupys.Where(p => pchPurDtls.Select(m => m.PurOrd).Contains(p.ponumber)).ToList();
                     //生成了送货单
                     var yShd = curShds.Where(p => pchDbOccupys.Select(m => m.dsnum).Contains(p.jhdbh)).ToList();
                     //没有生成送货单
@@ -7089,10 +7089,10 @@ namespace Business.Replenishment
                             //当前供应商配额以满足,循环下一个供应商
                             break;
                         }
-                        //当前采购明细剩余数量=订单数量-送货单数量(不是由交货单转的送货单)
-                        decimal syQty = pchPurDtls[k].QtyOrded - pchShds.Where(p => p.po_bill == pchPurDtls[k].PurOrd && p.po_billline == pchPurDtls[k].Line.ToString()).Sum(p=>p.sh_delivery_quantity);
                         //当前采购明细被占用数量(已占用数量)
                         var occupy = pchDbOccupys.Where(p => p.ponumber == pchPurDtls[k].PurOrd && p.itemnum == pchPurDtls[k].ItemNum && p.poline == pchPurDtls[k].Line).ToList();
+                        //当前采购明细剩余数量=订单数量-送货单数量(不是由交货单转的送货单)
+                        decimal syQty = pchPurDtls[k].QtyOrded - pchShds.Where(p => p.po_bill == pchPurDtls[k].PurOrd && p.po_billline == pchPurDtls[k].Line.ToString()).Sum(p=>p.sh_delivery_quantity);
                         //生成了送货单
                         var pyShd = curShds.Where(p => occupy.Select(m => m.dsnum).Contains(p.jhdbh)).ToList();
                         //没有生成送货单