Pārlūkot izejas kodu

currency_utility

sebastian 5 gadi atpakaļ
revīzija
877323625e

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+*.pyc

+ 59 - 0
README.md

@@ -0,0 +1,59 @@
+# Utilidad de Moneda
+
+Este  modulo crea nuevos campo en el apartado moneda.
+
+## Campos creados
+
+* **thousands_separator**  - Separador de miles
+* **decimal_separator** - Separador de decimales
+* **decimal_places** - Cantidad de decimales
+* **symbol_position** - Posición del símbolo
+
+## Data default
+
+### Guaraní-PYG
+
+* **thousands_separator** = .
+* **decimal_separator** = ,
+* **decimal_places** = 0
+* **symbol_position** = before (Antes del importe)
+
+### Real-BRL, PESO-ARS
+
+* **thousands_separator** = .
+* **decimal_separator** = ,
+* **decimal_places** = 2
+* **symbol_position** = before (Antes del importe)
+
+### Dolar-USD
+
+* **thousands_separator** = ,
+* **decimal_separator** = .
+* **decimal_places** = 2
+* **symbol_position** = before (Antes del importe)
+
+### Format Currency
+#### Format
+* La función estará disponible en el espacio de nombre **openerp.web.formatCurrency** pasando como paramento el valor a formatear y un  objeto  que contiene las información  de la moneda utilizada.
+
+**Ejemplo**.
+``` js
+var amount = 1250000
+var currency={
+    'thousandsSeparator':.
+    'decimalPlaces': 0
+    'decimalSeparator':,
+}
+ openerp.web.formatCurrency(amount, currency)
+```
+Resultado  **1.250.000**.
+
+#### UnFormat
+* La función estará disponible en el espacio de nombre **openerp.web.unFormatCurrency** pasando como paramento el valor formateado.
+
+**Ejemplo**.
+``` js
+var amount = '1.250.000'
+ openerp.web.unFormatCurrency(amount)
+```
+Resultado **1250000**.

+ 2 - 0
__init__.py

@@ -0,0 +1,2 @@
+# -*- codding : utf-8 -*-
+from model import res_currency

+ 17 - 0
__openerp__.py

@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+{
+    'name': "Utilidad de Moneda",
+    'author': "Adrielso Kunert",
+    'category': 'Account',
+    'version': '0.2',
+    'depends': [
+        'base',
+        'account',
+        'eiru_assets'
+    ],
+    'data': [
+        'views/templates.xml',
+        'data/res_currency.xml',
+        'views/res_currency.xml',
+    ],
+}

+ 6 - 0
data/res_currency.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+        <function model="res.currency" name="currency_utility"/>
+    </data>
+</openerp>

+ 78 - 0
i18n/es_PY.po

@@ -0,0 +1,78 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# 	* currency_utility
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 8.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-09-20 13:54+0000\n"
+"PO-Revision-Date: 2017-09-20 09:59-0400\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+"Language: es_PY\n"
+"X-Generator: Poedit 1.8.11\n"
+
+#. module: currency_utility
+#: selection:res.currency,symbol_position:0
+msgid "Antes del importe"
+msgstr "Antes del importe"
+
+#. module: currency_utility
+#: view:res.currency:currency_utility.currency_utility_form
+msgid "Cantidad de decimales"
+msgstr "Cantidad de decimales"
+
+#. module: currency_utility
+#: model:ir.model,name:currency_utility.model_res_currency
+msgid "Currency"
+msgstr "Moneda"
+
+#. module: currency_utility
+#: field:res.currency,decimal_places:0
+msgid "Decimal Places"
+msgstr "Cantidad de decimales"
+
+#. module: currency_utility
+#: field:res.currency,decimal_separator:0
+msgid "Decimal Separator"
+msgstr "Separador de Decimales"
+
+#. module: currency_utility
+#: selection:res.currency,symbol_position:0
+msgid "Después del importe"
+msgstr "Después del importe"
+
+#. module: currency_utility
+#: view:res.currency:currency_utility.currency_utility_form
+msgid "Eiru Diversos"
+msgstr "Eiru Diversos"
+
+#. module: currency_utility
+#: view:res.currency:currency_utility.currency_utility_form
+msgid "Posición del símbolo"
+msgstr "Posición del símbolo"
+
+#. module: currency_utility
+#: view:res.currency:currency_utility.currency_utility_form
+msgid "Separador de decimales"
+msgstr "Separador de decimales"
+
+#. module: currency_utility
+#: view:res.currency:currency_utility.currency_utility_form
+msgid "Separador de miles"
+msgstr "Separador de miles"
+
+#. module: currency_utility
+#: field:res.currency,symbol_position:0
+msgid "Symbol Position"
+msgstr "Posición del símbolo"
+
+#. module: currency_utility
+#: field:res.currency,thousands_separator:0
+msgid "thousands Separator"
+msgstr "Separador de miles"

+ 0 - 0
model/__init__.py


+ 67 - 0
model/res_currency.py

