diff --git a/htdocs/lib/functions.inc.php3 b/htdocs/lib/functions.inc.php3 index 382eaa0282c..102a53cc183 100644 --- a/htdocs/lib/functions.inc.php3 +++ b/htdocs/lib/functions.inc.php3 @@ -24,6 +24,206 @@ // return $texte; //} + + +function transcoS2L($zonein,$devise) +{ + // Open source offert par alainfloch@free.fr 28/10/2001, sans garantie. + // début de la fonction de transcodification de somme en toutes lettres + + /* $zonein = "123,56"; + * $devise = "E"; // préciser F si francs , sinon ce sera de l'euro + * $r = transcoS2L($zonein,$devise); // appeler la fonction + * echo "résultat vaut $r
"; + * $zonelettresM = strtoupper($r); // si vous voulez la même zone mais tout en majuscules + * echo "résultat en Majuscules vaut $zonelettresM
"; + * $zonein = "1,01"; + * $r = transcoS2L($zonein,$devise); + * echo "résultat vaut $r
"; + */ + + + if ($devise == "F") + { + $unite_singulier = " franc "; + $unite_pluriel = " francs "; + $cent_singulier = " centime"; + } + else + { + $unite_singulier = " euro "; + $unite_pluriel = " euros "; + $cent_singulier = " centime"; + } + + $arr1_99 = array("zéro","un","deux","trois", + "quatre","cinq","six","sept", + "huit","neuf","dix","onze","douze", + "treize","quatorze","quinze","seize", + "dix-sept","dix-huit","dix-neuf","vingt "); + + $arr1_99[30] = "trente "; + $arr1_99[40] = "quarante "; + $arr1_99[50] = "cinquante "; + $arr1_99[60] = "soixante "; + $arr1_99[70] = "soixante-dix "; + $arr1_99[71] = "soixante et onze"; + $arr1_99[80] = "quatre-vingts "; + $i = 22; + while ($i < 63) {// initialise la table + $arr1_99[$i - 1] = $arr1_99[$i - 2]." et un"; + $j = 0; + while ($j < 8) { + $k = $i + $j; + $arr1_99[$k] = $arr1_99[$i - 2].$arr1_99[$j + 2]; + $j++; + } + $i = $i + 10; + } // fin initialise la table + + $i = 12; + while ($i < 20) {// initialise la table (suite) + $j = 60 + $i; + $arr1_99[$j] = "soixante-".$arr1_99[$i]; + $i++; + } // fin initialise la table (suite) + + $i = 1; + while ($i < 20) {// initialise la table (fin) + $j = 80 + $i; + $arr1_99[$j] = "quatre-vingt-".$arr1_99[$i]; + $i++; + } // fin initialise la table (fin) + echo "Pour une valeur en entrée = $zonein
"; //pour ceux qui ne croient que ce qu'ils voient ! + // quelques petits controles s'imposent !! + $valid = "[a-zA-Z\&\é\"\'\(\-\è\_\ç\à\)\=\;\:\!\*\$\^\<\>]"; + if (ereg($valid,$zonein)) + { + $r = "la chaîne ".$zonein." n'est pas valide"; + return($r); + } + $zone = explode(" ",$zonein); // supprimer les blancs séparateurs + $zonein = implode("",$zone); // reconcatène la zone input + $zone = explode(".",$zonein); // supprimer les points séparateurs + $zonein = implode("",$zone); // reconcatène la zone input, ça c'est fort ! merci PHP + $virg = strpos($zonein,",",1); // à la poursuite de la virgule + $i = strlen($zonein); // et de la longueur de la zone input + if ($virg == 0) { // ya pas de virgule + if ($i > 7) + { + $r = "la chaîne ".$zonein." est trop longue (maxi = 9 millions)"; + return($r); + } + $deb = 7 - $i; + $zoneanaly = substr($zonechiffres,0,$deb).$zonein.",00"; + } + else + { //ya une virgule + $ti = explode(",",$zonein); // mettre de côté ce qu'il y a devant la virgule + $i = strlen($ti[0]); // en controler la longueur + $zonechiffres = "0000000,00"; + if ($i > 7) + { + $r = "la chaîne ".$zonein." est trop longue (maxi = 9 millions,00)"; + return($r); + } + $deb = 7 - $i; + $zoneanaly = substr($zonechiffres,0,$deb).$zonein; + } + $M= substr($zoneanaly,0,1); + if ($M != 0) + { // qui veut gagner des millions + $r = $arr1_99[$M]." million"; + if ($M ==1) $r = $r." "; + else $r = $r."s "; + if (substr($zoneanaly,1,6)==0) + { + if ($devise == 'F') $r = $r." de "; + else $r = $r."d'"; + } + } + $CM= substr($zoneanaly,1,1); + if ($CM == 1) + { // qui veut gagner des centaines de mille + $r = $r." cent "; + } + else + { // ya des centaines de mille + if ($CM > 1) + { + $r = $r. $arr1_99[$CM]." cent "; + } + } // fin du else ya des centaines de mille + $MM= substr($zoneanaly,2,2); + if (substr($zoneanaly,2,1)==0){ $MM = substr($zoneanaly,3,1);} // enlever le zéro des milliers cause indexation + if ($MM ==0 && $CM > 0) + { + $r = $r."mille "; + } + if ($MM != 0) + { + if ($MM == 80) + { + $r = $r."quatre-vingt mille "; + } + else + { + if ($MM > 1 ) + { + $r = $r.$arr1_99[$MM]." mille "; + } + else + { + if ($CM == 0) $r = $r." mille "; + else + { + $r = $r.$arr1_99[$MM]." mille "; + } + } + } + } + $C2= substr($zoneanaly,5,2); + if (substr($zoneanaly,5,1)==0){ $C2 = substr($zoneanaly,6,1);} // enlever le zéro des centaines cause indexation + $C1= substr($zoneanaly,4,1); + if ($C2 ==0 && $C1 > 1) + { + $r = $r.$arr1_99[$C1]." cents "; + } + else + { + if ($C1 == 1) $r = $r." cent "; + else + { + if ($C1 > 1) $r = $r.$arr1_99[$C1]." cent "; + } + } + if ($C2 != 0) + { + $r = $r.$arr1_99[$C2]; + } + if ($virg !=0) + { + if ($ti[0] > 1) $r = $r. $unite_pluriel; else $r = "un ".$unite_singulier; + } + else + { + if ($zonein > 1) $r = $r.$unite_pluriel; else $r = "un ".$unite_singulier; + } + $UN= substr($zoneanaly,8,2); + if ($UN != "00") + { + $cts = $UN; + if (substr($UN,0,1)==0){ $cts = substr($UN,1,1);} // enlever le zéro des centimes cause indexation + $r = $r." et ". $arr1_99[$cts].$cent_singulier; + if ($UN > 1) $r =$r."s"; // accorde au pluriel + } + $r1 = ltrim($r); // enleve quelques blancs possibles en début de zone + $r = ucfirst($r1); // met le 1er caractère en Majuscule, c'est + zoli + return($r); // retourne le résultat +} // fin fonction transcoS2L + + + function print_liste_field_titre($name, $file, $field, $begin="") { global $conf;