From f052529db65207185c3da8f404a9c13ea7899227 Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Wed, 18 Mar 2026 16:52:45 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20mouvements/types=20-=20grouper=20par=20G?= =?UTF-8?q?enreMvt=20uniquement=20(=C3=A9vite=2028MB=20pour=20les=20ticket?= =?UTF-8?q?s)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- src/routes/mouvements.js | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/routes/mouvements.js b/src/routes/mouvements.js index 63be703..b768a37 100644 --- a/src/routes/mouvements.js +++ b/src/routes/mouvements.js @@ -2,17 +2,34 @@ const express = require('express'); const router = express.Router(); const { getPool } = require('../config/database'); -// GET /api/mouvements/types - Liste des types de mouvements distincts dans la base +// GET /api/mouvements/types - Codes GenreMvt distincts avec total +// Pour GenreMvt=3 (ventes), LibMvt contient les numéros de ticket → on groupe uniquement par GenreMvt router.get('/types', async (req, res) => { try { const pool = getPool(); - const result = await pool.query(` - SELECT GenreMvt, LibMvt, COUNT(*) AS nb_occurrences + // Libellés représentatifs pour les types hors ventes + const libmvts = await pool.query(` + SELECT DISTINCT ON (GenreMvt) GenreMvt, LibMvt FROM MvtArt - GROUP BY GenreMvt, LibMvt - ORDER BY GenreMvt, nb_occurrences DESC + WHERE GenreMvt != 3 + ORDER BY GenreMvt, LibMvt `); - res.json({ types: result.rows }); + const labelsMap = Object.fromEntries(libmvts.rows.map(r => [r.genremvt, r.libmvt])); + + const result = await pool.query(` + SELECT GenreMvt, COUNT(*) AS nb_occurrences + FROM MvtArt + GROUP BY GenreMvt + ORDER BY GenreMvt + `); + + res.json({ + types: result.rows.map(r => ({ + genremvt: r.genremvt, + libmvt: r.genremvt == 3 ? '(numéros de ticket)' : (labelsMap[r.genremvt] ?? null), + nb_occurrences: r.nb_occurrences, + })) + }); } catch (err) { res.status(500).json({ error: err.message }); }