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