Utilizamos cookies propias y de terceros para mejorar la experiencia de navegación, y ofrecer contenidos y publicidad de interés. Al continuar con la navegación entendemos que se acepta nuestra política de cookies.
AMIGOS ME QUITO EL SOMBRERO ESTA APORTACION ES MUY BUENA AL IGUAL QUE LA GENTE QUE COMENTO EN ESTE POST. FELICIDADES A OSCAR Y A LOS FORISTAS. MIL GRACIAS
Para la moneda, y evitarnos la molestia de hacer cambios sobre la marcha en caso de utilizar más de una (nacional, extranjeras), me tomé la libertad de hacer el siguiente cambio.
Al llamar la función, agregar un parámetro numérico. En mi caso 1,2,3. Al ser de Costa Rica, el 1 corresponde nuestra moneda nacional, 2 a los dólares y 3 a los euros... de más está decir que podríamos seguir con otras monedas. Para valorarlo: ($_moneda es la variable nueva en la función)
1
2
3
4
5
6
7
8
9
10
11
12
13
switch($_moneda)
{
case 1:
$_nommoneda='COLONES';
break;
case 2:
$_nommoneda='DÓLARES';
break;
case 3:
$_nommoneda='EUROS';
break;
}
//*******
Y para imprimir los decimales, no me compliqué mucho:
1
2
3
$_dec1=($numero-intval($numero))*100;
$_dec2=number_format($_dec1);
$numf = milmillon($numero).' '.$_nommoneda.' CON '.$_dec2.'/100 ';
hola como hacer para correrlo porke ya intente y no me corre ... Me podrias ayudar oscar galvis porfavor te agradeceria mucho.
Responder
Juan Diego Bartolo
8 de Julio del 2017
Con mas de 1.000 millones no funciona.
Responder
Pablo Cruz
4 de Agosto del 2017
Excelente aporte.
Responder
JOSE LOPEZ
28 de Octubre del 2017
Muy bueno el aporte, en hora buena, mil gracias.
Responder
davincy
15 de Noviembre del 2017
modifique el return de convertir a
return $numf." PESOS CON ".milmillon($cents)." CENTAVOS $cents/100";
para usarlo en la representacion impresa del CFDI mexicano
Responder
Oswaldo
7 de Abril del 2019
Excelente aporte, solo trae un detalle en cantidades que terminan en UN pone UNO, por ejemplo
31,200.45 TREINTA Y UNO MIL DOSCIENTOS 45/100
Responder
Marcos
13 de Mayo del 2019
Excelente aporte!, me sirvió bastante :)
Responder
Fernando Magrosoto
15 de Mayo del 2019
Maravilloso script, muchas gracias a todos los que colaboraron.
Funciona de maravilla.
Responder
Miguel Mtz
6 de Junio del 2019
Muchas gracias por el codigo, me sirvio mucho. Saludos
Responder
gustavo
10 de Junio del 2019
excelente aporte, muchas gracias me sirvio mucho
Responder
Jaisantex
6 de Mayo del 2020
No me funcionó.....
Responder
Christian
13 de Septiembre del 2020
Muchas muchas muchas gracias, funciona perfecto.
Responder
Oscar Ferney
18 de Febrero del 2021
Muchas gracias por la colaboración, pero tengo una pregunta, como se haría con valores cerrados, por ejemplo si es $1.000.000 la idea es que retorne UN MILLON DE PESOS, pero retorna UN MILLON PESOS, faltando la palabra "DE" en los números cerrados. Agradecería si alguien sabe como hacer esa modificación.
Responder
GILBERTO SOTO
25 de Agosto del 2021
Esta es la mejro forma de hacerlo
$formatterES = new NumberFormatter("es-ES", NumberFormatter::SPELLOUT);
$n = 123.45;
$izquierda = intval(floor($n));
$derecha = intval(($n - floor($n)) * 100);
echo $formatterES->format($izquierda) . " coma " . $formatterES->format($derecha);
// ciento veintitrés coma cuarenta y cinco
Responder
Javier Alejandro Gómez
21 de Octubre del 2021
Modifique el metodo principal para poder imprimir los centavos, y si es en MXN o USD
public function convertirNumeroLetra($numero, $tipo)
{
Comentarios sobre la versión: Versión 1 (32)
Muchas Gracias... :)
{
case 9:
{
}
case 8:
{
}
case 7:
{
}
case 6:
{
}
case 5:
{
}
case 4:
{
}
case 3:
{
}
case 2:
{
}
case 1:
{
}
case 0:
{
}
}
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
case 10:
{
}
case 11:
{
}
case 12:
{
}
case 13:
{
}
case 14:
{
}
case 15:
{
}
case 16:
{
}
case 17:
{
}
case 18:
{
}
case 19:
{
}
}
}
}
{
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
Saludos
Lutian
saludos! muy util
{
case 9:
{
}
case 8:
{
}
case 7:
{
}
case 6:
{
}
case 5:
{
}
case 4:
{
}
case 3:
{
}
case 2:
{
}
case 1:
{
}
case 0:
{
}
}
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
case 10:
{
}
case 11:
{
}
case 12:
{
}
case 13:
{
}
case 14:
{
}
case 15:
{
}
case 16:
{
}
case 17:
{
}
case 18:
{
}
case 19:
{
}
}
}
}
{
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
{
}
{
}
$TextEnd = $numf;
}
{
}
}
require "conversor.php";
{
}
{
$numero = 0;
}
{
}
//MODIFICADO POR sindy Castillo
///Para generar los decimales
}
Para la moneda, y evitarnos la molestia de hacer cambios sobre la marcha en caso de utilizar más de una (nacional, extranjeras), me tomé la libertad de hacer el siguiente cambio.
Al llamar la función, agregar un parámetro numérico. En mi caso 1,2,3. Al ser de Costa Rica, el 1 corresponde nuestra moneda nacional, 2 a los dólares y 3 a los euros... de más está decir que podríamos seguir con otras monedas. Para valorarlo: ($_moneda es la variable nueva en la función)
{
case 1:
case 2:
case 3:
}
//*******
Y para imprimir los decimales, no me compliqué mucho:
Por si acaso les sirviera.
Saludos
Valor=15355.55
UN MILLÓN TRESCIENTOS CINCUENTA Y CINCO COLONES CON 55/100
Por razones de costumbre, cambié el nombre a la función:
$monto_letras=numletras(1355.55,1)
Y toda la función quedó de la siguiente manera:
//************* INICIO DE CÓDIGO *********
/*
$numero=valor a retornar en letras.
$_moneda=1=Colones, 2=Dólares 3=Euros
Las siguientes funciones (unidad() hasta milmillon() forman parte de ésta función
*/
{
{
case 1:
case 2:
case 3:
}
//***
{
}
}
{
}
}
{
case 9:
{
}
case 8:
{
}
case 7:
{
}
case 6:
{
}
case 5:
{
}
case 4:
{
}
case 3:
{
}
case 2:
{
}
case 1:
{
}
case 0:
{
}
}
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
case 10:
{
}
case 11:
{
}
case 12:
{
}
case 13:
{
}
case 14:
{
}
case 15:
{
}
case 16:
{
}
case 17:
{
}
case 18:
{
}
case 19:
{
}
}
}
}
{
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
//******* FIN DE CÓDIGO ********
return $numf." PESOS CON ".milmillon($cents)." CENTAVOS $cents/100";
para usarlo en la representacion impresa del CFDI mexicano
31,200.45 TREINTA Y UNO MIL DOSCIENTOS 45/100
Funciona de maravilla.
$formatterES = new NumberFormatter("es-ES", NumberFormatter::SPELLOUT);
$n = 123.45;
$izquierda = intval(floor($n));
$derecha = intval(($n - floor($n)) * 100);
echo $formatterES->format($izquierda) . " coma " . $formatterES->format($derecha);
// ciento veintitrés coma cuarenta y cinco
public function convertirNumeroLetra($numero, $tipo)
{
$tempnum = explode('.', $numero);
$numf = $this->milmillon($tempnum[0]);
$dec = $this->milmillon($tempnum[1]);
if ($tipo === 'MXN') {
return $numf . " PESOS, CON $dec CENTAVOS MXN";
} else {
return $numf . " DOLARES, CON $dec CENTAVOS USD";
}
}