Un filtre pour calculer la TVA et formater son affichage

Ce petit filtre a été écrit pour transformer un champ numérique contenant un prix hors taxes, en un champ contenant les prix hors taxes et TTC, bien formatés, avec les séparateurs de milliers et le signe €...

A ajouter dans mes_fonctions :

@define('tvaNormale', 1.196);
@define('tvaReduite', 1.055);

function ttc($ht, $taux='tvaNormale') {
	setlocale(LC_MONETARY, 'fr_FR');
	$taux = constant($taux);
	$ttc = $ht * $taux;
	$ttc = money_format('%i', $ttc);
	$ht  = money_format('%i', $ht);
	$tva = $ht . " HT" . " (" . $ttc . " TTC)";
	$tva = ereg_replace("EUR", "€", $tva);
	return $tva;
}

Utilisation

Dans un champ d’un article SPIP, par exemple #PS, on peut stocker un nombre qui correspond à un prix hors taxes. Ensuite, si on veut l’afficher avec le format défini par le filtre « ttc » il suffit d’appeler la balise #PS avec le filtre : [(#PS|ttc)].

Par défaut ce filtre utilise un taux de TVA à 19,6%, mais grâce à l’astuce de Patrice, il peut accepter le taux de TVA réduite à 5,5%. Pour cela, il suffit d’appeler la balise comme ceci : [(#PRIX_HT|ttc{tvaReduite})].

Explications

-  la 1re ligne modifie la manière dont le serveur va afficher les données au format monétaire (voir lien)
-  la 3e ligne calcule le montant TTC avec une TVA à 19,6% (par défaut) ou le taux envoyé en paramètre avec le filte.
-  les 4e et 5e lignes appliquent le format aux montants HT et TTC (voir lien)
-  la 6e ligne génère la chaine qui sera affichée (ici « 999,00 € HT (1234.56 € TTC) »
-  la 7e ligne s’assure que c’est bien le signe « € » qui s’affiche et non pas le code ISO « EUR » (c’est moins joli...).

un exemple en ligne : sur une fiche « formation » du catalogue des formations FinHarmony, en bas, dans la partie « prix ».

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom