diff --git a/addons/account/models/account_invoice.py b/addons/account/models/account_invoice.py
index 3983f2315e4..146212f3e2d 100644
--- a/addons/account/models/account_invoice.py
+++ b/addons/account/models/account_invoice.py
@@ -313,7 +313,7 @@ class AccountInvoice(models.Model):
default=lambda self: self.env.user)
fiscal_position_id = fields.Many2one('account.fiscal.position', string='Fiscal Position', oldname='fiscal_position',
readonly=True, states={'draft': [('readonly', False)]})
- commercial_partner_id = fields.Many2one('res.partner', string='Commercial Entity',
+ commercial_partner_id = fields.Many2one('res.partner', string='Commercial Entity', compute_sudo=True,
related='partner_id.commercial_partner_id', store=True, readonly=True,
help="The commercial entity that will be used on Journal Entries for this invoice")
diff --git a/addons/barcodes/static/src/js/barcode_events.js b/addons/barcodes/static/src/js/barcode_events.js
index 3c5cb289232..0adff5f8e1b 100644
--- a/addons/barcodes/static/src/js/barcode_events.js
+++ b/addons/barcodes/static/src/js/barcode_events.js
@@ -113,6 +113,7 @@ var BarcodeEvents = core.Class.extend(mixins.PropertiesMixin, {
if (e.key === "ArrowLeft" || e.key === "ArrowRight" ||
e.key === "ArrowUp" || e.key === "ArrowDown" ||
e.key === "Escape" || e.key === "Tab" ||
+ e.key === "Backspace" || e.key === "Delete" ||
/F\d\d?/.test(e.key)) {
return true;
} else {
diff --git a/addons/barcodes/static/src/js/field_float_scannable.js b/addons/barcodes/static/src/js/field_float_scannable.js
index 79022362251..801cf32b5e2 100644
--- a/addons/barcodes/static/src/js/field_float_scannable.js
+++ b/addons/barcodes/static/src/js/field_float_scannable.js
@@ -23,6 +23,10 @@ var FieldFloatScannable = form_widgets.FieldFloat.extend({
},
simulateKeypress: function (e) {
+ /* only simulate a keypress if it has been previously prevented */
+ if (e.originalEvent.dispatched_by_barcode_reader !== true) {
+ return;
+ }
var character = String.fromCharCode(e.which);
var current_str = e.target.value;
var str_before_carret = current_str.substring(0, e.target.selectionStart);
diff --git a/addons/base_action_rule/data/base_action_rule_demo.xml b/addons/base_action_rule/data/base_action_rule_demo.xml
index d59b7ba45ff..b61927dd944 100644
--- a/addons/base_action_rule/data/base_action_rule_demo.xml
+++ b/addons/base_action_rule/data/base_action_rule_demo.xml
@@ -43,10 +43,44 @@
[('customer', '=', True)]
+
+ Test Server Action
+
+
+record = model.browse(context['active_id'])
+if 'partner_id' in context['old_values'][record.id]:
+ record.write({'state': 'draft'})
+
+
+
+
+ Test recursive rule
+ on_write
+
+
+
+
Test rule on secondary record
on_create
+
+
+ Test Server Action Context
+
+
+record = model.browse(context['active_id'])
+if 'user_id' in context['old_values'][record.id]:
+ record.write({'is_assigned_to_admin': (record.user_id.id == 1)})
+
+
+
+
+ Test rule on write check context
+ on_write
+
+
+
diff --git a/addons/base_action_rule/models/base_action_rule.py b/addons/base_action_rule/models/base_action_rule.py
index 2b57dc5cd0a..bb03e292b1d 100644
--- a/addons/base_action_rule/models/base_action_rule.py
+++ b/addons/base_action_rule/models/base_action_rule.py
@@ -179,13 +179,18 @@ class BaseActionRule(models.Model):
def _process(self, records):
""" Process action ``self`` on the ``records`` that have not been done yet. """
- # filter out the records on which self has already been done, then mark
- # remaining records as done (to avoid recursive processing)
+ # filter out the records on which self has already been done
action_done = self._context['__action_done']
- records -= action_done.setdefault(self, records.browse())
+ records_done = action_done.get(self, records.browse())
+ records -= records_done
if not records:
return
- action_done[self] |= records
+
+ # mark the remaining records as done (to avoid recursive processing)
+ action_done = dict(action_done)
+ action_done[self] = records_done + records
+ self = self.with_context(__action_done=action_done)
+ records = records.with_context(__action_done=action_done)
# modify records
values = {}
diff --git a/addons/base_action_rule/tests/test_base_action_rule.py b/addons/base_action_rule/tests/test_base_action_rule.py
index 49acc7239a1..3f5b7ed7705 100644
--- a/addons/base_action_rule/tests/test_base_action_rule.py
+++ b/addons/base_action_rule/tests/test_base_action_rule.py
@@ -92,6 +92,30 @@ class base_action_rule_test(common.TransactionCase):
self.assertTrue(lead.customer, "Customer field should updated to True")
self.assertEqual(lead.user_id, self.user_demo, "Responsible should be change on write of Lead when Customer becomes True.")
+ def test_11_recomputed_field(self):
+ """
+ Check that a rule is executed whenever a field is recomputed and the
+ context contains the target field
+ """
+ partner = self.env.ref('base.res_partner_1')
+ lead = self.create_lead(state='draft', partner_id=partner.id)
+ self.assertFalse(lead.deadline, 'There should not be a deadline defined')
+ # change priority and user; this triggers deadline recomputation, and
+ # the server action should set the boolean field to True
+ lead.write({'priority': True, 'user_id': self.user_admin.id})
+ self.assertTrue(lead.deadline, 'Deadline should be defined')
+ self.assertTrue(lead.is_assigned_to_admin, 'Lead should be assigned to admin')
+
+ def test_12_recursive(self):
+ """ Check that a rule is executed recursively by a secondary change. """
+ lead = self.create_lead(state='open')
+ self.assertEqual(lead.state, 'open')
+ self.assertEqual(lead.user_id, self.user_admin)
+ # change partner; this should trigger the rule that modifies the state
+ partner = self.env.ref('base.res_partner_1')
+ lead.write({'partner_id': partner.id})
+ self.assertEqual(lead.state, 'draft')
+
def test_20_direct_line(self):
"""
Check that a rule is executed after creating a line record.
diff --git a/addons/base_action_rule/tests/test_models.py b/addons/base_action_rule/tests/test_models.py
index f88d61ccd2d..8f0751090eb 100644
--- a/addons/base_action_rule/tests/test_models.py
+++ b/addons/base_action_rule/tests/test_models.py
@@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from odoo import fields, models
+from dateutil import relativedelta
+from odoo import fields, models, api
class LeadTest(models.Model):
@@ -19,6 +20,17 @@ class LeadTest(models.Model):
customer = fields.Boolean(related='partner_id.customer', readonly=True, store=True)
line_ids = fields.One2many('base.action.rule.line.test', 'lead_id')
+ priority = fields.Boolean()
+ deadline = fields.Boolean(compute='_compute_deadline', store=True)
+ is_assigned_to_admin = fields.Boolean(string='Assigned to admin user')
+
+ @api.depends('priority')
+ def _compute_deadline(self):
+ for record in self:
+ if not record.priority:
+ record.deadline = False
+ else:
+ record.deadline = fields.Datetime.from_string(record.create_date) + relativedelta.relativedelta(days=3)
class LineTest(models.Model):
_name = "base.action.rule.line.test"
diff --git a/addons/hr_expense/models/hr_expense.py b/addons/hr_expense/models/hr_expense.py
index 90cc95571d0..a29555e1d75 100644
--- a/addons/hr_expense/models/hr_expense.py
+++ b/addons/hr_expense/models/hr_expense.py
@@ -314,7 +314,7 @@ class HrExpense(models.Model):
# Calculate tax lines and adjust base line
taxes = expense.tax_ids.compute_all(expense.unit_amount, expense.currency_id, expense.quantity, expense.product_id)
account_move[-1]['price'] = taxes['total_excluded']
- account_move[-1]['tax_ids'] = expense.tax_ids.ids
+ account_move[-1]['tax_ids'] = [(6, 0, expense.tax_ids.ids)]
for tax in taxes['taxes']:
account_move.append({
'type': 'tax',
diff --git a/addons/hw_escpos/controllers/main.py b/addons/hw_escpos/controllers/main.py
index c5273154e8c..0829a384a21 100644
--- a/addons/hw_escpos/controllers/main.py
+++ b/addons/hw_escpos/controllers/main.py
@@ -86,10 +86,15 @@ class EscposDriver(Thread):
printers = usb.core.find(find_all=True, idVendor=0x0519)
for printer in printers:
+ try:
+ description = usb.util.get_string(printer, 256, printer.iManufacturer) + " " + usb.util.get_string(printer, 256, printer.iProduct)
+ except Exception as e:
+ _logger.error("Can not get printer description: %s" % (e.message or repr(e)))
+ description = 'Unknown printer'
connected.append({
'vendor': printer.idVendor,
'product': printer.idProduct,
- 'name': usb.util.get_string(printer, 256, printer.iManufacturer) + " " + usb.util.get_string(printer, 256, printer.iProduct)
+ 'name': description
})
return connected
diff --git a/addons/hw_posbox_homepage/controllers/main.py b/addons/hw_posbox_homepage/controllers/main.py
index 85a51077d33..1d44e7da255 100644
--- a/addons/hw_posbox_homepage/controllers/main.py
+++ b/addons/hw_posbox_homepage/controllers/main.py
@@ -58,7 +58,10 @@ index_template = """
If you need to grant remote debugging access to a developer, you can do it here .
- The PosBox software installed on this posbox is version 15 ,
+ If you need to display the current customer basket on another device, you can do it here .
+
+
+ The PosBox software installed on this posbox is version 16 ,
the posbox version number is independent from Odoo. You can upgrade
the software on the upgrade page .
diff --git a/addons/hw_screen/__init__.py b/addons/hw_screen/__init__.py
new file mode 100644
index 00000000000..bf7fb7b45c1
--- /dev/null
+++ b/addons/hw_screen/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+import controllers
diff --git a/addons/hw_screen/__openerp__.py b/addons/hw_screen/__openerp__.py
new file mode 100644
index 00000000000..8ed5711b836
--- /dev/null
+++ b/addons/hw_screen/__openerp__.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+{
+ 'name': 'Screen Driver',
+ 'version': '1.0',
+ 'category': 'Hardware Drivers',
+ 'sequence': 6,
+ 'summary': 'Provides support for customer facing displays',
+ 'website': 'https://www.odoo.com/page/point-of-sale',
+ 'description': """
+Screen Driver
+=============
+
+This module allows the POS client to send rendered HTML to a remotely
+installed screen. This module then displays this HTML using a web
+browser.
+""",
+ 'depends': ['hw_proxy'],
+ 'installable': False,
+ 'auto_install': False,
+}
diff --git a/addons/hw_screen/controllers/__init__.py b/addons/hw_screen/controllers/__init__.py
new file mode 100644
index 00000000000..f48716d3a69
--- /dev/null
+++ b/addons/hw_screen/controllers/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+import main
diff --git a/addons/hw_screen/controllers/main.py b/addons/hw_screen/controllers/main.py
new file mode 100644
index 00000000000..716f3117115
--- /dev/null
+++ b/addons/hw_screen/controllers/main.py
@@ -0,0 +1,166 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from openerp import http
+from openerp.tools import config
+from openerp.addons.web.controllers import main as web
+
+import logging
+import netifaces as ni
+import os
+from subprocess import call
+import time
+import threading
+
+self_port = str(config['xmlrpc_port'] or 8069)
+
+_logger = logging.getLogger(__name__)
+
+
+class HardwareScreen(web.Home):
+
+ event_data = threading.Event()
+ pos_client_data = {'rendered_html': False,
+ 'ip_from': False}
+ display_in_use = ''
+ failure_count = {}
+
+ def _call_xdotools(self, keystroke):
+ os.environ['DISPLAY'] = ":0.0"
+ os.environ['XAUTHORITY'] = "/run/lightdm/pi/xauthority"
+ try:
+ call(['xdotool', 'key', keystroke])
+ return "xdotool succeeded in stroking " + keystroke
+ except:
+ return "xdotool threw an error, maybe it is not installed on the posbox"
+
+ @http.route('/hw_proxy/display_refresh', type='json', auth='none', cors='*')
+ def display_refresh(self):
+ return self._call_xdotools('F5')
+
+ # POS CASHIER'S ROUTES
+ @http.route('/hw_proxy/customer_facing_display', type='json', auth='none', cors='*')
+ def update_user_facing_display(self, html=None):
+ request_ip = http.request.httprequest.remote_addr
+ if request_ip == HardwareScreen.pos_client_data.get('ip_from', ''):
+ HardwareScreen.pos_client_data['rendered_html'] = html
+ HardwareScreen.event_data.set()
+
+ return {'status': 'updated'}
+ else:
+ return {'status': 'failed'}
+
+ @http.route('/hw_proxy/take_control', type='json', auth='none', cors='*')
+ def take_control(self, html=None):
+ # ALLOW A CASHIER TO TAKE CONTROL OVER THE POSBOX, IN CASE OF MULTIPLE CASHIER PER POSBOX
+ HardwareScreen.pos_client_data['rendered_html'] = html
+ HardwareScreen.pos_client_data['ip_from'] = http.request.httprequest.remote_addr
+ HardwareScreen.event_data.set()
+
+ return {'status': 'success',
+ 'message': 'You now have access to the display'}
+
+ @http.route('/hw_proxy/test_ownership', type='json', auth='none', cors='*')
+ def test_ownership(self):
+ if HardwareScreen.pos_client_data.get('ip_from') == http.request.httprequest.remote_addr:
+ return {'status': 'OWNER'}
+ else:
+ return {'status': 'NOWNER'}
+
+ # POSBOX ROUTES (SELF)
+ @http.route('/point_of_sale/display', type='http', auth='none')
+ def render_main_display(self):
+ return self._get_html()
+
+ @http.route('/point_of_sale/get_serialized_order', type='json', auth='none')
+ def get_serialized_order(self):
+ request_addr = http.request.httprequest.remote_addr
+ result = HardwareScreen.pos_client_data
+ if HardwareScreen.display_in_use and request_addr != HardwareScreen.display_in_use:
+ if not HardwareScreen.failure_count.get(request_addr):
+ HardwareScreen.failure_count[request_addr] = 0
+ if HardwareScreen.failure_count[request_addr] > 0:
+ time.sleep(10)
+ HardwareScreen.failure_count[request_addr] += 1
+ return {'rendered_html': """Not Authorized. Another browser is in use to display for the client. Please refresh.
""",
+ 'stop_longpolling': True,
+ 'ip_from': request_addr}
+
+ # IMPLEMENTATION OF LONGPOLLING
+ # Times out 2 seconds before the JS request does
+ if HardwareScreen.event_data.wait(28):
+ HardwareScreen.event_data.clear()
+ HardwareScreen.failure_count[request_addr] = 0
+ return result
+ return {'rendered_html': False,
+ 'ip_from': HardwareScreen.pos_client_data['ip_from']}
+
+ def _get_html(self):
+ cust_js = None
+ interfaces = ni.interfaces()
+ my_ip = '127.0.0.1'
+ HardwareScreen.display_in_use = http.request.httprequest.remote_addr
+
+ with open(os.path.join(os.path.dirname(__file__), "../static/src/js/worker.js")) as js:
+ cust_js = js.read()
+
+ with open(os.path.join(os.path.dirname(__file__), "../static/src/css/cust_css.css")) as css:
+ cust_css = css.read()
+
+ display_ifaces = ""
+ for iface_id in interfaces:
+ iface_obj = ni.ifaddresses(iface_id)
+ ifconfigs = iface_obj.get(ni.AF_INET, [])
+ for conf in ifconfigs:
+ if conf.get('addr'):
+ display_ifaces += "" + iface_id + " "
+ display_ifaces += "" + conf.get('addr') + " "
+ display_ifaces += "" + conf.get('netmask') + " "
+ # What is my external IP ?
+ if iface_id != 'lo':
+ my_ip = conf.get('addr')
+
+ my_ip_port = my_ip + ":" + self_port
+
+ html = """
+
+
+
+ Odoo -- Point of Sale
+
+
+
+
+
+
+
+
+
+
+
+
+
Odoo Point of Sale
+
POSBox Client display
+
My IPs
+
+
+ Interface
+ IP
+ Netmask
+
+ """ + display_ifaces + """
+
+
The customer cart will be displayed here once a Point of Sale session is started.
+
Odoo version 11 or above is required.
+
+
+
+
+
+ """
+ return html
diff --git a/addons/hw_screen/static/src/css/cust_css.css b/addons/hw_screen/static/src/css/cust_css.css
new file mode 100644
index 00000000000..69fddb25457
--- /dev/null
+++ b/addons/hw_screen/static/src/css/cust_css.css
@@ -0,0 +1,21 @@
+html {
+ width: 100%;
+ height: 100%;
+ font-size: 11px;
+}
+
+body {
+ width: 100%;
+ height: 100%;
+ font-size: 14px;
+ margin: 0;
+}
+
+.original_body {
+ background-color: #797083;
+ color: white;
+}
+
+.ajax_got_body {
+ color: black;
+}
\ No newline at end of file
diff --git a/addons/hw_screen/static/src/js/worker.js b/addons/hw_screen/static/src/js/worker.js
new file mode 100644
index 00000000000..55e389e78ab
--- /dev/null
+++ b/addons/hw_screen/static/src/js/worker.js
@@ -0,0 +1,60 @@
+ $(function() {
+ "use strict";
+ // mergedHead will be turned to true the first time we receive something from a new host
+ // It allows to transform the only once
+ var mergedHead = false;
+ var current_client_url = "";
+ var stop_longpolling = false;
+
+ function longpolling() {
+ $.ajax({
+ type: 'POST',
+ url: 'http://'+window.location.host+'/point_of_sale/get_serialized_order',
+ dataType: 'json',
+ beforeSend: function(xhr){xhr.setRequestHeader('Content-Type', 'application/json');},
+ data: JSON.stringify({jsonrpc: '2.0'}),
+
+ success: function(data) {
+ if (typeof data.result.stop_longpolling !== 'undefined') {
+ stop_longpolling = data.result.stop_longpolling;
+ }
+ if (data.result.ip_from && data.result.rendered_html) {
+ var trimmed = $.trim(data.result.rendered_html);
+ var $parsedHTML = $('').html($.parseHTML(trimmed,true)); // WARNING: the true here will executes any script present in the string to parse
+ var new_client_url = $parsedHTML.find(".resources > base").attr('href');
+
+ if (!mergedHead || (current_client_url !== new_client_url)) {
+
+ mergedHead = true;
+ current_client_url = new_client_url;
+ $("body").removeClass('original_body').addClass('ajax_got_body');
+ $("head").children().not('.origin').remove();
+ $("head").append($parsedHTML.find(".resources").html());
+ }
+
+ $(".container").html($parsedHTML.find('.pos-customer_facing_display').html());
+ $(".container").attr('class', 'container').addClass($parsedHTML.find('.pos-customer_facing_display').attr('class'));
+
+ var d = $('.pos_orderlines_list');
+ d.scrollTop(d.prop("scrollHeight"));
+
+ // Here we execute the code coming from the pos, apparently $.parseHTML() executes scripts right away,
+ // Since we modify the dom afterwards, the script might not have any effect
+ if (typeof foreign_js !== 'undefined' && $.isFunction(foreign_js)) {
+ foreign_js();
+ }
+ }
+ },
+
+ complete: function(jqXHR,err) {
+ if (!stop_longpolling) {
+ longpolling();
+ }
+ },
+
+ timeout: 30000,
+ });
+ };
+
+ longpolling();
+ });
\ No newline at end of file
diff --git a/addons/l10n_do/__init__.py b/addons/l10n_do/__init__.py
index 67dee8c60db..dc5e6b693d1 100644
--- a/addons/l10n_do/__init__.py
+++ b/addons/l10n_do/__init__.py
@@ -1,2 +1,4 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import models
diff --git a/addons/l10n_do/__openerp__.py b/addons/l10n_do/__openerp__.py
index a3f9fc3cada..c583c6de2e0 100644
--- a/addons/l10n_do/__openerp__.py
+++ b/addons/l10n_do/__openerp__.py
@@ -1,42 +1,106 @@
# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-# First author: Jose Ernesto Mendez (Open Business Solutions SRL.)
-# Copyright (c) 2012 -TODAY Open Business Solutions, SRL. (http://obsdr.com). All rights reserved.
-# This is a fork to upgrade to odoo 8.0
-# by Marcos Organizador de Negocios - Eneldo Serrata - www.marcos.org.do
+# Author: Gustavo Valverde iterativo | Consultores
+# Contributors: Edser Solis - iterativo
+
+# Odoo 8.0 author: Eneldo Serrata
+# (Marcos Organizador de Negocios SRL..)
+# Odoo 7.0 author: Jose Ernesto Mendez
+# (Open Business Solutions SRL.)
+
+# Copyright (c) 2016 - Present | iterativo, SRL. - http://iterativo.do
+# All rights reserved.
{
'name': 'Dominican Republic - Accounting',
- 'version': '1.0',
+ 'version': '2.0',
'category': 'Localization',
'description': """
-This is the base module to manage the accounting chart for Dominican Republic.
-==============================================================================
-* Chart of Accounts.
-* The Tax Code Chart for Domincan Republic
-* The main taxes used in Domincan Republic
-* Fiscal position for local """,
- 'author': 'Eneldo Serrata - Marcos Organizador de Negocios, SRL.',
- 'website': 'http://marcos.do',
- 'depends': ['account', 'base_iban'],
+Localization Module for Dominican Republic
+===========================================
+
+Catálogo de Cuentas e Impuestos para República Dominicana, Compatible para
+**Internacionalización** con **NIIF** y alineado a las normas y regulaciones
+de la Dirección General de Impuestos Internos (**DGII**).
+
+**Este módulo consiste de:**
+
+- Catálogo de Cuentas Estándar (alineado a DGII y NIIF)
+- Catálogo de Impuestos con la mayorÃa de Impuestos Preconfigurados
+ - ITBIS para compras y ventas
+ - Retenciones de ITBIS
+ - Retenciones de ISR
+ - Grupos de Impuestos y Retenciones:
+ - Telecomunicaiones
+ - Proveedores de Materiales de Construcción
+ - Personas FÃsicas Proveedoras de Servicios
+ - Otros impuestos
+- Secuencias Preconfiguradas para manejo de todos los NCF
+ - Facturas con Valor Fiscal (para Ventas)
+ - Facturas para Consumidores Finales
+ - Notas de Débito y Crédito
+ - Registro de Proveedores Informales
+ - Registro de Ingreso Único
+ - Registro de Gastos Menores
+ - Gubernamentales
+- Posiciones Fiscales para automatización de impuestos y retenciones
+ - Cambios de Impuestos a Exenciones (Ej. Ventas al Estado)
+ - Cambios de Impuestos a Retenciones (Ej. Compra Servicios al Exterior)
+ - Entre otros
+
+**Nota:**
+Esta localización, aunque posee las secuencias para NCF, las mismas no pueden
+ser utilizadas sin la instalación de módulos de terceros o desarrollo
+adicional.
+
+Estructura de Codificación del Catálogo de Cuentas:
+===================================================
+
+**Un dÃgito** representa la categorÃa/tipo de cuenta del del estado financiero.
+**1** - Activo **4** - Cuentas de Ingresos y Ganancias
+**2** - Pasivo **5** - Costos, Gastos y Pérdidas
+**3** - Capital **6** - Cuentas Liquidadoras de Resultados
+
+**Dos dÃgitos** representan los rubros de agrupación:
+11- Activo Corriente
+21- Pasivo Corriente
+31- Capital Contable
+
+**Cuatro dÃgitos** se asignan a las cuentas de mayor: cuentas de primer orden
+1101- Efectivo y Equivalentes de Efectivo
+2101- Cuentas y Documentos por pagar
+3101- Capital Social
+
+**Seis dÃgitos** se asignan a las sub-cuentas: cuentas de segundo orden
+110101 - Caja
+210101 - Proveedores locales
+
+**Ocho dÃgitos** son para las cuentas de tercer orden (las visualizadas
+en Odoo):
+1101- Efectivo y Equivalentes
+110101- Caja
+11010101 Caja General
+ """,
+ 'author': 'Gustavo Valverde - iterativo | Consultores de Odoo',
+ 'website': 'http://iterativo.do',
+ 'depends': ['account',
+ 'base_iban'
+ ],
'data': [
- # basic accounting data
- 'data/account_chart_template.xml',
+ # Basic accounting data
+ 'data/l10n_do_chart_data.xml',
'data/account.account.template.csv',
'data/set_account_on_chart_template.xml',
'data/account_account_tag.xml',
- 'data/account.tax.template.csv',
- 'data/l10n_do_base_data.xml',
+ 'data/account.tax.template.xml',
+ # Country States
+ 'data/l10n_do_state_data.xml',
# Adds fiscal position
- 'data/account.fiscal.position.template.csv',
- 'data/account.fiscal.position.tax.template.csv',
+ 'data/fiscal_position_template.xml',
# configuration wizard, views, reports...
'data/account_chart_template.yml',
- ],
- 'test': [],
- 'demo': [],
+ ],
'installable': True,
'auto_install': False,
}
diff --git a/addons/l10n_do/data/account.account.template.csv b/addons/l10n_do/data/account.account.template.csv
index ed6b2ba91a8..2879acc2e86 100644
--- a/addons/l10n_do/data/account.account.template.csv
+++ b/addons/l10n_do/data/account.account.template.csv
@@ -1,198 +1,254 @@
id,code,name,user_type_id/id,reconcile,chart_template_id/id
-default_chart_a_account_528,61121,"Agua, Luz y Basura",account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_529,61122,Telecomunicaciones,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_721,61123,Otros Gastos Administrativos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_531,61131,Depreciación Edificio,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_532,61132,Depreciación Mobiliario y Equipos de Oficina,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_533,61133,Depreciación Equipos de Cómputos y Telecomunicaciones,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_534,61134,Depreciación Equipos de Transporte,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_535,61135,Depreciación Maquinarias y Equipos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_536,61136,Depreciación Otros Activos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_537,61137,Amortización Mejoras en Propiedad Arrendada,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_538,61138,Amortización Gastos de Organización y Constitución,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_539,61139,Amortización Patentes y Derechos de Explotación,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_542,61141,Alquiler de Locales ,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_543,61142,Alquiler de Equipos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_544,61143,Alquiler de VehÃculos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_545,61144,Alquileres Generales,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_722,61160,Otras Deducciones Admitidas,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_586,61161,Impuesto de Fiscalización,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_587,61162,Retenciones de Impuesto sobre la Rentas Asumidas,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_588,61163,"Penalidades, Mora e Interés Indemnizatorios",account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_589,61164,Gastos Sin Comprobantes No Admitidos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_590,61165,Gastos de Años Anteriores No Admitidos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_591,61166,Otros Gastos No Deducible ISR,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_592,61167,Otros Gastos Generales y Administrativos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_594,61171,Cargos Bancarios,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_595,61172,Cargos Carnet,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_596,61173,Pérdida en Ajuste por Tipo de Cambio,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_597,61174,Intereses sobre Prestamos Bancarios,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_598,61175,Intereses sobre Prestamos Particulares,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_600,61181,Impuestos sobre la Renta Corrientes,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_601,61182,Impuestos sobre Activos Corrientes,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_602,61183,Impuestos Sobre la Renta Diferidos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_603,61184,Crédito Fiscal por Retención de Dividendos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_604,61185,Impuestos de años anteriores,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_605,61186,Impuestos sobre Activos de años anteriores,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_152,112050,Efectivo en transito,account.data_account_type_current_assets,true,l10n_do.default_chart_a
-default_chart_a_account_13,113010,Cuentas por Cobrar Clientes,account.data_account_type_receivable,true,l10n_do.default_chart_a
-default_chart_a_account_14,113020,Cuentas por Cobrar Funcionarios y Empleados,account.data_account_type_receivable,true,l10n_do.default_chart_a
-default_chart_a_account_15,113030,Otras Cuentas por Cobrar,account.data_account_type_receivable,true,l10n_do.default_chart_a
-default_chart_a_account_707,113040,Pendientes de conciliar,account.data_account_type_current_assets,true,l10n_do.default_chart_a
-default_chart_a_account_709,113050,Operaciones bancarias en transito,account.data_account_type_current_assets,true,l10n_do.default_chart_a
-default_chart_a_account_716,113060,Gastos Pagados Por Adelantado,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_17,114010,Mercancias,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_18,114020,Materia Prima,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_19,114030,Productos en procesos,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_20,114040,Productos terminados,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_22,115010,Seguros,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_23,115020,Placas y Patentes,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_24,115030,I.S.R.,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_25,115040,Intereses cobrados por adelantados,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_26,115050,Otros,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_182,123100,Mobiliario y Equipos de Oficina,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_183,123200,Deprec. Acumulada Mobiliario y Equipos de Oficina,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_184,124100,Equipos de Cómputos y Telecomunicaciones,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_185,124200,Deprec. Acumulada Equipos de Cómputos y Telecomunicaciones,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_187,125100,Equipos de Transporte Livianos,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_188,125200,Deprec. Acumulada Equipos de Transporte Livianos,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_190,125300,Equipos de Transporte Pesados,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_191,125400,Deprec. Acumulada Equipos de Transporte Pesados,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_194,127100,Otros Activos Depreciables,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_195,127200,Deprec. Acumulada Otros Activos Depreciables,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_197,128100,Mejoras en Propiedad Arrendada,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_198,128200,Amortización Mejoras en Propiedad Arrendada,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_200,129100,Terreno en Proceso de Capitalización,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_201,129200,Edificio en Proceso de Capitalización,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_203,129400,Equipos de Cómputos y Telecom. en Proceso de Instalación,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_204,129500,Equipos de Transporte en Proceso de Liquidación,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_205,129700,Otros Activos Depreciables en Proceso de Instalación,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_38,131000,Mejoras Propiedad Arrendadas,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_39,132000,Gastos de Organizacion,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_40,133000,Gastos Legales,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_42,141000,Acciones,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_43,142000,bonos,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_44,143000,Bienes Muebles e Inmuebles,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_46,151000,Fianzas,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_47,152000,Depositos,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_48,153000,Codetel,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_49,154000,CDEEE,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_50,155000,CAASD,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_51,156000,Telecable Nacional,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_719,157000,Obras de Arte,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_53,161000,ITBIS Pagado en compras,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_54,162000,Anticipos ISR,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_55,163000,ITBIS retenido cobros con tarjetas,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_56,164000,ITBIS Pagado en importaciones,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_57,165000,ITBIS por servicios deducibles,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_70,201050,Retencion Empleados SFS,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_61,211010,Suplidores,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_62,211020,Proveedores,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_63,211030,Instituciones Estatales,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_64,211040,Prestamos por Pagar,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_713,211050,Cheques popular en transito,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_714,211060,Caja Chica por pagar,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_715,211070,Sueldo y Salarios por Pagar,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_717,211080,Otras Cuentas Por Pagar,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_718,211090,Cobros anticipados,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_66,212010,Retención Empleados SVDS,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_67,212020,I.S.R.,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_723,212021,I.S.R. RETENCIONES DE ASALARIADOS,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_68,212030,Infotep,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_69,212040,TSS,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_71,212060,ITBIS,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_163,212061,ITBIS 18% retenido a personas fisicas,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_712,212062,ISR 10% retenido a personas fisicas,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_72,212070,Otras Retenciones,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_720,212080,Otros Impuestos Por Pagar,account.data_account_type_payable,true,l10n_do.default_chart_a
-default_chart_a_account_75,311000,Capital Autorizado,account.data_account_type_equity,false,l10n_do.default_chart_a
-default_chart_a_account_76,312000,Acciones no emitidas,account.data_account_type_equity,false,l10n_do.default_chart_a
-default_chart_a_account_77,313000,Capital Social,account.data_account_type_equity,false,l10n_do.default_chart_a
-default_chart_a_account_79,321000,Reserva Legal,account.data_account_type_equity,false,l10n_do.default_chart_a
-default_chart_a_account_80,322000,Reservas para Contingencias,account.data_account_type_equity,false,l10n_do.default_chart_a
-default_chart_a_account_82,331000,Ganancias retenidas años anteriores,account.data_account_type_equity,false,l10n_do.default_chart_a
-default_chart_a_account_83,332000,Ajustes años anteriores,account.data_account_type_equity,false,l10n_do.default_chart_a
-default_chart_a_account_84,333000,Ganancia del periodo,account.data_account_type_equity,false,l10n_do.default_chart_a
-default_chart_a_account_87,411000,Ventas,account.data_account_type_revenue,false,l10n_do.default_chart_a
-default_chart_a_account_89,421000,Ingresos por Servicios,account.data_account_type_revenue,false,l10n_do.default_chart_a
-default_chart_a_account_90,422000,Intereses Cobrados,account.data_account_type_revenue,false,l10n_do.default_chart_a
-default_chart_a_account_91,423000,Donaciones,account.data_account_type_revenue,false,l10n_do.default_chart_a
-default_chart_a_account_92,424000,Ingresos en Ventas de Activos Fijos,account.data_account_type_revenue,false,l10n_do.default_chart_a
-default_chart_a_account_93,430000,Devoluciones en Ventas,account.data_account_type_revenue,false,l10n_do.default_chart_a
-default_chart_a_account_94,440000,Descuentos en Ventas,account.data_account_type_revenue,false,l10n_do.default_chart_a
-default_chart_a_account_148,450000,Ingresos por diferencia de cambio,account.data_account_type_revenue,false,l10n_do.default_chart_a
-default_chart_a_account_724,460000,Otros Ingresos,account.data_account_type_revenue,false,l10n_do.default_chart_a
-default_chart_a_account_97,511000,Materiales Directos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_98,512000,Mano de Obra Directa,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_99,513000,Costos Indirectos de Fabricacion,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_101,521000,Compras de mercancias,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_162,522000,Compras de mercancÃas en US,account.data_account_type_expenses,true,l10n_do.default_chart_a
-default_chart_a_account_102,523000,Devoluciones en compras,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_103,524000,Descuentos en Compras,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_104,525000,Transporte en Compras,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_150,526000,Costo en ventas,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_507,611110,Salarios,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_516,611111,Infotep,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_517,611112,Aporte Plan Básico de Salud (SFS),account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_518,611113,Aporte Plan de Pensiones (AFP),account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_519,611114,Aporte Riesgos Laborales (ARL) ,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_520,611115,Seguro Medico y de Vida Privado,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_521,611116,Uniforme,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_522,611117,Dietas y Viáticos a Empleados,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_523,611118,Actividades Sociales Empleados,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_525,611120,Impuesto de Retribuciones Complementarias,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_508,611121,Comisiones Funcionarios y Empleados,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_526,611122,Otros Beneficios Empleados,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_509,611123,Incentivos y Horas Extras,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_510,611124,Bonificación,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_511,611125,Salario de Navidad,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_512,611126,Vacaciones,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_513,611127,Preaviso y CesantÃa,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_514,611128,Compensación uso de vehÃculos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_515,611129,Entrenamiento y Capacitación,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_524,611130,Gasto de Retribuciones Complementarias,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_547,611501,Honorarios por Servicios Profesionales Sociedades,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_548,611502,Honorarios por Servicios Profesionales Personas FÃsicas,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_549,611503,Comisiones por Venta a Terceros Personas FÃsicas,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_550,611504,Transporte y Acarreo,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_551,611505,Combustible y Lubricantes VehÃculos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_552,611506,Combustible Planta Eléctrica,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_553,611507,EstadÃa Hoteles,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_554,611508,Gastos por Cuentas Malas,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_555,611509,Reparaciones de Edificio,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_556,611510,Reparaciones de Activos Fijos CategorÃa 2 y 3,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_557,611511,Mantenimiento de Activos Fijos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_558,611512,Promociones,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_559,611513,Publicidad,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_560,611514,Viáticos y Representación,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_561,611515,Patrocinio y aportes,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_562,611516,Participación en concursos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_563,611517,Material Gastable y PapelerÃa,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_564,611518,Material de Limpieza,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_565,611519,Atenciones a Clientes,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_566,611520,Gastos de Correo y EnvÃos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_567,611521,Gastos Legales,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_568,611522,Seguridad Electrónica,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_569,611523,Guardianes y Vigilancia,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_570,611524,Fumigación y Control de Plagas,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_571,611525,Suscripciones y MembresÃas,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_572,611526,Donaciones,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_573,611527,Gastos de Representación,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_574,611528,Pérdida por Obsolescencia de Inventarios,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_575,611529,Pérdida en Venta de Inversiones,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_576,611530,Pérdida en Venta de Activos Fijos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_577,611531,Pérdida en Venta de Terreno,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_578,611532,Pérdida en Venta de Edificio,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_579,611533,Pérdida en Venta de Mobiliario y Equipos de Oficina,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_580,611534,Pérdida en Venta de Maquinarias y Equipos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_581,611535,Pérdida en Venta de Otros Activos Fijos,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_582,611536,Pérdida en Participación Patrimonial en Subsidiarias,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_583,611537,Pérdida en Indemnización de Seguros,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_584,611538,Consulta de Datos e Formación Crediticia,account.data_account_type_expenses,false,l10n_do.default_chart_a
-default_chart_a_account_143,711000,"Beneficio en retiro de Propiedad, Planta y Equipos",account.data_account_type_current_assets,true,l10n_do.default_chart_a
-default_chart_a_account_144,712000,"Perdida en retiro de Propiedad, Planta y Equipos",account.data_account_type_current_assets,true,l10n_do.default_chart_a
-default_chart_a_account_145,720000,Resumen de Ganancias y Perdidas,account.data_account_type_current_assets,true,l10n_do.default_chart_a
-default_chart_a_account_173,11103002,Cheques en caja,account.data_account_type_current_assets,true,l10n_do.default_chart_a
-default_chart_a_account_174,11103003,Diferencia en caja,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_175,11103004,Sobrante en caja,account.data_account_type_current_assets,false,l10n_do.default_chart_a
-default_chart_a_account_176,11103005,Caja en transito,account.data_account_type_current_assets,true,l10n_do.default_chart_a
+do_niif_11010301,11010301,Depósitos a Corto Plazo,account.data_account_type_liquidity,FALSE,do_chart_template
+do_niif_11020100,11020100,Bonos y Acciones Temporales,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11020200,11020200,Operaciones en Bolsa,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11020300,11020300,Otros Valores Negociables,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11030101,11030101,Cheques Devueltos por Cobrar,account.data_account_type_receivable,TRUE,do_chart_template
+do_niif_11030102,11030102,Intereses por Cobrar,account.data_account_type_receivable,TRUE,do_chart_template
+do_niif_11030201,11030201,Cuenta por Cobrar a Clientes,account.data_account_type_receivable,TRUE,do_chart_template
+do_niif_11030202,11030202,Cuenta por Cobrar a Funcionarios y Empleados,account.data_account_type_receivable,TRUE,do_chart_template
+do_niif_11030203,11030203,Cuenta por Cobrar a Afiliadas,account.data_account_type_receivable,TRUE,do_chart_template
+do_niif_11030204,11030204,Cuenta por Cobrar a Accionistas,account.data_account_type_receivable,TRUE,do_chart_template
+do_niif_11030205,11030205,Otras Cuentas por Cobrar,account.data_account_type_receivable,TRUE,do_chart_template
+do_niif_11040100,11040100,Provisión Incobrables a Clientes,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11040200,11040200,Provisión Incobrables a Funcionarios y Empleados,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11040300,11040300,Provisión Incobrables a Afiliadas,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11040400,11040400,Provisión Incobrables a Accionistas,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11040500,11040500,Provisión Otras Cuentas Incobrables,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11050100,11050100,Inventario de Mercancías o Productos Terminados,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11050200,11050200,Inventario de Materia Prima,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11050300,11050300,Inventario en Tránsito,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11050400,11050400,Materiales y Suministros en Inventario,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11050500,11050500,Combustibles en Inventario,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11060100,11060100,Deterioro Acum. de Inventario en Almacen,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11060200,11060200,Deterioro Acum. de Materiales y Suministros,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11060300,11060300,Deterioro Acum. de Combustibles,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11070100,11070100,Obsolescencia Inventario en Almacen,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11070200,11070200,Obsolescencia Materiales y Suministros,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11070300,11070300,Obsolescencia Combustibles,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11080101,11080101,ITBIS Pagado en Compras Locales,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11080102,11080102,ITBIS Pagado en Servicios Locales,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11080103,11080103,ITBIS Pagado por Importaciones,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11080301,11080301,ITBIS Pagado en Ventas con Tarjeta de Crédito (Norma 08-04),account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11080302,11080302,Saldo a Favor ITBIS,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11080303,11080303,Saldo a Favor ISR,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11090100,11090100,Acciones Temporales,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11090200,11090200,Depósitos a Plazo Temporales,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11090300,11090300,Bonos Temporales,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_11100100,11100100,Gastos Pagados por Anticipado,account.data_account_type_prepayments,FALSE,do_chart_template
+do_niif_11100200,11100200,Renta Pagada por Anticipado,account.data_account_type_prepayments,FALSE,do_chart_template
+do_niif_11100300,11100300,Seguros Pagados por Anticipado,account.data_account_type_prepayments,FALSE,do_chart_template
+do_niif_11100400,11100400,Anticipos ISR,account.data_account_type_prepayments,FALSE,do_chart_template
+do_niif_11100500,11100500,Anticipos Gastos,account.data_account_type_prepayments,FALSE,do_chart_template
+do_niif_12010101,12010101,Terrenos,account.data_account_type_fixed_assets,FALSE,do_chart_template
+do_niif_12010102,12010102,Edificaciones,account.data_account_type_fixed_assets,FALSE,do_chart_template
+do_niif_12010201,12010201,Equipo de Transporte,account.data_account_type_fixed_assets,FALSE,do_chart_template
+do_niif_12010202,12010202,Mobiliario y Equipos,account.data_account_type_fixed_assets,FALSE,do_chart_template
+do_niif_12010301,12010301,Maquinaria,account.data_account_type_fixed_assets,FALSE,do_chart_template
+do_niif_12010302,12010302,Herramientas,account.data_account_type_fixed_assets,FALSE,do_chart_template
+do_niif_12010303,12010303,Instalaciones,account.data_account_type_fixed_assets,FALSE,do_chart_template
+do_niif_12010304,12010304,Misceláneos u otros activos,account.data_account_type_fixed_assets,FALSE,do_chart_template
+do_niif_12020100,12020100,Depreciación Acum. de Edificios,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12020200,12020200,Depreciación Acum. de Equipo de Transporte,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12020300,12020300,Depreciación Acum. de Mobiliario y Equipos,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12020400,12020400,Depreciación Acum. de Maquinaria,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12020500,12020500,Depreciación Acum. de Herramientas,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12020600,12020600,Depreciación Acum. de Instalaciones,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12040100,12040100,Marcas y Patentes,account.data_account_type_fixed_assets,FALSE,do_chart_template
+do_niif_12040200,12040200,Programas Informáticos,account.data_account_type_fixed_assets,FALSE,do_chart_template
+do_niif_12050100,12050100,Edificios y Locales Arrendados,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_12050200,12050200,Maquinaria y Equipo Arrendados,account.data_account_type_current_assets,FALSE,do_chart_template
+do_niif_12050300,12050300,Instalaciones Arrendadas,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12060100,12060100,Depreciación Acum. Edificios y Locales,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12060200,12060200,Depreciación Acum. Maquinaria y Equipo,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12060300,12060300,Depreciación Acum. Instalaciones,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12070100,12070100,Deterioro Valor Acum. Edificios y Locales,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12070200,12070200,Deterioro Valor Acum. Maquinaria y Equipo,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12070300,12070300,Deterioro Valor Acum. Instalaciones,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12080100,12080100,Acciones en otras sociedades,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12090100,12090100,Diferencias temporales deducibles,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12090200,12090200,Gastos Organizacionales Diferidos,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_12090300,12090300,ISR Deducible,account.data_account_type_non_current_assets,FALSE,do_chart_template
+do_niif_21010100,21010100,Préstamos Bancarios por Pagar,account.data_account_type_payable,TRUE,do_chart_template
+do_niif_21010200,21010200,Cuenta por Pagar Proveedores Locales,account.data_account_type_payable,TRUE,do_chart_template
+do_niif_21010300,21010300,Cuenta por Pagar Proveedores del Exterior,account.data_account_type_payable,TRUE,do_chart_template
+do_niif_21010400,21010400,Nóminas por Pagar,account.data_account_type_payable,TRUE,do_chart_template
+do_niif_21010500,21010500,Intereses por Pagar,account.data_account_type_payable,TRUE,do_chart_template
+do_niif_21010600,21010600,Otras Cuentas por Pagar,account.data_account_type_payable,TRUE,do_chart_template
+do_niif_21020100,21020100,Dividendos por Pagar,account.data_account_type_payable,TRUE,do_chart_template
+do_niif_21020200,21020200,Comisiones por Pagar,account.data_account_type_payable,TRUE,do_chart_template
+do_niif_21020300,21020300,Bonificaciones por Pagar,account.data_account_type_payable,TRUE,do_chart_template
+do_niif_21020400,21020400,Regalía Pascual por Pagar,account.data_account_type_payable,TRUE,do_chart_template
+do_niif_21030101,21030101,ITBIS por Venta Servicios,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030102,21030102,ITBIS por Venta Bienes,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030103,21030103,ITBIS por Venta Bienes - al Exterior,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030201,21030201,ITBIS Retenido Persona Jurídica (N 02-05),account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030202,21030202,ITBIS Retenido Persona Física (R 293-11),account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030203,21030203,ITBIS Retenido a Entidades No Lucrativas (N 01-2011),account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030204,21030204,ITBIS Retenido por Servicios Profesionales Liberales (N 02-05),account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030205,21030205,ITBIS Retenido a Proveedores Informales de Bienes (N 08-10),account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030301,21030301,ISR Retenido por Honorarios Profesionales de Personas Físicas,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030302,21030302,ISR Retenido por Alquileres Pagados a Personas Físicas,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030303,21030303,ISR Retenido por Dividendos Pagados,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030304,21030304,ISR Retenido por Intereses Pagados al Exterior,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030305,21030305,ISR Retenido por Intereses Pagados,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030306,21030306,ISR Retenido por Transferencias de Títulos y Propiedades,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030307,21030307,ISR Retenido por Remesas al Exterior (Ley 253-12),account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030308,21030308,Otras Retenciones (N 07-07),account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030309,21030309,Otras Retenciones,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030401,21030401,Retención de Seguro Familiar de Salud (SFS),account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030402,21030402,"Seguro de vejez, Discapacidad y Sobre Vivencia (AFP)",account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030404,21030404,Impuesto al Salario (ISR),account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030501,21030501,ISR por Pagar,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030502,21030502,Anticipos ISR por Pagar,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030503,21030503,Seguro de Riesgo Laboral (SRL),account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030504,21030504,INFOTEP,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21030505,21030505,Otros Impuestos por Pagar,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21040100,21040100,Provisión Pago Alquileres,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21040200,21040200,Provisión Arrendamiento Financiero,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21040300,21040300,Provisión Gastos Fijos,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21050100,21050100,Tarjeta de Crédito Empresarial,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_21050200,21050200,Prima de Tarjetas de Crédito,account.data_account_type_current_liabilities,FALSE,do_chart_template
+do_niif_22010100,22010100,Préstamos Bancarios Largo Plazo,account.data_account_type_non_current_liabilities,FALSE,do_chart_template
+do_niif_22010200,22010200,Préstamos Hipotecarios LP,account.data_account_type_non_current_liabilities,FALSE,do_chart_template
+do_niif_22012300,22012300,Otros Préstamos LP,account.data_account_type_non_current_liabilities,FALSE,do_chart_template
+do_niif_22020100,22020100,Provisión Beneficios de Empleados LP,account.data_account_type_non_current_liabilities,FALSE,do_chart_template
+do_niif_22020200,22020200,Provisión Prestaciones Laborales,account.data_account_type_non_current_liabilities,FALSE,do_chart_template
+do_niif_22020300,22020300,Provisión Indemnizaciones,account.data_account_type_non_current_liabilities,FALSE,do_chart_template
+do_niif_22030100,22030100,Anticipos de Clientes,account.data_account_type_non_current_liabilities,FALSE,do_chart_template
+do_niif_22030200,22030200,Garantías de Clientes,account.data_account_type_non_current_liabilities,FALSE,do_chart_template
+do_niif_22040100,22040100,Provisión Arrendamiento Financiero LP,account.data_account_type_non_current_liabilities,FALSE,do_chart_template
+do_niif_31010100,31010100,Capital Social Autorizado,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_31010200,31010200,Capital Social en Acciones no Emitidas,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_31010300,31010300,Capital Social Pagado,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_31010400,31010400,Capital Social No Pagado,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_31010500,31010500,Acciones o Participaciones en Tesorería,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_31020100,31020100,Superávit por Revaluación de Terrenos,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_31020200,31020200,Superávit por Revaluación de Edificaciones,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_31020300,31020300,Superávit por Revaluación de Instalaciones,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_31020400,31020400,Superávit por Revaluación de Mobiliario y Equipo,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_32010100,32010100,Reserva Legal,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_33010100,33010100,Utilidades de Ejercicios Anteriores,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_33010200,33010200,Pérdidas de Ejercicios Anteriores,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_33020100,33020100,Utilidad del Ejercicio,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_33020200,33020200,Pérdidas del Ejercicio,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_33040100,33040100,Superávit en Reserva,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_33040200,33040200,Déficit en Reserva,account.data_account_type_equity,FALSE,do_chart_template
+do_niif_41010100,41010100,Ventas Bienes,account.data_account_type_revenue,FALSE,do_chart_template
+do_niif_41010200,41010200,Ventas Bienes - Al Exterior,account.data_account_type_revenue,FALSE,do_chart_template
+do_niif_41020100,41020100,Ventas Servicios,account.data_account_type_revenue,FALSE,do_chart_template
+do_niif_41020200,41020200,Ventas Servicios - Al Exterior,account.data_account_type_revenue,FALSE,do_chart_template
+do_niif_41030100,41030100,Devoluciones de Bienes,account.data_account_type_revenue,FALSE,do_chart_template
+do_niif_41030200,41030200,Devoluciones por Servicios,account.data_account_type_revenue,FALSE,do_chart_template
+do_niif_41040100,41040100,Descuentos por Ventas (por NC),account.data_account_type_revenue,FALSE,do_chart_template
+do_niif_42010100,42010100,Intereses sobre Certificados,account.data_account_type_revenue,FALSE,do_chart_template
+do_niif_42010200,42010200,Intereses en Cuentas Bancarias,account.data_account_type_revenue,FALSE,do_chart_template
+do_niif_42010300,42010300,Intereses por Financiamientos,account.data_account_type_revenue,FALSE,do_chart_template
+do_niif_42020100,42020100,Ingresos por Ventas de Activos,account.data_account_type_revenue,FALSE,do_chart_template
+do_niif_42030100,42030100,Ingresos por Dividendos Ganados,account.data_account_type_revenue,FALSE,do_chart_template
+do_niif_42040100,42040100,Ingresos por Diferencia Cambiaria,account.data_account_type_other_income,FALSE,do_chart_template
+do_niif_42040200,42040200,Cobro de Cuentas Incobrables,account.data_account_type_other_income,FALSE,do_chart_template
+do_niif_42040300,42040300,Otros Ingresos,account.data_account_type_other_income,FALSE,do_chart_template
+do_niif_51010100,51010100,Costos de Bienes,account.data_account_type_direct_costs,FALSE,do_chart_template
+do_niif_51010200,51010200,Otros Costos de Venta,account.data_account_type_direct_costs,FALSE,do_chart_template
+do_niif_51020100,51020100,Materia Prima,account.data_account_type_direct_costs,FALSE,do_chart_template
+do_niif_51020200,51020200,Mano de Obra,account.data_account_type_direct_costs,FALSE,do_chart_template
+do_niif_51020300,51020300,Costos Indirectos,account.data_account_type_direct_costs,FALSE,do_chart_template
+do_niif_52010100,52010100,Sueldos y Salarios,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010200,52010200,Regalía Pascual,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010300,52010300,Retribuciones Complementarias,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010400,52010400,Bono Vacacional,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010500,52010500,Bono por Desempeño,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010600,52010600,Comisiones,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010700,52010700,Indemnizaciones,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010800,52010800,Bonificaciones y Gratificaciones,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010900,52010900,Dietas al Personal,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52011000,52011000,Cursos y Entrenamientos,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52011100,52011100,Prestaciones Laborales (Preaviso y Cesantia),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52011200,52011200,Incentivos,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52011300,52011300,Horas Extras,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52011400,52011400,Otros Gastos de Personal,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010102,52010102,Aportes a la Administradora de Fondos de Pensiones (AFP),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010103,52010103,Aportes al Seguro Riesgo Laboral (SRL),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010104,52010104,Seguro Familiar de Salud (SFS),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010201,52010201,Aportes a la Administradora de Riesgos de Salud (ARS),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010202,52010202,Seguros al Personal,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010203,52010203,Planes Complementarios de Salud,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010204,52010204,Seguros de Vida,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52010205,52010205,Aportes al Infotep,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52020100,52020100,Energía Eléctrica,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52020200,52020200,Comunicaciones,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52020300,52020300,Papelería y útiles,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52020400,52020400,Útiles de Aseo y Limpieza,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52020500,52020500,Material de Empaque,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52020600,52020600,Seguro de Edificio,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52020700,52020700,Combustibles y Lubricantes,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52020800,52020800,Alquileres,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52020900,52020900,Franquicias,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52021000,52021000,Inducción a Vendedores,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52021100,52021100,Seguros,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52021200,52021200,Servicios de Mensajería,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52021300,52021300,Flete y Carga,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52021400,52021400,Cuotas y Suscripciones,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52021500,52021500,Otros Gastos de Administración,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030101,52030101,Legales (P. Física),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030102,52030102,Contabilidad y Auditoría (P. Física),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030103,52030103,Tecnología (P. Física),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030104,52030104,Mantenimiento de Planta (P. Física),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030105,52030105,Mantenimiento del Local (P. Física),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030106,52030106,Mantenimiento Mobiliario y Equipos (P. Física),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030107,52030107,Asesorías (P. Física),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030108,52030108,Fumigaciones (P. Física),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030109,52030109,Copias y Escaneos (P. Física),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030110,52030110,Servicios de Vigilancia (P. Física),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030111,52030111,Otros Servicios Profesionales (P. Física),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030201,52030201,Legales (P. Jurídica),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030202,52030202,Contabilidad y Auditoría (P. Jurídica),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030203,52030203,Tecnología (P. Jurídica),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030204,52030204,Mantenimiento de Planta (P. Jurídica),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030205,52030205,Mantenimiento del Local (P. Jurídica),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030206,52030206,Mantenimiento Mobiliario y Equipos (P. Jurídica),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030207,52030207,Asesorías (P. Jurídica),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030208,52030208,Fumigaciones (P. Jurídica),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030209,52030209,Copias y Escaneos (P. Jurídica),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030210,52030210,Servicios de Vigilancia (P. Jurídica),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030211,52030211,Otros Servicios Profesionales (P. Jurídica),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030301,52030301,Honorarios por Servicios del Exterior - Relacionadas,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52030302,52030302,Honorarios por Servicios del Exterior - Terceros,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52040100,52040100,Gastos por Depreciación de Edificios,account.data_account_type_depreciation,FALSE,do_chart_template
+do_niif_52040200,52040200,Gastos por Depreciación de Equipo de Transporte,account.data_account_type_depreciation,FALSE,do_chart_template
+do_niif_52040300,52040300,Gastos por Depreciación de Mobiliario y Equipos,account.data_account_type_depreciation,FALSE,do_chart_template
+do_niif_52040400,52040400,Gastos por Depreciación de Maquinaria,account.data_account_type_depreciation,FALSE,do_chart_template
+do_niif_52040500,52040500,Gastos por Depreciación de Herramientas,account.data_account_type_depreciation,FALSE,do_chart_template
+do_niif_52040600,52040600,Gastos por Depreciación de Instalaciones,account.data_account_type_depreciation,FALSE,do_chart_template
+do_niif_52050100,52050100,Gastos por Reparación de Edificios,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52050200,52050200,Gastos por Reparación de Equipo de Transporte,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52050300,52050300,Gastos por Reparación de Mobiliario y Equipos,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52050400,52050400,Gastos por Reparación de Maquinaria,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52050500,52050500,Gastos por Reparación de Herramientas,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52050600,52050600,Gastos por Reparación de Instalaciones,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52060100,52060100,Relaciones Públicas,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52060200,52060200,Publicidad,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52060300,52060300,Viajes,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52060400,52060400,Donaciones,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52060500,52060500,Donaciones a ProIndustria (Ley 392-07),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52060600,52060600,Promociones,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52060700,52060700,Otros Gastos de Representación,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52070100,52070100,Gastos por Préstamos Bancarios,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52070200,52070200,Retención por Cheques y Transacciones Electrónicas (0.015%),account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52070300,52070300,Intereses Bancarios,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52070400,52070400,Comisiones Bancarias,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52070500,52070500,Comisión de Tarjeta de Crédito,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52070600,52070600,Nota de Cargos por Banco,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52070700,52070700,Seguro sobre Préstamos Bancarios,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52070800,52070800,Diferencia Negativa Cambiaria,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52070900,52070900,Otro Gastos Financieros,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52080100,52080100,Gastos por Siniestros,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52080200,52080200,Pérdidas por Ventas de Activos Fijos,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52080300,52080300,Pérdidas por Cuentas Incobrables,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52080400,52080400,Gastos por ISR,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52080500,52080500,Impuestos a los Activos,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52080600,52080600,Penalidades/Recargos de DGII,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52080700,52080700,Penalidades/Recargos de TSS,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_52080800,52080800,Gastos Sin Comprobante,account.data_account_type_expenses,FALSE,do_chart_template
+do_niif_61010100,61010100,Pérdidas y Ganancias,account.data_unaffected_earnings,FALSE,do_chart_template
diff --git a/addons/l10n_do/data/account.account.type.csv b/addons/l10n_do/data/account.account.type.csv
deleted file mode 100644
index ecc5c031e9e..00000000000
--- a/addons/l10n_do/data/account.account.type.csv
+++ /dev/null
@@ -1,17 +0,0 @@
-id,name,report_type
-default_chart_a_type_1,Root/View,none
-default_chart_a_type_2,Receivable,asset
-default_chart_a_type_3,Payable,liability
-default_chart_a_type_4,Bank,asset
-default_chart_a_type_5,Cash,asset
-default_chart_a_type_6,Asset,asset
-default_chart_a_type_7,Liability,liability
-default_chart_a_type_8,Income,income
-default_chart_a_type_9,Expense,expense
-default_chart_a_type_10,Income View,income
-default_chart_a_type_11,Expense View,expense
-default_chart_a_type_12,Asset View,asset
-default_chart_a_type_13,Liability View,liability
-default_chart_a_type_14,Tax,expense
-default_chart_a_type_15,Equity,liability
-default_chart_a_type_16,Check,asset
diff --git a/addons/l10n_do/data/account.fiscal.position.tax.template.csv b/addons/l10n_do/data/account.fiscal.position.tax.template.csv
deleted file mode 100644
index 8d0f2b6590d..00000000000
--- a/addons/l10n_do/data/account.fiscal.position.tax.template.csv
+++ /dev/null
@@ -1,4 +0,0 @@
-id,position_id:id,tax_src_id:id,tax_dest_id:id
-default_chart_a_position_tax_1,default_chart_a_position_4,default_chart_a_tax_14,default_chart_a_tax_7
-default_chart_a_position_tax_2,default_chart_a_position_17,default_chart_a_tax_8,default_chart_a_tax_15
-default_chart_a_position_tax_3,default_chart_a_position_13,default_chart_a_tax_15,
diff --git a/addons/l10n_do/data/account.fiscal.position.template.csv b/addons/l10n_do/data/account.fiscal.position.template.csv
deleted file mode 100644
index 926f8f2f915..00000000000
--- a/addons/l10n_do/data/account.fiscal.position.template.csv
+++ /dev/null
@@ -1,18 +0,0 @@
-id,name,chart_template_id:id
-default_chart_a_position_1,"Para Crédito Fiscal",default_chart_a,
-default_chart_a_position_2,"Cosumidor Final",default_chart_a,
-default_chart_a_position_3,Gubernamental,default_chart_a,
-default_chart_a_position_4,"RegÃmenes Especiales",default_chart_a,
-default_chart_a_position_5,"Gastos de personal",default_chart_a,
-default_chart_a_position_6,"Gastos por trabajo, suministros y servicios",default_chart_a,
-default_chart_a_position_7,Arrendamientos,default_chart_a,
-default_chart_a_position_8,"Gastos de Activos Fijos",default_chart_a,
-default_chart_a_position_9,"Gastos de Representación",default_chart_a,
-default_chart_a_position_10,"Otras Deducciones Admitidas",default_chart_a,
-default_chart_a_position_11,"Gastos Financieros",default_chart_a,
-default_chart_a_position_12,"Gastos Extraordinarios",default_chart_a,
-default_chart_a_position_13,"Proveedores de mercancÃa impuesto no incluido",default_chart_a,
-default_chart_a_position_14,"Adquisiciones de Activos",default_chart_a,
-default_chart_a_position_15,"Gastos Menores",default_chart_a,
-default_chart_a_position_16,"Gastos de Seguro",default_chart_a,
-default_chart_a_position_17,"Proveedores de mercancÃa impuesto incluido",default_chart_a,
diff --git a/addons/l10n_do/data/account.tax.template.csv b/addons/l10n_do/data/account.tax.template.csv
deleted file mode 100644
index cd144c6b56c..00000000000
--- a/addons/l10n_do/data/account.tax.template.csv
+++ /dev/null
@@ -1,19 +0,0 @@
-id,name,description,type_tax_use,amount_type,amount,sequence,refund_account_id:id,account_id:id,chart_template_id:id,tag_ids:id
-default_chart_a_tax_1,10% Honorarios por Servicios Independientes,R-ISR 10%,purchase,percent,-10,1,default_chart_a_account_712,default_chart_a_account_712,default_chart_a,tag_R_ISR_10
-default_chart_a_tax_2,ITBIS Exento en compras,C-EXENTA,purchase,percent,0,1,,,default_chart_a,tag_C_EXENTA
-default_chart_a_tax_3,ITBIS 8% Ventas,V-ITBIS 8%,sale,percent,11,1,,,default_chart_a,tag_V_ITBIS_8
-default_chart_a_tax_4,ITBIS 8% Compras,C-ITBIS 8%,purchase,percent,11,1,,,default_chart_a,tag_C_ITBIS_8
-default_chart_a_tax_5,ITBIS 11% Ventas,V-ITBIS 11%,sale,percent,11,1,,,default_chart_a,tag_V_ITBIS_11
-default_chart_a_tax_6,ITBIS 11% Compras,C-ITBIS 11%,purchase,percent,11,1,,,default_chart_a,tag_C_ITBIS_11
-default_chart_a_tax_7,ITBIS Exento en ventas,V-EXENTA,sale,percent,18,1,,,default_chart_a,tag_V_EXENTA
-default_chart_a_tax_8,ITBIS 18% Compras,C-ITBIS 18%,purchase,percent,18,1,default_chart_a_account_53,default_chart_a_account_53,default_chart_a,tag_C_ITBIS_18
-default_chart_a_tax_9,ITBIS 18% Compras Servicios,CS-ITBIS 18%,purchase,percent,18,1,default_chart_a_account_57,default_chart_a_account_57,default_chart_a,tag_CS_ITBIS_18
-default_chart_a_tax_10,ITBIS 18% Compras Importaciones,IMP-ITBIS 18%,purchase,percent,18,1,default_chart_a_account_56,default_chart_a_account_56,default_chart_a,tag_IMP_ITBIS_18
-default_chart_a_tax_12,2% Otras Retenciones (Norma 07-2007),R-ISR 2%,purchase,percent,-2,1,,,default_chart_a,tag_R_ISR_2
-default_chart_a_tax_13,18% ITBIS Retenido,R-ITBIS 18%,purchase,percent,-18,1,default_chart_a_account_163,default_chart_a_account_163,default_chart_a,tag_R_ITBIS_18
-default_chart_a_tax_14,ITBIS 18% Ventas,V-ITBIS 18%,sale,percent,18,10,default_chart_a_account_71,default_chart_a_account_71,default_chart_a,tag_V_ITBIS_18
-default_chart_a_tax_15,ITBIS 18% Compras Includo,C-ITBIS 18% Incluido,purchase,percent,18,1,default_chart_a_account_53,default_chart_a_account_53,default_chart_a,tag_C_ITBIS_18_Incluido
-default_chart_a_tax_16,ITBIS 18% Compras Servicios Incluido,CS-ITBIS 18% Incluido,purchase,percent,18,1,default_chart_a_account_57,,default_chart_a,tag_CS_ITBIS_18_Incluido
-default_chart_a_tax_19,ISC Telecomunicacones,TELE-ISC,purchase,percent,10,1,default_chart_a_account_529,,default_chart_a,tag_TELE_ISC
-default_chart_a_tax_20,CDT Telecomunicacones,TELE-CDT,purchase,percent,2,1,default_chart_a_account_529,,default_chart_a,tag_TELE_CDT
-default_chart_a_tax_23,10% Retencion por alquileres,R-Alquileres 10%,purchase,percent,-10,1,default_chart_a_account_712,default_chart_a_account_712,default_chart_a,tag_R_Alquileres_10
diff --git a/addons/l10n_do/data/account.tax.template.xml b/addons/l10n_do/data/account.tax.template.xml
new file mode 100644
index 00000000000..166bb85294b
--- /dev/null
+++ b/addons/l10n_do/data/account.tax.template.xml
@@ -0,0 +1,364 @@
+
+
+
+
+
+
+ ITBIS
+
+
+ Retenciones
+
+
+ Otros Impuestos
+
+
+
+
+ 50
+ Exento ITBIS Ventas
+ Exento
+ 0
+ percent
+ sale
+
+
+
+
+
+ 50
+ Exento ITBIS Compras
+ Exento
+ 0
+ percent
+ purchase
+
+
+
+
+
+ 1
+ 18% ITBIS Ventas
+ 18%
+ 18
+ percent
+ sale
+
+
+
+
+
+
+
+ 10
+ 18% ITBIS Incl. Ventas
+ 18% Incl
+ 18
+ percent
+ sale
+
+
+
+
+
+
+
+ 18% ITBIS Compras
+ 2
+ 18%
+ 18
+ percent
+ purchase
+
+
+
+
+
+
+
+ 20
+ 18% ITBIS Incl. Compras
+ 18%
+ 18
+ percent
+ purchase
+
+
+
+
+
+
+
+ 20
+ 18% ITBIS Compras - Servicios
+ 18%
+ 18
+ percent
+ purchase
+
+
+
+
+
+
+
+ 20
+ 18% ITBIS Incl. Compras - Servicios
+ 18%
+ 18
+ percent
+ purchase
+
+
+
+
+
+
+
+ 20
+ 18% ITBIS - Importaciones
+ 18%
+ 18
+ percent
+ purchase
+
+
+
+
+
+
+
+ 20
+ 18% ITBIS sobre el 10% del Monto Total
+ 18% del 10%
+ 1.8
+ percent
+ purchase
+
+
+
+
+
+
+ 30
+ Impuesto 0.15% Transferencia Bancaria
+ 0.15%
+ 0.0015
+ percent
+ purchase
+
+
+
+
+
+
+ 30
+ Impuesto 10% Telecomunicaciones (ISC)
+ ISC
+ 10
+ percent
+ purchase
+
+
+
+
+
+
+
+ 30
+ Impuesto 2% Telecomunicaciones (CDT)
+ CDT
+ 2
+ percent
+ purchase
+
+
+
+
+
+
+
+ 30
+ Impuestos a las Telecomunicaciones
+
+ group
+ purchase
+
+
+
+
+ 40
+ Retención ITBIS 100% a No Lucrativas (Servicios)
+ 100% del ITBIS
+ -18
+ percent
+ purchase
+
+
+
+
+
+
+
+ 40
+ Retención ITBIS 100% a Persona FÃsica
+ 100% del ITBIS
+ -18
+ percent
+ purchase
+
+
+
+
+
+
+
+ 40
+ Retención ITBIS 30% a Persona JurÃdica (Construcción)
+ 30% del ITBIS
+ -5.4
+ percent
+ purchase
+
+
+
+
+
+
+ 40
+ Retención ITBIS 30% a Profesionales Liberales (Servicios)
+ 30% del ITBIS
+ -5.4
+ percent
+ purchase
+
+
+
+
+
+
+ 40
+ Retención ITBIS 75% a Proveedores Informales (Bienes)
+ 75% del ITBIS
+ -13.5
+ percent
+ purchase
+
+
+
+
+
+
+ 40
+ Retención ISR 10% Honorarios a Persona FÃsica (Servicios)
+ 10% ISR
+ -10
+ percent
+ purchase
+
+
+
+
+
+
+
+ 40
+ Retención ISR 10% a Persona FÃsica (Alquiler)
+ 10% ISR
+ -10
+ percent
+ purchase
+
+
+
+
+
+
+
+ 40
+ Retención ISR 10% por Dividendos
+ 10% ISR
+ -10
+ percent
+ purchase
+
+
+
+
+
+
+
+ 40
+ Retención ISR 2% a Persona FÃsica (Servicios)
+ 2% ISR (N 07-07)
+ -2
+ percent
+ purchase
+
+
+
+
+
+
+
+ 40
+ Retención ISR 2% por Transferencia de TÃtulos
+ 2% ISR
+ -2
+ percent
+ purchase
+
+
+
+
+
+
+
+ 40
+ Retención ISR 27% por Remesas al Exterior
+ 27% ISR
+ -27
+ percent
+ purchase
+
+
+
+
+
+
+ 60
+ Retención a Proveedores Informales (Bienes)
+ group
+
+ purchase
+
+
+
+
+ 60
+ Retención a Persona FÃsica (Servicios Construcción con Materiales)
+ group
+
+ purchase
+
+
+
+
+ 60
+ Retención a JurÃdica (Servicios Construcción con Materiales)
+ group
+
+ purchase
+
+
+
+
+ 60
+ Retención a Persona FÃsica por Servicios Profesionales
+ group
+
+ purchase
+
+
+
+
diff --git a/addons/l10n_do/data/account_account_tag.xml b/addons/l10n_do/data/account_account_tag.xml
index 68d922c8f63..da0880fe0bd 100644
--- a/addons/l10n_do/data/account_account_tag.xml
+++ b/addons/l10n_do/data/account_account_tag.xml
@@ -1,99 +1,78 @@
-
-
-
-
+
R-ISR 10%
taxes
-
C-EXENTA
taxes
-
V-ITBIS 8%
taxes
-
C-ITBIS 8%
taxes
-
V-ITBIS 11%
taxes
-
C-ITBIS 11%
taxes
-
V-EXENTA
taxes
-
V-ITBIS 18%
taxes
-
C-ITBIS 18% Incluido
taxes
-
C-ITBIS 18%
taxes
-
CS-ITBIS 18% Incluido
taxes
-
CS-ITBIS 18%
taxes
-
IMP-ITBIS 18%
taxes
-
R-ITBIS 18%
taxes
-
R-ISR 2%
taxes
-
TELE-ISC
taxes
-
TELE-CDT
taxes
-
R-Alquileres 10%
taxes
-
-
\ No newline at end of file
+
diff --git a/addons/l10n_do/data/account_chart_template.xml b/addons/l10n_do/data/account_chart_template.xml
deleted file mode 100644
index d5a8fcc8c0c..00000000000
--- a/addons/l10n_do/data/account_chart_template.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
- Efectivo en transito
- 112050
-
-
-
-
-
-
- Catálogo de Cuentas Empresas Privadas
-
-
-
- 112
- 111
-
-
-
-
-
-
-
diff --git a/addons/l10n_do/data/account_chart_template.yml b/addons/l10n_do/data/account_chart_template.yml
index bbae47a8ee6..bfea5da2ff5 100644
--- a/addons/l10n_do/data/account_chart_template.yml
+++ b/addons/l10n_do/data/account_chart_template.yml
@@ -1,3 +1,3 @@
-
- !python {model: account.chart.template, id: default_chart_a}: |
+ !python {model: account.chart.template, id: do_chart_template}: |
self[0].try_loading_for_current_company()
diff --git a/addons/l10n_do/data/fiscal_position_template.xml b/addons/l10n_do/data/fiscal_position_template.xml
new file mode 100644
index 00000000000..7179966d999
--- /dev/null
+++ b/addons/l10n_do/data/fiscal_position_template.xml
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+ Consumidor Final
+
+
+
+ Crédito Fiscal
+
+
+
+ Proveedor Fiscal
+
+
+
+ Proveedor Fiscal (Construcción)
+
+
+
+ Persona FÃsica (Construcción)
+
+
+
+ Persona FÃsica
+
+
+
+ Proveedor Informal (Bienes)
+
+
+
+ Proveedor del Exterior
+
+
+
+ Gastos Menores
+
+
+
+ Gubernamental
+
+
+
+ No lucrativas
+
+
+
+ RegÃmenes Especiales
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/l10n_do/data/l10n_do_chart_data.xml b/addons/l10n_do/data/l10n_do_chart_data.xml
new file mode 100644
index 00000000000..9075d92a621
--- /dev/null
+++ b/addons/l10n_do/data/l10n_do_chart_data.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+ Transferencias de Efectivo
+ 11010100
+
+
+
+
+ Catálogo de Cuentas Dominicano (NIIF)
+ 8
+ 110101
+ 110102
+
+
+
+
+
+
+
+
+
diff --git a/addons/l10n_do/data/l10n_do_base_data.xml b/addons/l10n_do/data/l10n_do_state_data.xml
similarity index 73%
rename from addons/l10n_do/data/l10n_do_base_data.xml
rename to addons/l10n_do/data/l10n_do_state_data.xml
index 80364b1a209..322e27b3b4c 100644
--- a/addons/l10n_do/data/l10n_do_base_data.xml
+++ b/addons/l10n_do/data/l10n_do_state_data.xml
@@ -1,175 +1,177 @@
-
-
-
+
+
+ Resource: res.country.state
+ Update states. This one is not using ISO 3166-2:DO codes,
+ as those codes are not used or known in Dominican Republic.
+ The new codes are more friendly and easier to identify by
+ the users.
+ -->
- 01
+ DN
Distrito Nacional
- 02
+ AZU
Azua
- 03
+ BAH
Bahoruco
- 04
+ BAR
Barahona
- 05
- Dajabon
+ DAJ
+ Dajabón
- 06
+ DUA
Duarte
- 07
- Elias Piña
+ ELP
+ ElÃas Piña
- 08
- El Seybo
+ ELS
+ El Seibo
- 09
+ ESP
Espaillat
- 10
+ IND
Independencia
- 11
+ LA
La Altagracia
- 12
+ LR
La Romana
- 13
+ LV
La Vega
- 14
- Maria Trinidad Sanchez
+ MTS
+ MarÃa Trinidad Sánchez
- 15
+ MC
Monte Cristi
- 16
+ PED
Pedernales
- 17
+ PER
Peravia
- 18
+ PP
Puerto Plata
- 19
+ HEM
Hermanas Mirabal
- 20
- Samana
+ SAM
+ Samaná
- 21
- San Cristobal
+ SC
+ San Cristóbal
- 22
- San Juan de la Maguana
+ SJ
+ San Juan
- 23
- San Pedro de Macoris
+ SPM
+ San Pedro de MacorÃs
- 24
- Sanchez Ramirez
+ SRA
+ Sánchez RamÃrez
- 25
+ STGO
Santiago
- 26
- Santiago Rodriguez
+ SRO
+ Santiago RodrÃguez
- 27
+ VAL
Valverde
- 28
+ MON
Monseñor Nouel
- 28
+ MP
Monte Plata
- 30
+ HAM
Hato Mayor
- 31
- San Jose de Ocoa
+ SJO
+ San José de Ocoa
- 32
+ SD
Santo Domingo
+ Resource: res.partner.title
+ Update partner titles
+ -->
Doctora
Dra.
@@ -194,6 +196,5 @@
Ingeniero/a
Ing.
-
-
\ No newline at end of file
+
diff --git a/addons/l10n_do/data/set_account_on_chart_template.xml b/addons/l10n_do/data/set_account_on_chart_template.xml
index 3cfff934abb..0123c1d897b 100644
--- a/addons/l10n_do/data/set_account_on_chart_template.xml
+++ b/addons/l10n_do/data/set_account_on_chart_template.xml
@@ -1,11 +1,16 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/l10n_do/models/__init__.py b/addons/l10n_do/models/__init__.py
new file mode 100644
index 00000000000..88065f98bba
--- /dev/null
+++ b/addons/l10n_do/models/__init__.py
@@ -0,0 +1,4 @@
+# coding: utf-8
+# Copyright 2016 iterativo (https://www.iterativo.do)
+
+from . import chart_template
diff --git a/addons/l10n_do/models/chart_template.py b/addons/l10n_do/models/chart_template.py
new file mode 100644
index 00000000000..ddbc17b8f92
--- /dev/null
+++ b/addons/l10n_do/models/chart_template.py
@@ -0,0 +1,18 @@
+# coding: utf-8
+# Copyright 2016 iterativo (https://www.iterativo.do)
+
+from openerp import models, api, _
+
+
+class WizardMultiChartsAccounts(models.TransientModel):
+ _inherit = 'wizard.multi.charts.accounts'
+
+ @api.model
+ def _get_default_bank_account_ids(self):
+ if self.env.user.company_id.country_id and self.env.user.company_id.country_id.code.upper() == 'DO':
+ return [
+ {'acc_name': _('Cash'), 'account_type': 'cash'},
+ {'acc_name': _('Caja Chica'), 'account_type': 'cash'},
+ {'acc_name': _('Bank'), 'account_type': 'bank'}
+ ]
+ return super(WizardMultiChartsAccounts, self)._get_default_bank_account_ids()
diff --git a/addons/mail/static/src/js/many2many_tags_email.js b/addons/mail/static/src/js/many2many_tags_email.js
index a9fd41a3cd7..4b273b456e1 100644
--- a/addons/mail/static/src/js/many2many_tags_email.js
+++ b/addons/mail/static/src/js/many2many_tags_email.js
@@ -5,6 +5,7 @@ var core = require('web.core');
var form_common = require('web.form_common');
var form_relational = require('web.form_relational');
var Model = require('web.DataModel');
+var utils = require('web.utils');
var _t = core._t;
@@ -16,51 +17,49 @@ var _t = core._t;
var FieldMany2ManyTagsEmail = form_relational.FieldMany2ManyTags.extend({
start: function() {
- this.values = [];
- this.values_checking = [];
+ this.mutex = new utils.Mutex();
+
+ // This widget will indirectly trigger a change:value to it's parent widget
+ // when setting the value of valid partners. For this reason we have to keep an
+ // internal state of the last value in order to compute the effective value changes.
+ this.last_processed_value = [];
this.on("change:value", this, this.on_change_value_check);
- this.trigger("change:value");
-
this._super.apply(this, arguments);
},
on_change_value_check : function () {
- this.values = _.uniq(this.values);
+ var self = this;
+ var values = this.get('value').slice(0); // Clone the array
- // filter for removed values
- var values_removed = _.difference(this.values, this.get('value'));
- if (values_removed.length) {
- this.values = _.difference(this.values, values_removed);
- this.set({'value': this.values});
- return false;
- }
-
- // find not checked values that are not currently on checking
- var not_checked = _.difference(this.get('value'), this.values, this.values_checking);
- if (not_checked.length) {
- // remember values on checking for cheked only one time
- this.values_checking = this.values_checking.concat(not_checked);
- // check values
- this._check_email_popup(not_checked);
+ // We only validate partners emails in case the value is not empty
+ // and is different from the last processed value
+ var effective_change = _.difference(values, self.last_processed_value).length;
+ if (values.length && effective_change) {
+ this.mutex.exec(function() {
+ return self._check_email_popup(values);
+ });
}
},
_check_email_popup: function (ids) {
var self = this;
- new Model('res.partner').call("search", [[
- ["id", "in", ids],
- ["email", "=", false],
- ["notify_email", "=", 'always'] ]],
+ var valid_partners;
+
+ return new Model('res.partner').call("search", [[
+ ["id", "in", ids],
+ ["email", "=", false],
+ ["notify_email", "=", 'always'] ]],
{context: this.build_context()})
.then(function (record_ids) {
- // valid partner
- var valid_partner = _.difference(ids, record_ids);
- self.values = self.values.concat(valid_partner);
- self.values_checking = _.difference(self.values_checking, valid_partner);
+ var popups_deferreds = [];
+ self.valid_partners = _.difference(ids, record_ids);
- // unvalid partner
+ // Propose the user to correct invalid partners
_.each(record_ids, function (id) {
+ var popup_def = $.Deferred();
+ popups_deferreds.push(popup_def);
+
var pop = new form_common.FormViewDialog(self, {
res_model: 'res.partner',
res_id: id,
@@ -68,15 +67,19 @@ var FieldMany2ManyTagsEmail = form_relational.FieldMany2ManyTags.extend({
title: _t("Please complete partner's informations and Email"),
}).open();
pop.on('write_completed', self, function () {
- this.values.push(id);
- this.values_checking = _.without(this.values_checking, id);
- this.set({'value': this.values});
+ self.valid_partners.push(id);
});
pop.on('closed', self, function () {
- this.values_checking = _.without(this.values_checking, id);
- this.set({'value': this.values});
+ popup_def.resolve();
});
});
+ return $.when.apply($, popups_deferreds).then(function() {
+ // All popups have been processed for the given ids
+ // It is now time to set the final value with valid partners ids.
+ var filtered_value = _.uniq(self.valid_partners);
+ self.last_processed_value = filtered_value;
+ self.set({'value': filtered_value});
+ });
});
},
});
diff --git a/addons/mass_mailing/static/src/js/mass_mailing_editor.js b/addons/mass_mailing/static/src/js/mass_mailing_editor.js
index a258f97a1a4..d1bc2778ada 100644
--- a/addons/mass_mailing/static/src/js/mass_mailing_editor.js
+++ b/addons/mass_mailing/static/src/js/mass_mailing_editor.js
@@ -228,7 +228,8 @@ snippets_editor.Class.include({
var theme = ($("#oe_snippets .o_panel_body > div:not(.hidden)").attr("class") || "").replace(/^\s*|\s*o_mail_block[^\s]+\s*|\s*oe_snippet\s*|\s*ui-draggable\s*|\s*$/g, '');
var $theme = $("#editable_area [data-snippet-theme]").removeAttr("data-snippet-theme").removeData("snippet-theme");
$editable.children().first().attr("data-snippet-theme", theme);
- $editable.find(":not(br):not(img):hidden").remove();
+ // before jQuery 3, google chrome needs the `:not(:has(:visible))` part
+ $editable.find(":not(br):not(img):hidden:not(:has(:visible))").remove();
},
});
diff --git a/addons/point_of_sale/tools/posbox/configuration/setup_ramdisks.sh b/addons/point_of_sale/tools/posbox/configuration/setup_ramdisks.sh
index ce2f2e633e6..618c4b1fd48 100755
--- a/addons/point_of_sale/tools/posbox/configuration/setup_ramdisks.sh
+++ b/addons/point_of_sale/tools/posbox/configuration/setup_ramdisks.sh
@@ -11,7 +11,7 @@ create_ramdisk () {
echo "Creating ramdisk for ${1} of size ${SIZE}..."
mount -t tmpfs -o size="${SIZE}" tmpfs "${RAMDISK}"
- rsync -a --exclude="swap" --exclude="apt" --exclude="dpkg" "${ORIGINAL}/" "${RAMDISK}/"
+ rsync -a --exclude="swap" --exclude="apt" --exclude="dpkg" --exclude=".mozilla" "${ORIGINAL}/" "${RAMDISK}/"
mount --bind "${RAMDISK}" "${ORIGINAL}"
}
diff --git a/addons/point_of_sale/tools/posbox/overwrite_after_init/etc/lightdm/lightdm.conf b/addons/point_of_sale/tools/posbox/overwrite_after_init/etc/lightdm/lightdm.conf
new file mode 100644
index 00000000000..977903c1c90
--- /dev/null
+++ b/addons/point_of_sale/tools/posbox/overwrite_after_init/etc/lightdm/lightdm.conf
@@ -0,0 +1,8 @@
+
+[LightDM]
+user-authority-in-system-dir=true
+
+[SeatDefaults]
+xserver-command=/usr/bin/X -s 0 dpms -nolisten tcp
+greeter-hide-users=false
+autologin-user=pi
\ No newline at end of file
diff --git a/addons/point_of_sale/tools/posbox/overwrite_after_init/etc/xdg/openbox/autostart b/addons/point_of_sale/tools/posbox/overwrite_after_init/etc/xdg/openbox/autostart
new file mode 100755
index 00000000000..e2b61e2f591
--- /dev/null
+++ b/addons/point_of_sale/tools/posbox/overwrite_after_init/etc/xdg/openbox/autostart
@@ -0,0 +1,6 @@
+#!/bin/bash
+xset s off
+xset -dpms
+
+export HOME=/tmp
+/usr/bin/firefox http://localhost:8069/point_of_sale/display &
diff --git a/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/META-INF/manifest.mf b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/META-INF/manifest.mf
new file mode 100644
index 00000000000..63a9098e00d
--- /dev/null
+++ b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/META-INF/manifest.mf
@@ -0,0 +1,32 @@
+Manifest-Version: 1.0
+
+Name: install.rdf
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: xnFKNbJgc33dy/FJ+4cmHA==
+SHA1-Digest: 4YLgHgdgCw4lGCfsX7+r4zVmKJ4=
+
+Name: chrome.manifest
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: O5ce4bajAqUxG6iVul0K2w==
+SHA1-Digest: wb6VleWnV5GgLypmg1ij9TfmPLE=
+
+Name: content/rkioskbrowser.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /cF15tfVnbkfbxRVTL5N+g==
+SHA1-Digest: lvbY92PbsjwY+0TguEYoXWw0lxQ=
+
+Name: content/rkioskbrowser.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: NFOIpAmZtn20Y+XfTo4cpw==
+SHA1-Digest: VVIo7GdG+4mvAOtgR0DJUsSc/yg=
+
+Name: content/rkioskunknownContentType.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6cNGoHJS9Xvm+wmvo4IesQ==
+SHA1-Digest: T8i1MkMKjmn5HICqWv+iXSPRKIU=
+
+Name: content/rkioskxpinstallConfirm.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SxN1YnRJiuood2WhU85v9g==
+SHA1-Digest: Msj21u4bTAKUi496xld5YCGdjiA=
+
diff --git a/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/META-INF/mozilla.rsa b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/META-INF/mozilla.rsa
new file mode 100644
index 00000000000..521b08d182a
Binary files /dev/null and b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/META-INF/mozilla.rsa differ
diff --git a/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/META-INF/mozilla.sf b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/META-INF/mozilla.sf
new file mode 100644
index 00000000000..37eae3e21fb
--- /dev/null
+++ b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/META-INF/mozilla.sf
@@ -0,0 +1,4 @@
+Signature-Version: 1.0
+MD5-Digest-Manifest: 7hFyhNW67+H+rf9OhWGDkA==
+SHA1-Digest-Manifest: HvfAQQLXphSZ9m8KBorJMX8MUnE=
+
diff --git a/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/README b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/README
new file mode 100644
index 00000000000..c8c1ce58823
--- /dev/null
+++ b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/README
@@ -0,0 +1,3 @@
+The R-kiosk module has been downloaded from https://addons.mozilla.org/en-US/firefox/addon/r-kiosk/
+It is in the public domain as stated on https://addons.mozilla.org/en-US/firefox/addon/r-kiosk/eula/
+This mozilla module is shipped by Odoo to provide out of the box Client facing display to Odoo's Posbox
\ No newline at end of file
diff --git a/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/chrome.manifest b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/chrome.manifest
new file mode 100644
index 00000000000..e4957b8d5e8
--- /dev/null
+++ b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/chrome.manifest
@@ -0,0 +1,4 @@
+content RKiosk content/
+overlay chrome://browser/content/browser.xul chrome://rkiosk/content/rkioskbrowser.xul
+overlay chrome://mozapps/content/xpinstall/xpinstallConfirm.xul chrome://rkiosk/content/rkioskxpinstallConfirm.xul
+overlay chrome://mozapps/content/downloads/unknownContentType.xul chrome://rkiosk/content/rkioskunknownContentType.xul
diff --git a/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/content/rkioskbrowser.js b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/content/rkioskbrowser.js
new file mode 100644
index 00000000000..5ece9a9e06b
--- /dev/null
+++ b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/content/rkioskbrowser.js
@@ -0,0 +1,34 @@
+function Rkiosk_donothing()
+{
+
+
+}
+
+function rkioskclose()
+{
+ close();
+}
+
+function Rkiosk_navbar_setting()
+{
+ var rkiosk_navbar_enable="true";
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"].
+ getService(Components.interfaces.nsIPrefBranch);
+ if (prefs.getPrefType("rkiosk.navbar") == prefs.PREF_BOOL){
+ if (prefs.getBoolPref("rkiosk.navbar")) rkiosk_navbar_enable = "false";
+ }
+ var rkiosk_element = document.getElementById("navigator-toolbox");
+ rkiosk_element.setAttribute("hidden", rkiosk_navbar_enable);
+}
+
+function RkioskBrowserStartup()
+{
+ Rkiosk_navbar_setting();
+ BrowserStartup();
+ setTimeout(RkioskdelayedStartup, 1000);
+}
+
+function RkioskdelayedStartup()
+{
+ window.fullScreen = true;
+}
diff --git a/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/content/rkioskbrowser.xul b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/content/rkioskbrowser.xul
new file mode 100644
index 00000000000..d5fb0c140d1
--- /dev/null
+++ b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/content/rkioskbrowser.xul
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/content/rkioskunknownContentType.xul b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/content/rkioskunknownContentType.xul
new file mode 100644
index 00000000000..faf2381d1fa
--- /dev/null
+++ b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/content/rkioskunknownContentType.xul
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/content/rkioskxpinstallConfirm.xul b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/content/rkioskxpinstallConfirm.xul
new file mode 100644
index 00000000000..b96deadeee6
--- /dev/null
+++ b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/content/rkioskxpinstallConfirm.xul
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/install.rdf b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/install.rdf
new file mode 100644
index 00000000000..5be400e52e8
--- /dev/null
+++ b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/lib/firefox-esr/browser/extensions/{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}/install.rdf
@@ -0,0 +1,19 @@
+
+
+
+
+
+ {4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}
+ R-kiosk
+ 0.9.0.1-signed.1-signed
+ RKiosk (Real Kiosk), fullscreen kiosk mode: all menus, keys etc. disabled
+ Kimmo Heinaaro
+
+
+ {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
+ 2.0
+ 6.*
+
+
+
+
\ No newline at end of file
diff --git a/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/share/firefox-esr/browser/defaults/preferences/all-posbox.js b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/share/firefox-esr/browser/defaults/preferences/all-posbox.js
new file mode 100644
index 00000000000..8de5d5d60a4
--- /dev/null
+++ b/addons/point_of_sale/tools/posbox/overwrite_after_init/usr/share/firefox-esr/browser/defaults/preferences/all-posbox.js
@@ -0,0 +1,7 @@
+// Preferences to allow unattended install of R-Kiosk extension
+// Needed for Odoo posbox Client display
+pref("app.update.checkInstallTime", false);
+pref("devtools.webide.widget.autoinstall", false);
+pref("xpinstall.customConfirmationUI", false);
+pref("xpinstall.signatures.required", false);
+pref("browser.shell.checkDefaultBrowser",false)
diff --git a/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init.d/odoo b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init.d/odoo
index 30be4bd26d3..4ab50a456a1 100755
--- a/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init.d/odoo
+++ b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init.d/odoo
@@ -26,7 +26,7 @@ test -x $DAEMON || exit 0
set -e
function _start() {
- start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $USER:$USER --background --make-pidfile --exec $DAEMON -- --config $CONFIG --logfile $LOGFILE --load=web,hw_proxy,hw_posbox_homepage,hw_posbox_upgrade,hw_scale,hw_scanner,hw_escpos,hw_blackbox_be
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $USER:$USER --background --make-pidfile --exec $DAEMON -- --config $CONFIG --logfile $LOGFILE --load=web,hw_proxy,hw_posbox_homepage,hw_posbox_upgrade,hw_scale,hw_scanner,hw_escpos,hw_blackbox_be,hw_screen
}
function _stop() {
diff --git a/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh
index a05dfc897ae..00058bef68c 100755
--- a/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh
+++ b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh
@@ -8,17 +8,25 @@ __dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
__file="${__dir}/$(basename "${BASH_SOURCE[0]}")"
__base="$(basename ${__file} .sh)"
+# Since we are emulating, the real /boot is not mounted,
+# leading to mismatch between kernel image and modules.
+mount /dev/sda1 /boot
+
# Recommends: antiword, graphviz, ghostscript, postgresql, python-gevent, poppler-utils
export DEBIAN_FRONTEND=noninteractive
+echo "nameserver 8.8.8.8" >> /etc/resolv.conf
-mount /dev/sda1 /boot
apt-get update
apt-get -y dist-upgrade
+# Do not be too fast to upgrade to more recent firmware and kernel than 4.38
+# Firmware 4.44 seems to prevent the LED mechanism from working
-PKGS_TO_INSTALL="adduser postgresql-client python python-dateutil python-decorator python-docutils python-feedparser python-imaging python-jinja2 python-ldap python-libxslt1 python-lxml python-mako python-mock python-openid python-passlib python-psutil python-psycopg2 python-pybabel python-pychart python-pydot python-pyparsing python-pypdf python-reportlab python-requests python-tz python-vatnumber python-vobject python-werkzeug python-xlwt python-yaml postgresql python-gevent python-serial python-pip python-dev localepurge vim mc mg screen iw hostapd isc-dhcp-server git rsync console-data"
+PKGS_TO_INSTALL="adduser postgresql-client python python-dateutil python-decorator python-docutils python-feedparser python-imaging python-jinja2 python-ldap python-libxslt1 python-lxml python-mako python-mock python-openid python-passlib python-psutil python-psycopg2 python-pybabel python-pychart python-pydot python-pyparsing python-pypdf python-reportlab python-requests python-tz python-vatnumber python-vobject python-werkzeug python-xlwt python-yaml postgresql python-gevent python-serial python-pip python-dev localepurge vim mc mg screen iw hostapd isc-dhcp-server git rsync console-data lightdm xserver-xorg-video-fbdev xserver-xorg-input-evdev iceweasel xdotool unclutter x11-utils openbox python-netifaces rpi-update"
-apt-get -y install ${PKGS_TO_INSTALL}
+# KEEP OWN CONFIG FILES DURING PACKAGE CONFIGURATION
+# http://serverfault.com/questions/259226/automatically-keep-current-version-of-config-files-when-apt-get-install
+apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes install ${PKGS_TO_INSTALL}
apt-get clean
localepurge
@@ -32,13 +40,20 @@ pip install pyusb==1.0.0b1
pip install qrcode
pip install evdev
+# --upgrade because websocket_client in wheezy is bad:
+# https://github.com/docker/compose/issues/1288
+pip install --upgrade websocket_client
+
groupadd usbusers
usermod -a -G usbusers pi
usermod -a -G lp pi
+usermod -a -G input lightdm
sudo -u postgres createuser -s pi
mkdir /var/log/odoo
chown pi:pi /var/log/odoo
+chown pi:pi -R /home/pi/odoo/
+chmod 770 -R /home/pi/odoo/
# logrotate is very picky when it comes to file permissions
chown -R root:root /etc/logrotate.d/
@@ -54,6 +69,31 @@ update-rc.d -f isc-dhcp-server remove
systemctl daemon-reload
systemctl enable ramdisks.service
systemctl disable dphys-swapfile.service
+systemctl enable ssh
+
+# USER PI AUTO LOGIN (from nano raspi-config)
+# We take the whole algorithm from raspi-config in order to stay compatible with raspbian infrastructure
+if command -v systemctl > /dev/null && systemctl | grep -q '\-\.mount'; then
+ SYSTEMD=1
+elif [ -f /etc/init.d/cron ] && [ ! -h /etc/init.d/cron ]; then
+ SYSTEMD=0
+else
+ echo "Unrecognised init system"
+ return 1
+fi
+if [ $SYSTEMD -eq 1 ]; then
+ systemctl set-default graphical.target
+ ln -fs /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
+else
+ update-rc.d lightdm enable 2
+fi
+
+# disable overscan in /boot/config.txt, we can't use
+# overwrite_after_init because it's on a different device
+# (/dev/mmcblk0p1) and we don't mount that afterwards.
+# This option disables any black strips around the screen
+# cf: https://www.raspberrypi.org/documentation/configuration/raspi-config.md
+echo "disable_overscan=1" >> /boot/config.txt
# https://www.raspberrypi.org/forums/viewtopic.php?p=79249
# to not have "setting up console font and keymap" during boot take ages
@@ -68,5 +108,6 @@ create_ramdisk_dir "/var"
create_ramdisk_dir "/etc"
create_ramdisk_dir "/tmp"
mkdir /root_bypass_ramdisks
+umount /dev/sda1
reboot
diff --git a/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/udev/rules.d/99-z-input.rules b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/udev/rules.d/99-z-input.rules
new file mode 100644
index 00000000000..aab19f2d1c7
--- /dev/null
+++ b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/udev/rules.d/99-z-input.rules
@@ -0,0 +1,2 @@
+SUBSYSTEM=="input", GROUP="input", MODE="0660"
+KERNEL=="tty[0-9]*", GROUP="tty", MODE="0660"
\ No newline at end of file
diff --git a/addons/point_of_sale/tools/posbox/posbox_create_image.sh b/addons/point_of_sale/tools/posbox/posbox_create_image.sh
index 1e4c9d1277c..a9ec8bc102d 100755
--- a/addons/point_of_sale/tools/posbox/posbox_create_image.sh
+++ b/addons/point_of_sale/tools/posbox/posbox_create_image.sh
@@ -36,20 +36,25 @@ fi
cp -a *raspbian*.img posbox.img
CLONE_DIR="${OVERWRITE_FILES_BEFORE_INIT_DIR}/home/pi/odoo"
+
rm -rf "${CLONE_DIR}"
-mkdir "${CLONE_DIR}"
-git clone -b 8.0 --no-checkout --depth 1 https://github.com/odoo/odoo.git "${CLONE_DIR}"
-cd "${CLONE_DIR}"
-git config core.sparsecheckout true
-echo "addons/web
+
+if [ ! -d $CLONE_DIR ]; then
+ echo "Clone Github repo"
+ mkdir -p "${CLONE_DIR}"
+ git clone -b 8.0 --no-local --no-checkout --depth 1 https://github.com/odoo/odoo.git "${CLONE_DIR}"
+ cd "${CLONE_DIR}"
+ git config core.sparsecheckout true
+ echo "addons/web
addons/web_kanban
addons/hw_*
addons/point_of_sale/tools/posbox/configuration
openerp/
odoo.py" | tee --append .git/info/sparse-checkout > /dev/null
-git read-tree -mu HEAD
-cd "${__dir}"
+ git read-tree -mu HEAD
+fi
+cd "${__dir}"
USR_BIN="${OVERWRITE_FILES_BEFORE_INIT_DIR}/usr/bin/"
mkdir -p "${USR_BIN}"
cd "/tmp"
@@ -60,9 +65,11 @@ cd "${__dir}"
mv /tmp/ngrok "${USR_BIN}"
# zero pad the image to be around 3.5 GiB, by default the image is only ~1.3 GiB
+echo "Enlarging the image..."
dd if=/dev/zero bs=1M count=2048 >> posbox.img
# resize partition table
+echo "Fdisking"
START_OF_ROOT_PARTITION=$(fdisk -l posbox.img | tail -n 1 | awk '{print $2}')
(echo 'p'; # print
echo 'd'; # delete
@@ -75,7 +82,7 @@ START_OF_ROOT_PARTITION=$(fdisk -l posbox.img | tail -n 1 | awk '{print $2}')
echo 'p'; # print
echo 'w') | fdisk posbox.img # write and quit
-LOOP_MAPPER_PATH=$(kpartx -av posbox.img | tail -n 1 | cut -d ' ' -f 3)
+LOOP_MAPPER_PATH=$(kpartx -avs posbox.img | tail -n 1 | cut -d ' ' -f 3)
LOOP_MAPPER_PATH="/dev/mapper/${LOOP_MAPPER_PATH}"
sleep 5
diff --git a/addons/project/project.py b/addons/project/project.py
index a3a10c5f5bb..7e9996f8bb7 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -17,7 +17,7 @@ from openerp.exceptions import UserError
class project_task_type(osv.osv):
_name = 'project.task.type'
_description = 'Task Stage'
- _order = 'sequence'
+ _order = 'sequence, id'
def _get_mail_template_id_domain(self):
return [('model', '=', 'project.task')]
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 210e0ff3ede..32ce375d7ed 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -1035,7 +1035,7 @@ class ProductTemplate(models.Model):
@api.model
def _get_buy_route(self):
- buy_route = self.env.ref('purchase.route_warehouse0_buy')
+ buy_route = self.env.ref('purchase.route_warehouse0_buy', raise_if_not_found=False)
if buy_route:
return buy_route.ids
return []
diff --git a/addons/web/static/src/js/framework/pyeval.js b/addons/web/static/src/js/framework/pyeval.js
index d0708bdf356..0430aee9274 100644
--- a/addons/web/static/src/js/framework/pyeval.js
+++ b/addons/web/static/src/js/framework/pyeval.js
@@ -850,31 +850,61 @@ function eval_contexts (contexts, evaluation_context) {
function eval_domains (domains, evaluation_context) {
evaluation_context = _.extend(pycontext(), evaluation_context || {});
var result_domain = [];
+ // Normalize only if the first domain is the array ["|"] or ["!"]
+ var need_normalization = (
+ domains.length > 0 &&
+ domains[0].length === 1 &&
+ (domains[0][0] === "|" || domains[0][0] === "!")
+ );
_(domains).each(function (domain) {
if (_.isString(domain)) {
// wrap raw strings in domain
domain = { __ref: 'domain', __debug: domain };
}
+ var domain_array_to_combine;
switch(domain.__ref) {
case 'domain':
evaluation_context.context = evaluation_context;
- result_domain.push.apply(
- result_domain, py.eval(domain.__debug, wrap_context(evaluation_context)));
+ domain_array_to_combine = py.eval(domain.__debug, wrap_context(evaluation_context));
break;
case 'compound_domain':
var eval_context = eval_contexts([domain.__eval_context]);
- result_domain.push.apply(
- result_domain, eval_domains(
- domain.__domains, _.extend(
- {}, evaluation_context, eval_context)));
+ domain_array_to_combine = eval_domains(
+ domain.__domains, _.extend({}, evaluation_context, eval_context)
+ );
break;
default:
- result_domain.push.apply(result_domain, domain);
+ domain_array_to_combine = domain;
}
+ if (need_normalization) {
+ domain_array_to_combine = get_normalized_domain(domain_array_to_combine);
+ }
+ result_domain.push.apply(result_domain, domain_array_to_combine);
});
return result_domain;
}
+/**
+ * Returns a normalized copy of the given domain array. Normalization is
+ * is making the implicit "&" at the start of the domain explicit, e.g.
+ * [A, B, C] would become ["&", "&", A, B, C].
+ *
+ * @param {Array} domain_array
+ * @returns {Array} normalized copy of the given array
+ */
+function get_normalized_domain(domain_array) {
+ var expected = 1; // Holds the number of expected domain expressions
+ _.each(domain_array, function (item) {
+ if (item === "&" || item === "|") {
+ expected++;
+ } else if (item !== "!") {
+ expected--;
+ }
+ });
+ var new_explicit_ands = _.times(-expected, _.constant("&"));
+ return new_explicit_ands.concat(domain_array);
+}
+
function eval_groupbys (contexts, evaluation_context) {
evaluation_context = _.extend(pycontext(), evaluation_context || {});
var result_group = [];
diff --git a/addons/web/static/src/js/views/form_view.js b/addons/web/static/src/js/views/form_view.js
index 33ac59728d2..7daed3d945d 100644
--- a/addons/web/static/src/js/views/form_view.js
+++ b/addons/web/static/src/js/views/form_view.js
@@ -55,7 +55,6 @@ var FormView = View.extend(common.FieldManagerMixin, {
this.fields = {};
this.fields_order = [];
this.datarecord = {};
- this._onchange_specs = {};
this.onchanges_mutex = new utils.Mutex();
this.default_focus_field = null;
this.default_focus_button = null;
@@ -75,7 +74,6 @@ var FormView = View.extend(common.FieldManagerMixin, {
this.rendering_engine = new FormRenderingEngine(this);
this.set({actual_mode: this.options.initial_mode});
this.has_been_loaded.done(function() {
- self._build_onchange_specs();
self.on("change:actual_mode", self, self.toggle_buttons);
self.on("change:actual_mode", self, self.toggle_sidebar);
});
@@ -324,8 +322,11 @@ var FormView = View.extend(common.FieldManagerMixin, {
this.update_pager(); // the mode must be actualized before updating the pager
return $.when.apply(null, set_values).then(function() {
if (!record.id) {
- // trigger onchanges
- self.do_onchange(null);
+ // trigger onchange for new record after x2many with non-embedded views are loaded
+ var fields_loaded = _.pluck(self.fields, 'is_loaded');
+ $.when.apply(null, fields_loaded).done(function() {
+ self.do_onchange(null);
+ });
}
self.on_form_changed();
self.rendering_engine.init_fields().then(function() {
@@ -387,7 +388,24 @@ var FormView = View.extend(common.FieldManagerMixin, {
_.each(this.fields, function(field, name) {
self._onchange_fields.push(name);
self._onchange_specs[name] = find(name, field.node);
- _.each(field.field.views, function(view) {
+
+ // we get the list of first-level fields of x2many firstly by
+ // getting them from the field embedded views, then if no embedded
+ // view is present for a loaded view, we get them from the default
+ // view that has been loaded
+
+ // gather embedded view objects
+ var views = _.clone(field.field.views);
+ // also gather default view objects
+ if (field.viewmanager) {
+ _.each(field.viewmanager.views, function(view, view_type) {
+ // add default view if it was not embedded and it is loaded
+ if (views[view_type] === undefined && view.controller) {
+ views[view_type] = view.controller.fields_view;
+ }
+ });
+ }
+ _.each(views, function(view) {
_.each(view.fields, function(_, subname) {
self._onchange_specs[name + '.' + subname] = find(subname, view.arch);
});
@@ -416,6 +434,9 @@ var FormView = View.extend(common.FieldManagerMixin, {
do_onchange: function(widget) {
var self = this;
+ if (self._onchange_specs === undefined) {
+ self._build_onchange_specs();
+ }
var onchange_specs = self._onchange_specs;
try {
var def = $.when({});
diff --git a/addons/web/static/test/evals.js b/addons/web/static/test/evals.js
index 69c7e7b2aa0..62ce6998dba 100644
--- a/addons/web/static/test/evals.js
+++ b/addons/web/static/test/evals.js
@@ -536,7 +536,7 @@ odoo.define_section('eval.edc.nonliterals', ['web.pyeval', 'web.session'], funct
var result = pyeval.sync_eval_domains_and_contexts({
domains: [
[['type', '=', 'contract']],
- { "__domains": [["|"], [["state", "in", ["open", "draft"]]], [["state", "=", "pending"]]],
+ { "__domains": [["|"], [["state", "in", ["open", "draft"]]], [["type", "=", "contract"], ["state", "=", "pending"]]],
"__eval_context": null,
"__ref": "compound_domain"
},
@@ -552,7 +552,8 @@ odoo.define_section('eval.edc.nonliterals', ['web.pyeval', 'web.session'], funct
assert.deepEqual(result.domain, [
["type", "=", "contract"],
"|", ["state", "in", ["open", "draft"]],
- ["state", "=", "pending"],
+ "&", ["type", "=", "contract"],
+ ["state", "=", "pending"],
"|",
"&", ["date", "!=", false],
["date", "<=", today],
diff --git a/addons/web_calendar/static/src/js/web_calendar.js b/addons/web_calendar/static/src/js/web_calendar.js
index 27bdcf2c3c0..7b0759d5926 100644
--- a/addons/web_calendar/static/src/js/web_calendar.js
+++ b/addons/web_calendar/static/src/js/web_calendar.js
@@ -306,7 +306,7 @@ var CalendarView = View.extend({
self.proxy('update_record')(event._id, data);
},
eventRender: function (event, element, view) {
- element.find('.fc-event-title').html(event.title);
+ element.find('.fc-event-title').html(event.title + event.attendee_avatars);
},
eventAfterRender: function (event, element, view) {
if ((view.name !== 'month') && (((event.end-event.start)/60000)<=30)) {
@@ -602,7 +602,6 @@ var CalendarView = View.extend({
if (attendee_other.length>2) {
the_title_avatar += '+ ';
}
- the_title = the_title_avatar + the_title;
}
}
@@ -611,9 +610,10 @@ var CalendarView = View.extend({
date_stop = m_start.toDate();
}
var r = {
- 'start': moment(date_start).toISOString(),
- 'end': moment(date_stop).toISOString(),
+ 'start': moment(date_start).toString(),
+ 'end': moment(date_stop).toString(),
'title': the_title,
+ 'attendee_avatars': the_title_avatar,
'allDay': (this.fields[this.date_start].type == 'date' || (this.all_day && evt[this.all_day]) || false),
'id': evt.id,
'attendees':attendees
diff --git a/addons/web_editor/static/src/js/transcoder.js b/addons/web_editor/static/src/js/transcoder.js
index e91c365a011..386363af3a3 100644
--- a/addons/web_editor/static/src/js/transcoder.js
+++ b/addons/web_editor/static/src/js/transcoder.js
@@ -132,7 +132,7 @@ var font_to_img = function ($editable) {
var icon, content;
_.find(widget.fontIcons, function (font) {
return _.find(widget.getCssSelectors(font.parser), function (css) {
- if ($font.is(css[0].replace(/::?before$/, ''))) {
+ if ($font.is(css[0].replace(/::?before/g, ''))) {
icon = css[2].split("-").shift();
content = css[1].match(/content:\s*['"]?(.)['"]?/)[1];
return true;
diff --git a/addons/web_editor/static/src/js/widgets.js b/addons/web_editor/static/src/js/widgets.js
index 81b8bca7626..71284ae65be 100644
--- a/addons/web_editor/static/src/js/widgets.js
+++ b/addons/web_editor/static/src/js/widgets.js
@@ -573,6 +573,7 @@ var getCssSelectors = function (filter) {
if (!data) {
data = [match[1], rules[r].cssText.replace(/(^.*\{\s*)|(\s*\}\s*$)/g, ''), clean, [clean]];
} else {
+ data[0] += (", " + match[1]);
data[3].push(clean);
}
}
diff --git a/doc/cla/individual/cgenie.md b/doc/cla/individual/cgenie.md
new file mode 100644
index 00000000000..833bf7d38ad
--- /dev/null
+++ b/doc/cla/individual/cgenie.md
@@ -0,0 +1,11 @@
+London, 2017-03-18
+
+I hereby agree to the terms of the Odoo Individual Contributor License
+Agreement v1.0.
+
+I declare that I am authorized and able to make this agreement and sign this
+declaration.
+
+Signed,
+
+Przemyslaw Kaminski cgenie@gmail.com https://github.com/cgenie
diff --git a/doc/cla/individual/gustavovalverde.md b/doc/cla/individual/gustavovalverde.md
new file mode 100644
index 00000000000..2aa43f39456
--- /dev/null
+++ b/doc/cla/individual/gustavovalverde.md
@@ -0,0 +1,11 @@
+Dominican Republic, 10-13-2016
+
+I hereby agree to the terms of the Odoo Individual Contributor License
+Agreement v1.0.
+
+I declare that I am authorized and able to make this agreement and sign this
+declaration.
+
+Signed,
+
+Gustavo Valverde g.valverde02@gmail.com https://github.com/gustavovalverde
diff --git a/doc/cla/individual/sylnsr.md b/doc/cla/individual/sylnsr.md
new file mode 100644
index 00000000000..358bf370043
--- /dev/null
+++ b/doc/cla/individual/sylnsr.md
@@ -0,0 +1,11 @@
+United States, 2017-03-17
+
+I hereby agree to the terms of the Odoo Individual Contributor License
+Agreement v1.0.
+
+I declare that I am authorized and able to make this agreement and sign this
+declaration.
+
+Signed,
+
+Mike Mugge github@muggeltd.com.com https://github.com/sylnsr
diff --git a/openerp/addons/base/ir/ir_attachment.py b/openerp/addons/base/ir/ir_attachment.py
index 867e022b300..7d7ec32bae9 100644
--- a/openerp/addons/base/ir/ir_attachment.py
+++ b/openerp/addons/base/ir/ir_attachment.py
@@ -26,7 +26,7 @@ class IrAttachment(models.Model):
The computed field ``datas`` is implemented using ``_file_read``,
``_file_write`` and ``_file_delete``, which can be overridden to implement
other storage engines. Such methods should check for other location pseudo
- uri (example: hdfs://hadoppserver).
+ uri (example: hdfs://hadoopserver).
The default implementation is the file:dirname location that stores files
on the local filesystem using name based on their sha1 hash
diff --git a/openerp/addons/test_new_api/tests/test_onchange.py b/openerp/addons/test_new_api/tests/test_onchange.py
index 9876d631044..88e481c3052 100644
--- a/openerp/addons/test_new_api/tests/test_onchange.py
+++ b/openerp/addons/test_new_api/tests/test_onchange.py
@@ -307,12 +307,7 @@ class TestOnChange(common.TransactionCase):
# When one2many domain contains non-computed field, things are ok
self.assertEqual(result['value']['important_messages'],
- [(5,)] + [(1, msg.id, {
- 'name': msg.name,
- 'body': msg.body,
- 'author': (msg.author.id, msg.author.display_name),
- 'size': msg.size
- }) for msg in discussion.important_messages])
+ [(5,)] + [(4, msg.id) for msg in discussion.important_messages])
# But here with commit 5676d81, we get value of: [(2, email.id)]
self.assertEqual(
diff --git a/openerp/fields.py b/openerp/fields.py
index b07a125f02b..4d01054be0b 100644
--- a/openerp/fields.py
+++ b/openerp/fields.py
@@ -1962,7 +1962,7 @@ class One2many(_RelationalMulti):
_column_limit = property(attrgetter('limit'))
def convert_to_onchange(self, value, record, fnames=()):
- fnames = set(fnames or value.fields_view_get()['fields'])
+ fnames = set(fnames or ())
fnames.discard(self.inverse_name)
return super(One2many, self).convert_to_onchange(value, record, fnames)
diff --git a/openerp/http.py b/openerp/http.py
index 0c4ea968f06..d0ebc461a4d 100644
--- a/openerp/http.py
+++ b/openerp/http.py
@@ -1556,9 +1556,16 @@ class Root(object):
httprequest.session.db = db_monodb(httprequest)
def setup_lang(self, httprequest):
- if not "lang" in httprequest.session.context:
- lang = httprequest.accept_languages.best or "en_US"
- lang = babel.core.LOCALE_ALIASES.get(lang, lang).replace('-', '_')
+ if "lang" not in httprequest.session.context:
+ alang = httprequest.accept_languages.best or "en-US"
+ try:
+ code, territory, _, _ = babel.core.parse_locale(alang, sep='-')
+ if territory:
+ lang = '%s_%s' % (code, territory)
+ else:
+ lang = babel.core.LOCALE_ALIASES[code]
+ except (ValueError, KeyError):
+ lang = 'en_US'
httprequest.session.context["lang"] = lang
def get_request(self, httprequest):