Selon le professeur du département d'informatique du Cégep de Momo, François Leroux, un des algorithmes de base permettant une compréhension universel de la programmation pour un débutant, peu importe son origine, sa classe social ou sa culture, est sans nulle doute les taxes!
De plus, 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 de septembre de l'année 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 Phalanger (PHP .NET) :
<?
$Compute=array("C","C","C","C","S","C","S","S","S","S","C","S","S");
$TaxName1=array("TPS","TVH","TVH","TVH","TPS","TVH","TPS","TVH","TVH","TPS","TPS","TPS","TVH");
$TaxRate1=array(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=array("TVQ","","","","TVP","","TVP","","","TVP","TVP","TVP","");
$TaxRate2=array(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=array("QC","NS","NB","NF","BC","AB","MB","NT","NU","ON","PE","SK","YT");
$RegionName_EN=array("Quebec","Nova Scotia","New Brunswick","Newfoundland","British Columbia","Alberta","Manitoba","Northwest Territories","Nunavut","Ontario","Prince Edward Island","Saskatchewan","Yukon Territory");
$RegionName_FR=array("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");
function Empattement($Chaine,$Espace) {
$L=$Espace-strlen($Chaine);
for($I=0;$I<$L;$I++) $Chaine.=" ";
return $Chaine;
}
echo "Nom de la province/territoire MID Taxe 1 Taxe 2 Taux\n";
for($I=0;$I<count($RegionName_FR);$I++) {
echo Empattement($RegionName_FR[$I],31);
echo Empattement($RegionMID[$I],5);
echo $TaxName1[$I] . ":" . $TaxRate1[$I] . "%" . "\t";
if($TaxName2[$I]=="") {
echo Empattement("",10);
} else {
echo Empattement($TaxName2[$I] . ":" . $TaxRate2[$I] . "%",10);
}
switch($Compute[$I]) {
case "S": //Séparé
echo strval($TaxRate1[$I]+$TaxRate2[$I]) . "%" . "\t";
break;
case "C": //Composé
echo strval($TaxRate1[$I]+(($TaxRate2[$I]*(100+$TaxRate1[$I]))/100)) . "%" . "\t";
break;
}
echo "\n";
}
?>
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 Phalanger (PHP .NET):
<?
$Compute=array("C","C","C","C","S","C","S","S","S","S","C","S","S");
$TaxName1=array("TPS","TVH","TVH","TVH","TPS","TVH","TPS","TVH","TVH","TPS","TPS","TPS","TVH");
$TaxRate1=array(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=array("TVQ","","","","TVP","","TVP","","","TVP","TVP","TVP","");
$TaxRate2=array(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=array("QC","NS","NB","NF","BC","AB","MB","NT","NU","ON","PE","SK","YT");
$RegionName_EN=array("Quebec","Nova Scotia","New Brunswick","Newfoundland","British Columbia","Alberta","Manitoba","Northwest Territories","Nunavut","Ontario","Prince Edward Island","Saskatchewan","Yukon Territory");
$RegionName_FR=array("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");
function Empattement($Chaine,$Espace) {
$L=$Espace-strlen($Chaine);
for($I=0;$I<$L;$I++) $Chaine.=" ";
return $Chaine;
}
echo "Nom de la province/territoire Taxe 1 Taxe 2 Taux 1$\t15$\t44,95$\t100$\n";
for($I=0;$I<count($RegionName_FR);$I++) {
echo Empattement($RegionName_FR[$I],31);
echo $TaxName1[$I] . ":" . $TaxRate1[$I] . "%" . "\t";
if($TaxName2[$I]=="") {
echo Empattement("",10);
} else {
echo Empattement($TaxName2[$I] . ":" . $TaxRate2[$I] . "%",10);
}
switch($Compute[$I]) {
case "S": //Séparé
$Tax = $TaxRate1[$I]+$TaxRate2[$I];
break;
case "C": //Composé
$Tax = $TaxRate1[$I]+(($TaxRate2[$I]*(100+$TaxRate1[$I]))/100);
break;
}
echo strval($Tax) . "%"."\t";
echo strval(1*(1+($Tax/100))) . "$\t";
echo strval(15*(1+($Tax/100))) . "$\t";
echo strval(44.95*(1+($Tax/100))) . "$\t";
echo strval(100*(1+($Tax/100))) . "$\t";
echo "\n";
}
?>
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$ |
Voir également
Langage de programmation - ASP 3.0 - Gouvernement - Taxe de vente canadienne
Langage de programmation - DB2 - Gouvernement - Taxe de vente canadienne
Langage de programmation - Java - Gouvernement - Taxe de vente canadienne
Langage de programmation - Oracle - Gouvernement - Taxe de vente canadienne
Langage de programmation - Ruby - Gouvernement - Taxe de vente canadienne
Langage de programmation - Sybase - Gouvernement - Taxe de vente canadienne