+
Report Context
+
+
+

+
This module adds a context variable to reports. A possible use for this
+context could be hiding some fields or many other configuration options.
+
Table of contents
+
+
+
+
To configure this module, you need to:
+
+- Enter Odoo in debug mode.
+- To add a specific context to a report, you should go to Settings ->
+Reporting -> Reporting and look for the report you want to edit on the
+list. You will see that now they contain a new field called Context Value
+, where you will be able to add all the desired context parameters.
+- Go to Settings -> Parameters -> System Parameters. On the system
+parameters list, look for report.default.context, which is a Python
+dictionary variable where you can add a context that will be common for
+all reports.
+
+
It can also be added on the developer side using:
+
+<record id="model_name.report_id" model="ir.actions.report">
+ <field name="context">YOUR CONTEXT HERE</field>
+</record>
+
+
+
+
+
Bugs are tracked on GitHub Issues.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+feedback.
+
Do not contact contributors directly about support or help with technical issues.
+
+
+
+
+
+
+
+
This module is maintained by the OCA.
+

+
OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
This module is part of the OCA/reporting-engine project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
+
+
+
+
+
diff --git a/report_context/tests/__init__.py b/report_context/tests/__init__.py
new file mode 100644
index 000000000..c72cd7abd
--- /dev/null
+++ b/report_context/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_report_context
diff --git a/report_context/tests/test_report_context.py b/report_context/tests/test_report_context.py
new file mode 100644
index 000000000..99bf8781c
--- /dev/null
+++ b/report_context/tests/test_report_context.py
@@ -0,0 +1,60 @@
+# Copyright 2019 Creu Blanca
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
+from odoo.tests.common import TransactionCase
+
+
+class TestReportContext(TransactionCase):
+ def test_report_01(self):
+ company = self.browse_ref("base.main_company")
+ report = self.browse_ref("web.action_report_internalpreview")
+ self.env["ir.config_parameter"].sudo().set_param(
+ "report.default.context", '{"test_parameter": 1}'
+ )
+ report.write({"context": '{"test_parameter": 2}'})
+ action = report.with_context(test_parameter=3).report_action(company)
+ self.assertEqual(
+ 3, action["context"]["report_action"]["context"]["test_parameter"]
+ )
+
+ def test_report_02(self):
+ company = self.browse_ref("base.main_company")
+ report = self.browse_ref("web.action_report_internalpreview")
+ self.env["ir.config_parameter"].sudo().set_param(
+ "report.default.context", '{"test_parameter": 1}'
+ )
+ report.write({"context": '{"test_parameter": 2}'})
+ action = report.report_action(company)
+ self.assertEqual(
+ 2, action["context"]["report_action"]["context"]["test_parameter"]
+ )
+
+ def test_report_03(self):
+ company = self.browse_ref("base.main_company")
+ report = self.browse_ref("web.action_report_internalpreview")
+ self.env["ir.config_parameter"].sudo().set_param(
+ "report.default.context", '{"test_parameter": 1}'
+ )
+ action = report.with_context(test_parameter=3).report_action(company)
+ self.assertEqual(
+ 3, action["context"]["report_action"]["context"]["test_parameter"]
+ )
+
+ def test_report_04(self):
+ company = self.browse_ref("base.main_company")
+ report = self.browse_ref("web.action_report_internalpreview")
+ report.write({"context": '{"test_parameter": 2}'})
+ action = report.report_action(company)
+ self.assertEqual(
+ 2, action["context"]["report_action"]["context"]["test_parameter"]
+ )
+
+ def test_report_05(self):
+ company = self.browse_ref("base.main_company")
+ report = self.browse_ref("web.action_report_internalpreview")
+ self.env["ir.config_parameter"].sudo().set_param(
+ "report.default.context", '{"test_parameter": 1}'
+ )
+ action = report.report_action(company)
+ self.assertEqual(
+ 1, action["context"]["report_action"]["context"]["test_parameter"]
+ )
diff --git a/report_context/views/ir_actions_report.xml b/report_context/views/ir_actions_report.xml
new file mode 100644
index 000000000..8fdc8b720
--- /dev/null
+++ b/report_context/views/ir_actions_report.xml
@@ -0,0 +1,15 @@
+
+
+