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']

Reply via email to