Ver Fonte

[ADD] commit inicial

adrielso há 7 anos atrás
commit
66ca22b89d
7 ficheiros alterados com 203 adições e 0 exclusões
  1. 18 0
      README.md
  2. 0 0
      __init__.py
  3. BIN
      __init__.pyc
  4. 12 0
      __openerp__.py
  5. BIN
      static/description/icon.png
  6. 163 0
      static/src/js/num2Word.js
  7. 10 0
      templates.xml

+ 18 - 0
README.md

@@ -0,0 +1,18 @@
+# Eiru num2word
+
+Módulos para convertir números a palabras
+
+### Instalación del módulo
+
+1. Clone el proyecto en la raíz de su carpeta de custom addons  [eiru_num2word](http://192.168.88.100:3000/adrielso/eiru_num2word.git)
+2. Actualice su lista de módulos y luego instale
+
+#### Utilización
+
+1. Importamos la variable **openerp.web.num2word**  pasando como paramento el valor que queremos convertir
+**Ejemplo**
+   ``` js
+ 	openerp.web.num2word(1000)
+   ```
+   el resultado es **UN MIL**
+**Observación:**  el valor a convertir deber ser de tipo numérico  y sin separadores de miles y decimales

+ 0 - 0
__init__.py


BIN
__init__.pyc


+ 12 - 0
__openerp__.py

@@ -0,0 +1,12 @@
+# -*- coding: utf-8 -*-
+{
+    'name': "Eiru num2word",
+    'description': "Modules to convert numbers to words",
+    'author': "Adrielso Kunert",
+    'category': 'Uncategorized',
+    'version': '0.1',
+    'depends': ['base'],
+    'data': [
+        'templates.xml'
+    ]
+}

BIN
static/description/icon.png


+ 163 - 0
static/src/js/num2Word.js

@@ -0,0 +1,163 @@
+(function(){
+  "use strict";
+
+    openerp.web.num2word = function () {
+        function Unidades(num){
+            switch(num)
+            {
+                case 1: return "UN";
+                case 2: return "DOS";
+                case 3: return "TRES";
+                case 4: return "CUATRO";
+                case 5: return "CINCO";
+                case 6: return "SEIS";
+                case 7: return "SIETE";
+                case 8: return "OCHO";
+                case 9: return "NUEVE";
+            }
+
+            return "";
+        }//Unidades()
+
+        function Decenas(num){
+
+            var decena = Math.floor(num/10);
+            var unidad = num - (decena * 10);
+
+            switch(decena)
+            {
+                case 1:
+                    switch(unidad)
+                    {
+                        case 0: return "DIEZ";
+                        case 1: return "ONCE";
+                        case 2: return "DOCE";
+                        case 3: return "TRECE";
+                        case 4: return "CATORCE";
+                        case 5: return "QUINCE";
+                        default: return "DIECI" + Unidades(unidad);
+                    }
+                case 2:
+                    switch(unidad)
+                    {
+                        case 0: return "VEINTE";
+                        default: return "VEINTI" + Unidades(unidad);
+                    }
+                case 3: return DecenasY("TREINTA", unidad);
+                case 4: return DecenasY("CUARENTA", unidad);
+                case 5: return DecenasY("CINCUENTA", unidad);
+                case 6: return DecenasY("SESENTA", unidad);
+                case 7: return DecenasY("SETENTA", unidad);
+                case 8: return DecenasY("OCHENTA", unidad);
+                case 9: return DecenasY("NOVENTA", unidad);
+                case 0: return Unidades(unidad);
+            }
+        }//Unidades()
+
+        function DecenasY(strSin, numUnidades) {
+            if (numUnidades > 0)
+            return strSin + " Y " + Unidades(numUnidades)
+
+            return strSin;
+        }//DecenasY()
+
+        function Centenas(num) {
+            var centenas = Math.floor(num / 100);
+            var decenas = num - (centenas * 100);
+
+            switch(centenas)
+            {
+                case 1:
+                    if (decenas > 0)
+                        return "CIENTO " + Decenas(decenas);
+                    return "CIEN";
+                case 2: return "DOSCIENTOS " + Decenas(decenas);
+                case 3: return "TRESCIENTOS " + Decenas(decenas);
+                case 4: return "CUATROCIENTOS " + Decenas(decenas);
+                case 5: return "QUINIENTOS " + Decenas(decenas);
+                case 6: return "SEISCIENTOS " + Decenas(decenas);
+                case 7: return "SETECIENTOS " + Decenas(decenas);
+                case 8: return "OCHOCIENTOS " + Decenas(decenas);
+                case 9: return "NOVECIENTOS " + Decenas(decenas);
+            }
+
+            return Decenas(decenas);
+        }//Centenas()
+
+        function Seccion(num, divisor, strSingular, strPlural) {
+            var cientos = Math.floor(num / divisor)
+            var resto = num - (cientos * divisor)
+
+            var letras = "";
+
+            if (cientos > 0)
+                if (cientos > 1)
+                    letras = Centenas(cientos) + " " + strPlural;
+                else
+                    letras = strSingular;
+
+            if (resto > 0)
+                letras += "";
+
+            return letras;
+        }//Seccion()
+
+        function Miles(num) {
+            var divisor = 1000;
+            var cientos = Math.floor(num / divisor)
+            var resto = num - (cientos * divisor)
+
+            var strMiles = Seccion(num, divisor, "UN MIL", "MIL");
+            var strCentenas = Centenas(resto);
+
+            if(strMiles == "")
+                return strCentenas;
+
+            return strMiles + " " + strCentenas;
+        }//Miles()
+
+        function Millones(num) {
+            var divisor = 1000000;
+            var cientos = Math.floor(num / divisor)
+            var resto = num - (cientos * divisor)
+
+            var strMillones = Seccion(num, divisor, "UN MILLON ", "MILLONES ");
+            var strMiles = Miles(resto);
+
+            if(strMillones == "")
+                return strMiles;
+
+            return strMillones + " " + strMiles;
+        }//Millones()
+
+        return function (num) {
+            var data = {
+                numero: num,
+                enteros: Math.floor(num),
+                centavos: (((Math.round(num * 100)) - (Math.floor(num) * 100))),
+                letrasCentavos: "",
+                letrasMonedaPlural: '',//"PESOS", 'Dólares', 'Guranaies', 'etcs'
+                letrasMonedaSingular: '', //"PESO", 'Dólar', 'Guarani', 'etc'
+
+                letrasMonedaCentavoPlural: "CENTAVOS",
+                letrasMonedaCentavoSingular: "CENTAVO"
+            };
+
+            if (data.centavos > 0) {
+                data.letrasCentavos = "CON " + (function (){
+                    if (data.centavos == 1)
+                        return Millones(data.centavos) + " " + data.letrasMonedaCentavoSingular;
+                    else
+                        return Millones(data.centavos) + " " + data.letrasMonedaCentavoPlural;
+                    })();
+            };
+
+            if(data.enteros == 0)
+                return "CERO " + data.letrasMonedaPlural + " " + data.letrasCentavos;
+            if (data.enteros == 1)
+                return Millones(data.enteros) + " " + data.letrasMonedaSingular + " " + data.letrasCentavos;
+            else
+                return Millones(data.enteros) + " " + data.letrasMonedaPlural + " " + data.letrasCentavos;
+        }
+    }()
+})();

+ 10 - 0
templates.xml

@@ -0,0 +1,10 @@
+<openerp>
+    <data>
+        <!-- Templates -->
+        <template id="eiru_num2word" inherit_id="web.assets_backend">
+             <xpath expr="." position="inside">
+                <script type="text/javascript" src="/eiru_num2word/static/src/js/num2Word.js" />
+             </xpath>
+        </template>
+    </data>
+</openerp>