Billet mis à jour pour 2011
Un client effectue des ventes en ligne sur son site web. Comme le paiement se fait à l'aide de PayPal, il préfère calculer d'avance les taxes applicables et vendre ses produits "taxes incluses". À des fins de rapports, il voulait que, suite à une transaction, je calcule la portion de TPS et TVQ qui correspondait au prix vendu.
Comment faire pour faire l'opération inverse dans le calcul des taxes ? La difficulté est qu'au Québec, on taxe d'abord le sous-total pour ajouter la TPS (Taxes sur les Produits et Services de 5%). On taxe ensuite la somme du sous-total et de la TPS pour y ajouter la TVQ (Taxe de Vente du Québec qui est passée de 7,5% à 8,5%). Donc la TPS est taxable ! Risible.
Si on connaît le taux de taxation combiné (qui était de 12,875% en 2010 et maintenant de 13,925%, depuis le 1er janvier 2011), on peut diviser le total par ce taux pour déduisant le montant initial avant taxes. Une fois en possession de ce chiffre, il suffit de refaire le calcul normalement pour déterminer le montant de chaque taxe individuelle.
On sait qu'on peut calculer l'ajout des taxes facilement :
DEFINE('TPS', 0.05);Mais comment déterminer le montant initial ?
DEFINE('TVQ', 0.085);
function addTaxes($amount){
$tps = $amount * TPS;
$tvq = ($amount + $tps) * TVQ;
return $amount + $tps + $tvq;
}
$tps = $amount * TPS;La valeur des taxes est donc :
$tvq = ($amount + $tps) * TVQ;
$taxes = $tps + ($tps * TVQ);Le total incluant les taxes :
// ou
$taxes = ($amount * TPS) + (($amount * TPS) * TVQ);
$total = $amount + (($amount * TPS) + (($amount + ($amount * TPS)) * TVQ));Et le ratio montant avec taxes divisé par montant sans taxe :
$ratio = ($amount + ($amount + (($amount * TPS) + (($amount + ($amount * TPS)) * TVQ))) / $amount) - $amount;Ce qui nous donne 1.13925.
En divisant le total par le taux de taxation, on obtient le montant initial qui ne comprend ni la TPS ni la TVQ.
Réduit à sa plus simple expression, on obtient la règle :
$ratio = 1 + ((1 * TPS) + ((1 + (1 * TPS)) * TVQ));Reprenons cette formule pour faire le calcul inversé
function revertTaxes($amount){Pour vérifier si le calcul se fait correctement, je vais vérifier les chiffres sur une facture réelle.
$ratio = 1 + ((1 * TPS) + ((1 + (1 * TPS)) * TVQ));
$amount_without_taxes = $amount / $ratio;
$tps = $amount_without_taxes * TPS;
$tvq = ($amount_without_taxes + $tps) * TVQ;
// arrondir à 2 décimales au besoin
return array($amount_without_taxes, $tps, $tvq);
}
list($initial_price, $tps_value, $tvq_value) = revertTaxes(24.81);
echo "Prix initial: $initial_price \n";
echo "TPS: $tps_value \n";
echo "TVQ: $tvq_value \n";
Sous-total : 21,98 $
TPS : 1,10 $ (5%)
TVQ : 1,73 $ (7,5%)
Total : 24,81 $
Sur la facture :
- Sous-total : 99,99 $
- TPS : 5 $ (5%)
- TVQ : 8,92 $ (8.5%)
- Total : 113,91 $
Prix original: 99.986833443055
TPS: 4.9993416721527
TVQ: 8.9238248847926
Assez précis.
Merci de la fonction, ce peut être bien utile!
Puis-je suggérer:
$ratio = (1 + TPS) (1 + TVQ);
Même résultât, moins compliquer à comprendre :P
Oui, tout à fait!
Plus simple encore (taxes 2011) :
Formule pour Excel:
Montant total X 7.8341% = TVA
Montant total X 4.38885% = TPS
Montant total - TVA - TPS = Montant Net
Gilbert
Merci beaucoup Gilbert simple et tres efficace
moi j'trouve que la facons expliquer dans larticle est facile a comprendre. dailleurs cest la seule que jai comprit! hihi.
Donc on prend le montant total de la facture et on divise par 1.13925 pour avoir le sous total sans taxes.!
Super, c en plein ce que je voulais savoir
merci beaucoup.
Et quel sont les chiffres pour 2012
Génial, merci très utile!!
Pour 2012 : 1.14975
la façon simple pour calculer le ratio est de calculer pour 1$.
1 * 0.05 = 1.05
1.05 * 0.095 = 0.09975
1.05 + 0.09975 = 1.14975
1.14975 est donc le ratio à utiliser soit pour multiplier ou diviser.
Merci pour ce commentaire concernant les taxes 2012, voici un outil permettant de le calculer en ligne.