miércoles, 13 de noviembre de 2013

Código Números a Letras Windev


PROCEDURE PesosAletras(Numero)
nEntero is int
nTemporal is int
sLetras is string

nEntero = Numero
SWITCH nEntero
       CASE 0 : sLetras = "CERO"
       CASE 1 : sLetras = "UN"
       CASE 2 : sLetras = "DOS"
       CASE 3 : sLetras = "TRES"
       CASE 4 : sLetras = "CUATRO"
       CASE 5 : sLetras = "CINCO"
       CASE 6 : sLetras = "SEIS"
       CASE 7 : sLetras = "SIETE"
       CASE 8 : sLetras = "OCHO"
       CASE 9 : sLetras = "NUEVE"
       CASE 10 : sLetras = "DIEZ"
       CASE 11 : sLetras = "ONCE"
       CASE 12 : sLetras = "DOCE"
       CASE 13 : sLetras = "TRECE"
       CASE 14 : sLetras = "CATORCE"
       CASE 15 : sLetras = "QUINCE"
       CASE < 20 : sLetras = "DIECI" + PesosAletras(nEntero - 10)
       CASE 20 : sLetras = "VEINTE"
       CASE < 30 : sLetras = "VEINTI" + PesosAletras(nEntero - 20)
       CASE 30 : sLetras = "TREINTA"
       CASE 40 : sLetras = "CUARENTA"
       CASE 50 : sLetras = "CINCUENTA"
       CASE 60 : sLetras = "SESENTA"
       CASE 70 : sLetras = "SETENTA"
       CASE 80 : sLetras = "OCHENTA"
       CASE 90 : sLetras = "NOVENTA"
       CASE < 100 :
             nTemporal = nEntero / 10
             nTemporal = nTemporal * 10
             sLetras = PesosAletras(nTemporal) + "  Y  " + PesosAletras(nEntero-nTemporal)
       CASE 100 : sLetras = "CIEN"
       CASE < 200 : sLetras = "CIENTO " + PesosAletras(nEntero - 100)
       CASE 200, 300, 400, 600, 800 : sLetras = PesosAletras(nEntero/100) + "CIENTOS"
       CASE 500 : sLetras = "QUINIENTOS"
       CASE 700 : sLetras = "SETECIENTOS"
       CASE 900 : sLetras = "NOVECIENTOS"
       CASE < 1000 :
             nTemporal = nEntero / 100
             nTemporal = nTemporal * 100
             sLetras = PesosAletras(nTemporal) + " " + PesosAletras(nEntero-nTemporal)
       CASE 1000 : sLetras = "MIL"
       CASE < 2000 : sLetras = "MIL " + PesosAletras(nEntero-1000)
       CASE < 1000000 :
             sLetras = PesosAletras(nEntero/1000) + " MIL"
             nTemporal = nEntero / 1000
             nTemporal = nTemporal * 1000
             nTemporal = nEntero - nTemporal
             IF nTemporal < 1000 AND nTemporal > 0 THEN
                    sLetras = sLetras + "  " + PesosAletras(nTemporal)
             END
       CASE 1000000 : sLetras = "UN MILLON"
       CASE < 2000000 : sLetras = "UN MILLON " + PesosAletras(nEntero - 1000000)
       CASE < 1000000000000 :
             sLetras = PesosAletras(nEntero/1000000) + " MILLONES"
             nTemporal = nEntero / 1000000
             nTemporal = nTemporal * 1000000
             nTemporal = nEntero - nTemporal
             IF nTemporal < 1000000 AND nTemporal > 0 THEN
                    sLetras = sLetras + "  " + PesosAletras(nTemporal)    
                   
                   
             END
END
RESULT sLetras

4 comentarios:

  1. Muchas gracias por el código.
    Añado un procedimiento utilizando tu código por si alguien lo necesita, para que funcione con decimales.

    PROCEDURE NumeroALetras(pNumero=0, pTipo="Euros", pCentimos="Ctms")
    nParteEntera is int=Abs(IntegerPart(pNumero))
    nParteDecimal is int
    sParteEntera is string=PesosALetras(nParteEntera)
    sParteDecimal is string
    sNegativo is string
    sTexto is string

    IF DecimalPart(pNumero)>0 THEN //Extrae la parte decimal.
    nParteDecimal=Val(ExtractString(NumToString(pNumero),2,"."))
    END

    IF pNumero<0 THEN
    sNegativo="Menos "
    END

    IF sParteEntera<>"" AND pTipo<>"" THEN
    sParteEntera+=" "+pTipo
    END

    IF nParteDecimal>0 THEN
    sParteDecimal=PesosALetras(nParteDecimal)
    END

    IF sParteDecimal<>"" AND pCentimos<>"" THEN
    sParteDecimal=" Con "+sParteDecimal+" "+pCentimos
    END
    sTexto=sNegativo+sParteEntera+sParteDecimal

    RESULT sTexto

    ResponderEliminar
    Respuestas
    1. en que parte lo añadiste perdon eso no entendi ayuda por favor

      Eliminar