diff --git a/report_substitute/README.rst b/report_substitute/README.rst
index 7739e6f2f..20762b835 100644
--- a/report_substitute/README.rst
+++ b/report_substitute/README.rst
@@ -42,7 +42,7 @@ To use this module, you need to:
#. Go to 'Actions' / 'Reports'
-#. Select the desired report you want to substitute
+#. Select the desired report you want to 'Substitution Rules'
#. In the substitutions page add a new line
diff --git a/report_substitute/__init__.py b/report_substitute/__init__.py
index 0650744f6..0ee8b5073 100644
--- a/report_substitute/__init__.py
+++ b/report_substitute/__init__.py
@@ -1 +1,2 @@
from . import models
+from . import tests
diff --git a/report_substitute/__manifest__.py b/report_substitute/__manifest__.py
index db268ee16..f65a6a02b 100644
--- a/report_substitute/__manifest__.py
+++ b/report_substitute/__manifest__.py
@@ -13,7 +13,8 @@
'website': 'https://github.com/acsone/reporting-engine',
'depends': ['base'],
'data': [
- 'security/ir_actions_report_substitution_criteria.xml',
+ 'security/ir_actions_report_substitution_rule.xml',
'views/ir_actions_report.xml',
],
+ 'demo': ['demo/action_report.xml'],
}
diff --git a/report_substitute/demo/action_report.xml b/report_substitute/demo/action_report.xml
new file mode 100644
index 000000000..e3b85ba22
--- /dev/null
+++ b/report_substitute/demo/action_report.xml
@@ -0,0 +1,29 @@
+
+
+
+ Substitution Report
+
+
+
+
+
+
+
+
+
+
+ Substitution Report 2
+
+
+
+
diff --git a/report_substitute/models/__init__.py b/report_substitute/models/__init__.py
index d1a25e84a..27b9defe6 100644
--- a/report_substitute/models/__init__.py
+++ b/report_substitute/models/__init__.py
@@ -1,2 +1,2 @@
from . import ir_actions_report
-from . import ir_actions_report_substitution_criteria
+from . import ir_actions_report_substitution_rule
diff --git a/report_substitute/models/ir_actions_report.py b/report_substitute/models/ir_actions_report.py
index ca2e7ce83..32c318127 100644
--- a/report_substitute/models/ir_actions_report.py
+++ b/report_substitute/models/ir_actions_report.py
@@ -1,7 +1,7 @@
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-from odoo import api, fields, models, _
+from odoo import api, fields, models
from odoo.tools.safe_eval import safe_eval
@@ -9,10 +9,10 @@ class IrActionReport(models.Model):
_inherit = 'ir.actions.report'
- action_report_substitution_criteria_ids = fields.One2many(
- comodel_name="ir.actions.report.substitution.criteria",
+ action_report_substitution_rule_ids = fields.One2many(
+ comodel_name="ir.actions.report.substitution.rule",
inverse_name="action_report_id",
- string="Substitution Criteria",
+ string="Substitution Rules",
)
@api.multi
@@ -20,13 +20,13 @@ class IrActionReport(models.Model):
self.ensure_one()
model = self.env[model]
for (
- substitution_report_criteria
- ) in self.action_report_substitution_criteria_ids:
- domain = safe_eval(substitution_report_criteria.domain)
+ substitution_report_rule
+ ) in self.action_report_substitution_rule_ids:
+ domain = safe_eval(substitution_report_rule.domain)
domain.append(('id', 'in', active_ids))
if set(model.search(domain).ids) == set(active_ids):
return (
- substitution_report_criteria.substitution_action_report_id
+ substitution_report_rule.substitution_action_report_id
)
return False
diff --git a/report_substitute/models/ir_actions_report_substitution_criteria.py b/report_substitute/models/ir_actions_report_substitution_rule.py
similarity index 81%
rename from report_substitute/models/ir_actions_report_substitution_criteria.py
rename to report_substitute/models/ir_actions_report_substitution_rule.py
index 04430aede..4c7250711 100644
--- a/report_substitute/models/ir_actions_report_substitution_criteria.py
+++ b/report_substitute/models/ir_actions_report_substitution_rule.py
@@ -4,10 +4,10 @@
from odoo import fields, models
-class ActionsReportSubstitutionCriteria(models.Model):
+class ActionsReportSubstitutionRule(models.Model):
- _name = 'ir.actions.report.substitution.criteria'
- _description = 'Action Report Substitution Criteria'
+ _name = 'ir.actions.report.substitution.rule'
+ _description = 'Action Report Substitution Rule'
_order = 'sequence ASC'
sequence = fields.Integer(default=10)
diff --git a/report_substitute/readme/USAGE.rst b/report_substitute/readme/USAGE.rst
index b91a68d52..b6f661397 100644
--- a/report_substitute/readme/USAGE.rst
+++ b/report_substitute/readme/USAGE.rst
@@ -2,7 +2,7 @@ To use this module, you need to:
#. Go to 'Actions' / 'Reports'
-#. Select the desired report you want to substitute
+#. Select the desired report you want to 'Substitution Rules'
#. In the substitutions page add a new line
diff --git a/report_substitute/security/ir_actions_report_substitution_criteria.xml b/report_substitute/security/ir_actions_report_substitution_rule.xml
similarity index 76%
rename from report_substitute/security/ir_actions_report_substitution_criteria.xml
rename to report_substitute/security/ir_actions_report_substitution_rule.xml
index b74770b85..e7af09afd 100644
--- a/report_substitute/security/ir_actions_report_substitution_criteria.xml
+++ b/report_substitute/security/ir_actions_report_substitution_rule.xml
@@ -4,18 +4,18 @@
-
- action.report.substitution.criteria user access
-
+
+ action.report.substitution.rule user access
+
-
- action.report.substitution.criteria manager access
-
+
+ action.report.substitution.rule manager access
+
diff --git a/report_substitute/static/description/index.html b/report_substitute/static/description/index.html
index e2994a632..71e4b31b6 100644
--- a/report_substitute/static/description/index.html
+++ b/report_substitute/static/description/index.html
@@ -391,7 +391,7 @@ reports for different companies.
To use this module, you need to:
- Go to ‘Actions’ / ‘Reports’
-- Select the desired report you want to substitute
+- Select the desired report you want to ‘Substitution Rules’
- In the substitutions page add a new line
- Select the substitution report action
- Set a domain to specify when this substitution should happen
diff --git a/report_substitute/tests/__init__.py b/report_substitute/tests/__init__.py
new file mode 100644
index 000000000..8c5a3f248
--- /dev/null
+++ b/report_substitute/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_report_substitute
diff --git a/report_substitute/tests/test_report_substitute.py b/report_substitute/tests/test_report_substitute.py
new file mode 100644
index 000000000..fecb4be6c
--- /dev/null
+++ b/report_substitute/tests/test_report_substitute.py
@@ -0,0 +1,48 @@
+# Copyright 2019 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from odoo.tests.common import TransactionCase
+
+
+class TestReportSubstitute(TransactionCase):
+ def setUp(self):
+ # In the demo file we create a new report for ir.module.module model
+ # with a substation rule from the original report action
+ super(TestReportSubstitute, self).setUp()
+ self.action_report = self.env.ref('base.ir_module_reference_print')
+ self.res_ids = self.env.ref('base.module_base').ids
+ self.substitution_rule = self.env.ref(
+ 'report_substitute.substitution_rule_demo_1'
+ )
+
+ def test_substitution(self):
+ res = str(self.action_report.render(res_ids=self.res_ids)[0])
+ self.assertIn('Substitution Report
', res)
+ # remove the substation rule
+ self.substitution_rule.unlink()
+ res = str(self.action_report.render(res_ids=self.res_ids)[0])
+ self.assertNotIn('Substitution Report
', res)
+
+ def test_recursive_substitution(self):
+ res = str(self.action_report.render(res_ids=self.res_ids)[0])
+ self.assertNotIn('Substitution Report 2
', res)
+ self.env['ir.actions.report.substitution.rule'].create(
+ {
+ 'substitution_action_report_id': self.env.ref(
+ 'report_substitute.substitution_report_print_2'
+ ).id,
+ 'action_report_id': self.env.ref(
+ 'report_substitute.substitution_report_print'
+ ).id,
+ }
+ )
+ res = str(self.action_report.render(res_ids=self.res_ids)[0])
+ self.assertIn('Substitution Report 2
', res)
+
+ def test_substitution_with_domain(self):
+ self.substitution_rule.write({'domain': "[('name', '=', 'base')]"})
+ res = str(self.action_report.render(res_ids=self.res_ids)[0])
+ self.assertIn('Substitution Report
', res)
+ self.substitution_rule.write({'domain': "[('name', '!=', 'base')]"})
+ res = str(self.action_report.render(res_ids=self.res_ids)[0])
+ self.assertNotIn('Substitution Report
', res)
diff --git a/report_substitute/views/ir_actions_report.xml b/report_substitute/views/ir_actions_report.xml
index 6d9f4a45d..bda45ba78 100644
--- a/report_substitute/views/ir_actions_report.xml
+++ b/report_substitute/views/ir_actions_report.xml
@@ -11,8 +11,8 @@
-
-
+
+