mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-11 17:26:32 +02:00
fix(hit-parade,stock): retire le filtre montant (théorie invalidée) + tri stock négatif
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.
This commit is contained in:
1 file changed
+4
-7
@@ -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<HitParadeRow[]> {
|
||||
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<PgStockNegatifRo
|
||||
WHERE cs.qte < 0
|
||||
AND cs.site IN ('292', '579')
|
||||
${siteFilter}
|
||||
ORDER BY cs.stockdispo ASC
|
||||
ORDER BY cs.qte ASC
|
||||
`);
|
||||
return result.rows as PgStockNegatifRow[];
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user