Hola José!

MIL GRACIAS por tu aporte.

Tuve que hacer un MÍNIMO arreglo al mostrar los centavos, ya que había 
situaciones donde me lo mostraba con una centésima menos, por ejemplo: 100.45, 
me decía 44 centavos. Lo resolví cambiando en la ultima línea el INT() por 
Round(x,2).
De todas formas no había aclarado que programo en Harbour+ooHG (compatible con 
Clipper y Fox DOS), así que simplemente modifique la función ‘Dimension()’ por 
Declare[], y funciono PERFECTO!!!. De hecho, muchos colegas me pasaron 
funciones y elegí la tuya, por que el TEXTO es exactamente como lo 
pronunciamos!.

Un gran abrazo y buen comienzo de año!
Sergio Castellari
www.sdcinformatica.com.ar
www.facebook.com/sdcsolucionesinformaticas







From: Jose Paez 
Sent: Wednesday, January 11, 2017 2:40 PM
To: GUFA List Member 
Subject: [GUFA] Pasar numeros a texto

Espero que te sea de utilidad.



Saludos



José



****************************************
*TRANSFORMA NUMEROS A LETRAS           *
*SON LAS FUNCIONES CONVIERTE Y OBT_CANT*
****************************************
function CONVIERTE_NUM_TO_LETRAS
parameters total
* Autor: Anselmo Antonio Ortiz Alcocer
* Corrreo: ortiza...@hotmail.com
* 26/06/2001
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 PESOS'
case val(vTotal) = 1
Texto = 'UN PESO'
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, '  ', ' ')

endcase

return 'PESOS : '+Texto + iif(!empty(total), ' CON ' + ;
strtran(transform(int((total - int(total)) * ;
100), '**'), '*', '0') + ' CENTAVOS', '')
endfunc

function obt_cant
parameter valor
public Unidades, Decenas, Centenas

if empty(val(valor))
return ''
endif

store '' to tUnidades, tDecenas, tCentenas
Unidades = int(val(substr(valor,3,1)))
Decenas  = int(val(substr(valor,2,1)))
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)
tDecenas = left(tDecenas, len(tDecenas) - 1) + 'I'
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
endfunc






--------------------------------------------------------------------------------

De: GUFA@mug.org.ar <GUFA@mug.org.ar> en nombre de PabloC 
<pablo.canon...@mug.org.ar>
Enviado: miércoles, 11 de enero de 2017 04:01 p. m.
Para: GUFA List Member
Asunto: [GUFA] Pasar numeros a texto 

Yo históricamente uso esto y no recuerdo haber tenido problemas



cTotal = Chrtran(Alltrim(Str(yTotal,10,2)),'.','')



From: GUFA@mug.org.ar [mailto:GUFA@mug.org.ar] On Behalf Of Sergio D.Castellari
Sent: miércoles, 11 de enero de 2017 12:42
To: GUFA List Member <GUFA@mug.org.ar>
Subject: [GUFA] Pasar numeros a texto



Hola gente,



¿¿¿ Alguien tiene una función para transformar un numero (con decimales) a 
texto que quiera compartirla ???



Tengo 2 funciones que venia usando, pero descubrí que tienen una falla, y 
determinados números del rango 20000, los escribe mal.



Saludos,

Sergio Castellari

Responder a