Rechercher :
Accueil » bugs et Mise à jour Connexion

Question Comment régler le défaut d'arrondi des centimes sur les factures?
Réponse Côté client, le problème vient dès qu'on ajoute de la TVA. Des différences apparaissent au gré des arrondis.

Ce calcul est effectué en general.php
// Add tax to a products price
  function tep_add_tax($price, $tax) {
    global $currencies;

    if ( (DISPLAY_PRICE_WITH_TAX == 'true') && ($tax > 0) ) {
      return tep_round($price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']) + tep_calculate_tax($price, $tax);
    } else {
      return tep_round($price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']);
    }
  }

// Calculates Tax rounding the result
  function tep_calculate_tax($price, $tax) {
    global $currencies;

    return tep_round($price * $tax / 100, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']);
  }

////


La fonction tep_round qui est définie plus dans general.php peut, tout aussi bien, être remplacée par la fonction php round()

Je suis arrivé à un bon résultat en modifiant ces fonctions comme suit.
// Add tax to a products price
  function tep_add_tax($price, $tax) {
    global $currencies;

    if ( (DISPLAY_PRICE_WITH_TAX == 'true') && ($tax > 0) ) {
      return round($price, '3') + tep_calculate_tax($price, $tax);
    } else {
      return round($price, '3');
    }
  }

// Calculates Tax rounding the result
  function tep_calculate_tax($price, $tax) {
    global $currencies;

    return round($price * $tax / 100, '3');
  }

////

J'ai pris 3 comme nombre de décimales significatives car avec 4 des erreurs apparaissaient encore; C'est en effet la 3eme décimale qui décide de la valeur de la 2eme dans le calcul de l'arrondi.
Il faut modifier les deux general.php, côté client et côté admin.

Ca règle le problème des éditions de facture et des contribs qui font des remises en % ainsi que les différences sur les totaux avec TVA
Je n'ai pas constaté d'anomalies suite à cette modif sauf que maintenant il n'y a plus d'erreur sur les résultats.
Auteur : oneill Mise à jour le 20/03/2006

Retour