feat: implement Hit Parade dashboard with PostgreSQL-backed data aggregation and pivot logic

This commit is contained in:
Michael committed 2026-04-07 08:38:25 +02:00
1 parent 788bf96006
commit 2c02807493
3 files changed
+37 -4

No files matched your search

+5 -1
View File
@@ -717,6 +717,7 @@ export interface HitParadeRow {
codein: string;
libelle: string;
fournisseur: string;
nomenclature: string;
site: string;
qte_vendue: number;
ca_ttc: number;
@@ -738,6 +739,7 @@ export async function pgGetHitParade(dateDebut: string, dateFin: string): Promis
a.codein::text AS codein,
a.libelle1::text AS libelle,
COALESCE(fi.nom, af.code, 'Sans fournisseur')::text AS fournisseur,
COALESCE(n.libelle, 'Sans nomenclature')::text AS nomenclature,
m.site,
SUM(ABS(m.qtemvt))::float AS qte_vendue,
ABS(SUM(m.mntmvtttc))::float AS ca_ttc,
@@ -746,10 +748,11 @@ export async function pgGetHitParade(dateDebut: string, dateFin: string): Promis
JOIN articles a ON a.no_id = m.artnoid
LEFT JOIN artfou1 af ON af.art_no_id = a.no_id AND af.preference = 1
LEFT JOIN fouident fi ON fi.code = af.code
LEFT JOIN nomenclature n ON n.no_id = a.nom_no_id
WHERE m.datmvt BETWEEN ${dateDebut}::date AND ${dateFin}::date
AND m.site IN ('292', '579')
AND m.genremvt = 3
GROUP BY a.no_id, a.codein, a.libelle1, fi.nom, af.code, m.site
GROUP BY a.no_id, a.codein, a.libelle1, fi.nom, af.code, n.libelle, m.site
),
stock_agg AS (
SELECT
@@ -765,6 +768,7 @@ export async function pgGetHitParade(dateDebut: string, dateFin: string): Promis
v.codein,
v.libelle,
v.fournisseur,
v.nomenclature,
v.site,
v.qte_vendue,
v.ca_ttc,