From a68e706805c71aa59d0bf8a32479211afc433014 Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Fri, 24 Apr 2026 12:05:47 +0200 Subject: [PATCH] feat: add GET /api/fournisseurs/:code/franco endpoint --- src/app.js | 1 + src/routes/fournisseurs.js | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/app.js b/src/app.js index 59b0413..87d87af 100644 --- a/src/app.js +++ b/src/app.js @@ -63,6 +63,7 @@ app.listen(PORT, () => { console.log(' GET /api/fournisseurs[?search=]'); console.log(' GET /api/fournisseurs/:code/articles'); console.log(' GET /api/fournisseurs/:code/commandes'); + console.log(' GET /api/fournisseurs/:code/franco'); console.log(' GET /api/commandes[?dateDebut=&dateFin=&codefou=]'); console.log(' GET /api/commandes/:noCommande'); console.log(' GET /api/commandes/receptions/liste'); diff --git a/src/routes/fournisseurs.js b/src/routes/fournisseurs.js index 7ead16b..95a5b6a 100644 --- a/src/routes/fournisseurs.js +++ b/src/routes/fournisseurs.js @@ -107,4 +107,42 @@ router.get('/:code/commandes', async (req, res) => { } }); +// GET /api/fournisseurs/:code/franco +// Franco de port du fournisseur (fouport2.seuil en priorité, sinon foucad.franco) +router.get('/:code/franco', async (req, res) => { + try { + const pool = getPool(); + + const result = await pool.query(` + WITH franco_port AS ( + SELECT fp.code, MAX(fp2.seuil) AS seuil + FROM fouport fp + JOIN fouport2 fp2 ON fp2.fou_no_id = fp.no_id + WHERE fp.code = $1 + GROUP BY fp.code + ) + SELECT + fi.code, + fi.nom, + COALESCE(fp.seuil, fc.franco) AS franco_ht, + fp.seuil AS franco_port, + fc.franco AS franco_general, + fc.actif, + fc.duree, + fc.unite + FROM fouident fi + LEFT JOIN foucad fc ON fc.foucode = fi.code + LEFT JOIN franco_port fp ON fp.code = fi.code + WHERE fi.code = $1 + `, [req.params.code]); + + if (!result.rows.length) + return res.status(404).json({ error: 'Fournisseur introuvable' }); + + res.json(result.rows[0]); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + module.exports = router;