Código de FoxPro/Visual FoxPro - Conversor numero a texto

Conversor numero a textográfica de visualizaciones


FoxPro/Visual FoxPro

estrellaestrellaestrellaestrellaestrella(12)
Publicado el 29 de Abril del 2003 por Roberto
23.751 visualizaciones desde el 29 de Abril del 2003. Una media de 35 por semana
Función es para convertir montos en letras.

Versión 1
estrellaestrellaestrellaestrellaestrella(12)

Publicado el 29 de Abril del 2003gráfica de visualizaciones de la versión: Versión 1
23.752 visualizaciones desde el 29 de Abril del 2003. Una media de 35 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
FUNCTION Monto2Letra
LPARAMETERS tyMonto, tlDolares
LOCAL lyEntero, lyCentavos, lnNumeroBloques, lnPrimerDigito, lnSegundoDigito, lnTercerDigito, ;
	  lcBloque, lnBloqueCero, lcLetra
 
DIMENSION laUnidades(29), laDecenas(9), laCentenas(9)
 
tyMonto = ROUND(tyMonto, 2)
lyEntero = INT(tyMonto)
lcLetra = IIF(lyEntero = 0, "CERO", "")
lyCentavos = (tyMonto - lyEntero) * 100
 
laUnidades(1) = "UN"
laUnidades(2) = "DOS"
laUnidades(3) = "TRES"
laUnidades(4) = "CUATRO"
laUnidades(5) = "CINCO"
laUnidades(6) = "SEIS"
laUnidades(7) = "SIETE"
laUnidades(8) = "OCHO"
laUnidades(9) = "NUEVE"
laUnidades(10) = "DIEZ"
laUnidades(11) = "ONCE"
laUnidades(12) = "DOCE"
laUnidades(13) = "TRECE"
laUnidades(14) = "CATORCE"
laUnidades(15) = "QUINCE"
laUnidades(16) = "DIECISEIS"
laUnidades(17) = "DIECISIETE"
laUnidades(18) = "DIECIOCHO"
laUnidades(19) = "DIECINUEVE"
laUnidades(20) = "VEINTE"
laUnidades(21) = "VENTIUN"
laUnidades(22) = "VEINTIDOS"
laUnidades(23) = "VEINTITRES"
laUnidades(24) = "VEINTICUATRO"
laUnidades(25) = "VEINTICINCO"
laUnidades(26) = "VEINTISEIS"
laUnidades(27) = "VEINTISIETE"
laUnidades(28) = "VEINTIOCHO"
laUnidades(29) = "VEINTINUEVE"
 
laDecenas(1) = "DIEZ"
laDecenas(2) = "VEINTE"
laDecenas(3) = "TREINTA"
laDecenas(4) = "CUARENTA"
laDecenas(5) = "CINCUENTA"
laDecenas(6) = "SESENTA"
laDecenas(7) = "SETENTA"
laDecenas(8) = "OCHENTA"
laDecenas(9) = "NOVENTA"
 
laCentenas(1) = "CIENTO"
laCentenas(2) = "DOSCIENTOS"
laCentenas(3) = "TRESCIENTOS"
laCentenas(4) = "CUATROCIENTOS"
laCentenas(5) = "QUINIENTOS"
laCentenas(6) = "SEISCIENTOS"
laCentenas(7) = "SETECIENTOS"
laCentenas(8) = "OCHOCIENTOS"
laCentenas(9) = "NOVECIENTOS"
 
lnNumeroBloques = 1
 
DO WHILE lyEntero > 0
	lnPrimerDigito = 0
	lnSegundoDigito = 0
	lnTercerDigito = 0
	lcBloque = ""
	lnBloqueCero = 0
	FOR i = 1 TO 3
		lnDigito = MOD(lyEntero, 10)
		IF lnDigito <> 0 THEN
			DO CASE
				CASE i = 1
					lcBloque = " " + laUnidades(lnDigito)
					lnPrimerDigito = lnDigito
				CASE i = 2
					IF lnDigito <= 2 THEN
						lcBloque = " " + laUnidades((lnDigito * 10) + lnPrimerDigito)
					ELSE
						lcBloque = " " + laDecenas(lnDigito) + IIF(lnPrimerDigito <> 0, " Y", "") + lcBloque
					ENDIF
					lnSegundoDigito = lnDigito
				CASE i = 3
					lcBloque = " " + IIF(lnDigito = 1 AND lnPrimerDigito = 0 AND lnSegundoDigito = 0, "CIEN", ;
					laCentenas(lnDigito)) + lcBloque
					lnTercerDigito = lnDigito
				ENDCASE
		ELSE
			lnBloqueCero = lnBloqueCero + 1
		ENDIF
		lyEntero = INT(lyEntero / 10)
		IF lyentero = 0 THEN
			EXIT FOR
		ENDIF
	ENDFOR
	DO CASE
		CASE lnNumeroBloques = 1
			lcLetra = lcBloque
		CASE lnNumeroBloques = 2
			lcLetra = lcBloque + IIF(lnBloqueCero <> 3, " MIL", "") + lcLetra
		CASE lnNumeroBloques = 3
			lcLetra = lcBloque + IIF(lnPrimerDigito = 1 AND lnSegundoDigito = 0 AND lnTercerDigito = 0, ;
			" MILLON", " MILLONES") + lcLetra
		ENDCASE
	lnNumeroBloques = lnNumeroBloques + 1
