Gladir.com - JSP (Java Server Pages) - 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 JSP (Java Server Pages):
<%
char[] Compute={'C','C','C','C','S','C','S','S','S','S','C','S','S'}; 
String[] TaxName1={"TPS","TVH","TVH","TVH","TPS","TVH","TPS","TVH","TVH","TPS","TPS","TPS","TVH"}; 
double[] 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}; 
String[] TaxName2={"TVQ","","","","TVP","","TVP","","","TVP","TVP","TVP",""}; 
double[] 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}; 
String[] RegionMID={"QC","NS","NB","NF","BC","AB","MB","NT","NU","ON","PE","SK","YT"}; 
String[] RegionName_EN={"Quebec","Nova Scotia","New Brunswick","Newfoundland","British Columbia","Alberta","Manitoba","Northwest Territories","Nunavut","Ontario","Prince Edward Island","Saskatchewan","Yukon Territory"}; 
String[] 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"}; 

out.print("<TABLE>"); 
out.print("<TR>");
out.print("<TD><B>Nom de la province/territoire</B></TD>");
out.print("<TD><B>MID</B></TD>");
out.print("<TD><B>Taxe 1</B></TD>");
out.print("<TD><B>Taxe 2</B></TD>");
out.print("<TD><B>Taux</B></TD>");
out.print("</TR>");
        
for(int I=0;I<Compute.length;I++) { 
   out.print("<TR>");
   out.print("<TD>"+RegionName_FR[I]+"</TD>"); 
   out.print("<TD>"+RegionMID[I]+"</TD>"); 
   out.print("<TD>"+TaxName1[I] + ":" + TaxRate1[I] + "%</TD>"); 
   if(TaxName2[I]=="") { 
      out.print("<TD> </TD>"); 
   } else { 
         out.print("<TD>"+TaxName2[I] + ":" + TaxRate2[I]+"</TD>"); 

    } 
   out.print("<TD>");
   switch(Compute[I]) { 
        case 'S': //Séparé
             out.print(Double.toString(TaxRate1[I]+TaxRate2[I]) + "%" + "\t"); 
             break; 
        case 'C': //Composé
             out.print(Double.toString(TaxRate1[I]+((TaxRate2[I]*(100+TaxRate1[I]))/100)) + "%" + "\t"); 
             break; 
   } 
   out.print("</TD></TR>"); 
} 
out.print("</TABLE>"); 
%>
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 JSP (Java Server Pages):
<%
char[] Compute={'C','C','C','C','S','C','S','S','S','S','C','S','S'}; 
String[] TaxName1={"TPS","TVH","TVH","TVH","TPS","TVH","TPS","TVH","TVH","TPS","TPS","TPS","TVH"}; 
double[] 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}; 
String[] TaxName2={"TVQ","","","","TVP","","TVP","","","TVP","TVP","TVP",""}; 
double[] 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}; 
String[] RegionMID={"QC","NS","NB","NF","BC","AB","MB","NT","NU","ON","PE","SK","YT"}; 
String[] RegionName_EN={"Quebec","Nova Scotia","New Brunswick","Newfoundland","British Columbia","Alberta","Manitoba","Northwest Territories","Nunavut","Ontario","Prince Edward Island","Saskatchewan","Yukon Territory"}; 
String[] 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"}; 

java.text.DecimalFormat DF = new java.text.DecimalFormat("########.00");  

out.println("<TABLE>");
out.println("<TR>"); 
out.println("<TD><B>Nom de la province/territoire</B></TD>"); 
out.println("<TD><B>Taxe 1</B></TD>"); 
out.println("<TD><B>Taxe 2</B></TD>"); 
out.println("<TD><B>Taux</B></TD>"); 
out.println("<TD><B>1$</B></TD>"); 
out.println("<TD><B>15$</B></TD>"); 
out.println("<TD><B>44,95$</B></TD>"); 
out.println("<TD><B>100$</B></TD>"); 
out.println("</TR>"); 
for(int I=0;I<Compute.length;I++) { 
    double Tax = 0; 
    out.print("<TR>"); 
    out.print("<TD>"+RegionName_FR[I]+"</TD>"); 
    out.print("<TD>"+TaxName1[I] + ":" + TaxRate1[I] + "%</TD>"); 
    if(TaxName2[I]=="") { 
         out.print("<TD> </TD>"); 
    } else { 
         out.print("<TD>"+TaxName2[I] + ":" + TaxRate2[I]+"</TD>"); 

    } 
    out.print("<TD>");
    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; 
    } 
    out.print(Double.toString(Tax) + "%"); 
    out.print("</TD>");
    out.print("<TD>"+DF.format(1*(1+(Tax/100))) + "$</TD>"); 
    out.print("<TD>"+DF.format(15*(1+(Tax/100))) + "$</TD>"); 
    out.print("<TD>"+DF.format(44.95*(1+(Tax/100))) + "$</TD>"); 
    out.print("<TD>"+DF.format(100*(1+(Tax/100))) + "$</TD>"); 
    out.println("</TR>"); 
}
out.println("</TABLE>"); 
%>
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