dolibarr-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Dolibarr-dev] Virgule ou point dans les factures


From: Yannick Warnier
Subject: Re: [Dolibarr-dev] Virgule ou point dans les factures
Date: Thu, 15 Jun 2006 11:12:47 +0100

Le jeudi 15 juin 2006 à 11:02 +0100, Yannick Warnier a écrit :
> Le mardi 13 juin 2006 à 23:33 +0200, Laurent Destailleur (Eldy) a
> écrit :
> > Jérôme Warnier a écrit :
> > > Salut,
> > >
> > > Notre nouveau modèle de facture fonctionne relativement bien (même s'il
> > > n'a pas encore toutes les fonctionnalités, comme les paiements déjà
> > > effectués), mais nous avons encore un petit problème: le séparateur
> > > décimal dans les PDF générés est un point, et non une virgule. Où
> > > peut-on arranger cela?
> > >   
> > Tu dois pouvoir utiliser la fonction
> > 
> > price(param)
> > 
> > pour cela. Cette fonction se base sur la fonction number_format qui 
> > affiche dans le format de ton PHP.
> > Comme price est propre à Dolibarr, on pourra inclure dedans ensuite une 
> > gestion du format en fonction d'un format définir dans un fichier lang, 
> > ceci afin d'avoir un format qui ne depend pas de la config PHP mais du 
> > fichier lang choisi dans Dolibarr.
> 
> J'ai un peu modifié la fonction price() pour arriver à ceci:
> function price($amount, $html=0, $l10n=null)
> {
>   if ($html)
>     {
>       if(!empty($l10n)){
>               //change the system locale for monetary values (might have
> side-effects)!
>                       setlocale(LC_MONETARY,$l10n);
>                       $info = localeconv();
>                       $dec = $info['decimal_point'];
>                       $thousand = $info['thousands_sep'];
>       }else{
>                   $dec='.'; $thousand=' ';
>       }
>               return ereg_replace(' ',' ',number_format($amount, 2, $dec,
> $thousand));
>     }
>       else
>     {
>       if(!empty($l10n)){
>                       setlocale(LC_MONETARY,$l10n);
>                       $info = localeconv();
>                       $dec = $info['decimal_point'];
>                       $thousand = $info['thousands_sep'];
>                       return number_format($amount, 2, $dec, $thousand);      
>       }else{
>                       return number_format($amount, 2, '.', ' ');
>       }
>     }
> }
> 
> C'est un peu dangereux à cause du setlocale(), mais pour l'instant je ne
> vois pas mieux. Au moins ça utilise les valeurs du système.
> Par contre je ne suis pas sûr du résultat si ces locales ne sont pas
> installées sur le système. Dans ce cas il vaudrait peut-être mieux une
> variable de langue pour le point décimal et une pour les milliers...

En fait les variables de langue c'est bcp mieux. Sinon quand les locales
ne sont pas installées ça le met dans le format des locales standards.

Bon, je vais en faire une autre! (de modif)

Yannick





reply via email to

[Prev in Thread] Current Thread [Next in Thread]