| | |
| | | T1.oil_depot_name, |
| | | T1.tank_id, |
| | | T1.tank_no, |
| | | T1.tonnage, |
| | | T1.approval_status, |
| | | T1.entry_person, |
| | | T1.remarks, |
| | |
| | | T1.oil_depot_name, |
| | | T1.tank_id, |
| | | T1.tank_no, |
| | | T1.tonnage, |
| | | T1.approval_status, |
| | | T1.entry_person, |
| | | T1.remarks, |
| | |
| | | IFNULL(shipping_status_counts.is_all_shipped, FALSE) AS is_fh |
| | | FROM sales_ledger T1 |
| | | LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id |
| | | <!-- 是否发货改按到货记录算,分两种台账: |
| | | 卖油:该台账 type=1 明细的合同数量总和 <= 已到货数量总和 才算发完; |
| | | 代储:没有 type=1 明细,基准线改为「该台账全部已审批油品出库单的出库量总和」,同样「全部到货」才算发完。 |
| | | 两个分支各自都要求基准线 > 0,否则 0 <= 0 会被判成「已发货」 --> |
| | | LEFT JOIN ( |
| | | SELECT sales_ledger_id, |
| | | SELECT sl.id AS sales_ledger_id, |
| | | CASE |
| | | WHEN SUM(CASE WHEN status != '已发货' THEN 1 ELSE 0 END) = 0 THEN TRUE |
| | | WHEN IFNULL(d.total_qty, 0) > 0 AND IFNULL(d.total_qty, 0) <= IFNULL(a.total_arrival, 0) THEN TRUE |
| | | WHEN IFNULL(d.total_qty, 0) = 0 AND IFNULL(o.total_out, 0) > 0 |
| | | AND IFNULL(o.total_out, 0) <= IFNULL(a.total_arrival, 0) THEN TRUE |
| | | ELSE FALSE |
| | | END AS is_all_shipped |
| | | FROM shipping_info |
| | | FROM sales_ledger sl |
| | | LEFT JOIN ( |
| | | SELECT sales_ledger_id, SUM(quantity) AS total_qty |
| | | FROM sales_ledger_product |
| | | WHERE type = 1 |
| | | GROUP BY sales_ledger_id |
| | | ) d ON d.sales_ledger_id = sl.id |
| | | LEFT JOIN ( |
| | | SELECT sales_ledger_id, SUM(arrival_quantity) AS total_arrival |
| | | FROM sales_ledger_arrival |
| | | GROUP BY sales_ledger_id |
| | | ) a ON a.sales_ledger_id = sl.id |
| | | <!-- 代储没有绑定表,出库单的单值列 sales_ledger_id 即为权威对应关系 --> |
| | | LEFT JOIN ( |
| | | SELECT sor.sales_ledger_id, SUM(sor.stock_out_num) AS total_out |
| | | FROM stock_out_record sor |
| | | WHERE sor.approval_status = 1 |
| | | AND (sor.type IS NULL OR sor.type = '') |
| | | AND sor.sales_ledger_id IS NOT NULL |
| | | GROUP BY sor.sales_ledger_id |
| | | ) o ON o.sales_ledger_id = sl.id |
| | | ) shipping_status_counts ON T1.id = shipping_status_counts.sales_ledger_id |
| | | |
| | | <where> |
| | |
| | | FROM sales_ledger |
| | | GROUP BY customer_name |
| | | </select> |
| | | <!-- 已发货的台账:口径与 is_fh 一致,改为「有到货记录的台账」 --> |
| | | <select id="listSalesLedgerAndShipped" resultType="com.ruoyi.sales.dto.SalesLedgerDto"> |
| | | select distinct sl.id as 'disId', sl.* from |
| | | sales_ledger sl |
| | | left join sales_ledger_product slp on sl.id = slp.sales_ledger_id |
| | | left join shipping_info si on slp.id = si.sales_ledger_product_id |
| | | where si.status = '已发货' |
| | | <if test="ew.customerName != null and ew.customerName != '' "> |
| | | and sl.customer_name like concat('%',#{ew.customerName},'%') |
| | | </if> |
| | | inner join sales_ledger_product slp on sl.id = slp.sales_ledger_id |
| | | inner join sales_ledger_arrival sla on sla.sales_ledger_product_id = slp.id |
| | | <where> |
| | | <if test="ew.customerName != null and ew.customerName != '' "> |
| | | sl.customer_name like concat('%',#{ew.customerName},'%') |
| | | </if> |
| | | </where> |
| | | order by sl.execution_date desc |
| | | </select> |
| | | <select id="selectPurchaseReportVoPage" resultType="com.ruoyi.purchase.vo.PurchaseReportVo"> |