Ayuda por favor

CoceresM
27 de Agosto del 2005
hola amigos. necesito que alguien me ayude. quiero saber como tengo que hacer para pasa un numero con decimeles a letras. estoy armando un sistema en foxpro 2.6, quisas sea igual que para visual. si alguien tiene un procedimiento armado o una guia de como hacerlo le voy a agradecer de que me lo pase. bueno amigos muchas gracias por todo. y espero alguna respuesta

Andres
27 de Agosto del 2005
Te envio esta funcion, te recomiendo lo tengas en un conjunto de prodecimientos (.prg) y lo invoques desde cualquier lugar solo con NUMLET(variable o monto), o tambien lo puedes colocar en el Init o Load de tu formulario.
Suerte
Andres

*-----------------------------------------
* FUNCION : Convierte NUMEROS a LETRAS *
*******************************************
Function NUMLET(nro)
private d,x,n,dec,ent,letrau,letrad,letradx,letrac,posu,posd,posc,pm,px
nro2 = str(round(nro*100,0),12,0)
nro1 = Val(nro2)/100
dec=(nro-int(nro1))*100
ent=str(int(nro1),12,0)
letrau=' un dos tres cuatrocinco seis siete ocho nueve '
letrad=' diec veint treinta cuarenta cincuentasesenta setenta ochenta noventa '
letrac=' cien docientos trecientos cuatrocientosquinientos seiscientos setecientos ochocientos novecientos '
letradx='diez once doce trece catorcequince '
*d = 'Son: '
d = ''
X =1
pm=0
px=0
DO WHILE X<12
n=SUBSTR(ent,X,3)
if val(n)<=0
x=x+3
loop
endif
posu=val(subs(n,3,1))
posd=val(subs(n,2,1))
posc=val(subs(n,1,1))
d=d+trim(subs(letrac,posc*13+1,13))
d=d+iif(posc==1,iif(posd+posu==0,'','to'),'')
if posd==1 .and. (posu>=0 .and. posu<=5)
d=d+" "+trim(subs(letradx,posu*7+1,7))
else
d=d+" "+trim(subs(letrad,posd*9+1,9))
d=d+iif(posu==0,iif(posd==2,'e',''),iif(posd==0,'','i'))
d=d+trim(subs(letrau,posu*6+1,6))
endif
if (x==1 .or. x==7)
d=d+' mil '
px=iif(x==1,1,0)
else
if x==4
d=d+iif(val(n)==1,' millon ',' millones ')
pm=1
endif
endif
x=x+3
Enddo
d=d+iif(px==1,iif(pm==1,'','Millones '),'')
if subs(ent,12,1)=="1" .and. (.not. subs(ent,11,1)=="1")
d=d+'o'
endif
D=D+' y '+str(dec,2,0)+'/100 Nuevos Soles'
RETURN D

gaonajorge
27 de Agosto del 2005
esa funcion no sirve te mando otra

FUNCTION PonCan
PARAMETERS Valor
STORE " " TO car, car1, resultado
STORE 0 TO num, num1
STORE .F. TO flag1, flag2, flag3
DECLARE dec2[09]
DECLARE dec1[09]
DECLARE dec [09]
DECLARE cen [09]
DECLARE mil [09]
DECLARE cienmil[09]
DECLARE Millon[09]


Store Space(13) to Dec
Store Space(13) to Cen
Store Space(13) to Mil
Store Space(13) to Millo


Millon[09] = "NUEVE MILLONES"
Millon[08] = "OCHO MILLONES"
Millon[07] = "SETE MILLONES"
Millon[06] = "SEIS MILLONES"
Millon[05] = "CINCO MILLONES"
Millon[04] = "CUATRO MILLONES"
Millon[03] = "TRES MILLONES"
Millon[02] = "DOS MILLONES"
Millon[01] = "UN MILLON"

cienmil[09] = "NOVECIENTOS MIL"
cienmil[08] = "OCHOCIENTOS MIL"
cienmil[07] = "SETECIENTOS MIL"
cienmil[06] = "SEISCIENTOS MIL"
cienmil[05] = "QUINIENTOS MIL"
cienmil[04] = "CUATROCIENTOS MIL"
cienmil[03] = "TRESCIENTOS MIL"
cienmil[02] = "DOSCIENTOS MIL"
cienmil[01] = "CIEN MIL"

