On m'a averti il y a 3 jours de petites différences de quelques centimes entre le montant des factures/tickets de caisse et les montants affichés dans les listes (commandes, paiements ..).
Il s'avère que le calcul du total de facture est fait à deux endroits différents dans le code.
Historiquement (jusqu'en mars 2021) tout les calculs étaient fait coté serveur (en JavaScript). Mais c'était un peu lent. Si un prix de produit changeait par exemple, il fallait recalculer les totaux des commandes contenant le produit. Comme c'était lent, j'essayais de le faire le moins souvent possible, avec parfois des bugs ou un total aurait du changer mais restait à son ancienne valeur.
En mars, j'ai introduit une nouvelle manière de calculer ces totaux, directement en base de donnée (mongodb). C'est beaucoup plus rapide (de l'ordre de 50x plus rapide). L’inconvénient, c'est que la base de donnée à des différences subtile dans sa manière de faire les arrondis.
J'ai continué d'utiliser les deux méthodes en parallèle, mais le résultat était parfois différent.
Cette partie est corrigée, j'ai rétabli le fonctionnement historique et mongoDB imite maintenant les arrondis fait par JavaScript.
J'ai voulu vérifier que les totaux correspondaient bien pour toutes les commandes enregistrées, et c'est la que j'ai découvert plusieurs bugs
Bref, pas mal de points à corriger.
J'ai fait en sorte de sauvegarder le total existant, appliquer les corrections, et ensuite voir ou est ce qu'il y a une différence entre les deux.
Je suis donc en mesure de vous fournir un fichier Excel listant les commandes ayant "bougé"
Puisque l'idée principale est de retrouver les même totaux qu'avant mars, vous devriez pouvoir ignorer les changements listés pour les semaines d'avant mars 2021.
Je vais envoyer individuellement le fichier par mail aux 7 maraîchers touchés par le problème
J'ai aussi livré deux nouvelles petites fonctions en passant :