diff options
| author | Christophe Simonis <chs@odoo.com> | 2017-03-24 17:57:29 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2017-03-24 17:57:29 +0100 |
| commit | 70b770d62e53e55075daef20674a7efaaf85655c (patch) | |
| tree | 2e00377304a89fe5c00e3e8da50323bf45a8afa7 /addons | |
| parent | fa02b798377da3a1c14fddbacfc81b626d862283 (diff) | |
| parent | 8376f538b568c7a679db414bbb2379c66a78cff0 (diff) | |
[MERGE] forward port branch 9.0 up to 8376f538b56
Diffstat (limited to 'addons')
61 files changed, 1831 insertions, 470 deletions
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 @@ <field name="filter_domain">[('customer', '=', True)]</field> </record> + <record id="test_action" model="ir.actions.server"> + <field name="name">Test Server Action</field> + <field name="model_id" ref="base_action_rule.model_base_action_rule_lead_test"/> + <field name="code"> +record = model.browse(context['active_id']) +if 'partner_id' in context['old_values'][record.id]: + record.write({'state': 'draft'}) + </field> + </record> + + <record id="test_rule_recursive" model="base.action.rule"> + <field name="name">Test recursive rule</field> + <field name="kind">on_write</field> + <field name="model_id" ref="base_action_rule.model_base_action_rule_lead_test"/> + <field name="server_action_ids" eval="[(4, ref('base_action_rule.test_action'))]"/> + </record> + <record id="test_rule_on_line" model="base.action.rule"> <field name="name">Test rule on secondary record</field> <field name="kind">on_create</field> <field name="model_id" ref="base_action_rule.model_base_action_rule_line_test"/> <field name="act_user_id" ref="base.user_demo"/> </record> + + <record id="test_action_context" model="ir.actions.server"> + <field name="name">Test Server Action Context</field> + <field name="model_id" ref="base_action_rule.model_base_action_rule_lead_test"/> + <field name="code"> +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)}) + </field> + </record> + + <record id="test_rule_on_write_check_context" model="base.action.rule"> + <field name="name">Test rule on write check context</field> + <field name="kind">on_write</field> + <field name="model_id" ref="base_action_rule.model_base_action_rule_lead_test"/> + <field name="server_action_ids" eval="[(6, 0, [ref('base_action_rule.test_action_context')])]"/> + </record> </odoo> 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 <a href='/remote_connect'>here</a>. </p> <p> - The PosBox software installed on this posbox is <b>version 15</b>, + If you need to display the current customer basket on another device, you can do it <a href='/point_of_sale/display'>here</a>. + </p> + <p> + The PosBox software installed on this posbox is <b>version 16</b>, the posbox version number is independent from Odoo. You can upgrade the software on the <a href='/hw_proxy/upgrade/'>upgrade page</a>. </p> 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': """<div class="pos-customer_facing_display"><p>Not Authorized. Another browser is in use to display for the client. Please refresh.</p></div> """, + '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 += "<tr><td>" + iface_id + "</td>" + display_ifaces += "<td>" + conf.get('addr') + "</td>" + display_ifaces += "<td>" + conf.get('netmask') + "</td></tr>" + # What is my external IP ? + if iface_id != 'lo': + my_ip = conf.get('addr') + + my_ip_port = my_ip + ":" + self_port + + html = """ + <!DOCTYPE html> + <html> + <head> + <title class="origin">Odoo -- Point of Sale</title> + <script type="text/javascript" class="origin" src="http://""" + my_ip_port + """/web/static/lib/jquery/jquery.js" > + </script> + <script type="text/javascript" class="origin"> + """ + cust_js + """ + </script> + <link rel="stylesheet" class="origin" href="http://""" + my_ip_port + """/web/static/lib/bootstrap/css/bootstrap.css" > + </link> + <script class="origin" src="http://""" + my_ip_port + """/web/static/lib/bootstrap/js/bootstrap.min.js"></script> + <style class="origin"> + """ + cust_css + """ + </style> + </head> + <body class="original_body"> + <div hidden class="shadow"></div> + <div class="container"> + <div class="row"> + <div class="col-md-4 col-md-offset-4"> + <h1>Odoo Point of Sale</h1> + <h2>POSBox Client display</h2> + <h3>My IPs</h3> + <table id="table_ip" class="table table-condensed"> + <tr> + <th>Interface</th> + <th>IP</th> + <th>Netmask</th> + </tr> + """ + display_ifaces + """ + </table> + <p>The customer cart will be displayed here once a Point of Sale session is started.</p> + <p>Odoo version 11 or above is required.</p> + </div> + </div> + </div> + </body> + </html> + """ + 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 <head> 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 = $('<div>').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 <tecnologia@obsdr.com> (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 <gvalverde@iterativo.do> iterativo | Consultores +# Contributors: Edser Solis - iterativo + +# Odoo 8.0 author: Eneldo Serrata <eneldo@marcos.do> +# (Marcos Organizador de Negocios SRL..) +# Odoo 7.0 author: Jose Ernesto Mendez <tecnologia@obsdr.com> +# (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 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data noupdate="1"> + <!-- Chart template for Taxes --> + <!-- Taxes Groups --> + <record id="group_itbis" model="account.tax.group"> + <field name="name">ITBIS</field> + </record> + <record id="group_ret" model="account.tax.group"> + <field name="name">Retenciones</field> + </record> + <record id="group_tax" model="account.tax.group"> + <field name="name">Otros Impuestos</field> + </record> + <!-- Taxes Template --> + <record id="tax_0_sale" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">50</field> + <field name="name">Exento ITBIS Ventas</field> + <field name="description">Exento</field> + <field name="amount">0</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">sale</field> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_V_EXENTA')])]" name="tag_ids"/> + </record> + <record id="tax_0_purch" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">50</field> + <field name="name">Exento ITBIS Compras</field> + <field name="description">Exento</field> + <field name="amount">0</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_C_EXENTA')])]" name="tag_ids"/> + </record> + <record id="tax_18_sale" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">1</field> + <field name="name">18% ITBIS Ventas</field> + <field name="description">18%</field> + <field name="amount">18</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">sale</field> + <field name="account_id" ref="do_niif_21030102"/> + <field name="refund_account_id" ref="do_niif_21030102"/> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_V_ITBIS_18')])]" name="tag_ids"/> + </record> + <record id="tax_18_sale_incl" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">10</field> + <field name="name">18% ITBIS Incl. Ventas</field> + <field name="description">18% Incl</field> + <field name="amount">18</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">sale</field> + <field name="account_id" ref="do_niif_21030102"/> + <field name="refund_account_id" ref="do_niif_21030102"/> + <field eval="1" name="price_include"/> + <field eval="[(6,0,[ref('tag_V_ITBIS_18')])]" name="tag_ids"/> + </record> + <record id="tax_18_purch" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="name">18% ITBIS Compras</field> + <field name="sequence">2</field> + <field name="description">18%</field> + <field name="amount">18</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_11080101"/> + <field name="refund_account_id" ref="do_niif_11080302"/> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_C_ITBIS_18')])]" name="tag_ids"/> + </record> + <record id="tax_18_purch_incl" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">20</field> + <field name="name">18% ITBIS Incl. Compras</field> + <field name="description">18%</field> + <field name="amount">18</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_11080101"/> + <field name="refund_account_id" ref="do_niif_11080302"/> + <field eval="1" name="price_include"/> + <field eval="[(6,0,[ref('tag_C_ITBIS_18_Incluido')])]" name="tag_ids"/> + </record> + <record id="tax_18_purch_serv" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">20</field> + <field name="name">18% ITBIS Compras - Servicios</field> + <field name="description">18%</field> + <field name="amount">18</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_11080102"/> + <field name="refund_account_id" ref="do_niif_11080302"/> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_C_ITBIS_18')])]" name="tag_ids"/> + </record> + <record id="tax_18_purch_serv_incl" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">20</field> + <field name="name">18% ITBIS Incl. Compras - Servicios</field> + <field name="description">18%</field> + <field name="amount">18</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_11080102"/> + <field name="refund_account_id" ref="do_niif_11080302"/> + <field eval="1" name="price_include"/> + <field eval="[(6,0,[ref('tag_C_ITBIS_18_Incluido')])]" name="tag_ids"/> + </record> + <record id="tax_18_importation" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">20</field> + <field name="name">18% ITBIS - Importaciones</field> + <field name="description">18%</field> + <field name="amount">18</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_11080103"/> + <field name="refund_account_id" ref="do_niif_11080302"/> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_IMP_ITBIS_18')])]" name="tag_ids"/> + </record> + <record id="tax_18_of_10" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">20</field> + <field name="name">18% ITBIS sobre el 10% del Monto Total</field> + <field name="description">18% del 10%</field> + <field name="amount">1.8</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_11080101"/> + <field name="refund_account_id" ref="do_niif_11080302"/> + <field eval="0" name="price_include"/> + </record> + <record id="tax_0015_bank" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">30</field> + <field name="name">Impuesto 0.15% Transferencia Bancaria</field> + <field name="description">0.15%</field> + <field name="amount">0.0015</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_52070200"/> + <field name="refund_account_id" ref="do_niif_11080303"/> + <field eval="1" name="price_include"/> + </record> + <record id="tax_10_telco" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">30</field> + <field name="name">Impuesto 10% Telecomunicaciones (ISC)</field> + <field name="description">ISC</field> + <field name="amount">10</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_52020200"/> + <field name="refund_account_id" ref="do_niif_52020200"/> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_TELE_ISC')])]" name="tag_ids"/> + </record> + <record id="tax_2_telco" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">30</field> + <field name="name">Impuesto 2% Telecomunicaciones (CDT)</field> + <field name="description">CDT</field> + <field name="amount">2</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_52020200"/> + <field name="refund_account_id" ref="do_niif_52020200"/> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_TELE_CDT')])]" name="tag_ids"/> + </record> + <record id="tax_group_telco" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">30</field> + <field name="name">Impuestos a las Telecomunicaciones</field> + <field eval="0" name="amount"/> + <field name="amount_type">group</field> + <field name="type_tax_use">purchase</field> + <field eval="[(6, 0, [ref('tax_10_telco'), ref('tax_2_telco')])]" name="children_tax_ids"/> + </record> + <record id="ret_100_tax_nonprofit" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">40</field> + <field name="name">Retención ITBIS 100% a No Lucrativas (Servicios)</field> + <field name="description">100% del ITBIS</field> + <field name="amount">-18</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_21030203"/> + <field name="refund_account_id" ref="do_niif_21030203"/> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_R_ITBIS_18')])]" name="tag_ids"/> + </record> + <record id="ret_100_tax_person" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">40</field> + <field name="name">Retención ITBIS 100% a Persona FÃsica</field> + <field name="description">100% del ITBIS</field> + <field name="amount">-18</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_21030202"/> + <field name="refund_account_id" ref="do_niif_21030202"/> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_R_ITBIS_18')])]" name="tag_ids"/> + </record> + <record id="ret_30_tax_moral" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">40</field> + <field name="name">Retención ITBIS 30% a Persona JurÃdica (Construcción)</field> + <field name="description">30% del ITBIS</field> + <field name="amount">-5.4</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_21030201"/> + <field name="refund_account_id" ref="do_niif_21030201"/> + <field eval="0" name="price_include"/> + </record> + <record id="ret_30_tax_freelance" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">40</field> + <field name="name">Retención ITBIS 30% a Profesionales Liberales (Servicios)</field> + <field name="description">30% del ITBIS</field> + <field name="amount">-5.4</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_21030204"/> + <field name="refund_account_id" ref="do_niif_21030204"/> + <field eval="0" name="price_include"/> + </record> + <record id="ret_75_tax_nonformal" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">40</field> + <field name="name">Retención ITBIS 75% a Proveedores Informales (Bienes)</field> + <field name="description">75% del ITBIS</field> + <field name="amount">-13.5</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_21030205"/> + <field name="refund_account_id" ref="do_niif_21030205"/> + <field eval="0" name="price_include"/> + </record> + <record id="ret_10_income_person" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">40</field> + <field name="name">Retención ISR 10% Honorarios a Persona FÃsica (Servicios)</field> + <field name="description">10% ISR</field> + <field name="amount">-10</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_21030301"/> + <field name="refund_account_id" ref="do_niif_11080303"/> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_R_ISR_10')])]" name="tag_ids"/> + </record> + <record id="ret_10_income_rent" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">40</field> + <field name="name">Retención ISR 10% a Persona FÃsica (Alquiler)</field> + <field name="description">10% ISR</field> + <field name="amount">-10</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_21030302"/> + <field name="refund_account_id" ref="do_niif_11080303"/> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_R_ISR_10')])]" name="tag_ids"/> + </record> + <record id="ret_10_income_dividend" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">40</field> + <field name="name">Retención ISR 10% por Dividendos</field> + <field name="description">10% ISR</field> + <field name="amount">-10</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_21030303"/> + <field name="refund_account_id" ref="do_niif_11080303"/> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_R_ISR_10')])]" name="tag_ids"/> + </record> + <record id="ret_2_income_person" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">40</field> + <field name="name">Retención ISR 2% a Persona FÃsica (Servicios)</field> + <field name="description">2% ISR (N 07-07)</field> + <field name="amount">-2</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_21030308"/> + <field name="refund_account_id" ref="do_niif_11080303"/> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_R_ISR_2')])]" name="tag_ids"/> + </record> + <record id="ret_2_income_transfer" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">40</field> + <field name="name">Retención ISR 2% por Transferencia de TÃtulos</field> + <field name="description">2% ISR</field> + <field name="amount">-2</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_21030306"/> + <field name="refund_account_id" ref="do_niif_11080303"/> + <field eval="0" name="price_include"/> + <field eval="[(6,0,[ref('tag_R_ISR_2')])]" name="tag_ids"/> + </record> + <record id="ret_27_income_remittance" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">40</field> + <field name="name">Retención ISR 27% por Remesas al Exterior</field> + <field name="description">27% ISR</field> + <field name="amount">-27</field> + <field name="amount_type">percent</field> + <field name="type_tax_use">purchase</field> + <field name="account_id" ref="do_niif_21030307"/> + <field name="refund_account_id" ref="do_niif_11080303"/> + <field eval="0" name="price_include"/> + </record> + <record id="tax_group_nonformal" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">60</field> + <field name="name">Retención a Proveedores Informales (Bienes)</field> + <field name="amount_type">group</field> + <field eval="0" name="amount"/> + <field name="type_tax_use">purchase</field> + <field eval="[(6, 0, [ref('ret_75_tax_nonformal'), ref('tax_18_purch')])]" name="children_tax_ids"/> + </record> + <record id="tax_group_person_construction" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">60</field> + <field name="name">Retención a Persona FÃsica (Servicios Construcción con Materiales)</field> + <field name="amount_type">group</field> + <field eval="0" name="amount"/> + <field name="type_tax_use">purchase</field> + <field eval="[(6, 0, [ref('tax_18_of_10'), ref('ret_2_income_person'), ref('ret_100_tax_person')])]" name="children_tax_ids"/> + </record> + <record id="tax_group_moral_construction" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">60</field> + <field name="name">Retención a JurÃdica (Servicios Construcción con Materiales)</field> + <field name="amount_type">group</field> + <field eval="0" name="amount"/> + <field name="type_tax_use">purchase</field> + <field eval="[(6, 0, [ref('ret_30_tax_moral'), ref('tax_18_of_10')])]" name="children_tax_ids"/> + </record> + <record id="tax_group_person_services" model="account.tax.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="sequence">60</field> + <field name="name">Retención a Persona FÃsica por Servicios Profesionales</field> + <field name="amount_type">group</field> + <field eval="0" name="amount"/> + <field name="type_tax_use">purchase</field> + <field eval="[(6, 0, [ref('ret_2_income_person'), ref('ret_100_tax_person')])]" name="children_tax_ids"/> + </record> + </data> +</odoo> 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 @@ <?xml version="1.0" encoding="utf-8"?> <odoo> <data noupdate="1"> - - - <!-- Account Tags --> - + <!-- Account Taxes Tags --> <record id="tag_R_ISR_10" model="account.account.tag"> <field name="name">R-ISR 10%</field> <field name="applicability">taxes</field> </record> - <record id="tag_C_EXENTA" model="account.account.tag"> <field name="name">C-EXENTA</field> <field name="applicability">taxes</field> </record> - <record id="tag_V_ITBIS_8" model="account.account.tag"> <field name="name">V-ITBIS 8%</field> <field name="applicability">taxes</field> </record> - <record id="tag_C_ITBIS_8" model="account.account.tag"> <field name="name">C-ITBIS 8%</field> <field name="applicability">taxes</field> </record> - <record id="tag_V_ITBIS_11" model="account.account.tag"> <field name="name">V-ITBIS 11%</field> <field name="applicability">taxes</field> </record> - <record id="tag_C_ITBIS_11" model="account.account.tag"> <field name="name">C-ITBIS 11%</field> <field name="applicability">taxes</field> </record> - <record id="tag_V_EXENTA" model="account.account.tag"> <field name="name">V-EXENTA</field> <field name="applicability">taxes</field> </record> - <record id="tag_V_ITBIS_18" model="account.account.tag"> <field name="name">V-ITBIS 18%</field> <field name="applicability">taxes</field> </record> - <record id="tag_C_ITBIS_18_Incluido" model="account.account.tag"> <field name="name">C-ITBIS 18% Incluido</field> <field name="applicability">taxes</field> </record> - <record id="tag_C_ITBIS_18" model="account.account.tag"> <field name="name">C-ITBIS 18%</field> <field name="applicability">taxes</field> </record> - <record id="tag_CS_ITBIS_18_Incluido" model="account.account.tag"> <field name="name">CS-ITBIS 18% Incluido</field> <field name="applicability">taxes</field> </record> - <record id="tag_CS_ITBIS_18" model="account.account.tag"> <field name="name">CS-ITBIS 18%</field> <field name="applicability">taxes</field> </record> - <record id="tag_IMP_ITBIS_18" model="account.account.tag"> <field name="name">IMP-ITBIS 18%</field> <field name="applicability">taxes</field> </record> - <record id="tag_R_ITBIS_18" model="account.account.tag"> <field name="name">R-ITBIS 18%</field> <field name="applicability">taxes</field> </record> - <record id="tag_R_ISR_2" model="account.account.tag"> <field name="name">R-ISR 2%</field> <field name="applicability">taxes</field> </record> - <record id="tag_TELE_ISC" model="account.account.tag"> <field name="name">TELE-ISC</field> <field name="applicability">taxes</field> </record> - <record id="tag_TELE_CDT" model="account.account.tag"> <field name="name">TELE-CDT</field> <field name="applicability">taxes</field> </record> - <record id="tag_R_Alquileres_10" model="account.account.tag"> <field name="name">R-Alquileres 10%</field> <field name="applicability">taxes</field> </record> - </data> -</odoo>
\ No newline at end of file +</odoo> 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 @@ -<?xml version="1.0" encoding="utf-8"?> -<odoo> - <menuitem id="account_reports_do_statements_menu" name="Dominican Statements" parent="account.menu_finance_reports" sequence="3" groups="account.group_account_user"/> - - <record model="account.account.template" id="default_chart_a_account_152"> - <field name="name">Efectivo en transito</field> - <field name="code">112050</field> - <field name="reconcile" eval="True"/> - <field name="user_type_id" ref="account.data_account_type_current_assets"/> - </record> - - - <record id="default_chart_a" model="account.chart.template"> - <field name="name">Catálogo de Cuentas Empresas Privadas</field> - <field name="currency_id" ref="base.DOP"/> - <field name="code_digits" eval="8"/> - <field name="transfer_account_id" ref="default_chart_a_account_152"/> - <field name="bank_account_code_prefix">112</field> - <field name="cash_account_code_prefix">111</field> - </record> - - <record model="account.account.template" id="default_chart_a_account_152"> - <field name="chart_template_id" ref="default_chart_a"/> - </record> - -</odoo> 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 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data noupdate="1"> + <!-- = = = = = = = = = = = = = = = --> + <!-- Fiscal Position Templates --> + <!-- = = = = = = = = = = = = = = = --> + <!-- Principal Fiscal Position for Dominican Republic internally --> + <record id="position_buyer_final" model="account.fiscal.position.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="name">Consumidor Final</field> + </record> + <record id="position_buyer_moral" model="account.fiscal.position.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="name">Crédito Fiscal</field> + </record> + <record id="position_provider_moral" model="account.fiscal.position.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="name">Proveedor Fiscal</field> + </record> + <record id="position_construction_moral" model="account.fiscal.position.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="name">Proveedor Fiscal (Construcción)</field> + </record> + <record id="position_construction_person" model="account.fiscal.position.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="name">Persona FÃsica (Construcción)</field> + </record> + <record id="position_person" model="account.fiscal.position.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="name">Persona FÃsica</field> + </record> + <record id="position_nonformal" model="account.fiscal.position.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="name">Proveedor Informal (Bienes)</field> + </record> + <record id="position_exterior" model="account.fiscal.position.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="name">Proveedor del Exterior</field> + </record> + <record id="position_expenses" model="account.fiscal.position.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="name">Gastos Menores</field> + </record> + <record id="position_gov" model="account.fiscal.position.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="name">Gubernamental</field> + </record> + <record id="position_nonprofit" model="account.fiscal.position.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="name">No lucrativas</field> + </record> + <record id="position_especial" model="account.fiscal.position.template"> + <field name="chart_template_id" ref="do_chart_template"/> + <field name="name">RegÃmenes Especiales</field> + </record> + <!-- = = = = = = = = = = = = = = = --> + <!-- Fiscal Position Tax Templates --> + <!-- = = = = = = = = = = = = = = = --> + <!-- Locales --> + <!-- Proveedor Informal Bienes --> + <record id="fiscal_position_tax_3" model="account.fiscal.position.tax.template"> + <field name="tax_src_id" ref="tax_18_purch"/> + <field name="position_id" ref="position_nonformal"/> + <field name="tax_dest_id" ref="tax_group_nonformal"/> + </record> + <record id="fiscal_position_tax_4" model="account.fiscal.position.tax.template"> + <field name="tax_src_id" ref="tax_18_purch_incl"/> + <field name="position_id" ref="position_nonformal"/> + <field name="tax_dest_id" ref="tax_group_nonformal"/> + </record> + <!-- Persona FÃsica>--> + <record id="fiscal_position_tax_9" model="account.fiscal.position.tax.template"> + <field name="tax_src_id" ref="tax_18_purch"/> + <field name="position_id" ref="position_person"/> + <field name="tax_dest_id" ref="tax_group_person_services"/> + </record> + <record id="fiscal_position_tax_10" model="account.fiscal.position.tax.template"> + <field name="tax_src_id" ref="tax_18_purch_serv"/> + <field name="position_id" ref="position_person"/> + <field name="tax_dest_id" ref="tax_group_person_services"/> + </record> + <!-- Gubernamental --> + <record id="fiscal_position_tax_1" model="account.fiscal.position.tax.template"> + <field name="tax_src_id" ref="tax_18_sale"/> + <field name="position_id" ref="position_gov"/> + <field name="tax_dest_id" ref="tax_0_sale"/> + </record> + <record id="fiscal_position_tax_2" model="account.fiscal.position.tax.template"> + <field name="tax_src_id" ref="tax_18_purch"/> + <field name="position_id" ref="position_gov"/> + <field name="tax_dest_id" ref="tax_0_purch"/> + </record> + <!-- No Lucrativas --> + <record id="fiscal_position_tax_12" model="account.fiscal.position.tax.template"> + <field name="tax_src_id" ref="tax_18_purch"/> + <field name="position_id" ref="position_nonprofit"/> + <field name="tax_dest_id" ref="tax_0_purch"/> + </record> + <record id="fiscal_position_tax_13" model="account.fiscal.position.tax.template"> + <field name="tax_src_id" ref="tax_18_purch_serv"/> + <field name="position_id" ref="position_nonprofit"/> + <field name="tax_dest_id" ref="ret_100_tax_nonprofit"/> + </record> + <!-- Proveedor Moral Construcción --> + <record id="fiscal_position_tax_8" model="account.fiscal.position.tax.template"> + <field name="tax_src_id" ref="tax_18_purch"/> + <field name="position_id" ref="position_construction_moral"/> + <field name="tax_dest_id" ref="tax_group_moral_construction"/> + </record> + <!-- Persona FÃsica Construcción --> + <record id="fiscal_position_tax_7" model="account.fiscal.position.tax.template"> + <field name="tax_src_id" ref="tax_18_purch"/> + <field name="position_id" ref="position_construction_person"/> + <field name="tax_dest_id" ref="tax_group_person_construction"/> + </record> + <!-- Importación / Exportación --> + <!-- Proveedo del Exterior --> + <record id="fiscal_position_tax_5" model="account.fiscal.position.tax.template"> + <field name="tax_src_id" ref="tax_18_purch_serv"/> + <field name="position_id" ref="position_exterior"/> + <field name="tax_dest_id" ref="ret_27_income_remittance"/> + </record> + <record id="fiscal_position_tax_6" model="account.fiscal.position.tax.template"> + <field name="tax_src_id" ref="tax_18_purch"/> + <field name="position_id" ref="position_exterior"/> + <field name="tax_dest_id" ref="tax_0_purch"/> + </record> + <!-- = = = = = = = = = = = = = = = = = --> + <!-- Fiscal Position Accounts Template --> + <!-- = = = = = = = = = = = = = = = = = --> + <!-- Locales --> + <!-- Persona FÃsica de Servicios --> + <record id="fiscal_position_account_2" model="account.fiscal.position.account.template"> + <field name="position_id" ref="position_person"/> + <field name="account_dest_id" ref="do_niif_52030111"/> + <field name="account_src_id" ref="do_niif_52021500"/> + </record> + <!-- Importación / Exportación --> + <!-- Proveedor del Exterior --> + <record id="fiscal_position_account_1" model="account.fiscal.position.account.template"> + <field name="position_id" ref="position_exterior"/> + <field name="account_dest_id" ref="do_niif_21010300"/> + <field name="account_src_id" ref="do_niif_21010200"/> + </record> + </data> +</odoo> 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 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <menuitem id="account_reports_do_statements_menu" name="Dominican Statements" parent="account.menu_finance_reports" sequence="3" groups="account.group_account_user"/> + <data noupdate="1"> + <!-- Chart of Accounts Template --> + <record id="cash_transfer_account" model="account.account.template"> + <field name="name">Transferencias de Efectivo</field> + <field name="code">11010100</field> + <field eval="True" name="reconcile"/> + <field name="user_type_id" ref="account.data_account_type_current_assets"/> + </record> + <record id="do_chart_template" model="account.chart.template"> + <field name="name">Catálogo de Cuentas Dominicano (NIIF)</field> + <field name="code_digits">8</field> + <field name="cash_account_code_prefix">110101</field> + <field name="bank_account_code_prefix">110102</field> + <field name="transfer_account_id" ref="cash_transfer_account"/> + <field name="currency_id" ref="base.DOP"/> + <field name="spoken_languages" eval="'es_DO'"/> + </record> + <record id="cash_transfer_account" model="account.account.template"> + <field name="chart_template_id" ref="do_chart_template"/> + </record> + </data> +</odoo> diff --git a/addons/l10n_do/data/l10n_do_base_data.xml b/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 @@ <?xml version="1.0" encoding="utf-8"?> -<openerp> - <data> - +<odoo> + <data noupdate="1"> <!-- - Resource: res.country.state - Update states using ISO 3166-2:DO codes - --> + 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. + --> <record id="state_DO_01" model="res.country.state"> - <field name="code">01</field> + <field name="code">DN</field> <field name="name">Distrito Nacional</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_02" model="res.country.state"> - <field name="code">02</field> + <field name="code">AZU</field> <field name="name">Azua</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_03" model="res.country.state"> - <field name="code">03</field> + <field name="code">BAH</field> <field name="name">Bahoruco</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_4" model="res.country.state"> - <field name="code">04</field> + <field name="code">BAR</field> <field name="name">Barahona</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_05" model="res.country.state"> - <field name="code">05</field> - <field name="name">Dajabon</field> + <field name="code">DAJ</field> + <field name="name">Dajabón</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_06" model="res.country.state"> - <field name="code">06</field> + <field name="code">DUA</field> <field name="name">Duarte</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_07" model="res.country.state"> - <field name="code">07</field> - <field name="name">Elias Piña</field> + <field name="code">ELP</field> + <field name="name">ElÃas Piña</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_08" model="res.country.state"> - <field name="code">08</field> - <field name="name">El Seybo</field> + <field name="code">ELS</field> + <field name="name">El Seibo</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_09" model="res.country.state"> - <field name="code">09</field> + <field name="code">ESP</field> <field name="name">Espaillat</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_10" model="res.country.state"> - <field name="code">10</field> + <field name="code">IND</field> <field name="name">Independencia</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_11" model="res.country.state"> - <field name="code">11</field> + <field name="code">LA</field> <field name="name">La Altagracia</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_12" model="res.country.state"> - <field name="code">12</field> + <field name="code">LR</field> <field name="name">La Romana</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_13" model="res.country.state"> - <field name="code">13</field> + <field name="code">LV</field> <field name="name">La Vega</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_14" model="res.country.state"> - <field name="code">14</field> - <field name="name">Maria Trinidad Sanchez</field> + <field name="code">MTS</field> + <field name="name">MarÃa Trinidad Sánchez</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_15" model="res.country.state"> - <field name="code">15</field> + <field name="code">MC</field> <field name="name">Monte Cristi</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_16" model="res.country.state"> - <field name="code">16</field> + <field name="code">PED</field> <field name="name">Pedernales</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_17" model="res.country.state"> - <field name="code">17</field> + <field name="code">PER</field> <field name="name">Peravia</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_18" model="res.country.state"> - <field name="code">18</field> + <field name="code">PP</field> <field name="name">Puerto Plata</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_19" model="res.country.state"> - <field name="code">19</field> + <field name="code">HEM</field> <field name="name">Hermanas Mirabal</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_20" model="res.country.state"> - <field name="code">20</field> - <field name="name">Samana</field> + <field name="code">SAM</field> + <field name="name">Samaná</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_21" model="res.country.state"> - <field name="code">21</field> - <field name="name">San Cristobal</field> + <field name="code">SC</field> + <field name="name">San Cristóbal</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_22" model="res.country.state"> - <field name="code">22</field> - <field name="name">San Juan de la Maguana</field> + <field name="code">SJ</field> + <field name="name">San Juan</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_23" model="res.country.state"> - <field name="code">23</field> - <field name="name">San Pedro de Macoris</field> + <field name="code">SPM</field> + <field name="name">San Pedro de MacorÃs</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_24" model="res.country.state"> - <field name="code">24</field> - <field name="name">Sanchez Ramirez</field> + <field name="code">SRA</field> + <field name="name">Sánchez RamÃrez</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_25" model="res.country.state"> - <field name="code">25</field> + <field name="code">STGO</field> <field name="name">Santiago</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_26" model="res.country.state"> - <field name="code">26</field> - <field name="name">Santiago Rodriguez</field> + <field name="code">SRO</field> + <field name="name">Santiago RodrÃguez</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_27" model="res.country.state"> - <field name="code">27</field> + <field name="code">VAL</field> <field name="name">Valverde</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_28" model="res.country.state"> - <field name="code">28</field> + <field name="code">MON</field> <field name="name">Monseñor Nouel</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_29" model="res.country.state"> - <field name="code">28</field> + <field name="code">MP</field> <field name="name">Monte Plata</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_30" model="res.country.state"> - <field name="code">30</field> + <field name="code">HAM</field> <field name="name">Hato Mayor</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_31" model="res.country.state"> - <field name="code">31</field> - <field name="name">San Jose de Ocoa</field> + <field name="code">SJO</field> + <field name="name">San José de Ocoa</field> <field name="country_id" ref="base.do"/> </record> <record id="state_DO_32" model="res.country.state"> - <field name="code">32</field> + <field name="code">SD</field> <field name="name">Santo Domingo</field> <field name="country_id" ref="base.do"/> </record> <!-- - Resource: res.partner.title - Update partner titles - --> + Resource: res.partner.title + Update partner titles + --> <record id="base.res_partner_title_dra" model="res.partner.title"> <field name="name">Doctora</field> <field name="shortcut">Dra.</field> @@ -194,6 +196,5 @@ <field name="name">Ingeniero/a</field> <field name="shortcut">Ing.</field> </record> - </data> -</openerp>
\ No newline at end of file +</odoo> 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 @@ <?xml version="1.0" encoding="utf-8"?> <odoo> - <record id="default_chart_a" model="account.chart.template"> - <field name="property_account_receivable_id" ref="default_chart_a_account_13"/> - <field name="property_account_payable_id" ref="default_chart_a_account_61"/> - <field name="property_account_expense_categ_id" ref="default_chart_a_account_101"/> - <field name="property_account_income_categ_id" ref="default_chart_a_account_87"/> - <field name="income_currency_exchange_account_id" ref="default_chart_a_account_148"/> - <field name="expense_currency_exchange_account_id" ref="default_chart_a_account_596"/> - </record> + <!-- Chart Template for Defaults --> + <record id="do_chart_template" model="account.chart.template"> + <field name="property_account_receivable_id" ref="do_niif_11030201"/> + <field name="property_account_payable_id" ref="do_niif_21010200"/> + <field name="property_account_expense_categ_id" ref="do_niif_52021500"/> + <field name="property_account_income_categ_id" ref="do_niif_41010100"/> + <field eval="False" name="use_anglo_saxon"/> + <field name="property_stock_account_input_categ_id" ref="do_niif_11050300"/> + <field name="property_stock_account_output_categ_id" ref="do_niif_11050300"/> + <field name="property_stock_valuation_account_id" ref="do_niif_11060100"/> + <field name="expense_currency_exchange_account_id" ref="do_niif_52070800"/> + <field name="income_currency_exchange_account_id" ref="do_niif_42040100"/> + </record> </odoo> 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) <info@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) <info@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.on("change:value", this, this.on_change_value_check); - this.trigger("change:value"); + // 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._super.apply(this, arguments); }, on_change_value_check : function () { - this.values = _.uniq(this.values); - - // 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; - } + var self = this; + var values = this.get('value').slice(0); // Clone the array - // 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 Binary files differnew file mode 100644 index 00000000000..521b08d182a --- /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.rsa 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 @@ +<?xml version="1.0"?>
+
+<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<window id="main-window"
+ onload="RkioskBrowserStartup()">
+</window>
+
+<script type="application/x-javascript" src="rkioskbrowser.js"/>
+
+ <menubar id="main-menubar" hidden="true" fullscreentoolbar="false" disabled="true">
+ <menuitem id="menu_preferences" disabled="true"/>
+ </menubar>
+
+ <popup id="contentAreaContextMenu"
+ onpopupshowing="if (event.target != this) return true; return false;"
+ onpopuphiding="if (event.target == this) gContextMenu = null;">
+ </popup>
+
+ <commandset id="mainCommandSet">
+ <command id="cmd_newNavigator" disabled="true"/>
+ <command id="cmd_handleBackspace" disabled="true"/>
+ <command id="cmd_handleShiftBackspace" disabled="true"/>
+ <command id="cmd_newNavigatorTab" disabled="true"/>
+ <command id="Browser:OpenFile" disabled="true"/>
+ <command id="Browser:SavePage" disabled="true"/>
+ <command id="Browser:SaveFrame" disabled="true"/>
+ <command id="Browser:SendLink" disabled="true"/>
+ <command id="cmd_pageSetup" disabled="true"/>
+ <command id="cmd_print" oncommand="PrintUtils.print();"/>
+ <command id="cmd_printPreview" disabled="true"/>
+ <command id="cmd_close" disabled="true"/>
+ <command id="cmd_closeWindow" disabled="true"/>
+ <command id="cmd_ToggleTabsOnTop" disabled="true"/>
+ <command id="cmd_quitApplication" disabled="true"/>
+ <command id="cmd_toggleTaskbar" disabled="true"/>
+ <command id="cmd_CustomizeToolbars" disabled="true"/>
+ <commandset id="editMenuCommands"/>
+ <command id="View:PageSource" disabled="true"/>
+ <command id="View:PageInfo" disabled="true"/>
+ <command id="View:FullScreen" disabled="true"/>
+ <command id="cmd_find" disabled="true"/>
+ <command id="cmd_findAgain" disabled="true"/>
+ <command id="cmd_findPrevious" disabled="true"/>
+ <command id="Browser:AddBookmarkAs" disabled="true"/>
+ <command id="Browser:BookmarkAllTabs" disabled="true"/>
+ <command id="Browser:Home" oncommand="BrowserHome();"/>
+ <command id="Browser:Back" disabled="true"/>
+ <command id="Browser:Forward" disabled="true"/>
+ <command id="Browser:Stop" disabled="true"/>
+ <command id="Browser:Reload" disabled="true"/>
+ <command id="Browser:ReloadSkipCache" disabled="true"/>
+ <command id="Browser:BackOrBackDuplicate" disabled="true"/>
+ <command id="Browser:Forward" disabled="true"/>
+ <command id="Browser:ForwardOrForwardDuplicate" disabled="true"/>
+ <command id="Browser:ReloadOrDuplicate" disabled="true"/>
+ <command id="Browser:NextTab" disabled="true"/>
+ <command id="Browser:PrevTab" disabled="true"/>
+ <command id="Browser:ShowAllTabs" disabled="true"/>
+ <command id="Browser:ToggleTabView" disabled="true"/>
+ <command id="Browser:ToggleAddonBar" disabled="true"/>
+ <command id="cmd_fullZoomReduce" disabled="true"/>
+ <command id="cmd_fullZoomEnlarge" disabled="true"/>
+ <command id="cmd_fullZoomReset" disabled="true"/>
+ <command id="cmd_fullZoomToggle" disabled="true"/>
+ <command id="Browser:OpenLocation" disabled="true"/>
+ <command id="Tools:Search" disabled="true"/>
+ <command id="Tools:Downloads" disabled="true"/>
+ <command id="Tools:Addons" disabled="true"/>
+ <command id="Tools:Sanitize" disabled="true"/>
+ <command id="Tools:Inspect" disabled="true"/>
+ <command id="Tools:PrivateBrowsing" disabled="true"/>
+ <command id="History:UndoCloseTab" disabled="true"/>
+ <command id="History:UndoCloseWindow" disabled="true"/>
+ <command id="cmd_bm_open" disabled="true"/>
+ <command id="cmd_bm_openinnewwindow" disabled="true"/>
+ <command id="cmd_bm_openinnewtab" disabled="true"/>
+ <command id="cmd_bm_openfolder" disabled="true"/>
+ <command id="cmd_bm_managefolder" disabled="true"/>
+ <command id="cmd_bm_newfolder" disabled="true"/>
+ <command id="cmd_bm_newbookmark" disabled="true"/>
+ <command id="cmd_bm_newseparator" disabled="true"/>
+ <command id="cmd_bm_properties" disabled="true"/>
+ <command id="cmd_bm_refreshlivemark" disabled="true"/>
+ <command id="cmd_bm_refreshmicrosummary" disabled="true"/>
+ <command id="cmd_bm_rename" disabled="true"/>
+ <command id="cmd_bm_moveBookmark" disabled="true"/>
+ <command id="cmd_bm_sortbyname" disabled="true"/>
+ <command id="cmd_copyLink" disabled="true"/>
+ <command id="cmd_copyImageLocation" disabled="true"/>
+ <command id="cmd_copyImageContents" disabled="true"/>
+ <command id="cmd_undo" disabled="true"/>
+ <command id="cmd_redo" disabled="true"/>
+ <command id="cmd_cut" disabled="true"/>
+ <command id="cmd_copy" disabled="true"/>
+ <command id="cmd_paste" disabled="true"/>
+ <command id="cmd_delete" disabled="true"/>
+ <command id="cmd_selectAll" disabled="true"/>
+ <command id="cmd_switchTextDirection" disabled="true"/>
+ <command id="cmd_textZoomReduce" disabled="true"/>
+ <command id="cmd_textZoomEnlarge" disabled="true"/>
+ <command id="cmd_textZoomReset" disabled="true"/>
+ </commandset>
+ <commandset id="placesCommands">
+ <command id="Browser:ShowAllBookmarks" disabled="true"/>
+ <command id="Browser:ShowAllHistory" disabled="true"/>
+ </commandset>
+
+ <keyset id="mainKeyset">
+ <key id="rkiosk_f1" keycode="VK_F1" oncommand="Rkiosk_donothing();"/>
+ <key id="key_newNavigator" disabled="true"/>
+ <key id="key_newNavigatorTab" disabled="true"/>
+ <key id="focusURLBar" disabled="true"/>
+ <key id="focusURLBar2" disabled="true"/>
+ <key id="key_search" disabled="true"/>
+ <key id="key_search2" disabled="true"/>
+ <key id="key_openDownloads" disabled="true"/>
+ <key id="openFileKb" disabled="true"/>
+ <key id="key_savePage" disabled="true"/>
+ <key id="printKb" disabled="true"/>
+ <key id="key_close" disabled="true"/>
+ <key id="key_closeWindow" disabled="true"/>
+ <key id="key_undo" disabled="true"/>
+ <key id="key_redo" disabled="true"/>
+ <key id="key_cut" disabled="true"/>
+ <key id="key_copy" disabled="true"/>
+ <key id="key_paste" disabled="true"/>
+ <key id="key_delete" disabled="true"/>
+ <key id="key_selectAll" disabled="true"/>
+ <key id="goBackKb" disabled="true"/>
+ <key id="goForwardKb" disabled="true"/>
+ <key id="goHome" keycode="VK_HOME" command="Browser:Home" modifiers="alt"/>
+ <key id="key_viewSource" disabled="true"/>
+ <key id="key_find" disabled="true"/>
+ <key id="key_findAgain" disabled="true"/>
+ <key id="key_findPrevious" disabled="true"/>
+ <key id="addBookmarkAsKb" disabled="true"/>
+ <key id="bookmarkAllTabsKb" disabled="true"/>
+ <key id="key_stop" disabled="true"/>
+ <key id="key_gotoHistory" command="Rkiosk_donothing();"/>
+ <key id="key_switchTextDirection" disabled="true"/>
+ <key id="key_sanitize" disabled="true"/>
+ <key id="key_undoCloseTab" disabled="true"/>
+ <key id="viewBookmarksSidebarKb" command="Rkiosk_donothing();"/>
+ <key id="viewBookmarksSidebarWinKb" command="Rkiosk_donothing();"/>
+ <key id="key_fullScreen" disabled="true"/>
+ <key id="key_textZoomReduce" disabled="true"/>
+ <key id="key_textZoomEnlarge" disabled="true"/>
+ <key id="key_textZoomReset" disabled="true"/>
+ <key id="showAllHistoryKb" disabled="true"/>
+ <key id="key_errorConsole" disabled="true"/>
+ <key id="manBookmarkKb" disabled="true"/>
+ <key id="key_fullZoomReduce" disabled="true"/>
+ <key id="key_fullZoomEnlarge" disabled="true"/>
+ <key id="key_fullZoomReset" disabled="true"/>
+ <key id="key_openAddons" disabled="true"/>
+ <key id="key_webConsole" disabled="true"/>
+ <key id="key_inspect" disabled="true"/>
+ <key id="key_scratchpad" disabled="true"/>
+ <key id="key_showAllTabs" disabled="true"/>
+ <key id="key_tabview" disabled="true"/>
+ <key id="key_privatebrowsing" disabled="true"/>
+ <key id="key_undoCloseWindow" disabled="true"/>
+ <key id="key_selectTab1" disabled="true"/>
+ <key id="key_selectTab2" disabled="true"/>
+ <key id="key_selectTab3" disabled="true"/>
+ <key id="key_selectTab4" disabled="true"/>
+ <key id="key_selectTab5" disabled="true"/>
+ <key id="key_selectTab6" disabled="true"/>
+ <key id="key_selectTab7" disabled="true"/>
+ <key id="key_selectTab8" disabled="true"/>
+ <key id="key_selectLastTab" disabled="true"/>
+ <key id="key_toggleAddonBar" disabled="true"/>
+ </keyset>
+</overlay>
\ 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 @@ +<?xml version="1.0"?>
+
+<overlay>
+ <dialog id="unknownContentType"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ onload="rkioskclose();">
+ <script src="rkioskbrowser.js"/>
+ </dialog>
+</overlay>
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 @@ +<?xml version="1.0"?>
+
+<overlay>
+ <dialog id="xpinstallConfirm"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ onload="rkioskclose();">
+ <script src="rkioskbrowser.js"/>
+ </dialog>
+</overlay>
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 @@ +<?xml version='1.0' encoding='utf-8'?> +<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> + + <Description about="urn:mozilla:install-manifest"> + + <em:id>{4D498D0A-05AD-4fdb-97B5-8A0AABC1FC5B}</em:id> + <em:name>R-kiosk</em:name> + <em:version>0.9.0.1-signed.1-signed</em:version> + <em:description>RKiosk (Real Kiosk), fullscreen kiosk mode: all menus, keys etc. disabled</em:description> + <em:creator>Kimmo Heinaaro</em:creator> + <em:targetApplication> + <Description> + <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> + <em:minVersion>2.0</em:minVersion> + <em:maxVersion>6.*</em:maxVersion> + </Description> + </em:targetApplication> + </Description> +</RDF>
\ 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 += '<span class="o_attendee_head" title="' + attendee_other.slice(0, -2) + '">+</span>'; } - 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); } } |
