Ver Mensaje Individual
  #1  
Antiguo 16-07-2015
sam123 sam123 is offline
Registrado
NULL
 
Registrado: jul 2015
Posts: 6
Reputación: 0
sam123 Va por buen camino
Convertir Números a Letras con Centavos

Quien me ayuda, tengo este procedimiento para convertir numeros a Letras, al momento de convertir a letras no convierte los centavos, les agradecere
Código SQL [-]
begin

   if (PVALOR IS NULL) then

   EXIT;

    VVALOR= abs(PVALOR);

   if (vvalor = 0) THEN  VLETRAS =  'CERO';

   else if (VVALOR = 1) then   VLETRAS = 'UN';

   else if (VVALOR = 2) then   VLETRAS = 'DOS';

   else if (VVALOR = 3) then   VLETRAS = 'TRES';

   else if (VVALOR = 4) then   VLETRAS = 'CUATRO';

   else if (VVALOR = 5) then   VLETRAS = 'CINCO';

   else if (VVALOR = 6) then   VLETRAS = 'SEIS';

   else if (VVALOR = 7) then   VLETRAS = 'SIETE';

   else if (VVALOR = 8) then   VLETRAS = 'OCHO';

   else if (VVALOR = 9) then   VLETRAS = 'NUEVE';

   else if (VVALOR = 10) then   VLETRAS = 'DIEZ';

   else if (VVALOR = 11) then   VLETRAS = 'ONCE';

   else if (VVALOR = 12) then   VLETRAS = 'DOCE';

   else if (VVALOR = 13) then   VLETRAS = 'TRECE';

   else if (VVALOR = 14) then   VLETRAS = 'CATORCE';

   else if (VVALOR = 15) then   VLETRAS = 'QUINCE';

   else if (VVALOR < 20) then

   begin

    select rvalor  from sp_numletras(:vvalor - 10) into VELETRAS2;

    VLETRAS = 'DIECI' || VELETRAS2;

   end

   else if (VVALOR = 20) then   VLETRAS = 'VEINTE';

   else if (VVALOR < 30) then

   begin

    select rvalor  from sp_numletras(:pvalor - 20) into VELETRAS2;

    VLETRAS = 'VEINTI' || VELETRAS2;

   end

   else if (VVALOR = 30) then   VLETRAS = 'TREINTA';

   else if (VVALOR = 40) then   VLETRAS = 'CUARENTA';

   else if (VVALOR = 50) then   VLETRAS = 'CINCUENTA';

   else if (VVALOR = 60) then   VLETRAS = 'SESENTA';

   else if (VVALOR = 70) then   VLETRAS = 'SETENTA';

   else if (VVALOR = 80) then   VLETRAS = 'OCHENTA';

   else if (VVALOR = 90) then   VLETRAS = 'NOVENTA';

   else if (VVALOR < 100) then

   begin

   vvlr_entero = TRUNC(VVALOR / 10.2);

   select rvalor  from sp_numletras(:VVLR_ENTERO * 10) into VELETRAS2;

   select rvalor  from sp_numletras(MOD(:VVALOR,10)) into VELETRAS3;

   VLETRAS = VELETRAS2 || ' Y ' || VELETRAS3;

   END

   else if (VVALOR = 100) then   VLETRAS = 'CIEN';

   else if (VVALOR < 200) then

   begin

    select rvalor  from sp_numletras(:vvalor - 100) into VELETRAS2;

    VLETRAS = 'CIENTO  ' || VELETRAS2;

   END

   ELSE  if ((VVALOR = 200) or (VVALOR = 300) or (VVALOR = 400) or (VVALOR = 600) or (VVALOR = 800)) THEN

   begin

   vvlr_entero = TRUNC(VVALOR || 00/100);

    select rvalor  from sp_numletras(:VVLR_ENTERO) into VELETRAS2;

    VLETRAS = VELETRAS2 || ' ' || 'CIENTOS';

   END

   else if (VVALOR = 500) then   VLETRAS = 'QUINIENTOS';

   else if (VVALOR = 700) then   VLETRAS = 'SETECIENTOS';

   else if (VVALOR = 900) then   VLETRAS = 'NOVECIENTOS';

   else if (VVALOR < 1000) then

   begin

   vvlr_entero = TRUNC(VVALOR / 100);

   select rvalor  from sp_numletras(:VVLR_ENTERO * 100) into VELETRAS2;

   select rvalor  from sp_numletras(MOD(:VVALOR,100)) into VELETRAS3;

   VLETRAS = :VELETRAS2 || ' ' || :VELETRAS3;

   END

   else if (VVALOR = 1000) then   VLETRAS = 'MIL';

   else if (VVALOR < 2000) then

   begin

    select rvalor  from sp_numletras(MOD(:vvalor , 1000)) into VELETRAS2;

    VLETRAS = 'MIL  ' || VELETRAS2;

   END

   else if (VVALOR < 1000000) then

   begin

   vvlr_entero = TRUNC(VVALOR / 1000);

   select rvalor  from sp_numletras(:VVLR_ENTERO) into VELETRAS2;

   select rvalor  from sp_numletras(MOD(:VVALOR,1000)) into VELETRAS3;

   VLETRAS = VELETRAS2 || ' MIL ' ||  VELETRAS3;

   END

   else if (VVALOR = 1000000) then   VLETRAS = 'UN MILLON';

   else if (VVALOR < 2000000) then

   begin

    select rvalor  from sp_numletras(MOD(:vvalor , 1000000)) into VELETRAS2;

    VLETRAS = 'UN MILLON  ' || VELETRAS2;

   END

   else if (VVALOR < 1000000000000) then

   begin

   vvlr_entero = TRUNC(VVALOR / 1000000);

   select rvalor  from sp_numletras(:VVLR_ENTERO) into VELETRAS2;

   select rvalor  from sp_numletras(:VVALOR - :VVLR_ENTERO * 1000000) into VELETRAS3;

   VLETRAS = :VELETRAS2 || ' MILLONES ' ||  :VELETRAS3;

   END

   else if (VVALOR = 1000000000000) then   VLETRAS = 'UN BILLON';

   else if (VVALOR < 2000000000000) then

   begin

    vvlr_entero = TRUNC(VVALOR / 1000000000000);

    select rvalor  from sp_numletras(:vvalor - :VVLR_ENTERO * 1000000000000.00) into VELETRAS2;

    VLETRAS = 'UN BILLON  ' || VELETRAS2;

   END

   else

    BEGIN

    vvlr_entero = TRUNC(VVALOR / 1000000000000,00);

    select rvalor  from sp_numletras(:VVLR_ENTERO) into VELETRAS2;

    select rvalor  from sp_numletras(:VVALOR - :VVLR_ENTERO * 1000000000000) into VELETRAS3;

    VLETRAS = VELETRAS2 || ' BILLONES ' ||  VELETRAS3;

    END

   RVALOR = VLETRAS;

  suspend;

end

Última edición por ecfisa fecha: 16-07-2015 a las 14:45:13. Razón: Etiquetas [SQL] [/SQL]
Responder Con Cita