fix: mouvements/types - grouper par GenreMvt uniquement (évite 28MB pour les tickets)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
c98f6834a8
commit
f052529db6
1 file changed
+23
-6
@@ -2,17 +2,34 @@ const express = require('express');
|
|||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
const { getPool } = require('../config/database');
|
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) => {
|
router.get('/types', async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const pool = getPool();
|
const pool = getPool();
|
||||||
const result = await pool.query(`
|
// Libellés représentatifs pour les types hors ventes
|
||||||
SELECT GenreMvt, LibMvt, COUNT(*) AS nb_occurrences
|
const libmvts = await pool.query(`
|
||||||
|
SELECT DISTINCT ON (GenreMvt) GenreMvt, LibMvt
|
||||||
FROM MvtArt
|
FROM MvtArt
|
||||||
GROUP BY GenreMvt, LibMvt
|
WHERE GenreMvt != 3
|
||||||
ORDER BY GenreMvt, nb_occurrences DESC
|
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) {
|
} catch (err) {
|
||||||
res.status(500).json({ error: err.message });
|
res.status(500).json({ error: err.message });
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user