src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
@@ -139,6 +139,46 @@
        ORDER BY result.entry_date DESC
    </select>
    <select id="selectReturnablePurchaseLedgerList" resultType="com.ruoyi.purchase.pojo.PurchaseLedger">
        SELECT DISTINCT pl.*
        FROM purchase_ledger pl
        WHERE 1 = 1
        <if test="c.purchaseContractNumber != null and c.purchaseContractNumber != ''">
            AND pl.purchase_contract_number LIKE CONCAT('%', #{c.purchaseContractNumber}, '%')
        </if>
        <if test="c.supplierId != null">
            AND pl.supplier_id = #{c.supplierId}
        </if>
        <if test="c.approvalStatus != null">
            AND pl.approval_status = #{c.approvalStatus}
        </if>
        AND EXISTS (
            SELECT 1
            FROM stock_in_record sir
            LEFT JOIN quality_inspect qi
                ON sir.record_type = '10'
               AND sir.record_id = qi.id
            LEFT JOIN sales_ledger_product slp
                ON slp.sales_ledger_id = pl.id
               AND slp.product_model_id = sir.product_model_id
               AND slp.type = 2
            LEFT JOIN (
                SELECT stock_in_record_id, SUM(return_quantity) AS total_return_num
                FROM purchase_return_order_products
                GROUP BY stock_in_record_id
            ) rs ON rs.stock_in_record_id = sir.id
            WHERE sir.approval_status = 1
              AND sir.record_type IN ('7','10')
              AND (
                  (sir.record_type = '7' AND sir.record_id = pl.id)
                  OR (sir.record_type = '10' AND qi.purchase_ledger_id = pl.id)
              )
              AND slp.id IS NOT NULL
              AND GREATEST(sir.stock_in_num - COALESCE(rs.total_return_num, 0), 0) > 0
        )
        ORDER BY pl.entry_date DESC
    </select>
    <select id="selectTotalPurchaseAmount" resultType="java.math.BigDecimal">
        SELECT IFNULL(SUM(contract_amount), 0)
        FROM purchase_ledger