2020-12-08
| ||
23:25 | • Wiki page "Changelog/0.9" artifact: b9c916b4d1 user: bohwaz | |
2020-11-08
| ||
04:16 | • Fixed ticket [c20546bb90]: Changer le stockage de monnaie vers des INTEGER plus 5 other changes artifact: f5d6a62b35 user: bohwaz | |
2017-08-01
| ||
01:09 | • Ticket [c20546bb90]: 4 changes artifact: 1d5888f99d user: bohwaz | |
01:09 | • Ticket [c20546bb90]: 3 changes artifact: ef338819af user: bohwaz | |
01:07 | Corrige les erreurs d'arrondi dans le report à nouveau (solde égal à 0,00), cf. [c20546bb90] check-in: d76c988ed8 user: bohwaz tags: dev | |
2017-07-28
| ||
10:33 | • Ticket [c20546bb90] Changer le stockage de monnaie vers des INTEGER status still Open with 3 other changes artifact: a6de2e1de8 user: DaD | |
2017-02-28
| ||
05:00 | • Ticket [c20546bb90]: 6 changes artifact: 09b75c6931 user: bohwaz | |
04:24 | • Ticket [c20546bb90]: 5 changes artifact: 814e0223ed user: nfrery | |
04:22 | • New ticket [c20546bb90]. artifact: 5273d33101 user: nfrery | |
Ticket Hash: | c20546bb903eea0bd54ee969aa76226217e394ac | |||
Title: | Changer le stockage de monnaie vers des INTEGER | |||
Status: | Fixed | Type: | Feature_Request | |
Severity: | Important | Priority: | High | |
Subsystem: | Resolution: | Fixed | ||
Last Modified: | 2020-11-08 04:16:28 | |||
Version Found In: | 0.7.6 | |||
User Comments: | ||||
nfrery added on 2017-02-28 03:22:16:Lors d'un essai de report à nouveau automatique d'un exercice test, j'ai eu l'erreur suivante: *Le montant ne peut être égal ou inférieur à zéro*. L'erreur provient d'un compte qui a pour somme 0 (-0.00 dans le grand livre) ou d'après la requête SQL de la fonction doReports(), ligne 159 de Exercices.php, j'obtiens 5.6843418860808e-14. Les deux SUM de la requête retourne chacun la somme 316.11 ce qui est tout à fait correct. Ce n'est pas un problème pour moi qui fait le report manuellement, mais ça pourrait poser soucis à certains. Je propose de rajouter deux round() ROUND(COALESCE((SELECT SUM(montant) FROM compta_journal WHERE compte_debit = compta_comptes.id AND id_exercice = 1), 0)) - ROUND(COALESCE((SELECT SUM(montant) FROM compta_journal WHERE compte_credit = compta_comptes.id AND id_exercice = 1), 0)) nfrery added on 2017-02-28 03:24:08:ROUND(COALESCE((SELECT SUM(montant) FROM compta_journal WHERE compte_debit = compta_comptes.id AND id_exercice = 1), 0),2) sera plus approprié ! bohwaz added on 2017-02-28 04:00:54:Ah oui c'est un problème de nombre flottant. J'ai fait une gaffe ici, les nombres devraient être stockés comme integers et non comme floats, ce qui génère ce genre de problème. SQLite ne supporte pas le type "DECIMAL" il faudrait donc stocker les nombres en tant que "INTEGER", chiffres après la virgule compris, ce qui serait plus exact. Par exemple 42,99 € serait stocké "4299", et 12 € serait stocké "1200". La conversion en décimal serait effectuée à l'affichage au niveau de PHP en ajoutant une virgule au bon endroit. Je renomme correctement le ticket et vais essayer de faire ça pour la 0.8.0, sinon j'appliquerais ton idée en attendant. DaD added on 2017-07-28 08:33:42:Bonjour. Dans certains logiciels il y a un peu plus que 2 chiffres après la virgules qui sont stockés en base. J’ai regardé un peu Dolibarr et j’ai vu qu’ils utilisaient 5 chiffres après la virgule. bohwaz added on 2017-07-31 23:09:20:J'ai appliqué la modif. de nicolas dans la branche de dév. [d76c988ed81c8877a44a52f6780b10b50f4ef4ca] Je ne pourrais pas faire le changement de stockage pour la 0.8 il y a déjà trop de trucs prévus. @DaD: c'est parce qu'ils utilisent une plus grande précision à la base, par exemple tu peux avoir des produits en stock qui ont un prix de 0,009 € et tu applique une TVA etc. dessus, mais dans Garradin la précision est limitée à deux chiffres après la virgule. bohwaz added on 2020-11-08 03:16:28:OK dans 1.0 |