odoo_bi/dailyreport.sql

21 lines
812 B
SQL

SELECT
date_trunc('day', po.create_date) AS giorno,
COUNT(po.id) AS scontrini,
ROUND(AVG(po.amount_total), 2) AS scontrino_medio,
ROUND(SUM(po.amount_total), 2) AS fatturato,
ROUND(SUM(COALESCE(po.amount_tax, 0)), 2) AS tasse,
ROUND(SUM(pol_tot.costo_reale), 2) AS costi,
ROUND(SUM(po.amount_total) - SUM(pol_tot.costo_reale) - SUM(COALESCE(po.amount_tax, 0)), 2) AS margine,
ROUND(SUM(CASE WHEN po.state = 'cancel' THEN po.amount_total ELSE 0 END), 2) AS rimborsi
FROM pos_order po
LEFT JOIN (
SELECT
order_id,
SUM(pol.qty * COALESCE((pp.standard_price->'1')::numeric, 0)) AS costo_reale
FROM pos_order_line pol
LEFT JOIN product_product pp ON pol.product_id = pp.id
GROUP BY order_id
) pol_tot ON po.id = pol_tot.order_id
WHERE po.state IN ('done')
GROUP BY 1
ORDER BY 1 DESC;