Skip to content

Commit

Permalink
Merge remote-tracking branch 'odoo/9.0' into 9.0
Browse files Browse the repository at this point in the history
  • Loading branch information
OCA-git-bot committed Mar 23, 2017
2 parents 9d06c65 + 4269bcf commit 319c89a
Show file tree
Hide file tree
Showing 24 changed files with 1,064 additions and 410 deletions.
13 changes: 9 additions & 4 deletions addons/base_action_rule/base_action_rule.py
Expand Up @@ -175,13 +175,18 @@ def _filter_post(self, records):
@openerp.api.multi
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 = {}
Expand Down
34 changes: 34 additions & 0 deletions addons/base_action_rule/base_action_rule_demo.xml
Expand Up @@ -44,11 +44,45 @@
<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>
</data>
</openerp>
13 changes: 13 additions & 0 deletions addons/base_action_rule/test_models.py
@@ -1,6 +1,8 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.

from dateutil import relativedelta

import openerp
from openerp.osv import fields, osv
from openerp import api
Expand Down Expand Up @@ -33,6 +35,17 @@ class lead_test(osv.Model):
}

customer = openerp.fields.Boolean(related='partner_id.customer', readonly=True, store=True)
priority = openerp.fields.Boolean()
deadline = openerp.fields.Boolean(compute='_compute_deadline', store=True)
is_assigned_to_admin = openerp.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 = openerp.fields.Datetime.from_string(record.create_date) + relativedelta.relativedelta(days=3)

@api.cr_uid_ids_context
def message_post(self, cr, uid, thread_id, body='', subject=None, message_type='notification', subtype=None, parent_id=False, attachments=None, context=None, **kwargs):
Expand Down
24 changes: 24 additions & 0 deletions addons/base_action_rule/tests/test_base_action_rule.py
Expand Up @@ -92,6 +92,30 @@ def test_10_recomputed_field(self):
self.assertTrue(lead.customer)
self.assertEqual(lead.user_id, self.user_demo)

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.
Expand Down
2 changes: 2 additions & 0 deletions 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
114 changes: 89 additions & 25 deletions 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,
}

0 comments on commit 319c89a

Please sign in to comment.