shish 14 hours ago
parent
commit
527747154d

+ 2 - 2
biz-ghs/clear/classes/ClearClass.php

@@ -576,9 +576,9 @@ class ClearClass extends BaseClass
         foreach ($cgList as $purchase) {
             $row = self::normalizeOrderRow($purchase);
             $cgId = intval($row['id'] ?? 0);
-            $saleId = intval($row['saleId'] ?? 0);
             $row['remainDebtPrice'] = self::resolvePurchaseRemainDebtPrice($row);
-            $row['orderClearList'] = OrderCgClearClass::listPaidClearRecordsForPurchase($cgId, $saleId);
+            // 仅本采购单结账,不按 saleId 回退(避免混入销售单客户结账)
+            $row['orderClearList'] = OrderCgClearClass::listPaidClearRecordsForPurchase($cgId);
             $out[] = $row;
         }
         return $out;

+ 13 - 15
biz-ghs/clear/classes/OrderCgClearClass.php

@@ -205,29 +205,27 @@ class OrderCgClearClass extends BaseClass
     }
 
     /**
-     * 采购单关联的已销结账单(仅本采购单在结账单中的销账额,勿与 saleId 查询合并以免重复累加)
+     * 采购单关联的已销结账单(只认本采购单 cgId,绝不回退到 saleId)
+     * 说明:若按 saleId 查,会把该关联销售单的客户结账一并带出,采购详情「结账信息」会错混销售结账。
+     *
+     * @return array<int, array{clearId:int, clearSn:string, amount:string}>
      */
     public static function listPaidClearRecordsForPurchase($purchaseId, $saleOrderId = 0)
     {
         $purchaseId = intval($purchaseId);
-        $saleOrderId = intval($saleOrderId);
+        // $saleOrderId 保留入参兼容旧调用,采购结账列表不再使用,避免混入销售单结账
+        unset($saleOrderId);
 
-        if ($purchaseId > 0) {
-            $cgList = self::getAllByCondition([
-                'cgId' => $purchaseId,
-                'status' => self::STATUS_HAS_PAY,
-            ], 'id asc', '*', null, true);
-            if (!empty($cgList)) {
-                return self::mapPaidClearRecordRows($cgList);
-            }
+        if ($purchaseId <= 0) {
+            return [];
         }
 
-        // 旧数据可能只有 orderId、未写 cgId
-        if ($saleOrderId > 0) {
-            return self::listPaidClearRecordsForOrder($saleOrderId);
-        }
+        $cgList = self::getAllByCondition([
+            'cgId' => $purchaseId,
+            'status' => self::STATUS_HAS_PAY,
+        ], 'id asc', '*', null, true);
 
-        return [];
+        return self::mapPaidClearRecordRows($cgList);
     }
 
     protected static function mapPaidClearRecordRows($list)

+ 2 - 3
biz-ghs/order/classes/PurchaseOrderClass.php

@@ -1791,10 +1791,9 @@ class PurchaseOrderClass extends BaseClass
         }
         $orderData['needRemindRefreshSeat'] = $needRemindRefreshSeat;
         $orderData['inBooking'] = $inBooking;
-        // 结账信息列表:对齐销售单详情 orderClearList(部分/多次销均展示金额)
+        // 结账信息:仅本采购单 cgId 下的已销结账单,不含关联销售单的客户结账
         $cgId = intval($orderData['id'] ?? 0);
-        $saleId = intval($orderData['saleId'] ?? 0);
-        $orderData['orderClearList'] = OrderCgClearClass::listPaidClearRecordsForPurchase($cgId, $saleId);
+        $orderData['orderClearList'] = OrderCgClearClass::listPaidClearRecordsForPurchase($cgId);
         return $orderData;
     }
 

+ 2 - 2
biz-hd/purchase/services/PurchaseService.php

@@ -147,8 +147,8 @@ class PurchaseService extends BaseService
         $respond = PurchaseClass::groupPurchase([$info], $showButton, $showProduct);
         $result = current($respond);
         $purchaseId = intval($result['id'] ?? 0);
-        $saleId = intval($result['saleId'] ?? 0);
-        $result['orderClearList'] = OrderCgClearClass::listPaidClearRecordsForPurchase($purchaseId, $saleId);
+        // 仅本采购单结账列表,不按关联销售单回退
+        $result['orderClearList'] = OrderCgClearClass::listPaidClearRecordsForPurchase($purchaseId);
         return $result;
     }