jinch преди 2 дни
родител
ревизия
8d8a2d4aaa
променени са 1 файла, в които са добавени 20 реда и са изтрити 6 реда
  1. 20 6
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/report/IncomeOrderLedgerMapper.xml

+ 20 - 6
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/report/IncomeOrderLedgerMapper.xml

@@ -23,14 +23,15 @@
             IFNULL(tot.free_num, 0) AS freeCount,
             (IFNULL(tot.adult_total_num, 0) + IFNULL(tot.child_total_num, 0) +
              IFNULL(tot.baby_total_num, 0) + IFNULL(tot.with_total_num, 0) + IFNULL(tot.free_num, 0)) AS totalCount,
-            o.pay_amount AS marketingPrice,
+            p.pay_amount - COALESCE(refund_fee_sum.refund_amount, 0) AS marketingPrice,
             o.free_amount AS discountAmount,
             COALESCE(refund_fee_sum.refundFee, 0) AS refundFee,
-            (o.pay_amount - IFNULL(o.free_amount, 0) - COALESCE(refund_fee_sum.refundFee, 0)) AS actualSettlementPrice
+           (p.pay_amount - IFNULL(o.free_amount, 0) - COALESCE(refund_fee_sum.refundFee, 0) - COALESCE(refund_fee_sum.refund_amount, 0)) AS actualSettlementPrice
         FROM trade_order o
         INNER JOIN product_voyage v ON o.voyage_id = v.id AND v.deleted = 0
         INNER JOIN resource_route r ON v.route_id = r.id AND r.deleted = 0
         LEFT JOIN trade_order_total tot ON o.id = tot.old_order_id AND tot.deleted = 0
+        INNER JOIN trade_order_pay p on p.order_id = o.id AND p.deleted = 0 and p.pay_status = 1
         LEFT JOIN (
             SELECT rm.order_id,
                    GROUP_CONCAT(DISTINCT rm.room_model_name SEPARATOR ',') AS room_model_name
@@ -39,12 +40,18 @@
             GROUP BY rm.order_id
         ) rm ON o.id = rm.order_id
         LEFT JOIN (
-            SELECT order_id, SUM(fee) AS refundFee
+            SELECT order_id, SUM(fee) AS refundFee, SUM(refund_amount) AS refund_amount
             FROM trade_refund
             WHERE deleted = 0 AND refund_status IN (6)
             GROUP BY order_id
         ) refund_fee_sum ON o.id = refund_fee_sum.order_id
         WHERE o.deleted = 0
+        AND NOT EXISTS (
+            SELECT 1 FROM ota_bill_order bo
+            INNER JOIN ota_bill b ON bo.bill_id = b.id AND b.deleted = 0
+            WHERE bo.order_id = o.id AND bo.deleted = 0
+            AND b.bill_status = 0
+        )
         <if test="vo.orderNo != null and vo.orderNo != ''">
             AND o.order_no LIKE CONCAT('%', #{vo.orderNo}, '%')
         </if>
@@ -106,14 +113,15 @@
             IFNULL(tot.free_num, 0) AS freeCount,
             (IFNULL(tot.adult_total_num, 0) + IFNULL(tot.child_total_num, 0) +
              IFNULL(tot.baby_total_num, 0) + IFNULL(tot.with_total_num, 0) + IFNULL(tot.free_num, 0)) AS totalCount,
-            o.pay_amount AS marketingPrice,
+            p.pay_amount - COALESCE(refund_fee_sum.refund_amount, 0) AS marketingPrice,
             o.free_amount AS discountAmount,
             COALESCE(refund_fee_sum.refundFee, 0) AS refundFee,
-            (o.pay_amount - IFNULL(o.free_amount, 0) - COALESCE(refund_fee_sum.refundFee, 0)) AS actualSettlementPrice
+            (p.pay_amount - IFNULL(o.free_amount, 0) - COALESCE(refund_fee_sum.refundFee, 0) - COALESCE(refund_fee_sum.refund_amount, 0)) AS actualSettlementPrice
         FROM trade_order o
         INNER JOIN product_voyage v ON o.voyage_id = v.id AND v.deleted = 0
         INNER JOIN resource_route r ON v.route_id = r.id AND r.deleted = 0
         LEFT JOIN trade_order_total tot ON o.id = tot.old_order_id AND tot.deleted = 0
+        inner join trade_order_pay p on p.order_id = o.id AND p.deleted = 0 and p.pay_status = 1
         LEFT JOIN (
             SELECT rm.order_id,
                    GROUP_CONCAT(DISTINCT rm.room_model_name SEPARATOR ',') AS room_model_name
@@ -122,12 +130,18 @@
             GROUP BY rm.order_id
         ) rm ON o.id = rm.order_id
         LEFT JOIN (
-            SELECT order_id, SUM(fee) AS refundFee
+            SELECT order_id, SUM(fee) AS refundFee, SUM(refund_amount) AS refund_amount
             FROM trade_refund
             WHERE deleted = 0 AND refund_status IN (6)
             GROUP BY order_id
         ) refund_fee_sum ON o.id = refund_fee_sum.order_id
         WHERE o.deleted = 0
+        AND NOT EXISTS (
+            SELECT 1 FROM ota_bill_order bo
+            INNER JOIN ota_bill b ON bo.bill_id = b.id AND b.deleted = 0
+            WHERE bo.order_id = o.id AND bo.deleted = 0
+            AND b.bill_status = 1
+        )
         <if test="vo.orderNo != null and vo.orderNo != ''">
             AND o.order_no LIKE CONCAT('%', #{vo.orderNo}, '%')
         </if>