mil[09] = "NOVECIENTOS"
mil[08] = "OCHOCIENTOS"
mil[07] = "SETECIENTOS"
mil[06] = "SEISCIENTOS"
mil[05] = "QUINIENTOS"
mil[04] = "CUATROCIENTOS"
mil[03] = "TRESCIENTOS"
mil[02] = "DOSCIENTOS"
mil[01] = "CIENTO"

cen[09] = "NOVENTA"
cen[08] = "OCHENTA"
cen[07] = "SETENTA"
cen[06] = "SESENTA"
cen[05] = "CINCUENTA"
cen[04] = "CUARENTA"
cen[03] = "TREINTA"
cen[02] = "VEINTE"
cen[01] = "DIEZ"

dec[09] = "NUEVE"
dec[08] = "OCHO"
dec[07] = "SIETE"
dec[06] = "SEIS"
dec[05] = "CINCO"
dec[04] = "CUATRO"
dec[03] = "TRES"
dec[02] = "DOS"
dec[01] = "UN"

dec1[09] = "DIECINUEVE"
dec1[08] = "DIECIOCHO"
dec1[07] = "DIECISIETE"
dec1[06] = "DIECISEIS"
dec1[05] = "QUINCE"
dec1[04] = "CATORCE"
dec1[03] = "TRECE"
dec1[02] = "DOCE"
dec1[01] = "ONCE"

dec2[09] = "VEINTINUEVE"
dec2[08] = "VEINTIOCHO"
dec2[07] = "VEINTISIETE"
dec2[06] = "VEINTISEIS"
dec2[05] = "VEINTICINCO"
dec2[04] = "VEINTICUATRO"
dec2[03] = "VEINTITRES"
dec2[02] = "VEINTIDOS"
dec2[01] = "VEINTIUN"

resultado = "(***"
IF INT(valor) >= 1000000 .AND. INT(valor) < 10000000
comodin=INT(valor)/1000000
comodin=comodin*100
decs=comodin%100
comodin=(comodin-decs)/100
IF INT(valor)-(1000000*comodin)<999
car = ALLTRIM(STR(valor,10,2))
car1 = LEFT(car,1)
num = VAL(car1)
resultado = resultado +millon[comodin]
num1 = num * 100000
valor = valor - num1
flag3 = .T.
ELSE
car = ALLTRIM(STR(valor,10,2))
car1 = LEFT(car,1)
num = VAL(car1)
resultado = resultado + " " + millon[num]
num1 = num * 1000000
valor = valor - num1
flag3 = .T.
ENDIF
ENDIF


