SELECT
pro.*,
sm.supplier_name as supplier_name,
pl.purchase_contract_number as purchase_contract_number,
CASE
WHEN EXISTS (
SELECT 1
FROM purchase_return_order_products prop
INNER JOIN stock_out_record sor ON sor.record_id = prop.id
AND sor.record_type = '9'
AND sor.approval_status = 1
WHERE prop.purchase_return_order_id = pro.id
) THEN 1
ELSE 0
END AS stock_out_approved
FROM purchase_return_orders pro
LEFT JOIN supplier_manage sm ON pro.supplier_id = sm.id
LEFT JOIN purchase_ledger pl ON pl.id = pro.purchase_ledger_id
AND pro.no LIKE CONCAT('%',#{params.no},'%')
AND pro.dept_id = #{params.deptId}
AND pro.dept_id IN
#{deptId}
AND pro.create_user = #{params.createUser}
ORDER BY pro.create_time DESC
where pro.id = #{id}
select pro.id,
pro.no returnNo,
t.inboundBatches,
sm.supplier_name,
pro.shipping_type,
pro.truck_plate_no,
pro.express_company,
pro.express_no,
pro.prepared_at,
pro.total_amount,
CASE pro.return_type WHEN 0 THEN '退货退款' WHEN 1 THEN '拒收' END AS returnType,
pl.purchase_contract_number
from purchase_return_orders pro
left join
(select prop.purchase_return_order_id,
GROUP_CONCAT(sir.inbound_batches SEPARATOR ',') AS inboundBatches
from purchase_return_order_products prop
left join stock_in_record sir on prop.stock_in_record_id = sir.id
GROUP BY prop.purchase_return_order_id) t on t.purchase_return_order_id = pro.id
left join supplier_manage sm on pro.supplier_id = sm.id
left join purchase_ledger pl on pro.purchase_ledger_id = pl.id
where 1=1
and pro.no like concat('%',#{req.returnNo},'%')
and pro.supplier_id = #{req.supplierId}
and sm.supplier_name like concat('%',#{req.supplierName},'%')
AND DATE_FORMAT(pro.prepared_at, '%Y-%m-%d') BETWEEN #{req.startDate} AND #{req.endDate}
order by pro.id DESC
SELECT
sir.id,
sir.product_model_id,
slp.id salesLedgerProductId,
slp.product_category,
slp.specification_model,
slp.unit,
slp.is_checked,
sir.inbound_batches,
sir.stock_in_num,
sir.batch_no,
slp.tax_inclusive_unit_price,
GREATEST(
sir.stock_in_num
- COALESCE(rs.total_return_num, 0)
- COALESCE(so.total_sale_out_num, 0),
0
) AS un_quantity,
COALESCE(rs.total_return_num, 0) AS total_return_num,
COALESCE(so.total_sale_out_num, 0) AS saleOutQuantity
FROM stock_in_record sir
LEFT JOIN quality_inspect qi ON sir.record_type = 10 AND sir.record_id = qi.id
LEFT JOIN purchase_ledger pl
ON pl.id = IF(sir.record_type = 7, sir.record_id, qi.purchase_ledger_id)
LEFT JOIN sales_ledger_product slp
ON pl.id = slp.sales_ledger_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 prop
left join purchase_return_orders pro on pro.id = prop.purchase_return_order_id
WHERE 1=1
GROUP BY stock_in_record_id
) rs ON rs.stock_in_record_id = sir.id
LEFT JOIN (
SELECT
inv.batch_no,
inv.product_model_id,
SUM(spd.quantity) AS total_sale_out_num
FROM shipping_product_detail spd
INNER JOIN shipping_info si
ON si.id = spd.shipping_info_id
INNER JOIN stock_out_record sor
ON sor.record_id = si.id
AND sor.record_type = '13'
AND sor.approval_status IN (0, 1, 3)
INNER JOIN stock_inventory inv
ON inv.id = spd.stock_inventory_id
GROUP BY inv.batch_no, inv.product_model_id
) so ON so.product_model_id = sir.product_model_id
AND (so.batch_no = sir.batch_no OR (so.batch_no IS NULL AND sir.batch_no IS NULL))
WHERE sir.approval_status = 1
AND sir.record_type IN ('7','10')
and pl.id = #{purchaseLedgerId}
select prop.id,
prop.sales_ledger_product_id,
slp.product_model_id,
slp.product_category,
slp.specification_model,
slp.is_checked,
slp.unit,
sir.inbound_batches,
sir.stock_in_num,
sir.batch_no,
slp.tax_inclusive_unit_price,
prop.return_quantity,
prop.purchase_return_order_id,
GREATEST(
sir.stock_in_num
- COALESCE(rs.total_return_num, 0)
- COALESCE(so.total_sale_out_num, 0),
0
) AS un_quantity,
COALESCE(rs.total_return_num, 0) AS total_return_num,
COALESCE(so.total_sale_out_num, 0) AS saleOutQuantity
from purchase_return_order_products prop
left join purchase_return_orders pro on prop.purchase_return_order_id = pro.id
LEFT JOIN stock_in_record sir ON prop.stock_in_record_id = sir.id and sir.record_type in ('7','10')
LEFT JOIN sales_ledger_product slp ON prop.sales_ledger_product_id = slp.id and slp.type = 2
LEFT JOIN (SELECT stock_in_record_id,
SUM(return_quantity) AS total_return_num
FROM purchase_return_order_products
WHERE 1 = 1
GROUP BY stock_in_record_id) rs ON rs.stock_in_record_id = sir.id
LEFT JOIN (
SELECT
inv.batch_no,
inv.product_model_id,
SUM(spd.quantity) AS total_sale_out_num
FROM shipping_product_detail spd
INNER JOIN shipping_info si
ON si.id = spd.shipping_info_id
INNER JOIN stock_out_record sor
ON sor.record_id = si.id
AND sor.record_type = '13'
AND sor.approval_status IN (0, 1, 3)
INNER JOIN stock_inventory inv
ON inv.id = spd.stock_inventory_id
GROUP BY inv.batch_no, inv.product_model_id
) so ON so.product_model_id = sir.product_model_id
AND (so.batch_no = sir.batch_no OR (so.batch_no IS NULL AND sir.batch_no IS NULL))
where pro.id = #{id}