shish 2 달 전
부모
커밋
4f7d8ae0c3
3개의 변경된 파일88개의 추가작업 그리고 2개의 파일을 삭제
  1. 77 0
      biz-ghs/clear/classes/OrderCgClearClass.php
  2. 5 1
      biz-ghs/order/services/OrderService.php
  3. 6 1
      biz-hd/purchase/services/PurchaseService.php

+ 77 - 0
biz-ghs/clear/classes/OrderCgClearClass.php

@@ -186,6 +186,83 @@ class OrderCgClearClass extends BaseClass
         }
     }
 
+    /**
+     * 销售单已销账的结账单列表(部分销、多次销均含,对齐 hd orderSettleList)
+     *
+     * @return array<int, array{clearId:int, clearSn:string, amount:string}>
+     */
+    public static function listPaidClearRecordsForOrder($orderId)
+    {
+        $orderId = intval($orderId);
+        if ($orderId <= 0) {
+            return [];
+        }
+        $list = self::getAllByCondition([
+            'orderId' => $orderId,
+            'status' => self::STATUS_HAS_PAY,
+        ], 'id asc', '*', null, true);
+        return self::mapPaidClearRecordRows($list);
+    }
+
+    /**
+     * 采购单关联的已销结账单(按 cgId / 销售单 orderId 合并去重)
+     */
+    public static function listPaidClearRecordsForPurchase($purchaseId, $saleOrderId = 0)
+    {
+        $purchaseId = intval($purchaseId);
+        $saleOrderId = intval($saleOrderId);
+        $merged = [];
+
+        if ($saleOrderId > 0) {
+            foreach (self::listPaidClearRecordsForOrder($saleOrderId) as $row) {
+                $merged[intval($row['clearId'])] = $row;
+            }
+        }
+        if ($purchaseId > 0) {
+            $cgList = self::getAllByCondition([
+                'cgId' => $purchaseId,
+                'status' => self::STATUS_HAS_PAY,
+            ], 'id asc', '*', null, true);
+            foreach (self::mapPaidClearRecordRows($cgList) as $row) {
+                $clearId = intval($row['clearId']);
+                if ($clearId <= 0) {
+                    continue;
+                }
+                if (!isset($merged[$clearId])) {
+                    $merged[$clearId] = $row;
+                    continue;
+                }
+                $merged[$clearId]['amount'] = bcadd($merged[$clearId]['amount'], $row['amount'], 2);
+            }
+        }
+
+        if (empty($merged)) {
+            return [];
+        }
+        ksort($merged);
+        return array_values($merged);
+    }
+
+    protected static function mapPaidClearRecordRows($list)
+    {
+        if (empty($list)) {
+            return [];
+        }
+        $rows = [];
+        foreach ($list as $item) {
+            $clearId = intval(is_object($item) ? ($item->clearId ?? 0) : ($item['clearId'] ?? 0));
+            if ($clearId <= 0) {
+                continue;
+            }
+            $rows[] = [
+                'clearId' => $clearId,
+                'clearSn' => (string)(is_object($item) ? ($item->clearSn ?? '') : ($item['clearSn'] ?? '')),
+                'amount' => self::normalizeAmount(is_object($item) ? ($item->amount ?? 0) : ($item['amount'] ?? 0)),
+            ];
+        }
+        return $rows;
+    }
+
     public static function getOrderIdsByClearId($clearId)
     {
         $clearId = intval($clearId);

+ 5 - 1
biz-ghs/order/services/OrderService.php

@@ -15,6 +15,7 @@ use bizGhs\base\services\BaseService;
 use bizGhs\book\classes\BookItemClass;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\custom\classes\CustomDebtChangeClass;
+use bizGhs\clear\classes\OrderCgClearClass;
 use bizGhs\order\classes\OrderClass;
 use bizGhs\order\classes\OrderExpressClass;
 use bizGhs\order\classes\OrderItemClass;
@@ -690,7 +691,10 @@ class OrderService extends BaseService
         }
         $info = $order->attributes;
         $respond = OrderClass::groupOrder([$info], $showButton, $showItem, $showExpress, $isList);
-        return current($respond);
+        $result = current($respond);
+        $orderId = intval($result['id'] ?? 0);
+        $result['orderClearList'] = $orderId > 0 ? OrderCgClearClass::listPaidClearRecordsForOrder($orderId) : [];
+        return $result;
     }
 
     //订单失效后的操作 ssh 2021.5.14

+ 6 - 1
biz-hd/purchase/services/PurchaseService.php

@@ -14,6 +14,7 @@ use bizGhs\order\classes\OrderClass;
 use bizGhs\order\services\OrderService;
 use bizHd\base\services\BaseService;
 use bizHd\cg\classes\CgRefundClass;
+use bizGhs\clear\classes\OrderCgClearClass;
 use bizHd\purchase\classes\PurchaseClass;
 use bizHd\purchase\classes\PurchaseItemClass;
 use bizHd\purchase\classes\PurchaseSnClass;
@@ -142,7 +143,11 @@ class PurchaseService extends BaseService
         }
         $info = $purchase->attributes;
         $respond = PurchaseClass::groupPurchase([$info], $showButton, $showProduct);
-        return current($respond);
+        $result = current($respond);
+        $purchaseId = intval($result['id'] ?? 0);
+        $saleId = intval($result['saleId'] ?? 0);
+        $result['orderClearList'] = OrderCgClearClass::listPaidClearRecordsForPurchase($purchaseId, $saleId);
+        return $result;
     }
 
     //检查采购单