Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/05/2009, 12:33
Avatar de ginitofl
ginitofl
 
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 17 años, 4 meses
Puntos: 22
[APORTE] Funcion para convertir numeros a letras

Hola a Todos publico esta pequeña funcion para todos aquellos que necesiten de una funcion para poder convertir numeros a letras, en este caso lo hice para la moneda de Peru (Nuevo Sol), espero sus apreciaciones y tambien si hay que mejorar o cambiar algo. por ahora convierte numeros de 1 a 999999999.99, bueno la funcion es esta lo guardo como cantidadenletras.php:

Código PHP:
<?php
function CantidadEnLetra($tyCantidad

$tyCantidad round($tyCantidad 100) / 100;
$lyCantidad = (int)$tyCantidad;
$lyCentavos = ($tyCantidad $lyCantidad) * 100;
$lyCentavos round($lyCentavos 100) / 100;
$laUnidades = Array("UN""DOS""TRES""CUATRO""CINCO""SEIS""SIETE""OCHO""NUEVE""DIEZ""ONCE""DOCE""TRECE""CATORCE""QUINCE""DIECISEIS""DIECISIETE""DIECIOCHO""DIECINUEVE""VEINTE""VEINTIUN""VEINTIDOS""VEINTITRES""VEINTICUATRO""VEINTICINCO""VEINTISEIS""VEINTISIETE""VEINTIOCHO""VEINTINUEVE");
$laDecenas = Array("DIEZ""VEINTE""TREINTA""CUARENTA""CINCUENTA""SESENTA""SETENTA""OCHENTA""NOVENTA");
$laCentenas = Array("CIENTO""DOSCIENTOS""TRESCIENTOS""CUATROCIENTOS""QUINIENTOS""SEISCIENTOS""SETECIENTOS""OCHOCIENTOS""NOVECIENTOS");
$lnNumeroBloques 0;
do
{
    
$lnNumeroBloques++;
    
$lnPrimerDigito 0;
    
$lnSegundoDigito 0;
    
$lnTercerDigito 0;
    
$lcBloque "";
    
$lnBloqueCero 0;
    for(
$i 1$i <= 3$i++)
    {
        
$lnDigito $lyCantidad &#37; 10;
        
if($lnDigito != 0)
        {
            switch(
$i)
            {
                case 
1:
                    
$lcBloque " " $laUnidades[$lnDigito 1];
                    
$lnPrimerDigito $lnDigito;
                    break;
                case 
2:
                    If (
$lnDigito <= 2)
                    {
                        
$lcBloque " " $laUnidades[($lnDigito 10) + $lnPrimerDigito 1];
                    }
                    else
                    {
                        if(
$lnPrimerDigito != 0)
                        {
                        
$y =" Y";
                        }
                        else
                        {
                        
$y=" ";
                        }
                        
                        
$lcBloque " " $laDecenas[$lnDigito 1] . $y $lcBloque;
                    }
                    
$lnSegundoDigito $lnDigito;
                    break;
                case 
3:
                    if(
$lnDigito == and $lnPrimerDigito == and $lnSegundoDigito == 0)
                    {
                        
$cien "CIEN";
                    }
                    else
                    {
                        
$cien $laCentenas[$lnDigito 1];
                    }
                    
$lcBloque " " $cien $lcBloque;
                    
$lnTercerDigito $lnDigito;
                    break;
            }
        }
        else
        {
            
$lnBloqueCero $lnBloqueCero 1;
        }
        
$lyCantidad $lyCantidad 10;
        
$lyCantidad = (int)$lyCantidad;
        If (
$lyCantidad == 0)
        {
            break;
        }
    }
    switch(
$lnNumeroBloques)
    {
        case 
1:
            
$CantidadEnLetra $lcBloque;
            
$CORTALETRA substr($CantidadEnLetra, -2); 
            if (
$CORTALETRA == "UN")
            {
                
$CantidadEnLetra $lcBloque "O";
            }
            break;
        case 
2:
            if (
$lcBloque == " UN")
            {
                if(
$lnBloqueCero != 3)
                {
                
$mil" MIL";
                }
                
$CantidadEnLetra $mil $CantidadEnLetra;
                
$CORTALETRA substr($CantidadEnLetra, -2);
                if (
$CORTALETRA == "UN")
                {
                    
$CantidadEnLetra $lcBloque "O";
                }
            }
            else
            {
                if(
$lnBloqueCero != 3)
                {
                    
$mil=" MIL";
                }
                
$CantidadEnLetra $lcBloque $mil $CantidadEnLetra;
                
$CORTALETRA substr($CantidadEnLetra, -2);
                if (
CORTALETRA == "UN")
                {
                    
$CantidadEnLetra $lcBloque "O";
                }
            }
            break;
        case 
3:
            if(
$lnPrimerDigito == And $lnSegundoDigito == And $lnTercerDigito == 0)
            {
            
$millon" MILLON";
            }
            else
            {
            
$millon" MILLONES";
            }
            
$CantidadEnLetra $lcBloque $millon $CantidadEnLetra;
            
$CORTALETRA substr($CantidadEnLetra, -2);
            if (
$CORTALETRA == "UN")
            {
                
$CantidadEnLetra $lcBloque "O";
            }
            break;
        }
}while(
$lyCantidad 0);
$con=" CON ";
$CantidadEnLetra $CantidadEnLetra $con $lyCentavos "/100 NUEVOS SOLES";
return 
$CantidadEnLetra;
}
//PARA LLAMAR A LA FUNCION
//echo CantidadEnLetra(1289191);
//echo "<br>";
//CantidadEnLetra(999999999.99);
?>
Saludos.

Última edición por ginitofl; 08/05/2009 a las 22:52 Razón: Ajustar Detalles