Como convertir números-letras en FoxPro

Estoy haciendo una base de datos con un sistema de facturación y quisiera saber si tienen una función que convierta números a caracteres para imprimr una factura, gracias de antemano

1 Respuesta

Respuesta
1
Aquí tienes una función que me hice para escribir recibos, esta limitada a 9.999.999,99 para nombre masculina de moneda (Euros en este caso). Seguro que es optimizable, pero funciona, así que te la paso.
Saludos.
function escribir
*** Parametro numérico: Importe a escribir en letras, esta función esta limitada a 9.999.999,99
para importe
** Definición de los vocables
dime cifras(9,6)
cifras(1,1) = 1
cifras(1,2) = 'uno'
cifras(1,3) = 'diez'
cifras(1,4) = 'once'
cifras(1,5) = 'veintiun'
cifras(1,6) = 'ciento'
cifras(2,1) = 2
cifras(2,2) = 'dos'
cifras(2,3) = 'veinte'
cifras(2,4) = 'doce'
cifras(2,5) = 'veintidós'
cifras(2,6) = 'doscientos'
cifras(3,1) = 3
cifras(3,2) = 'tres'
cifras(3,3) = 'treinta'
cifras(3,4) = 'trece'
cifras(3,5) = 'veintitrés'
cifras(3,6) = 'trescientos'
cifras(4,1) = 4
cifras(4,2) = 'cuatro'
cifras(4,3) = 'cuarenta'
cifras(4,4) = 'catorce'
cifras(4,5) = 'veinticuatro'
cifras(4,6) = 'cuatrocientos'
cifras(5,1) = 5
cifras(5,2) = 'cinco'
cifras(5,3) = 'cincuenta'
cifras(5,4) = 'quince'
cifras(5,5) = 'veinticinco'
cifras(5,6) = 'quinientos'
cifras(6,1) = 6
cifras(6,2) = 'seis'
cifras(6,3) = 'sesenta'
cifras(6,4) = 'dieciséis'
cifras(6,5) = 'veintiséis'
cifras(6,6) = 'seiscientos'
cifras(7,1) = 7
cifras(7,2) = 'siete'
cifras(7,3) = 'setenta'
cifras(7,4) = 'diecisiete'
cifras(7,5) = 'veintisiete'
cifras(7,6) = 'setecientos'
cifras(8,1) = 8
cifras(8,2) = 'ocho'
cifras(8,3) = 'ochenta'
cifras(8,4) = 'dieciocho'
cifras(8,5) = 'veintiocho'
cifras(8,6) = 'ochocientos'
cifras(9,1) = 9
cifras(9,2) = 'nueve'
cifras(9,3) = 'noventa'
cifras(9,4) = 'diecinueve'
cifras(9,5) = 'veintinueve'
cifras(9,6) = 'novecientos'
nparteentera = int(importe)
cparteentera = allt(str(nParteEntera))
nCentimos = (importe - nParteEntera) * 100
cCentimos = allt(str(nCentimos))
cimporte = cParteEntera
Store 0 to unidad, decenias, centenares, miles, diezmiles, cienmiles, millones, decimales, céntimos
largo = len(cimporte)
*** Definición de la unidad
if len(cimporte) >= 1
if val(right(cimporte,1))=0
unidad = ''
else
unidad = cifras(val(right(cimporte,1)),2)
endif
letras = unidad
endif
*** Definición de las decenas
if len(cimporte) >= 2
if val(subs(cimporte,largo-1,1))=0
letras = unidad
else
if val(subs(cimporte,largo-1,1))<>2
decenias = cifras(val(subs(cimporte,largo-1,1)),3)
if !empty(unidad)
letras = decenias+' y '+letras
if subs(cimporte,largo-1,1)='1'
letras = cifras(val(right(cimporte,1)),4)
endif
else
letras = decenias
endif
else
if !empty(unidad)
decenias = cifras(val(subs(cimporte,largo,1)),5)
else
decenias = cifras(val(subs(cimporte,largo-1,1)),3)
endif
letras = decenias
endif
endif
endif
*** Definición de los centenares
if len(cimporte) >= 3
if val(subs(cimporte,largo-2,1)) <> 0
centenares = cifras(val(subs(cimporte,largo-2,1)),6)
if subs(cimporte,largo-2,1) = '1'
if empty(letras)
centenares = 'cien'
else
centenares = 'ciento'
endif
endif
letras = centenares + ' ' + letras
endif
endif
letrasant = letras
*** Definición de los miles
if len(cimporte) >= 4
if val(subs(cimporte,largo-3,1)) <> 0
miles = cifras(val(subs(cimporte,largo-3,1)),2) +' mil '
if subs(cimporte,largo-3,1) = '1'
miles = 'mil '
endif
letras = miles + letras
endif
endif
*** Definición de las decenas de miles
if len(cimporte) >= 5
digito = val(subs(cimporte,largo-4,1))
digito_ant = val(subs(cimporte,largo-3,1))
if digito = 0
letras = letras
else
if digito_ant = 0
letras = cifras(digito,3) + ' mil ' + letrasant
else
if inlist(digito,1,2)
letras = cifras(digito_ant,3 + digito) + ' mil ' + letrasant
else
letras = cifras(digito,3) + ' y ' + cifras(val(subs(cimporte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas