Conversion de números a letras

Euro
04 de Enero del 2005
Estoy necesitando alguna rutina o programa para Foxpro que me permita convertir automáticamente números a letras.

Agradezco la ayuda que puedan ofrecerme

javier Gonzalez
04 de Enero del 2005
Checa en tu correo te mande archivo con la funcion de conversion... saludos

kely
04 de Enero del 2005
FUNCIO QUE CONVIERTE NUMEROS A LETRAS

Esta funcion se guardará como archivo tipo prg, luego en el INIT de la Forma poner
SET PROCEDURE To Nombre del prg





Function NumLetras(Total)

Dimension aUnidades(9), aDecenas(14), aCentenas(10)
aUnidades(1) = 'UN'
aUnidades(2) = 'DOS'
aUnidades(3) = 'TRES'
aUnidades(4) = 'CUATRO'
aUnidades(5) = 'CINCO'
aUnidades(6) = 'SEIS'
aUnidades(7) = 'SIETE'
aUnidades(8) = 'OCHO'
aUnidades(9) = 'NUEVE'
aDecenas(1) = 'DIEZ'
aDecenas(2) = 'ONCE'
aDecenas(3) = 'DOCE'
aDecenas(4) = 'TRECE'
aDecenas(5) = 'CATORCE'
aDecenas(6) = 'QUINCE'
aDecenas(7) = 'VEINTE'
aDecenas(8) = 'TREINTA'
aDecenas(9) = 'CUARENTA'
aDecenas(10) = 'CINCUENTA'
aDecenas(11) = 'SESENTA'
aDecenas(12) = 'SETENTA'
aDecenas(13) = 'OCHENTA'
aDecenas(14) = 'NOVENTA'
aCentenas(1) = 'CIEN'
aCentenas(2) = 'DOSCIENTOS'
aCentenas(3) = 'TRESCIENTOS'
aCentenas(4) = 'CUATROCIENTOS'
aCentenas(5) = 'QUINIENTOS'
aCentenas(6) = 'SEISCIENTOS'
aCentenas(7) = 'SETECIENTOS'
aCentenas(8) = 'OCHOCIENTOS'
aCentenas(9) = 'NOVECIENTOS'

vTotal = str(int(Total), 12)

Do case
Case empty(val(vTotal))
Texto = 'CERO DOLARES'

Case val(vTotal) = 1
Texto = 'UN DOLAR'

Otherwise
tCientos = obt_cant(substr(vTotal,10,3))
tMiles = obt_cant(substr(vTotal,7,3))
tMillones = obt_cant(substr(vTotal,4,3))
tMilMillones = obt_cant(substr(vTotal,1,3))

tCientos = tCientos
tMiles = iif(empty(tMiles), '', ;
iif(tMiles='UN', '', tMiles + ' ') + 'MIL ')
tMillones = iif(empty(tMillones), '', ;
tMillones + ' MILLON' + iif(tMillones='UN', ' ', 'ES ') +;
iif(empty(tMiles + tCientos), 'DE', ''))
tMilMillones = iif(empty(tMilMillones), '', ;
iif(tMilMillones='UN', '', tMilMillones + ' ') + 'MIL ' +;
iif(empty(tMillones), 'MILLONES ', ' ') +;
iif(empty(tMillones + tMiles + tCientos), 'DE', ''))

Texto = strtran(tMilMillones + tMillones + tMiles + tCientos, ' ', ';
') + ' DOLARES'
Endcase

Return Texto + iif(!empty(Total), ' CON ' + strtran(transform(int((total - ;
int(total)) * 100), '**'), '*', '0') + '/100 CENTAVOS', '')

Function obt_cant(valor)
Public Unidades, Decenas, Centenas

If empty(val(valor))
Return ''
Endif

Store '' to tUnidades, tDecenas, tCentenas
Unidades = int(val(substr(valor,3,1))) && 123
Decenas = int(val(substr(valor,2,1))) && vTotal = 999
Centenas = int(val(substr(valor,1,1))) && ^^^
valor = int(val(valor))

tUnidades = iif(!empty(unidades), aUnidades(Unidades), '')

If !empty(decenas)
If decenas = 1
tDecenas = iif(val(right(str(valor,3),2)) >= 10 and;
val(right(str(valor,3),2)) <= 15, aDecenas(val(right(str(valor,3),2)) - 9),;
'DIECI' + tUnidades)
tUnidades = ''
Else
tDecenas = aDecenas(decenas + 5)
if !empty(unidades)
* QUITAR LOS ASTERISCOS SI NO NOS GUSTA QUE CONVIERTA
* 35 COMO TREINTICINCO SINO COMO TREINTA Y CINCO...
*If Decenas <= 2
tDecenas = left(tDecenas, len(tDecenas) - 1) + 'I'
*Else
* tDecenas = tDecenas + ' Y '
*Endif

Endif
Endif
Endif

If !empty(centenas)
tCentenas = aCentenas(centenas)
If valor > 100
If centenas = 1
tCentenas = tCentenas + 'TO '
Else
tCentenas = tCentenas + ' '
Endif
Endif
Endif

Return tCentenas + tDecenas + tUnidades