<html>
<head>
<title>Salaire</title>
<script language="javascript">
var resultat = new Array(new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array());
//variable contenant la valeur des billets
var billet = new Array(500,200,100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01);
//variable pour de test, elle ne sert normalement plus à rien à la phase final mais est laissé au cas où que j'aurais oublié de modifié de nom la variable définitive
var test="";
//variable qui servira de limitation de boucle en fonction du nombre de valeur encodée
var employeNbr=10;
//fonction qui supprime les cases vides...Enfin, pas très au point...
function Nettoyage()
  {
  for(o=9;o>-1;o--)
    {
	if (document.paie.salaire[o].value == "")
	  {
      employeNbr = o;
	  } 
	}
  }
//fonction qui vérifira les données encodées par l'utilisateur
function Vérification(compt)
  {
  //variable qui indiquera la ligne du formulaire où peut se trouve l'erreur
  var precision = compt+1;
  
  //on récupére chaques valeurs du formulaire
  //une fois en numérique
  var salaireTemp = parseFloat(document.paie.salaire[compt].value);
  //une fois en chaîne de caractère
  var salaireTempTexte = document.paie.salaire[compt].value;
  
  //condition de chaîne numérique uniquement (cf plus bas)
  var salaireTempChiffre = salaireTemp*0; 
  
  //condition du nombre de décimal (cf plus bas)
  //on récupère la longueur de la chaîne
  var salaireTempLongueur = salaireTempTexte.length;
  //on récupère la position de la "virgule"
  var salaireTempVirguleTemp = salaireTempTexte.indexOf(".");
  //on fait la soustraction des deux pour connaître la position par rapport au bout de chaîne
  var salaireTempVirgule = salaireTempLongueur - salaireTempVirguleTemp;
  
  if(document.paie.employe[compt].value == "")
    {
	alert("Veuillez préciser à qui sera attribué le salaire de la ligne:"+precision);
	exit;
	}
  else if(salaireTempChiffre != 0)
  //On multiplie le nombre par 0, et on vérifie si ca fait bien 0
  //Si ce n'est pas le cas, ce n'est pas un nombre
    {
	alert("Veuillez mettre vous salaire en décimal à la ligne:"+precision);
	exit;
	}
  else if(salaireTempVirgule > 3 && salaireTempVirguleTemp != -1)
  //Si il y a une virgule, la position de la virgule est différente de -1.
  //ET
  //Si la postion de la virgule est supérieur à trois => plus de deux chiffres derrière la virgule
    {
	alert("Veuillez encoder un salaire payable (chiffre au centième!) à la ligne:"+precision);
	exit;	
	}
  else if(salaireTemp < 500)
    {
	alert("N'exploitez pas vos employés: 500€ minimum!");
	exit;	
	}
  else if(salaireTemp > 5000)
    {
	alert("Vous êtez trop généreux: 5000€ maximum!");
	exit;	
	}
  else
    {
    //Si tout va bien, le salaire, placé dans la deuxième colonne
	resultat[1][compt] = salaireTemp;
	}
  }
  
//la fonction qui calculera le nombre de billet en fonction du salaire
function BilletCalcul(compt)
  {
  //création d'une variable qui contiendra le reste de chaque division
  var temp = resultat[1][compt];
  var z;
  for(z=0;z<billet.length;z++)
    {
	//calcul du nombre de billet
	resultat[z+2][compt] = Math.floor(temp/billet[z]);
	//récupération du reste de la divisition
	temp = (temp-resultat[z+2][compt]*billet[z]);
	}
  }
//fonction qui calculera le nombre de billet au total
function Totaux()
  {
  var temp = 0;
  //on fait le tour colonne par colonne
  for(c=0;c<billet.length+1;c++)
    {
	for(l=0;l<employeNbr;l++)
	  {
	  //on addition chaque ligne d'une colonne
	  temp = resultat[c+1][l]+temp;
	  }
	//on place la somme dans en bas de la colonne  
	resultat[c+1][employeNbr] = temp;
	//on n'oublie surtout pas de remettre la varialbe temporaire à 0 pour la prochaine colonne
	temp = 0;
	}
  //Tant qu'on y est, autant remplir toute la dernière ligne	
  resultat[0][employeNbr] = "Totaux";	
  }
//fonction qui affiche le tableau resultat
function Affiche()
  {
  var tableau = "";
  var ligne = new Array("","","","","","","","","","");
  for(l=0;l<employeNbr+1;l++)
    {
    for(c=0;c<billet.length+2;c++)
      {
	  //on génère chaque colonne pour une ligne: employé, nombre de billet
	  ligne[l] += "<td width=\"30px\">"+resultat[c][l]+"</td>";
	  }
	//on rassemble les lignes générés  
	tableau += "<tr align=\"center\">"+ligne[l] + "</tr>";
	}
  //on génére l'entête du tableau	
  var entete = "<td><strong>Employé</strong></td><td><strong>Salaire</strong></td>";
  for(z=0;z<billet.length;z++)	
    {
	entete += "<td><font color=\"#FF0000\">"+billet[z]+"</font></td>";
	}
  document.write("<table border=\"1px\" bordercolor=\"#333333\"  cellpadding=\"3px\" cellspacing=\"0\"><tr align=\"center\">"+entete+"</tr>"+tableau+"</table>");
  }
function Main()
  {
  Nettoyage();
  var i;
  for(i=0;i<employeNbr;i++)
    {
	Vérification(i);
	//ici, le nom des employés qui va être placé dans la première colonne
	resultat[0][i] = document.paie.employe[i].value;
	//Calcul du nombres de billets
	BilletCalcul(i);
	}
  Totaux();	
  Affiche();
  }
</script>
</head>
<body>
Attention, veuillez remplir le formulaire ligne par ligne sans en sauter!<br>
Si il y a une ligne de vide, toutes les valeurs qui suivent ne seront pas prises en compte!<br> <br>
<!-- il est possible de faire une boule mais le copier coller reste plus simple -->
<form name="paie">
  nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
  nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
  nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
  nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
  nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
  nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
  nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
  nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
  nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
  nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
  <input type="button" onClick="Main();" value="Calculer">
</form>
</body>
</html>
			
		
 
	
Partager