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:02:25 +0100

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...

Yannick





reply via email to

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