Fix: debut de correction sur pb arrondis

This commit is contained in:
Laurent Destailleur
2007-03-29 23:34:09 +00:00
parent 9212437d9b
commit 85da803077
2 changed files with 58 additions and 60 deletions

View File

@@ -1842,15 +1842,12 @@ function price($amount, $html=0, $outlangs='')
// On pose par defaut 2 decimales
$decimal = 2;
$amount = ereg_replace(',','.',$amount);
$datas = explode('.',$amount);
$cents = $datas[1];
// On augmente au besoin
if ($cents > 99 )
$decimal = 3;
$amount = ereg_replace(',','\.',$amount);
$datas = split('\.',$amount);
$decpart = $datas[1];
if ($cents > 999 )
$decimal = 4;
// On augmente au besoin si il y a plus de 2 d<>cimales
if (strlen($decpart) > 2) $decimal=strlen($decpart);
// Formate nombre
if ($html)

View File

@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2002-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2006 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2006-2007 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -31,21 +31,21 @@
/**
\brief Permet de calculer les parts total HT, TVA et TTC d'une ligne de
facture, propale ou autre depuis:
Prix unitaire, quantit<69>, remise_percent_ligne, txtva, remise_percent_global.
\param qty
\param pu
\param remise_percent_ligne
\param txtva
\param remise_percent_global
\param price_base_type indique si on calcule sur le HT ou le TTC
\param pu_ttc prix de unitaire TTC
\return result[0] total_ht
result[1] total_tva
result[2] total_ttc
facture, propale, commande ou autre depuis:
quantit<69>, prix unitaire, remise_percent_ligne, txtva, remise_percent_global
\param qty Quantit<69>
\param pu Prix unitaire HT
\param remise_percent_ligne Remise ligne
\param txtva Taux tva
\param remise_percent_global 0
\param price_base_type HT=on calcule sur le HT, TTC=on calcule sur le TTC
\param pu_ttc Prix unitaire TTC
\return result[0,1,2] (total_ht, total_tva, total_ttc)
*/
function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $remise_percent_global=0, $price_base_type='HT', $pu_ttc=0)
{
$maxdecimalfortotal=2;
$result=array();
if ($price_base_type =='HT')
@@ -54,8 +54,8 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $remise_pe
$tot_sans_remise = $pu * $qty;
$tot_avec_remise_ligne = $tot_sans_remise * ( 1 - ($remise_percent_ligne / 100));
$tot_avec_remise = $tot_avec_remise_ligne * ( 1 - ($remise_percent_global / 100));
$result[0] = round($tot_avec_remise, 2);
$result[2] = round($tot_avec_remise * ( 1 + ($txtva / 100)), 2);
$result[0] = round($tot_avec_remise, $maxdecimalfortotal);
$result[2] = round($tot_avec_remise * ( 1 + ($txtva / 100)), $maxdecimalfortotal);
$result[1] = $result[2] - $result[0];
}
else
@@ -67,14 +67,15 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $remise_pe
$tot_avec_remise_ligne = $tot_sans_remise * ( 1 - ($remise_percent_ligne / 100));
$tot_avec_remise = $tot_avec_remise_ligne * ( 1 - ($remise_percent_global / 100));
$result[2] = round($tot_avec_remise, 2);
$result[0] = round($tot_avec_remise / ( 1 + ($txtva / 100)), 2);
$result[2] = round($tot_avec_remise, $maxdecimalfortotal);
$result[0] = round($tot_avec_remise / ( 1 + ($txtva / 100)), $maxdecimalfortotal);
$result[1] = $result[2] - $result[0];
}
return $result;
}
/**
\brief Permet de calculer un prix.
\param products