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/territoire | MID | Taxe 1 | Taxe 2 | Taux |
Québec | QC | TPS:6% | TVQ:7.5% | 13.95% |
Nouvelle-Écosse | NS | TVH:14% | 14% | |
Nouveau-Brunswick | NB | TVH:14% | 14% | |
Terre-Neuve/Labrador | NF | TVH:14% | 14% | |
Colombie-Britanique | BC | TPS:6% | TVP:7% | 13% |
Alberta | AB | TVH:6% | 6% | |
Manitoba | MB | TPS:6% | TVP:7% | 13% |
Territoire du Nord Ouest | NT | TVH:6% | 6% | |
Nunavut | NU | TVH:6% | 6% | |
Ontario | ON | TPS:6% | TVP:8% | 14% |
Ile-du-Prince-Édouard | PE | TPS:6% | TVP:10% | 16.6% |
Saskatchewan | SK | TPS:6% | TVP:7% | 13% |
Territoire du Yukon | YT | TVH: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 &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
- 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/territoire | Taxe 1 | Taxe 2 | Taux | 1$ | 15$ | 44,95$ | 100$ |
Québec | TPS:6% | TVQ:7.5% | 13.95% | 1.1395$ | 17.0925$ | 51.220525$ | 113.95$ |
Nouvelle-Écosse | TVH:14% | 14% | 1.14$ | 17.1$ | 51.243$ | 114$ | |
Nouveau-Brunswick | TVH:14% | 14% | 1.14$ | 17.1$ | 51.243$ | 114$ | |
Terre-Neuve/Labrador | TVH:14% | 14% | 1.14$ | 17.1$ | 51.243$ | 114$ | |
Colombie-Britanique | TPS:6% | TVP:7% | 13% | 1.13$ | 16.95$ | 50.7935$ | 113$ |
Alberta | TVH:6% | 6% | 1.06$ | 15.9$ | 47.647$ | 106$ | |
Manitoba | TPS:6% | TVP:7% | 13% | 1.13$ | 16.95$ | 50.7935$ | 113$ |
Territoire du Nord Ouest | TVH:6% | 6% | 1.06$ | 15.9$ | 47.647$ | 106$ | |
Nunavut | TVH:6% | 6% | 1.06$ | 15.9$ | 47.647$ | 106$ | |
Ontario | TPS:6% | TVP:8% | 14% | 1.14$ | 17.1$ | 51.243$ | 114$ |
Ile-du-Prince-Édouard | TPS:6% | TVP:10% | 16.6% | 1.166$ | 17.49$ | 52.4117$ | 116.6$ |
Saskatchewan | TPS:6% | TVP:7% | 13% | 1.13$ | 16.95$ | 50.7935$ | 113$ |
Territoire du Yukon | TVH:6% | 6% | 1.06$ | 15.9$ | 47.647$ | 106$ |
Dernière mise à jour : Dimanche, le 18 janvier 2015