@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+from openerp import models, fields, api
+
+class ResCurrency(models.Model):
+    _inherit = 'res.currency'
+    _name = 'res.currency'
+
+    local_name = fields.Char('Local Name')
+    decimal_separator = fields.Selection([('.', '.'),(',', ',')],'Decimal Separator', default=",", required=True)
+    decimal_places = fields.Integer(string='Decimal Places', default=0, required=True)
+    thousands_separator = fields.Selection([('.', '.'),(',', ',')],'thousands Separator', default=".", required=True)
+    symbol_position = fields.Selection([('before', 'Antes del importe'),('after', 'Después del importe')],'Symbol Position', default="before", required=True)
+
+    '''
+        Deactivate currency
+    '''
+    def update_active_currency(self):
+        return self.env.cr.execute('update res_currency set active=%s where active=%s', ('False','True'))
+
+    @api.model
+    def currency_utility(self):
+        ## Desactivar todas las moneda
+        self.update_active_currency()
+
+        ## Actualizar Moneda Guarani
+        currency_pyg = self.env['res.currency'].search([('name', '=', 'PYG'),('active','=',False)])
+        currency_pyg.write({
+            'decimal_separator': ',',
+            'decimal_places': 0,
+            'thousands_separator' : '.',
+            'symbol_position' : 'before',
+            'local_name': 'Guaraníes',
+            'active': True,
+        } )
+
+        ## Actualizar Moneda Rela brasil
+        currency_brl = self.env['res.currency'].search([('name', '=', 'BRL'),('active','=',False)])
+        currency_brl.write({
+            'decimal_separator': ',',
+            'decimal_places': 2,
+            'thousands_separator': '.',
+            'symbol_position': 'before',
+            'local_name': 'Real',
+            'active': True,
+        })
+
+        ## Actualizar Moneda Peso Argentino
+        currency_ars = self.env['res.currency'].search([('name', '=', 'ARS'),('active','=',False)])
+        currency_ars.write({
+            'decimal_separator': ',',
+            'decimal_places': 2,
+            'thousands_separator': '.',
+            'symbol_position': 'before',
+            'local_name': 'Peso Argentino',
+            'active': True
+        })
+
+        ## Actualizar Moneda Dolar
+        currency_usd = self.env['res.currency'].search([('name', '=', 'USD'),('active','=',False)])
+        currency_usd.write({
+            'decimal_separator': '.',
+            'decimal_places': 2,
+            'thousands_separator': ',',
+            'symbol_position': 'before',
+            'local_name': 'Dólares',
+            'active': True,
+        })

BIN
static/description/icon.png


+ 44 - 0
static/src/js/formatCurrency.js

@@ -0,0 +1,44 @@
+(function(){
+  "use strict";
+    /* ---------------------------------------------------------------------
+    * [formatAmountCurrency].
+    * Description: Number to currency format.
+    * Written by Robert Gauto.
+    * --------------------------------------------------------------------*/
+    openerp.web.formatCurrency = function () {
+        return function(value, options) {
+
+            value = value.toString()
+
+            if (!(options instanceof Object)) {
+                options = {}
+             }
+
+            options.thousandsSeparator = options.thousandsSeparator || '.'
+            options.decimalPlaces = options.decimalPlaces >= 0 || options.decimalPlaces <= 2 ? options.decimalPlaces : 2
+            options.decimalSeparator = options.decimalSeparator || ','
+            options.decimalZeros = !!options.decimalZeros
+
+            if (!!(`${options.thousandsSeparator}${options.decimalSeparator}`).replace(/\.,|,\./g, '')) {
+                throw new Error('Same thousands and decimal separator is not allowed')
+            }
+
+            value = value.split('.')
+
+            value[0] = value[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, `$1${options.thousandsSeparator}`)
+
+            if (!!value[1]) {
+                value[1] = Number.parseFloat(`1.${value[1]}e${options.decimalPlaces}`)
+                value[1] = Math.round(value[1]).toString().replace(/^1/, '')
+            }
+
+            value = options.decimalPlaces === 0 ?value[0]  :value.join(options.decimalSeparator)
+
+            if (!options.decimalZeros) {
+                value = value.replace(/([\.|,]\d)0$/, '$1')
+            }
+
+            return value
+          }
+    }()
+})();

+ 16 - 0
static/src/js/unFormatCurrency.js

@@ -0,0 +1,16 @@
+(function(){
+  "use strict";
+    /* ---------------------------------------------------------------------
+    * [unFormatAmountCurrency]
+    * Description: Format currency to number.
+    * Written by Robert Gauto.
+    * --------------------------------------------------------------------*/
+    openerp.web.unFormatCurrency = function () {
+        return function(value) {
+            value = value.replace(/[\.|,](\d{0,2}$)/, '?$1').split(/\?/)
+            value[0] = value[0].replace(/[^0-9]/g, '')
+            value = Number.parseFloat(value.join('.')) || 0
+            return value
+        }
+    }()
+})();

+ 23 - 0
views/res_currency.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+        <record id="currency_utility_form" model="ir.ui.view">
+            <field name="name">currency.utility.form</field>
+            <field name="model">res.currency</field>
+            <field name="inherit_id" ref="base.view_currency_form"/>
+            <field name="arch" type="xml">
+                <xpath expr="//group[@string='Miscellaneous']" position="after">
+                    <group string="Eiru Diversos" >
+                        <field name="thousands_separator" string="Separador de miles"/>
+                        <field name="decimal_separator" string="Separador de decimales"/>
+                        <field name="decimal_places" string="Cantidad de decimales"/>
+                        <field name="symbol_position" string="Posición del símbolo"/>
+                    </group>
+                </xpath>
+                <field name="rate_silent" position="after">
+                    <field name="local_name" string="Nombre"/>
+                </field >
+            </field>
+        </record>
+    </data>
+</openerp>

+ 11 - 0
views/templates.xml

@@ -0,0 +1,11 @@
+<openerp>
+    <data>
+        <!-- Templates -->
+        <template id="currency_utility.eiru_assets" name="currency_utility_eiru_assets" inherit_id="eiru_assets.assets">
+             <xpath expr="." position="inside">
+                <script type="text/javascript" src="/currency_utility/static/src/js/formatCurrency.js"/>
+                <script type="text/javascript" src="/currency_utility/static/src/js/unFormatCurrency.js"/>
+             </xpath>
+        </template>
+    </data>
+</openerp>