Gladir.com - LotusScript - Gouvernement - Taxe de vente canadienne


Le Canada est sans doute l'un des pays ou les taxes de vente sur les produits et services sont les plus compliqués à appliquer. Et pour cause: Elle varie d'une province ou territoire à l'autre, elle est parfois composé ou séparé. Voici leur représentation en date du mois septembre de l'années 2006:
Province/Territoire Taxe 1 Taxe 2 Taux
Alberta TVH: 6% Aucune 6%
Colombie-Britanique TVH: 6% TVP: 7% 13%
Ile-du-Prince-Édouard TPS: 6% TVP: 10% 16.6%
Manitoba TPS: 6% TVP: 7% 13%
Nouveau-Brunswick TVH: 14% Aucune 14%
Nouvelle-Écosse TVH: 14% Aucune 14%
Nunavut TVH: 6% Aucune 6%
Ontario TPS: 6% TVP: 8% 14%
Québec TPS: 6% TVQ: 7.5% 13.95%
Saskatchewan TPS: 6% TVP: 7% 13%
Terre-Neuve/Labrador TVH: 14% Aucune 14%
Territoire du Nord Ouest TVH: 6% Aucune 6%
Territoire du Yukon TVH: 6% Aucune 6%
Tout d'abord, voici un premier exemple permet d'afficher des données complètes sur les taxes en LotusScript:
Function Empattement(Byval Chaine As String, Byval Espace As Integer) As String
     Empattement = Chaine &Space$(Espace - Len(Chaine))
End Function 

Sub Main()
     Dim Compute(0 To 12)  As String
     Dim TaxName1(0 To 12) As String
     Dim TaxRate1(0 To 12) As Double
     Dim TaxName2(0 To 12) As String
     Dim TaxRate2(0 To 12) As Double
     Dim RegionMID(0 To 12) As String
     Dim RegionName_EN(0 To 12) As String
     Dim RegionName_FR(0 To 12) As String
     Compute(0) = "C"
     Compute(1) = "C"
     Compute(2) = "C"
     Compute(3) = "C"
     Compute(4) = "S"
     Compute(5) = "C"
     Compute(6) = "S"
     Compute(7) = "S"
     Compute(8) ="S"
     Compute(9) = "S"
     Compute(10) = "C"
     Compute(11) = "S"
     Compute(12) = "S"
     TaxName1(0) = "TPS"
     TaxName1(1) ="TVH"
     TaxName1(2) = "TVH"
     TaxName1(3) ="TVH"
     TaxName1(4) ="TPS"
     TaxName1(5) ="TVH"
     TaxName1(6) ="TPS"
     TaxName1(7) ="TVH"
     TaxName1(8) ="TVH"
     TaxName1(9) ="TPS"
     TaxName1(10) ="TPS"
     TaxName1(11) ="TPS"
     TaxName1(12) ="TVH"
     TaxRate1(0)=6.0000
     TaxRate1(1)=14.0000
     TaxRate1(2)=14.0000
     TaxRate1(3)=14.0000
     TaxRate1(4)=6.0000
     TaxRate1(5)=6.0000
     TaxRate1(6)=6.0000
     TaxRate1(7)=6.0000
     TaxRate1(8)=6.0000
     TaxRate1(9)=6.0000
     TaxRate1(10)=6.0000
     TaxRate1(11)=6.0000
     TaxRate1(12)=6.0000
     TaxName2(0)="TVQ"
     TaxName2(1)=""
     TaxName2(2)=""
     TaxName2(3)=""
     TaxName2(4)="TVP"
     TaxName2(5)=""
     TaxName2(6)="TVP"
     TaxName2(7)=""
     TaxName2(8)=""
     TaxName2(9)="TVP"
     TaxName2(10)="TVP"
     TaxName2(11)="TVP"
     TaxName2(12)=""
     TaxRate2(0)=7.5000
     TaxRate2(1)=0.0000
     TaxRate2(2)=0.0000
     TaxRate2(3)=0.0000
     TaxRate2(4)=7.0000
     TaxRate2(5)=0.0000
     TaxRate2(6)=7.0000
     TaxRate2(7)=0.0000
     TaxRate2(8)=0.0000
     TaxRate2(9)=8.0000
     TaxRate2(10)=10.0000
     TaxRate2(11)=7.0000
     TaxRate2(12)=0.0000
     RegionMID(0)="QC"
     RegionMID(1)="NS"
     RegionMID(2)="NB"
     RegionMID(3)="NF"
     RegionMID(4)="BC"
     RegionMID(5)="AB"
     RegionMID(6)="MB"
     RegionMID(7)="NT"
     RegionMID(8)="NU"
     RegionMID(9)="ON"
     RegionMID(10)="PE"
     RegionMID(11)="SK"
     RegionMID(12)="YT"
     RegionName_EN(0)="Quebec"
     RegionName_EN(1)="Nova Scotia"
     RegionName_EN(2)="New Brunswick"
     RegionName_EN(3)="Newfoundland"
     RegionName_EN(4)="British Columbia"
     RegionName_EN(5)="Alberta"
     RegionName_EN(6)="Manitoba"
     RegionName_EN(7)="Northwest Territories"
     RegionName_EN(8)="Nunavut"
     RegionName_EN(9)="Ontario"
     RegionName_EN(10)="Prince Edward Island"
     RegionName_EN(11)="Saskatchewan"
     RegionName_EN(12)="Yukon Territory"
     RegionName_FR(0)="Québec"
     RegionName_FR(1)="Nouvelle-Écosse"
     RegionName_FR(2)="Nouveau-Brunswick"
     RegionName_FR(3)="Terre-Neuve/Labrador"
     RegionName_FR(4)="Colombie-Britanique"
     RegionName_FR(5)="Alberta"
     RegionName_FR(6)="Manitoba"
     RegionName_FR(7)="Territoire du Nord Ouest"
     RegionName_FR(8)="Nunavut"
     RegionName_FR(9)="Ontario"
     RegionName_FR(10)="Ile-du-Prince-Édouard"
     RegionName_FR(11)="Saskatchewan"
     RegionName_FR(12)="Territoire du Yukon"
     Print "Nom de la province/territoire MID Taxe 1 Taxe 2 Taux"
     For I = Lbound(Compute) To Ubound(Compute)
          Print Empattement(RegionName_FR(I), 31);
          Print Empattement(RegionMID(I), 5);
          Print TaxName1(I) &":" &TaxRate1(I) &"%" &" ";
          If TaxName2(I) = "" Then
               Print Spc( 10);
          Else
               Print Empattement(TaxName2(I) &":" &TaxRate2(I) &"%", 10);
          End If
          Select Case Compute(I)
          Case "S" 'Séparé
               Print TaxRate1(I) + TaxRate2(I) &"%" &" "
          Case "C" 'Composé
               Print TaxRate1(I) + ((TaxRate2(I) * (100 + TaxRate1(I))) / 100) &"%" &" "
          End Select
     Next 
