liyong
2025-06-19 97857de7bc536e459f8d5de78494c03cebc3171e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.purchase.mapper.InvoicePurchaseMapper">
 
 
    <select id="selectPurchaseReport" resultType="com.ruoyi.purchase.dto.InvoicePurchaseReportDto">
        select sl.customer_contract_no,
               sl.customer_name,
               sl.project_name,
               sl.contract_amount,
               pl.contract_amount as purchase_amount,
               sum(slp.tax_exclusive_total_price) as sale_tax_exclusive_total_price,
               sum(pr.tax_exclusive_total_price) as tax_exclusive_total_price,
               (sl.contract_amount-pl.contract_amount) as balance,
        CONCAT(FORMAT((sl.contract_amount - pl.contract_amount) / sl.contract_amount * 100, 2), '%') AS balance_ratio,
               sl.contract_amount-sum(slp.tax_exclusive_total_price)-(pl.contract_amount-sum(pr.tax_exclusive_total_price)) as balance_amount
        from purchase_ledger pl
                 left join sales_ledger sl on pl.sales_ledger_id = sl.id
                 left join product_record pr on pr.purchase_ledger_id = pl.id
                 left join sales_ledger_product slp on slp.sales_ledger_id = sl.id
 
        group by sl.customer_contract_no, sl.customer_name, sl.project_name, sl.contract_amount, pl.contract_amount
        having sl.customer_contract_no is not null
        <where>
            <if test="c.customerName != null and c.customerName != ''">
                and sl.customer_name like concat('%',#{c.customerName},'%')
            </if>
        </where>
    </select>
    <select id="listVat" resultType="com.ruoyi.purchase.dto.VatDto">
            SELECT
                DATE_FORMAT(il.invoice_date, '%Y-%m') AS month,
                ROUND(SUM(pr.invoice_amount - pr.invoice_amount / (1 + pr.tax_rate / 100)), 2) AS tax_amount
            FROM invoice_ledger il
                     LEFT JOIN invoice_registration_product pr ON pr.id = il.invoice_registration_product_id
            WHERE il.invoice_no IS NOT NULL
              AND invoice_type = '增专票'
            GROUP BY DATE_FORMAT(il.invoice_date, '%Y-%m')
            ORDER BY month;
    </select>
 
</mapper>