osCommerce : mention HT pour TVA

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

Création du fichier /includes/languages/langue/tva.php

<?php
/*
/includes/languages/french/tva.php
proposé par Pierre Pesty http://dev.ppan.net
osCommerce 2.2 RC2a
*/
$mention_TVA_HT = "&nbsp;HT";
$mention_TVA_TTC = "&nbsp;TTC"; // option pour le récapitulatif commande
?>

Ajout dans /includes/application_top.php

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");

Modification de /includes/classes/currencies.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

Panier : modification de /shopping_cart.php

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>

Panier : modification de /includes/boxes/shopping_cart.php

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

Option : récapitulatif commande

/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 [Haut de page]