ENDDO
IF tlDolares THEN
lcLetra = "(" + ALLTRIM(lcLetra) + IIF(INT(tyMonto) = 1, " DÓLAR ", " DOLARES ") + ;
	REPLICATE("0", 2 - LEN(ALLTRIM(STR(lyCentavos)))) + ALLTRIM(STR(lyCentavos)) + "/100 USD)"
ELSE
	lcLetra = "(" + ALLTRIM(lcLetra) + IIF(INT(tyMonto) = 1, " PESO ", " PESOS ") + ;
	REPLICATE("0", 2 - LEN(ALLTRIM(STR(lyCentavos)))) + ALLTRIM(STR(lyCentavos)) + "/100 M.N.)"
ENDIF
 
RETURN lcLetra
ENDFUNC



Comentarios sobre la versión: Versión 1 (12)

Miguel Hernández
28 de Agosto del 2003
estrellaestrellaestrellaestrellaestrella
Programa escencial para facturas / notas, etc , etc, etc.
te ahorrará mucho tiempo y estra programado de una manera muy sólida. excelente!
Responder
Ernesto Mora C.
29 de Marzo del 2004
estrellaestrellaestrellaestrellaestrella
Súper bueno y sencillo, indispensable para la emisión de Facturas Ncr, Nde, Letras de cambio, emisión de cheques, etc.
Responder
RAFAEL MACIAS
11 de Julio del 2005
estrellaestrellaestrellaestrellaestrella
ESTA BIEN HECHA LA FUNCION FELICIDADES
Responder
OMAR BELTRAN
10 de Agosto del 2005
estrellaestrellaestrellaestrellaestrella
se puede mejorar, pero en lineas generales esta utilizable.
Responder
kalel
16 de Febrero del 2006
estrellaestrellaestrellaestrellaestrella
hey donde puedo meter el codigo por que no se donde ponerlo mi caja de texto del valor numerico es la text51 y la caja de texto donde deve aparecer traducido es la text60 como le ago para insertar el codigo
Responder
paco
14 de Septiembre del 2006
estrellaestrellaestrellaestrellaestrella
si funciona muy bien, gracias
Responder
David Quinn
24 de Febrero del 2007
estrellaestrellaestrellaestrellaestrella
Bueno, pero creo que para que sea mas completo podrían pasarse dos parametros mas: La moneda y la pluralización de la moneda, de modo que no solo sean "Pesos". Moneda puede ser "dolar" y la pluralizacion "es" en el caso de "peso" su pluralización sería "s". Si el resultado fuera 1 es muy feo que diga "Un pesos" o "Un dólares"
Responder
JOSE BARRIOS
11 de Abril del 2007
estrellaestrellaestrellaestrellaestrella
Funciona Correctamente y es muy Practica, el codigo es facil de leer y pqueña.
Responder
Imágen de perfil
Mauricio Gonzalez
26 de Junio del 2008
estrellaestrellaestrellaestrellaestrella
Esta excelente el planteo del programa, sencillo y eficaz.
Felicitaciones Roberto!!!!!
Responder
Aristobulo Torres
17 de Noviembre del 2009
estrellaestrellaestrellaestrellaestrella
Muy bueno su trabajo, gracias; ahora prodrias decirme en que parte inserto el codigo o como hago que me lea el valor en la bases de datos

Agradezco toda su colaboración
Responder
Jorge Luis Lupio
20 de Marzo del 2011
estrellaestrellaestrellaestrellaestrella
El código funciona perfecto. Me ahorró tiempo en el desarrollo. Muchisimas Gracias....
Responder
baldo martorell
29 de Abril del 2014
estrellaestrellaestrellaestrellaestrella
Código eficaz
( pero... ¿en sus latitudes dicen "un mil" ...? )
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s609