diff --git a/addons/base_action_rule/__init__.py b/addons/base_action_rule/__init__.py index 63d98db44fd..3af721996e5 100644 --- a/addons/base_action_rule/__init__.py +++ b/addons/base_action_rule/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -import base_action_rule -import test_models +import models +import tests diff --git a/addons/base_action_rule/__openerp__.py b/addons/base_action_rule/__openerp__.py index cbccf86954a..fd2458c68eb 100644 --- a/addons/base_action_rule/__openerp__.py +++ b/addons/base_action_rule/__openerp__.py @@ -17,12 +17,12 @@ trigger an automatic reminder email. """, 'depends': ['base', 'resource', 'mail'], 'data': [ - 'base_action_rule_data.xml', - 'base_action_rule_view.xml', + 'data/base_action_rule_data.xml', + 'views/base_action_rule_view.xml', 'security/ir.model.access.csv', ], 'demo': [ - 'base_action_rule_demo.xml', + 'data/base_action_rule_demo.xml', ], 'installable': True, 'auto_install': False, diff --git a/addons/base_action_rule/base_action_rule_data.xml b/addons/base_action_rule/data/base_action_rule_data.xml similarity index 100% rename from addons/base_action_rule/base_action_rule_data.xml rename to addons/base_action_rule/data/base_action_rule_data.xml diff --git a/addons/base_action_rule/base_action_rule_demo.xml b/addons/base_action_rule/data/base_action_rule_demo.xml similarity index 100% rename from addons/base_action_rule/base_action_rule_demo.xml rename to addons/base_action_rule/data/base_action_rule_demo.xml diff --git a/addons/base_action_rule/models/__init__.py b/addons/base_action_rule/models/__init__.py new file mode 100644 index 00000000000..1f1a8086873 --- /dev/null +++ b/addons/base_action_rule/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +import base_action_rule diff --git a/addons/base_action_rule/base_action_rule.py b/addons/base_action_rule/models/base_action_rule.py similarity index 100% rename from addons/base_action_rule/base_action_rule.py rename to addons/base_action_rule/models/base_action_rule.py diff --git a/addons/base_action_rule/tests/__init__.py b/addons/base_action_rule/tests/__init__.py index 276ee9c9924..f4257911f95 100644 --- a/addons/base_action_rule/tests/__init__.py +++ b/addons/base_action_rule/tests/__init__.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from . import test_base_action_rule +import test_models +import test_base_action_rule 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 b6e7d880246..fed8ed68072 100644 --- a/addons/base_action_rule/tests/test_base_action_rule.py +++ b/addons/base_action_rule/tests/test_base_action_rule.py @@ -1,6 +1,6 @@ from openerp import SUPERUSER_ID from openerp.tests import common -from .. import test_models + @common.at_install(False) @common.post_install(True) diff --git a/addons/base_action_rule/test_models.py b/addons/base_action_rule/tests/test_models.py similarity index 100% rename from addons/base_action_rule/test_models.py rename to addons/base_action_rule/tests/test_models.py diff --git a/addons/base_action_rule/base_action_rule_view.xml b/addons/base_action_rule/views/base_action_rule_view.xml similarity index 100% rename from addons/base_action_rule/base_action_rule_view.xml rename to addons/base_action_rule/views/base_action_rule_view.xml diff --git a/addons/hr_contract/base_action_rule.py b/addons/hr_contract/base_action_rule.py new file mode 100644 index 00000000000..3b30bc389f2 --- /dev/null +++ b/addons/hr_contract/base_action_rule.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from openerp.fields import Datetime +from openerp.osv import fields, osv + + +class base_action_rule(osv.Model): + """ Add resource and calendar for time-based conditions """ + _name = 'base.action.rule' + _inherit = ['base.action.rule'] + + _columns = { + 'trg_date_resource_field_id': fields.many2one( + 'ir.model.fields', 'Use employee work schedule', + help='Use the user\'s working schedule.', + ), + } + + def _check_delay(self, cr, uid, action, record, record_dt, context=None): + """ Override the check of delay to try to use a user-related calendar. + If no calendar is found, fallback on the default behavior. """ + if action.trg_date_calendar_id and action.trg_date_range_type == 'day' and action.trg_date_resource_field_id: + user = record[action.trg_date_resource_field_id.name] + if user.employee_ids and user.employee_ids[0].contract_id \ + and user.employee_ids[0].contract_id.working_hours: + calendar = user.employee_ids[0].contract_id.working_hours + start_dt = Datetime.from_string(record_dt) + resource_id = user.employee_ids[0].resource_id.id + action_dt = self.pool['resource.calendar'].schedule_days_get_date( + cr, uid, calendar.id, action.trg_date_range, + day_date=start_dt, compute_leaves=True, resource_id=resource_id, + context=context + ) + return action_dt + return super(base_action_rule, self)._check_delay(cr, uid, action, record, record_dt, context=context)