|
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:
| 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 &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/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: Mardi, le 7 février 2006 |