End Sub
on obtiendra le résultat suivant:
Nom de la province/territoireMIDTaxe 1Taxe 2Taux
QuébecQCTPS:6%TVQ:7.5%13.95%
Nouvelle-ÉcosseNSTVH:14% 14%
Nouveau-BrunswickNBTVH:14% 14%
Terre-Neuve/LabradorNFTVH:14% 14%
Colombie-BritaniqueBCTPS:6%TVP:7%13%
AlbertaABTVH:6% 6%
ManitobaMBTPS:6%TVP:7%13%
Territoire du Nord OuestNTTVH:6% 6%
NunavutNUTVH:6% 6%
OntarioONTPS:6%TVP:8%14%
Ile-du-Prince-ÉdouardPETPS:6%TVP:10%16.6%
SaskatchewanSKTPS:6%TVP:7%13%
Territoire du YukonYTTVH:6% 6%

Ensuite, voici un deuxième exemple permet de calculer la taxe de vente d'un produit ou service en fonction des provinces ou territoires en LotusScript:
Function Empattement(Byval Chaine As String, Byval Espace As Integer) As String
     Empattement = Chaine &pace$(Espace - Len(Chaine))
End Function 

Sub Main()
     Dim Compute(0 To 12)  As String
     Dim TaxName1(0 To 12) As String
     Dim TaxRate1(0 To 12) As Double
     Dim TaxName2(0 To 12) As String
     Dim TaxRate2(0 To 12) As Double
     Dim RegionMID(0 To 12) As String
     Dim RegionName_EN(0 To 12) As String
     Dim RegionName_FR(0 To 12) As String
     Dim I As Integer
     Compute(0) = "C"
     Compute(1) = "C"
     Compute(2) = "C"
     Compute(3) = "C"
     Compute(4) = "S"
     Compute(5) = "C"
     Compute(6) = "S"
     Compute(7) = "S"
     Compute(8) ="S"
     Compute(9) = "S"
     Compute(10) = "C"
     Compute(11) = "S"
     Compute(12) = "S"
     TaxName1(0) = "TPS"
     TaxName1(1) ="TVH"
     TaxName1(2) = "TVH"
     TaxName1(3) ="TVH"
     TaxName1(4) ="TPS"
     TaxName1(5) ="TVH"
     TaxName1(6) ="TPS"
     TaxName1(7) ="TVH"
     TaxName1(8) ="TVH"
     TaxName1(9) ="TPS"
     TaxName1(10) ="TPS"
     TaxName1(11) ="TPS"
     TaxName1(12) ="TVH"
     TaxRate1(0)=6.0000
     TaxRate1(1)=14.0000
     TaxRate1(2)=14.0000
     TaxRate1(3)=14.0000
     TaxRate1(4)=6.0000
     TaxRate1(5)=6.0000
     TaxRate1(6)=6.0000
     TaxRate1(7)=6.0000
     TaxRate1(8)=6.0000
     TaxRate1(9)=6.0000
     TaxRate1(10)=6.0000
     TaxRate1(11)=6.0000
     TaxRate1(12)=6.0000
     TaxName2(0)="TVQ"
     TaxName2(1)=""
     TaxName2(2)=""
     TaxName2(3)=""
     TaxName2(4)="TVP"
     TaxName2(5)=""
     TaxName2(6)="TVP"
     TaxName2(7)=""
     TaxName2(8)=""
     TaxName2(9)="TVP"
     TaxName2(10)="TVP"
     TaxName2(11)="TVP"
     TaxName2(12)=""
     TaxRate2(0)=7.5000
     TaxRate2(1)=0.0000
     TaxRate2(2)=0.0000
     TaxRate2(3)=0.0000
     TaxRate2(4)=7.0000
     TaxRate2(5)=0.0000
     TaxRate2(6)=7.0000
     TaxRate2(7)=0.0000
     TaxRate2(8)=0.0000
     TaxRate2(9)=8.0000
     TaxRate2(10)=10.0000
     TaxRate2(11)=7.0000
     TaxRate2(12)=0.0000
     RegionMID(0)="QC"
     RegionMID(1)="NS"
     RegionMID(2)="NB"
     RegionMID(3)="NF"
     RegionMID(4)="BC"
     RegionMID(5)="AB"
     RegionMID(6)="MB"
     RegionMID(7)="NT"
     RegionMID(8)="NU"
     RegionMID(9)="ON"
     RegionMID(10)="PE"
     RegionMID(11)="SK"
     RegionMID(12)="YT"
     RegionName_EN(0)="Quebec"
     RegionName_EN(1)="Nova Scotia"
     RegionName_EN(2)="New Brunswick"
     RegionName_EN(3)="Newfoundland"
     RegionName_EN(4)="British Columbia"
     RegionName_EN(5)="Alberta"
     RegionName_EN(6)="Manitoba"
     RegionName_EN(7)="Northwest Territories"
     RegionName_EN(8)="Nunavut"
     RegionName_EN(9)="Ontario"
     RegionName_EN(10)="Prince Edward Island"
     RegionName_EN(11)="Saskatchewan"
     RegionName_EN(12)="Yukon Territory"
     RegionName_FR(0)="Québec"
     RegionName_FR(1)="Nouvelle-Écosse"
     RegionName_FR(2)="Nouveau-Brunswick"
     RegionName_FR(3)="Terre-Neuve/Labrador"
     RegionName_FR(4)="Colombie-Britanique"
     RegionName_FR(5)="Alberta"
     RegionName_FR(6)="Manitoba"
     RegionName_FR(7)="Territoire du Nord Ouest"
     RegionName_FR(8)="Nunavut"
     RegionName_FR(9)="Ontario"
     RegionName_FR(10)="Ile-du-Prince-Édouard"
     RegionName_FR(11)="Saskatchewan"
     RegionName_FR(12)="Territoire du Yukon" 
     
     Print "Nom de la province/territoire Taxe 1 Taxe 2 Taux 1$ 15$ 44,95$ 100$"
     For I = Lbound(Compute) To Ubound(Compute) 
          Dim Tax As Double
          Tax = 0
          Print Empattement(RegionName_FR(I), 31);
          Print TaxName1(I)  &":" &TaxRate1(I) &"%" &" ";
          If TaxName2(I) = "" Then
               Print Spc(10);
          Else
               Print Empattement(TaxName2(I) &":" &TaxRate2(I), 10);
          End If
          Select Case Compute(I)
          Case "S" 'Séparé
               Tax = TaxRate1(I) + TaxRate2(I)
          Case "C" 'Composé
               Tax = TaxRate1(I) + ((TaxRate2(I) * (100 + TaxRate1(I))) / 100)
          End Select
          Print (Tax) &"%" &" ";
          Print (1 * (1 + (Tax / 100))) &"$ ";
          Print (15 * (1 + (Tax / 100))) &"$ ";
          Print (44.95 * (1 + (Tax / 100))) &"$ ";
          Print (100 * (1 + (Tax / 100))) &"$ "
     Next
