Ver Fonte

Merge branch 'dev' of http://123.60.180.165:4647/ZZYDOP/DOPCore into dev

tangdi há 2 anos atrás
pai
commit
9f18a61dc2

+ 8 - 18
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -6850,8 +6850,7 @@ namespace Business.Replenishment
             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();
             List<string> purOrds = purOrdDetails.Select(p => p.PurOrd).Distinct().ToList();
             //获取送货单子表数据
-            //List<scm_shdzb> shdzbs = _scm_shdzb.Select(p=> purOrds.Contains(p.po_bill) && itemnums.Contains(p.sh_material_code) && string.IsNullOrEmpty(p.jhdbh)).ToList();
-            List<scm_shdzb> shdzbs = _scm_shdzb.Select(p => purOrds.Contains(p.po_bill) && itemnums.Contains(p.sh_material_code)).ToList();
+            List<scm_shdzb> shdzbs = _scm_shdzb.Select(p=> purOrds.Contains(p.po_bill) && itemnums.Contains(p.sh_material_code) && string.IsNullOrEmpty(p.jhdbh)).ToList();
             //获取采购单数据
             List<PurOrdMaster> purOrdMasters = _PurOrdMaster.Select(p => p.Domain == domain && purOrds.Contains(p.PurOrd)).ToList();
             //获取占用可用PO明细的交货单
@@ -6996,19 +6995,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) && !pchDbOccupys.Select(m=>m.dsnum).Contains(p.jhdbh)).ToList();
+                    var pchShds = curShds.Where(p => pchPurMsts.Select(m => m.PurOrd).Contains(p.po_bill)).ToList();
                     //校验当前供应商的采购明细剩余可用数量是否满足供应商的配额
                     //采购单明细剩余可用数量
                     sumRestQty = pchPurDtls.Sum(p => p.QtyOrded) - pchShds.Sum(p=>p.sh_delivery_quantity);
-                    //生成了送货单
-                    var yShd = curShds.Where(p => pchDbOccupys.Select(m => m.dsnum).Contains(p.jhdbh)).ToList();
-                    //没有生成送货单
-                    var nShd = pchDbOccupys.Where(p => !curShds.Select(m => m.jhdbh).Contains(p.dsnum)).ToList();
-                    sumDbOccupy = yShd.Sum(p=>p.sh_delivery_quantity) + nShd.Where(p=>p.status.ToUpper() == "C").Sum(p => p.sentqty) + nShd.Where(p => p.status.ToUpper() != "C").Sum(p => p.schedqty);
+                    //交货单占用数量:交货单的剩余需要采购数量
+                    var pchDbOccupys = curDbOccupys.Where(p => pchPurDtls.Select(m => m.PurOrd).Contains(p.ponumber)).ToList();
+                    sumDbOccupy = pchDbOccupys.Where(p=>p.status.ToUpper() == "C").Sum(p=>p.sentqty) + pchDbOccupys.Where(p => p.status.ToUpper() != "C").Sum(p => p.schedqty);
                     //本次计算交货单占用数量:本次计算交货单的需求数量
                     sumCurOccupy = curCalcOccupys.Where(p => pchPurDtls.Select(m => m.PurOrd).Contains(p.ponumber)).Sum(p => p.schedqty);
                     //剩余可用数量
@@ -7093,15 +7087,11 @@ 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();
-                        //没有生成送货单
-                        var pnShd = occupy.Where(p => !curShds.Select(m => m.jhdbh).Contains(p.dsnum)).ToList();
-                        decimal yzyQty = pyShd.Sum(p=>p.sh_delivery_quantity) + pnShd.Where(p=>p.status.ToUpper() == "C").Sum(p => p.sentqty) + pnShd.Where(p=>p.status.ToUpper() != "C").Sum(p=>p.schedqty);
+                        decimal yzyQty = occupy.Where(p=>p.status.ToUpper() == "C").Sum(p=>p.sentqty) + occupy.Where(p=>p.status.ToUpper() != "C").Sum(p=>p.schedqty);
                         //当前计算中采购明细被占用数量(本次计算占用数量)
                         var calcs = inserts.Where(p => p.ponumber == pchPurDtls[k].PurOrd && p.itemnum == pchPurDtls[k].ItemNum && p.poline == pchPurDtls[k].Line).ToList();
                         decimal bzyQty = calcs.Sum(p => p.schedqty);