Pour une application en anglais, j’essaie de formater les décimaux au format DC
point pour les milliers
virgule pour les décimales
Et j’ai des questions
est-il possible de le configurer au niveau de la langue, et pas par utilisateur ? Sinon comment forcer ce format par défaut pour tous ? Par code peut-être ?
pour l’instant j’ai tenté le choix “DC” au niveau utilisateur et j’ai un comportement étrange sur un pourcentage : si je saisis mon pourcentage avec une virgule, la virgule disparaît quand je sors du champ - mais si je le saisis avec un point, il se transforme en virgule.
[EDIT]
Je vois que la langue est celle par défaut (EN) à la saisie, et celle surchargée sur le user au chargement du form
Load
Click sur le champ
J’ai vu qu’il y avait une évolution en 5.3, mais je ne sais pas trop comment l’utiliser.
ou ajouter une contrainte ou code preSave sur la création d’un user
ou de forcer le format via setNumberFormat au chargement de session via PlatformHooks.postLoadGrant.
En DC sauf si quelque chose m’échappe :
si on tape 1.2 la UI reformatte en 12 (et pas en 1200) et enregistrera 12 en base.
si on tape 1,2 la UI ne fera rien et enregistrera 1.2 en base.
Les pourcentages ça dépend aussi :
si c’est un flottant : c’est stocké entre 0 et 1 (donc mettre une précision suffisante de 4 car par exemple 0,01% à l’écran sera stocké 0.0001 en base)
ou un entier : stocké pourcentage entier / de 0 à 100, pas de décimal possible.
Merci pour ta réponse rapide, je vais automatiser la surcharge du format dans le PlatformHooks.
Pour mon test, en DC, si je saisis 1,2, quand je quitte le champ ça change en 12, et quand je save ça réapparaît en 120000,00. En base, j’ai 12.
Mais j’ai peut-être cassé quelque chose en jouant avec les types de champ :-/
Quand je clique sur le champ, formatFloat est appelé avec f.lang en paramètre (ENU)
Ok merci pour ton debug, il doit y avoir une erreur quelque part, on va refaire des tests.
Par contre tu peux bien changer le FORMAT des DATE et des NUM par défaut par langue (cf copie ecran).
Le code que tu indiques concerne un BigDecimal dans un pourcentage ? Les big decimaux sont un peu particulier car sont gérés comme des “string” pour ne pas perdre de precision.
Merci de préciser la définition exacte du champ.
On ne change pas ce paramètrage par défaut pour compat ascendante de l’époque.
En général, il faut un patch pour modifier un truc systeme, ou alors il faut le déplacer de module. Enfin quelque part avec l’import des modules applicatifs / après upgrade.
Ok donc revient à un décimal flottant simple, un big-décimal doit mal gérer le formatage.
on va essayer de l’améliorer mais ici je ne pense pas que ce soit ton besoin.
Un double gère très bien une précision de (10,4) suffisant pour un pourcentage ?
Attention l’ALTER risque de ne pas marcher (varchar => double)