|
@@ -0,0 +1,92 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+import unittest
|
|
|
+
|
|
|
+def numero_to_letras(numero):
|
|
|
+ indicador = [("",""),("MIL","MIL"),("MILLON","MILLONES"),("MIL","MIL"),("BILLON","BILLONES")]
|
|
|
+ entero = int(numero)
|
|
|
+ decimal = int(round((numero - entero)*100))
|
|
|
+ #print 'decimal : ',decimal
|
|
|
+ contador = 0
|
|
|
+ numero_letras = ""
|
|
|
+ numero_letrasd = ""
|
|
|
+
|
|
|
+ while entero >0:
|
|
|
+ a = entero % 1000
|
|
|
+ if contador == 0:
|
|
|
+ en_letras = convierte_cifra(a,1).strip()
|
|
|
+ else :
|
|
|
+ en_letras = convierte_cifra(a,0).strip()
|
|
|
+ if a==0:
|
|
|
+ numero_letras = en_letras+" "+numero_letras
|
|
|
+ elif a==1:
|
|
|
+ if contador in (1,3):
|
|
|
+ numero_letras = indicador[contador][0]+" "+numero_letras
|
|
|
+ else:
|
|
|
+ numero_letras = en_letras+" "+indicador[contador][0]+" "+numero_letras
|
|
|
+ else:
|
|
|
+ numero_letras = en_letras+" "+indicador[contador][1]+" "+numero_letras
|
|
|
+
|
|
|
+ numero_letras = numero_letras.strip()
|
|
|
+ contador = contador + 1
|
|
|
+ entero = int(entero / 1000)
|
|
|
+
|
|
|
+
|
|
|
+ contadord=0
|
|
|
+ while decimal >0:
|
|
|
+ d = decimal % 1000
|
|
|
+ if contadord == 0:
|
|
|
+ en_letrasd = convierte_cifra(d,1).strip()
|
|
|
+
|
|
|
+ numero_letrasd =" COM "+str(en_letrasd.strip())
|
|
|
+ contadord = contadord + 1
|
|
|
+ decimal = int(decimal / 1000)
|
|
|
+
|
|
|
+ numero_letras = numero_letras+ str(numero_letrasd)
|
|
|
+ # print 'numero: ',numero
|
|
|
+ # print numero_letras
|
|
|
+ return numero_letras
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+def convierte_cifra(numero,sw):
|
|
|
+ lista_centana = ["",("CIEN","CIENTO"),"DOSCIENTOS","TRESCIENTOS","CUATROCIENTOS","QUINIENTOS","SEISCIENTOS","SETECIENTOS","OCHOCIENTOS","NOVECIENTOS"]
|
|
|
+ lista_decena = ["",("DIEZ","ONCE","DOCE","TRECE","CATORCE","QUINCE","DIECISEIS","DIECISIETE","DIECIOCHO","DIECINUEVE"),
|
|
|
+ ("VEINTE","VEINTI"),("TREINTA","TREINTA Y "),("CUARENTA" , "CUARENTA Y "),
|
|
|
+ ("CINCUENTA" , "CINCUENTA Y "),("SESENTA" , "SESENTA Y "),
|
|
|
+ ("SETENTA" , "SETENTA Y "),("OCHENTA" , "OCHENTA Y "),
|
|
|
+ ("NOVENTA" , "NOVENTA Y ")
|
|
|
+ ]
|
|
|
+ lista_unidad = ["",("UN" , "UNO"),"DOS","TRES","CUATRO","CINCO","SEIS","SIETE","OCHO","NUEVE"]
|
|
|
+ centena = int (numero / 100)
|
|
|
+ decena = int((numero -(centena * 100))/10)
|
|
|
+ unidad = int(numero - (centena * 100 + decena * 10))
|
|
|
+ #print "centena: ",centena, "decena: ",decena,'unidad: ',unidad
|
|
|
+ texto_centena = ""
|
|
|
+ texto_decena = ""
|
|
|
+ texto_unidad = ""
|
|
|
+
|
|
|
+ #Validad las centenas
|
|
|
+ texto_centena = lista_centana[centena]
|
|
|
+ if centena == 1:
|
|
|
+ if (decena + unidad)!=0:
|
|
|
+ texto_centena = texto_centena[1]
|
|
|
+ else :
|
|
|
+ texto_centena = texto_centena[0]
|
|
|
+
|
|
|
+
|
|
|
+ #Valida las decenas
|
|
|
+ texto_decena = lista_decena[decena]
|
|
|
+ if decena == 1 :
|
|
|
+ texto_decena = texto_decena[unidad]
|
|
|
+ elif decena > 1 :
|
|
|
+ if unidad != 0 :
|
|
|
+ texto_decena = texto_decena[1]
|
|
|
+ else:
|
|
|
+ texto_decena = texto_decena[0]
|
|
|
+ #Validar las unidades
|
|
|
+ #print "texto_unidad: ",texto_unidad
|
|
|
+ if decena != 1:
|
|
|
+ texto_unidad = lista_unidad[unidad]
|
|
|
+ if unidad == 1:
|
|
|
+ texto_unidad = texto_unidad[sw]
|
|
|
+ return "%s %s %s" %(texto_centena,texto_decena,texto_unidad)
|