45 if ($centimes && strlen((
string) $num) == 1) {
50 $concatWords = $langs->getLabelFromNumber((
string) $num, $currency);
53 $TNum = explode(
'.', (
string) $num);
55 $num = abs((
int) $TNum[0]);
59 $langs->transnoentitiesnoconv(
'one'),
60 $langs->transnoentitiesnoconv(
'two'),
61 $langs->transnoentitiesnoconv(
'three'),
62 $langs->transnoentitiesnoconv(
'four'),
63 $langs->transnoentitiesnoconv(
'five'),
64 $langs->transnoentitiesnoconv(
'six'),
65 $langs->transnoentitiesnoconv(
'seven'),
66 $langs->transnoentitiesnoconv(
'eight'),
67 $langs->transnoentitiesnoconv(
'nine'),
68 $langs->transnoentitiesnoconv(
'ten'),
69 $langs->transnoentitiesnoconv(
'eleven'),
70 $langs->transnoentitiesnoconv(
'twelve'),
71 $langs->transnoentitiesnoconv(
'thirteen'),
72 $langs->transnoentitiesnoconv(
'fourteen'),
73 $langs->transnoentitiesnoconv(
'fifteen'),
74 $langs->transnoentitiesnoconv(
'sixteen'),
75 $langs->transnoentitiesnoconv(
'seventeen'),
76 $langs->transnoentitiesnoconv(
'eighteen'),
77 $langs->transnoentitiesnoconv(
'nineteen')
81 $langs->transnoentitiesnoconv(
'ten'),
82 $langs->transnoentitiesnoconv(
'twenty'),
83 $langs->transnoentitiesnoconv(
'thirty'),
84 $langs->transnoentitiesnoconv(
'forty'),
85 $langs->transnoentitiesnoconv(
'fifty'),
86 $langs->transnoentitiesnoconv(
'sixty'),
87 $langs->transnoentitiesnoconv(
'seventy'),
88 $langs->transnoentitiesnoconv(
'eighty'),
89 $langs->transnoentitiesnoconv(
'ninety'),
90 $langs->transnoentitiesnoconv(
'hundred')
94 $langs->transnoentitiesnoconv(
'thousand'),
95 $langs->transnoentitiesnoconv(
'million'),
96 $langs->transnoentitiesnoconv(
'billion'),
97 $langs->transnoentitiesnoconv(
'trillion'),
98 $langs->transnoentitiesnoconv(
'quadrillion')
101 $num_length = strlen((
string) $num);
102 $levels = (int) (($num_length + 2) / 3);
103 $max_length = $levels * 3;
104 $num = substr(
'00'.$num, -$max_length);
105 $num_levels = str_split($num, 3);
106 $nboflevels = count($num_levels);
107 for ($i = 0; $i < $nboflevels; $i++) {
109 $hundreds = (int) ((
int) $num_levels[$i] / 100);
110 $hundreds = ($hundreds ?
' '.$list1[$hundreds].
' '.$langs->transnoentities(
'hundred').($hundreds == 1 ?
'' :
's').
' ' :
'');
111 $tens = (int) ((
int) $num_levels[$i] % 100);
114 $tens = ($tens ?
' '.$list1[$tens].
' ' :
'');
116 $tsd = (int) ($tens / 10);
117 $usd = (int) ($tens % 10);
121 $tenWord = trim($list1[10]);
122 if ($usd > 0 && ($tsd == 7 || $tsd == 9) && $tenWord !==
'' && strpos(trim($list2[$tsd]), $tenWord) !==
false) {
124 $baseWord = trim($list2[$tsd - 1]);
126 if (substr($baseWord, -1) ===
's') {
127 $baseWord = substr($baseWord, 0, -1);
129 $tens =
' '.$baseWord.
' ';
130 $singles =
' '.$list1[10 + $usd].
' ';
132 $tens =
' '.$list2[$tsd].
' ';
133 $singles =
' '.$list1[$usd].
' ';
136 $words[] = $hundreds.$tens.$singles.(($levels && (int) ($num_levels[$i])) ?
' '.$list3[$levels].
' ' :
'');
138 $commas = count($words);
142 $concatWords = implode(
' ', $words);
144 $concatWords = trim(preg_replace(
'/[ ]+/',
' ', $concatWords));
146 if (!empty($currency)) {
147 $concatWords .=
' '.$currency;
151 $decimalpart = empty($TNum[1]) ?
'' : preg_replace(
'/0+$/',
'', $TNum[1]);
154 if (!empty($currency)) {
155 $concatWords .=
' '.$langs->transnoentities(
'and');
158 $concatWords .=
' '.dol_convertToWord((
float) $decimalpart, $langs,
'',
true);
159 if (!empty($currency)) {
160 $concatWords .=
' '.$langs->transnoentities(
'centimes');
184 if ($numero >= 1000000000001) {
189 $strnumber = number_format($numero, 10);
190 $len = strlen($strnumber);
191 $parte_decimal =
'00';
192 for ($i = 0; $i < $len; $i++) {
193 if ($strnumber[$i] ==
'.') {
194 $parte_decimal = $strnumber[$i + 1].$strnumber[$i + 2];
200 if (((is_object($langs) && $langs->getDefaultLang(0) ==
'es_MX') || (!is_object($langs) && $langs ==
'es_MX')) && $numorcurrency ==
'currency') {
201 if ($numero >= 1 && $numero < 2) {
202 return (
"UN PESO ".$parte_decimal.
" / 100 M.N.");
203 } elseif ($numero >= 0 && $numero < 1) {
204 return (
"CERO PESOS ".$parte_decimal.
" / 100 M.N.");
205 } elseif ($numero >= 1000000 && $numero < 1000001) {
206 return (
"UN MILLÓN DE PESOS ".$parte_decimal.
" / 100 M.N.");
207 } elseif ($numero >= 1000000000000 && $numero < 1000000000001) {
208 return (
"UN BILLÓN DE PESOS ".$parte_decimal.
" / 100 M.N.");
212 if ($number >= 1000000000) {
213 $CdMMillon = (int) ($numero / 100000000000);
214 $numero -= $CdMMillon * 100000000000;
215 $DdMMillon = (int) ($numero / 10000000000);
216 $numero -= $DdMMillon * 10000000000;
217 $UdMMillon = (int) ($numero / 1000000000);
218 $numero -= $UdMMillon * 1000000000;
219 $entexto .=
hundreds2text($CdMMillon, $DdMMillon, $UdMMillon);
226 if ($number >= 1000000) {
227 $CdMILLON = (int) ($numero / 100000000);
228 $numero -= $CdMILLON * 100000000;
229 $DdMILLON = (int) ($numero / 10000000);
230 $numero -= $DdMILLON * 10000000;
231 $udMILLON = (int) ($numero / 1000000);
232 $numero -= $udMILLON * 1000000;
234 if (!$CdMMillon && !$DdMMillon && !$UdMMillon && !$CdMILLON && !$DdMILLON && $udMILLON == 1) {
235 $entexto .=
" MILLÓN ";
237 $entexto .=
" MILLONES ";
241 if ($number >= 1000) {
242 $cdm = (int) ($numero / 100000);
243 $numero -= $cdm * 100000;
244 $ddm = (int) ($numero / 10000);
245 $numero -= $ddm * 10000;
246 $udm = (int) ($numero / 1000);
247 $numero -= $udm * 1000;
249 if ($cdm || $ddm || $udm) {
257 $c = (int) ($numero / 100);
259 $d = (int) ($numero / 10);
260 $u = (int) $numero - $d * 10;
262 if (!$cdm && !$ddm && !$udm && !
$c && !$d && !$u && $number > 1000000) {
265 $entexto .=
" PESOS ".$parte_decimal.
" / 100 M.N.";
282 if ($hundreds == 1 && $tens == 0 && $units == 0) {
285 $centenas = array(
"CIENTO",
"DOSCIENTOS",
"TRESCIENTOS",
"CUATROCIENTOS",
"QUINIENTOS",
"SEISCIENTOS",
"SETECIENTOS",
"OCHOCIENTOS",
"NOVECIENTOS");
286 $decenas = array(
"",
"",
"TREINTA ",
"CUARENTA ",
"CINCUENTA ",
"SESENTA ",
"SETENTA ",
"OCHENTA ",
"NOVENTA ");
287 $veintis = array(
"VEINTE",
"VEINTIUN",
"VEINTIDÓS",
"VEINTITRÉS",
"VEINTICUATRO",
"VEINTICINCO",
"VEINTISÉIS",
"VEINTISIETE",
"VEINTIOCHO",
"VEINTINUEVE");
288 $diecis = array(
"DIEZ",
"ONCE",
"DOCE",
"TRECE",
"CATORCE",
"QUINCE",
"DIECISÉIS",
"DIECISIETE",
"DIECIOCHO",
"DIECINUEVE");
289 $unidades = array(
"UN",
"DOS",
"TRES",
"CUATRO",
"CINCO",
"SEIS",
"SIETE",
"OCHO",
"NUEVE");
291 if ($hundreds != 0) {
292 $entexto .= $centenas[$hundreds - 1];
295 if ($hundreds != 0) {
298 $entexto .= $decenas[$tens - 1];
301 $entexto .= $unidades[$units - 1];
304 } elseif ($tens == 2) {
305 if ($hundreds != 0) {
308 $entexto .=
" ".$veintis[$units];
310 } elseif ($tens == 1) {
311 if ($hundreds != 0) {
314 $entexto .= $diecis[$units];
318 if ($hundreds != 0 || $tens != 0) {
321 $entexto .= $unidades[$units - 1];