End Sub
on obtiendra le résultat suivant:
Nom de la province/territoireTaxe 1Taxe 2Taux1$15$44,95$100$
QuébecTPS:6%TVQ:7.5%13.95%1.1395$17.0925$51.220525$113.95$
Nouvelle-ÉcosseTVH:14% 14%1.14$17.1$51.243$114$
Nouveau-BrunswickTVH:14% 14%1.14$17.1$51.243$114$
Terre-Neuve/LabradorTVH:14% 14%1.14$17.1$51.243$114$
Colombie-BritaniqueTPS:6%TVP:7%13%1.13$16.95$50.7935$113$
AlbertaTVH:6% 6%1.06$15.9$47.647$106$
ManitobaTPS:6%TVP:7%13%1.13$16.95$50.7935$113$
Territoire du Nord OuestTVH:6% 6%1.06$15.9$47.647$106$
NunavutTVH:6% 6%1.06$15.9$47.647$106$
OntarioTPS:6%TVP:8%14%1.14$17.1$51.243$114$
Ile-du-Prince-ÉdouardTPS:6%TVP:10%16.6%1.166$17.49$52.4117$116.6$
SaskatchewanTPS:6%TVP:7%13%1.13$16.95$50.7935$113$
Territoire du YukonTVH:6% 6%1.06$15.9$47.647$106$

Dernière mise à jour: Mardi, le 7 février 2006