shish 1 месяц назад
Родитель
Сommit
af16f55ca9
1 измененных файлов с 26 добавлено и 2 удалено
  1. 26 2
      biz-ghs/custom/classes/CustomClass.php

+ 26 - 2
biz-ghs/custom/classes/CustomClass.php

@@ -17,6 +17,7 @@ use bizGhs\ghs\classes\GhsRechargeClass;
 use bizGhs\order\classes\OrderClearClass;
 use bizGhs\shop\classes\ShopClass;
 use bizHd\member\classes\MemberLevelClass;
+use bizHd\purchase\classes\PurchaseClass;
 use bizHd\saas\classes\ApplyClass;
 use bizHd\saas\services\ApplyService;
 use common\components\dict;
@@ -673,6 +674,27 @@ class CustomClass extends BaseClass
         self::assertPairBalanceEqual($custom, $ghs);
     }
 
+    /**
+     * hdApp 供货商余额明细:事项单号优先用 xhCg.orderSn,无采购单时再退回销售单号。
+     *
+     * @param object|array $order 供货商销售单
+     * @return string
+     */
+    protected static function resolveXhCgOrderSnForHdEvent($order)
+    {
+        $saleOrderSn = is_object($order) ? ($order->orderSn ?? '') : ($order['orderSn'] ?? '');
+        $purchaseId = intval(is_object($order) ? ($order->purchaseId ?? 0) : ($order['purchaseId'] ?? 0));
+        if ($purchaseId <= 0) {
+            return $saleOrderSn;
+        }
+        $cg = PurchaseClass::getById($purchaseId, true);
+        if (empty($cg)) {
+            return $saleOrderSn;
+        }
+        $cgOrderSn = $cg->orderSn ?? '';
+        return $cgOrderSn !== '' ? $cgOrderSn : $saleOrderSn;
+    }
+
     /**
      * 花店采购余额付售后:成对账户原路退回(与 payToChangeBalance 对称)。
      * 调用方须已 lockAccountPair;同时写客户余额明细与 xhGhs 余额明细(hdApp 可查)。
@@ -728,7 +750,8 @@ class CustomClass extends BaseClass
         if (empty($ghs)) {
             return;
         }
-        $orderSn = $order->orderSn ?? '';
+        // hd 端明细展示采购单号 xhCg.orderSn
+        $orderSn = self::resolveXhCgOrderSnForHdEvent($order);
         $customShopId = $custom->shopId ?? 0;
         $customShop = ShopClass::getById($customShopId, true);
         $gbData = [
@@ -757,7 +780,8 @@ class CustomClass extends BaseClass
         if (empty($ghs)) {
             return;
         }
-        $orderSn = $order->orderSn ?? '';
+        // hd 端明细展示采购单号 xhCg.orderSn
+        $orderSn = self::resolveXhCgOrderSnForHdEvent($order);
         $event = '购买花材,单号:' . $orderSn;
         if ($bookOrder) {
             $event = '预订单多退少补,单号:' . $orderSn;