Si osCommerce permet de gérer la TVA et l'affichage des prix HT ou TTC, rien n'est prévu pour le mentionner. Si, par défaut, un prix affiché s'entend "Toutes Taxes Comprises", dans le cadre d'un commerce "B to B" il est nécessaire de mentionner qu'un tarif est "Hors Taxes".
La modification est assez simple, car elle fait appel :
1. à la fonction display_price de la classe currencies
qui formate l'affichage des prix,
2. à un fichier de langue qui permet de définir la mention selon
chaque pays. Il suffira de créer autant de fichiers /includes/languages/LANGUE/tva.php.
Ce fichier contient une variable principale $mention_TVA_HT. Pas une
constante car, par définition, une constante ne peut être redéfinie.
Par défaut cette variable est nulle/vide. Si la constante DISPLAY_PRICE_WITH_TAX
- définie dynamiquement dans l'interface admin Ma boutique -
est fausse, alors le fichier tva.php est chargé et redéfinit
la variable $mention_TVA_HT.
Notez qu'on ne peut pas s'intéresser à la fonction format car elle formate tous les montants affichés... y compris les montants TTC (totaux).
<?php /* /includes/languages/french/tva.php proposé par Pierre Pesty http://dev.ppan.net osCommerce 2.2 RC2a */ $mention_TVA_HT = " HT"; $mention_TVA_TTC = " TTC"; // option pour le récapitulatif commande ?>
En fin de fichier :
$mention_TVA_HT = ''; $mention_TVA_TTC = ''; // chargement du fichier tva.php si affichage prix TTC est faux if(DISPLAY_PRICE_WITH_TAX == 'false') require(DIR_WS_LANGUAGES . "$language/tva.php");
Rechercher la dernière fonction display_price et la modifier comme suit :
function display_price($products_price, $products_tax, $quantity = 1) { global $mention_TVA_HT; return $this->format($this->calculate_price($products_price, $products_tax, $quantity)).$mention_TVA_HT; }
A ce stade, l'essentiel est fait !
Tous les prix affichés se voient dotés de la mention
"HT" (y compris les promos).
Ensuite, on peut ajouter la mention dans le total des deux boîtes du panier d'achat : juste avant le dernier point-virgule on ajoute .$mention_TVA_HT
Aux alentours de la ligne 160 (rechercher show_total) ajouter la mention :
<tr> <td align="right" class="main"><b><?php echo SUB_TITLE_SUB_TOTAL; ?> <?php echo $currencies->format($cart->show_total()).$mention_TVA_HT; ?></b> </td> </tr>
Vers la fin du fichier (rechercher show_total) ajouter la mention :
if ($cart->count_contents() > 0) { $info_box_contents[] = array('text' => tep_draw_separator()); $info_box_contents[] = array('align' => 'right','text' => $currencies->format($cart->show_total()).$mention_TVA_HT); }
Cerise sur le gâteau optionnelle, affichage dans le récapitulatif commande (fichier checkout_confirmation.php).
/includes/modules/order_total/ot_subtotal.php
function ot_subtotal() { global $mention_TVA_HT; $this->code = 'ot_subtotal'; $this->title = MODULE_ORDER_TOTAL_SUBTOTAL_TITLE.$mention_TVA_HT; $this->description = MODULE_ORDER_TOTAL_SUBTOTAL_DESCRIPTION; $this->enabled = ((MODULE_ORDER_TOTAL_SUBTOTAL_STATUS == 'true') ? true : false); $this->sort_order = MODULE_ORDER_TOTAL_SUBTOTAL_SORT_ORDER; $this->output = array(); }
/includes/modules/order_total/ot_total.php
function ot_total() { global $mention_TVA_TTC; $this->code = 'ot_total'; $this->title = MODULE_ORDER_TOTAL_TOTAL_TITLE.$mention_TVA_TTC; // somme TTC $this->description = MODULE_ORDER_TOTAL_TOTAL_DESCRIPTION; $this->enabled = ((MODULE_ORDER_TOTAL_TOTAL_STATUS == 'true') ? true : false); $this->sort_order = MODULE_ORDER_TOTAL_TOTAL_SORT_ORDER; $this->output = array(); }
http://dev.ppan.net