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ée 2006:
Province/Territoire | Taxe 1 | Taxe 2 | Taux |
---|---|---|---|
Alberta | TVH: 6% | Aucune | 6% |
Colombie-Britannique | 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 Ruby:
Essayer maintenant !
- compute=['C','C','C','C','S','C','S','S','S','S','C','S','S']
- taxName1=["TPS","TVH","TVH","TVH","TPS","TVH","TPS","TVH","TVH","TPS","TPS","TPS","TVH"]
- taxRate1=[6.0000,14.0000,14.0000,14.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000]
- taxName2=["TVQ","","","","TVP","","TVP","","","TVP","TVP","TVP",""]
- taxRate2=[7.5000,0.0000,0.0000,0.0000,7.0000,0.0000,7.0000,0.0000,0.0000,8.0000,10.0000,7.0000,0.0000]
- regionMID=["QC","NS","NB","NF","BC","AB","MB","NT","NU","ON","PE","SK","YT"]
- regionName_EN=["Quebec","Nova Scotia","New Brunswick","Newfoundland","British Columbia","Alberta","Manitoba","Northwest Territories","Nunavut","Ontario","Prince Edward Island","Saskatchewan","Yukon Territory"]
- regionName_FR=["Québec","Nouvelle-Écosse","Nouveau-Brunswick","Terre-Neuve/Labrador","Colombie-Britanique","Alberta","Manitoba","Territoire du Nord Ouest","Nunavut","Ontario","Ile-du-Prince-Édouard","Saskatchewan","Territoire du Yukon"]
-
- def Empattement(chaine,espace)
- i=0
- l=espace-chaine.length
- while i<l
- chaine=chaine+" "
- i=i+1
- end
- return chaine
- end
-
- print "Nom de la province/territoire MID Taxe 1 Taxe 2 Taux\n"
- i=0
- while i<compute.length
- print Empattement(regionName_FR[i],31)
- print Empattement(regionMID[i],5)
- print taxName1[i] + ":" + String(taxRate1[i]) + "%" + "\t"
- if taxName2[i]==""
- print Empattement("",10)
- else
- print Empattement(taxName2[i] + ":" + String(taxRate2[i]),10)
- end
- case compute[i]
- when 'S' then #Séparé
- print String(taxRate1[i]+taxRate2[i]) + "%" + "\t"
- when 'C' then #Composé
- print String(taxRate1[i]+((taxRate2[i]*(100+taxRate1[i]))/100)) + "%" + "\t"
- end
- print "\n"
- i=i+1
- end
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 Ruby:
Essayer maintenant !
- compute=['C','C','C','C','S','C','S','S','S','S','C','S','S']
- taxName1=["TPS","TVH","TVH","TVH","TPS","TVH","TPS","TVH","TVH","TPS","TPS","TPS","TVH"]
- taxRate1=[6.0000,14.0000,14.0000,14.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000]
- taxName2=["TVQ","","","","TVP","","TVP","","","TVP","TVP","TVP",""]
- taxRate2=[7.5000,0.0000,0.0000,0.0000,7.0000,0.0000,7.0000,0.0000,0.0000,8.0000,10.0000,7.0000,0.0000]
- regionMID=["QC","NS","NB","NF","BC","AB","MB","NT","NU","ON","PE","SK","YT"]
- regionName_EN=["Quebec","Nova Scotia","New Brunswick","Newfoundland","British Columbia","Alberta","Manitoba","Northwest Territories","Nunavut","Ontario","Prince Edward Island","Saskatchewan","Yukon Territory"]
- regionName_FR=["Québec","Nouvelle-Écosse","Nouveau-Brunswick","Terre-Neuve/Labrador","Colombie-Britanique","Alberta","Manitoba","Territoire du Nord Ouest","Nunavut","Ontario","Ile-du-Prince-Édouard","Saskatchewan","Territoire du Yukon"]
-
- def Empattement(chaine,espace)
- i=0
- l=espace-chaine.length
- while i<l
- chaine=chaine+" "
- i=i+1
- end
- return chaine
- end
-
- print "Nom de la province/territoire Taxe 1 Taxe 2 Taux 1$\t15$\t44,95$\t100$\n"
- i=0
- while i<compute.length
- tax = 0
- print Empattement(regionName_FR[i],31)
- print taxName1[i] + ":" + String(taxRate1[i]) + "%" + "\t"
- if taxName2[i]==""
- print Empattement("",10)
- else
- print Empattement(taxName2[i] + ":" + String(taxRate2[i]),10)
- end
- case compute[i]
- when 'S' then #Séparé
- tax = taxRate1[i]+taxRate2[i]
- when 'C' then #Composé
- tax = taxRate1[i]+((taxRate2[i]*(100+taxRate1[i]))/100)
- end
- print String(tax) + "%" + "\t"
- print String(1*(1+(tax/100))) + "$\t"
- print String(15*(1+(tax/100))) + "$\t"
- print String(44.95*(1+(tax/100))) + "$\t"
- print String(100*(1+(tax/100))) + "$\t"
- print "\n"
- i=i+1
- end
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 23 novembre 2014