From eba4cb07742329c0ac415223dc6b4dd9cf9e507c Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 7 Jul 2026 06:46:45 +0000 Subject: [PATCH] =?UTF-8?q?fix(hit-parade,stock):=20retire=20le=20filtre?= =?UTF-8?q?=20montant=20(th=C3=A9orie=20invalid=C3=A9e)=20+=20tri=20stock?= =?UTF-8?q?=20n=C3=A9gatif?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Analyse de cohérence de stock sur le cas 487673 site 579 : 24 réceptions, 31 ventes brutes, 7 retours clients → 24 ventes nettes, stock final 3. Le « 38 » affiché = 31 + 7 : signature de l'ancienne formule SUM(ABS) qui additionnait les retours. La formule nette SUM(-qtemvt) déjà en place donne 24 — le filtre mntmvtttc <> 0 (hypothèse de lignes fantômes 0 €) était inutile : aucune ligne de ce type dans les données réelles. Retiré pour rester strictement aligné sur le calcul de la Grille. Gestion de stock : ORDER BY cs.qte (colonne affichée) au lieu de cs.stockdispo (colonne différente) dans pgGetStockNegatif. --- src/lib/pg-ff-client.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/lib/pg-ff-client.ts b/src/lib/pg-ff-client.ts index 530530d..ef69a85 100644 --- a/src/lib/pg-ff-client.ts +++ b/src/lib/pg-ff-client.ts @@ -770,10 +770,9 @@ export interface HitParadeRow { * mouvements et fausser les sommes, et le LATERAL fournisseur ne s'exécute que * par article vendu (et non par ligne de mouvement). * - * Filtre mntmvtttc <> 0 : mvtart contient des lignes genremvt=3 de quantité - * sans montant (corrections/régularisations, ex: codein 487673 site 579 — - * 38 affiché au lieu de 24 réels, CA exact). Une vente réelle a toujours un - * montant TTC non nul ; les endpoints officiels de l'API les excluent aussi. + * Cas vérifié (codein 487673, site 579, jan→juil 2026) : 31 ventes brutes, + * 7 retours clients → 24 net. L'ancien SUM(ABS(qtemvt)) affichait 38 (retours + * additionnés) ; SUM(-qtemvt) donne 24, identique à l'API mensuel officielle. */ export async function pgGetHitParade(dateDebut: string, dateFin: string): Promise { const result = await pgNoParallel(sql` @@ -789,8 +788,6 @@ export async function pgGetHitParade(dateDebut: string, dateFin: string): Promis WHERE m.datmvt BETWEEN ${dateDebut}::date AND ${dateFin}::date AND m.site IN ('292', '579') AND m.genremvt = 3 - AND m.mntmvtttc IS NOT NULL - AND m.mntmvtttc <> 0 AND a.codein IS NOT NULL GROUP BY TRIM(a.codein::text), m.site ), @@ -979,7 +976,7 @@ export async function pgGetStockNegatif(site?: string): Promise