Necesito un programa de conversión de números a letras en Visual FoxPro

Hola amigo experto, por favor necesito un programa de conversión de números a letras por ejemplo:
Ingreso : 80,987.25
Sale : ochenta mil novecientos ochentisiete y 25/100 nuevos soles
Mi correo es [email protected]
Gracias...

1 Respuesta

Respuesta
1
Pega le siguiente procedmineto en tu prg, recibe como parámetros una cantidad y una letra, si es dolares pásale la letra "s", si es peso la letra "p" y prueba :
procedure fn_numeroaletra
PARAMETERS pvalor,moneda
IF pvalor <= 0
Return
Endif
* Le devuelvo la parte enetra del Valor a la variable EnteroV
ENTEROV=INT(pvalor)
N = ""
N1 = "UN"
N2 = "DOS"
N3 = "TRES"
N4 = "CUATRO"
N5 = "CINCO"
N6 = "SEIS"
N7 = "SIETE"
N8 = "OCHO"
N9 = "NUEVE"
N10 = "DIEZ"
N11 = "ONCE"
N12 = "DOCE"
N13 = "TRECE"
N14 = "CATORCE"
N15 = "QUINCE"
N16 = "DIECISEIS"
N17 = "DIECISIETE"
N18 = "DIECIOCHO"
N19 = "DIECINUEVE"
N20 = "VEINTE"
N30 = "TREINTA"
N40 = "CUARENTA"
N50 = "CINCUENTA"
N60 = "SESENTA"
N70 = "SETENTA"
N80 = "OCHENTA"
N90 = "NOVENTA"
IF ENTEROV <> 100
N100 = "CIENTO"
ENDIF
IF ENTEROV = 100
N100="CIEN"
ENDIF
N200 = "DOSCIENTOS"
N300 = "TRESCIENTOS"
N400 = "CUATROCIENTOS"
N500 = "QUINIENTOS"
N600 = "SEISCIENTOS"
N700 = "SETECIENTOS"
N800 = "OCHOCIENTOS"
N900 = "NOVECIENTOS"
CONTADOR = 1
INICIO = 1
CADENA = STR(ENTEROV,9)
NUMP = " "
DO WHILE CONTADOR < 4
SUBCADENA = SUBSTR(CADENA,INICIO, 3)
CENTENA = SUBSTR(SUBCADENA,1,1)+"00"
DECENA = SUBSTR(SUBCADENA,2,2)
UNIDAD = SUBSTR(SUBCADENA,3,1)
IF VAL(SUBCADENA) > 99
NUMP = NUMP + N&CENTENA + " "
ENDIF (SUBCADENA > 99)
T = VAL(DECENA)
IF T > 0
DO CASE
CASE (INT(T/10.0) = T/10.0) .OR. (T > 9 .AND. T < 20)
NUMP = NUMP + N&DECENA
CASE T > 9 .AND. (INT(T/10.0) # T/10.0)
DECENA = SUBSTR(DECENA,1,1) + "0"
IF DECENA # "20"
NUMP = NUMP + N&DECENA + " Y " + N&UNIDAD
ELSE
NUMP = NUMP + "VENTI" + N&UNIDAD
ENDIF
CASE T < 10
NUMP = NUMP + N&UNIDAD
ENDCASE
ENDIF (T > 0)
IF ENTEROV > 999999 .AND. CONTADOR = 1
NUMP = NUMP + " MILLONES "
ENDIF
IF NUMP = " UNO MILLONES "
NUMP = " UN MILLON "
ENDIF
IF NUMP = " CIENTO MIL "
NUMP = " CIEN MIL "
ENDIF
IF ENTEROV > 999 .AND. CONTADOR = 2 .AND. VAL(SUBCADENA) > 0
NUMP = NUMP + " MIL "
ENDIF
IF NUMP = " UNO MIL "
NUMP = " MIL "
ENDIF
INICIO = CONTADOR * 3 + 1
CONTADOR = CONTADOR + 1
ENDDO
CENTAV = pvalor-INT(pvalor)
* CENTAV = THISFORM.VABO.VALUE - INT(THISFORM.VABO.VALUE)
*CENTAV = ROUND((CENTAV*100),0)
CENTAV = CENTAV*100
CENTAV = INT(CENTAV)
CENTAV = STR(CENTAV,2)
CENTAV = STRTRAN(CENTAV," ","0")
DESCRIMON=""
DO CASE MONEDA
CASE ALLTRIM(UPPER(MONEDA))= "S"
DESCRIMON=" NUEVOS SOLES "
CASE ALLTRIM(UPPER(MONEDA))="D"
DESCRIMON=" DOLARES AMERICANOS "
CASE ALLTRIM(UPPER(MONEDA))="E"
DESCRIMON=" EUROS "
CASE ALLTRIM(UPPER(MONEDA))="L"
DESCRIMON=" LIBRAS "
CASE ALLTRIM(UPPER(MONEDA))="P"
DECRIMON=" PESOS "
Endcase
NUMP = + NUMP + " CON " + CENTAV + "/ 100" + DESCRIMON
m=nump
* Al Final en Nump Esta el Valor en Letras
return nump
endproc
DO CASE
CASE CARACTER='A'
RETURN "Venta"
CASE CARACTER='B'
RETURN "Consignacion"
CASE CARACTER='C'
RETURN "Traslado entre itinerario de comprobante de pago"
CASE CARACTER='D'
RETURN "Importacion"
CASE CARACTER='E'
RETURN "Transformacion"
CASE CARACTER='F'
RETURN "Traslado entre establecimientos "
CASE CARACTER='G'
RETURN "Exportacion"
CASE CARACTER='H'
RETURN "Otros"
Endcase
ENDPROC

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas