Dashboard top10: rank per site instead of global

This commit is contained in:
Michael committed 2026-03-21 11:50:23 +01:00
1 parent 9675a243b7
commit 371f80c844
1 file changed
+39 -30
+39 -30
View File
@@ -177,43 +177,52 @@ router.get('/dashboard', async (req, res) => {
ORDER BY site, datmvt ORDER BY site, datmvt
`, siteParams), `, siteParams),
// Top 10 CA // Top 10 CA par site
pool.query(` pool.query(`
SELECT a.codein, a.libelle1, m.site, SELECT codein, libelle1, site, ca_ttc, qte_vendue, marge FROM (
ABS(SUM(m.mntmvtttc)) AS ca_ttc, SELECT a.codein, a.libelle1, m.site,
ABS(SUM(m.qtemvt)) AS qte_vendue, ABS(SUM(m.mntmvtttc)) AS ca_ttc,
SUM(m.margemvt) AS marge ABS(SUM(m.qtemvt)) AS qte_vendue,
FROM mvtart m SUM(m.margemvt) AS marge,
JOIN articles a ON a.no_id = m.artnoid RANK() OVER (PARTITION BY m.site ORDER BY ABS(SUM(m.mntmvtttc)) DESC) AS rk
WHERE m.datmvt::DATE = $1 AND m.genremvt = 3 ${site ? 'AND m.site = $2' : ''} FROM mvtart m
GROUP BY a.codein, a.libelle1, m.site JOIN articles a ON a.no_id = m.artnoid
ORDER BY ca_ttc DESC LIMIT 10 WHERE m.datmvt::DATE = $1 AND m.genremvt = 3 ${site ? 'AND m.site = $2' : ''}
GROUP BY a.codein, a.libelle1, m.site
) t WHERE rk <= 10
ORDER BY site, rk
`, site ? [targetDate, site] : [targetDate]), `, site ? [targetDate, site] : [targetDate]),
// Top 10 Qté // Top 10 Qté par site
pool.query(` pool.query(`
SELECT a.codein, a.libelle1, m.site, SELECT codein, libelle1, site, ca_ttc, qte_vendue, marge FROM (
ABS(SUM(m.mntmvtttc)) AS ca_ttc, SELECT a.codein, a.libelle1, m.site,
ABS(SUM(m.qtemvt)) AS qte_vendue, ABS(SUM(m.mntmvtttc)) AS ca_ttc,
SUM(m.margemvt) AS marge ABS(SUM(m.qtemvt)) AS qte_vendue,
FROM mvtart m SUM(m.margemvt) AS marge,
JOIN articles a ON a.no_id = m.artnoid RANK() OVER (PARTITION BY m.site ORDER BY ABS(SUM(m.qtemvt)) DESC) AS rk
WHERE m.datmvt::DATE = $1 AND m.genremvt = 3 ${site ? 'AND m.site = $2' : ''} FROM mvtart m
GROUP BY a.codein, a.libelle1, m.site JOIN articles a ON a.no_id = m.artnoid
ORDER BY qte_vendue DESC LIMIT 10 WHERE m.datmvt::DATE = $1 AND m.genremvt = 3 ${site ? 'AND m.site = $2' : ''}
GROUP BY a.codein, a.libelle1, m.site
) t WHERE rk <= 10
ORDER BY site, rk
`, site ? [targetDate, site] : [targetDate]), `, site ? [targetDate, site] : [targetDate]),
// Top 10 Marge // Top 10 Marge par site
pool.query(` pool.query(`
SELECT a.codein, a.libelle1, m.site, SELECT codein, libelle1, site, ca_ttc, qte_vendue, marge FROM (
ABS(SUM(m.mntmvtttc)) AS ca_ttc, SELECT a.codein, a.libelle1, m.site,
ABS(SUM(m.qtemvt)) AS qte_vendue, ABS(SUM(m.mntmvtttc)) AS ca_ttc,
SUM(m.margemvt) AS marge ABS(SUM(m.qtemvt)) AS qte_vendue,
FROM mvtart m SUM(m.margemvt) AS marge,
JOIN articles a ON a.no_id = m.artnoid RANK() OVER (PARTITION BY m.site ORDER BY SUM(m.margemvt) DESC) AS rk
WHERE m.datmvt::DATE = $1 AND m.genremvt = 3 ${site ? 'AND m.site = $2' : ''} FROM mvtart m
GROUP BY a.codein, a.libelle1, m.site JOIN articles a ON a.no_id = m.artnoid
ORDER BY marge DESC LIMIT 10 WHERE m.datmvt::DATE = $1 AND m.genremvt = 3 ${site ? 'AND m.site = $2' : ''}
GROUP BY a.codein, a.libelle1, m.site
) t WHERE rk <= 10
ORDER BY site, rk
`, site ? [targetDate, site] : [targetDate]), `, site ? [targetDate, site] : [targetDate]),
]); ]);