This one is from http://fox.wikis.com/wc.dll?Wiki~ConvertingNumberToWordsInSpanish~VFP
*Name: Convcant1
*Purpose: This routine converts a number in spanish words
*Input: number to be converted.(numero)
*Output: The number in spanish words (letra).
*Example: convertido=convcant1(12.5)
* ? convertido
* doce pesos 50/100 M.N.
LPARAMETERS Numero
STORE ALLTRIM(STR(Numero,12,3)) TO Cant1 && SE TOMA COMO MAXIMO NUMERO DE LONGITUD 9 CON 2 DeciMALES
Cant1= SUBSTR(Cant1,1,LEN(Cant1)-1) && para cortar y no redondear
STORE SUBSTR(Cant1,1,LEN(Cant1)-3) TO Cant2
STORE SUBSTR(Cant1,LEN(Cant1)-1,2) TO Deci
STORE MOD(LEN(Cant2),3) TO Residuo
DO CASE
CASE Residuo= 1
STORE '00' + Cant2 TO Cant2
CASE Residuo= 2
STORE '0' + Cant2 TO Cant2
ENDCASE
DO CASE
CASE LEN(Cant2)= 3
DO Converte WITH Cant2
Letra= ALLTRIM(Letra)
Letra= '('+Letra+ ' PESOS ' + Deci + '/100 M.N.)'
CASE LEN(Cant2)= 6
STORE SUBSTR(Cant2,1,3) TO Cant3
DO Converte WITH Cant3
Letra1= Letra + ' MIL '
STORE SUBSTR(Cant2,4,3) TO Cant4
DO Converte WITH Cant4
Letra2= Letra1 + Letra
Letra2= ALLTRIM(Letra2)
Letra= '('+Letra2 + ' PESOS '+Deci + '/100 M.N.)'
CASE LEN(Cant2)= 9
STORE SUBSTR(Cant2,1,3) TO Cant3
DO Converte WITH Cant3
Letra1= Letra +' MILLONES '
STORE SUBSTR(Cant2,4,3) TO Cant4
DO Converte WITH Cant4
Letra2= Letra1 + Letra + ' MIL '
STORE SUBSTR(Cant2,7,3) TO Cant5
DO Converte WITH Cant5
Letra3= Letra2 + Letra
Letra3= ALLTRIM(Letra3)
Letra= '('+Letra3+' PESOS ' + Deci + '/100 M.N.)'
ENDCASE
RETURN (Letra)
PROCEDURE Converte
PARAMETERS CantID1
PUBLIC Letra
DIMENSION Cien(16),Diez(16),UnId(16),Espec(15)
Cien(16)= SPACE(1)
Cien(1)= 'CIENTO'
Cien(2)= 'DOSCIENTOS'
Cien(3)= 'TRESCIENTOS'
Cien(4)= 'CUATROCIenTOS'
Cien(5)= 'QUINIENTOS'
Cien(6)= 'SEISCIENTOS'
Cien(7)= 'SETECIENTOS'
Cien(8)= 'OCHOCIENTOS'
Cien(9)= 'NOVECIENTOS'
Diez(16)= SPACE(1)
Diez(1)= 'DIEZ'
Diez(2)= 'VEINTE'
Diez(3)= 'TREINTA'
Diez(4)= 'CUARENTA'
Diez(5)= 'CINCUENTA'
Diez(6)= 'SESENTA'
Diez(7)= 'SETENTA'
Diez(8)= 'OCHENTA'
Diez(9)= 'NOVENTA'
UnId(16)= SPACE(1)
UnId(1)= 'UN'
UnId(2)= 'DOS'
UnId(3)= 'TRES'
UnId(4)= 'CUATRO'
UnId(5)= 'CINCO'
UnId(6)= 'SEIS'
UnId(7)= 'SIETE'
UnId(8)= 'OCHO'
UnId(9)= 'NUEVE'
Espec(10)= 'DIEZ'
Espec(11)= 'ONCE'
Espec(12)= 'DOCE'
Espec(13)= 'TRECE'
Espec(14)= 'CATORCE'
Espec(15)= 'QUINCE'
STORE VAL(SUBSTR(CantID1,2,2)) TO Num1
STORE VAL(SUBSTR(CantID1,3,1)) TO Num2
STORE VAL(SUBSTR(CantID1,1,1)) TO Num3
STORE VAL(SUBSTR(CantID1,2,1)) TO Num4
IF Num3= 0
Num3= 16
ENDIF
IF Num4= 0
Num4= 16
ENDIF
DO CASE
CASE Num1 >= 1 AND Num1 <= 9
Letra= Cien(Num3) +SPACE(1)+ UnId(Num1)
CASE Num1 >= 10 AND Num1 <= 15
Letra= Cien(Num3) +SPACE(1)+ Espec(Num1)
CASE Num2= 0
Letra= Cien(Num3) +SPACE(1)+ Diez(Num4)
CASE Num2 # 0
Letra= Cien(Num3)+SPACE(1) + Diez(Num4)+' Y ' + UnId(Num2)
ENDCASE
No comments:
Post a Comment