IF INT(valor) >= 100000 .AND. INT(valor) < 1000000
comodin=INT(valor)/100000
comodin=comodin*100
decs=comodin%100
comodin=(comodin-decs)/100
IF INT(valor)-(100000*comodin)<999
car = ALLTRIM(STR(valor,10,2))
car1 = LEFT(car,1)
num = VAL(car1)
resultado = resultado +cienmil[comodin]
num1 = num * 100000
valor = valor - num1
flag3 = .T.
ELSE
car = ALLTRIM(STR(valor,10,2))
car1 = LEFT(car,1)
num = VAL(car1)
resultado = resultado + " " + mil[num]
num1 = num * 100000
valor = valor - num1
flag3 = .T.
ENDIF
ENDIF
IF INT(valor) >= 10000 .AND. INT(valor) < 100000
car = ALLTRIM(STR(valor,10,2))
car1 = SUBSTR(car,2,1)
car2 = SUBSTR(car,1,1)
IF car2 = "1"
num = VAL(car1)
IF num = 0
resultado = resultado + " DIEZ MIL"
ELSE
resultado = resultado + " " + dec1[num] + " MIL"
ENDIF
car1 = SUBSTR(car,1,2)
num = VAL(car1)
num1 = num * 1000
ELSE
IF car2 = "2"
num = VAL(car1)
IF num = 0
resultado = resultado + " VEINTE MIL"
ELSE
resultado = resultado + " " + dec2[num] + " MIL"
ENDIF
car1 = SUBSTR(car,1,2)
num = VAL(car1)
num1 = num * 1000
ELSE
num = VAL(car2)
resultado = resultado + " " + cen[num]
IF VAL(car1) = 0
resultado = resultado + " MIL"
num1 = num * 10000
ELSE
num1 = num * 10000
ENDIF
ENDIF
ENDIF
valor = valor - num1
flag1 = .T.
flag3 = .T.
ENDIF
IF INT(valor) >= 1000 .AND. INT(valor) < 10000
car = ALLTRIM(STR(valor,10,2))
car1 = LEFT(car,1)
num = VAL(car1)
IF flag1
resultado = resultado + " " + "Y " + dec[num]
ELSE
resultado = resultado + " " + dec[num]
ENDIF
num1 = num * 1000
valor = valor - num1
resultado = resultado + " " + "MIL"
flag3 = .T.
ENDIF
IF INT(valor) >= 100 .AND. INT(valor) < 1000
IF INT(valor) = 100
car = ALLTRIM(STR(valor,10,2))
car1 = LEFT(car,1)
num = VAL(car1)
resultado = resultado + " CIEN"
num1 = num * 100
valor = valor - num1
flag3 = .T.
ELSE
car = ALLTRIM(STR(valor,10,2))
car1 = LEFT(car,1)
num = VAL(car1)
resultado = resultado + " " + mil[num]
num1 = num * 100
valor = valor - num1
flag3 = .T.
ENDIF
ENDIF
IF INT(valor) >= 10 .AND. INT(valor) < 100
car = ALLTRIM(STR(valor,10,2))
car1 = LEFT(car,1)
car2 = SUBSTR(car,2,1)
IF car1 = "1"
num = VAL(car2)
IF num = 0
resultado = resultado + " DIEZ"
ELSE
resultado = resultado + " " + dec1[num]
ENDIF
car1 = LEFT(car,2)
num = VAL(car1)
num1 = num * 1
valor = valor - num
flag2 = .T.
flag3 = .T.
ELSE
IF car1 = "2"
num = VAL(car2)
IF num = 0
resultado = resultado + " VEINTE"
ELSE
resultado = resultado + " " + dec2[num]
ENDIF
car1 = LEFT(car,2)
num = VAL(car1)
num1 = num * 1
valor = valor - num
ELSE
car = ALLTRIM(STR(valor,10,2))
car1 = LEFT(car,1)
num = VAL(car1)
resultado = resultado + " " + cen[num]
num1 = num * 10
valor = valor - num1
ENDIF
flag2 = .T.
flag3 = .T.
ENDIF
ENDIF
IF INT(valor) >= 1 .AND. INT(valor) < 10
car = ALLTRIM(STR(valor,10,2))
car1 = LEFT(car,1)
car2 = SUBSTR(car,2,1)
IF car1 = "1"
num = VAL(car2)
IF num = 0
IF flag2
resultado = resultado + " Y UN"
ELSE
resultado = resultado + " UN"
ENDIF
ELSE
resultado = resultado + " " + dec1[num]
ENDIF
ELSE
num = VAL(car1)
IF flag2
resultado = resultado + " " + "Y " + dec[num]
ELSE
resultado = resultado + " " + " " + dec[num]
ENDIF
ENDIF
flag3 = .T.
ENDIF
num = valor - INT(valor)
num = num * 100
car = ALLTRIM(STR(num,10,2))
car1 = LEFT(car,2)
IF SUBSTR(car1,2,1) = "."
IF car1 = "0."
car1 = "00"
ELSE
car1 = "0" + SUBSTR(car1,1,1)
ENDIF
ENDIF
IF .NOT. flag3
resultado = resultado + " 0 PESOS " + car1 + "/100 M.N. ***)"
ELSE
resultado = resultado + " PESOS " + car1 + "/100 M.N. ***)"
ENDIF
RETURN (resultado)