changeset 0e498e3a8cc5 in modules/commission:default
details:
https://hg.tryton.org/modules/commission?cmd=changeset&node=0e498e3a8cc5
description:
Check rule only if _check_access is set and enforce companies rule
issue4080
review343891009
diffstat:
commission.py | 16 ++++++++++++++--
commission.xml | 26 ++++++++++++++++++++++++++
tests/test_commission.py | 5 +++--
3 files changed, 43 insertions(+), 4 deletions(-)
diffs (106 lines):
diff -r 9d6b004223c0 -r 0e498e3a8cc5 commission.py
--- a/commission.py Mon Apr 05 15:15:39 2021 +0200
+++ b/commission.py Sat Apr 10 23:46:23 2021 +0200
@@ -29,6 +29,10 @@
'Commission Agent'
__name__ = 'commission.agent'
party = fields.Many2One('party.party', "Party", required=True,
+ context={
+ 'company': Eval('company', -1),
+ },
+ depends=['company'],
help="The party for whom the commission is calculated.")
type_ = fields.Selection([
('agent', 'Agent Of'),
@@ -161,9 +165,13 @@
depends=['start_date'],
help="The last date that the agent will be considered for selection.")
party = fields.Many2One(
- 'party.party', "Party", ondelete='CASCADE', select=True)
+ 'party.party', "Party", ondelete='CASCADE', select=True,
+ context={
+ 'company': Eval('company', -1),
+ },
+ depends=['company'])
company = fields.Function(fields.Many2One('company.company', "Company"),
- 'on_change_with_company')
+ 'on_change_with_company', searcher='search_company')
employee = fields.Many2One(
'company.employee', "Employee", select=True,
domain=[
@@ -182,6 +190,10 @@
if self.agent:
return self.agent.company.id
+ @classmethod
+ def search_company(cls, name, clause):
+ return [('agent.' + clause[0],) + tuple(clause[1:])]
+
def match(self, pattern):
pool = Pool()
Date = pool.get('ir.date')
diff -r 9d6b004223c0 -r 0e498e3a8cc5 commission.xml
--- a/commission.xml Mon Apr 05 15:15:39 2021 +0200
+++ b/commission.xml Sat Apr 10 23:46:23 2021 +0200
@@ -74,6 +74,19 @@
sequence="20"
id="menu_agent_form"/>
+ <record model="ir.rule.group" id="rule_group_agent_companies">
+ <field name="name">User in companies</field>
+ <field name="model"
+ search="[('model', '=', 'commission.agent')]"/>
+ <field name="global_p" eval="True"/>
+ </record>
+ <record model="ir.rule" id="rule_agent_companies">
+ <field name="domain"
+ eval="[('company', 'in', Eval('companies', []))]"
+ pyson="1"/>
+ <field name="rule_group" ref="rule_group_agent_companies"/>
+ </record>
+
<record model="ir.model.access" id="access_agent">
<field name="model" search="[('model', '=', 'commission.agent')]"/>
<field name="perm_read" eval="True"/>
@@ -134,6 +147,19 @@
<field name="action" ref="act_agent_selections"/>
</record>
+ <record model="ir.rule.group"
id="rule_group_agent_selection_companies">
+ <field name="name">User in companies</field>
+ <field name="model"
+ search="[('model', '=', 'commission.agent.selection')]"/>
+ <field name="global_p" eval="True"/>
+ </record>
+ <record model="ir.rule" id="rule_agent_selection_companies">
+ <field name="domain"
+ eval="[('company', 'in', Eval('companies', []))]"
+ pyson="1"/>
+ <field name="rule_group"
ref="rule_group_agent_selection_companies"/>
+ </record>
+
<record model="ir.model.access" id="access_agent_selection">
<field name="model" search="[('model', '=',
'commission.agent.selection')]"/>
<field name="perm_read" eval="True"/>
diff -r 9d6b004223c0 -r 0e498e3a8cc5 tests/test_commission.py
--- a/tests/test_commission.py Mon Apr 05 15:15:39 2021 +0200
+++ b/tests/test_commission.py Sat Apr 10 23:46:23 2021 +0200
@@ -12,7 +12,7 @@
from trytond.pool import Pool
from trytond.modules.company.tests import (
- create_company, set_company, PartyCompanyCheckEraseMixin)
+ create_company, set_company, PartyCompanyCheckEraseMixin, CompanyTestMixin)
def create_product(name, list_price, categories=None):
@@ -51,7 +51,8 @@
return plan
-class CommissionTestCase(PartyCompanyCheckEraseMixin, ModuleTestCase):
+class CommissionTestCase(
+ PartyCompanyCheckEraseMixin, CompanyTestMixin, ModuleTestCase):
'Test Commission module'
module = 'commission'
extras = ['sale']