shish 1 сар өмнө
parent
commit
281e4afba6

+ 8 - 21
biz-ghs/clear/classes/OrderCgClearClass.php

@@ -205,42 +205,29 @@ class OrderCgClearClass extends BaseClass
     }
 
     /**
-     * 采购单关联的已销结账单(按 cgId / 销售单 orderId 合并去重
+     * 采购单关联的已销结账单(仅本采购单在结账单中的销账额,勿与 saleId 查询合并以免重复累加
      */
     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($cgList)) {
+                return self::mapPaidClearRecordRows($cgList);
             }
         }
 
-        if (empty($merged)) {
-            return [];
+        // 旧数据可能只有 orderId、未写 cgId
+        if ($saleOrderId > 0) {
+            return self::listPaidClearRecordsForOrder($saleOrderId);
         }
-        ksort($merged);
-        return array_values($merged);
+
+        return [];
     }
 
     protected static function mapPaidClearRecordRows($list)

+ 1 - 0
biz-ghs/order/classes/OrderClearClass.php

@@ -351,6 +351,7 @@ class OrderClearClass extends BaseClass
             }
 
             $totalSettled = bcadd($totalSettled, $mayClear, 2);
+            $os->amount = $mayClear;
             $os->status = 1;
             $os->save();
         }