diff --git a/report_qweb_signer/models/ir_actions_report.py b/report_qweb_signer/models/ir_actions_report.py
index 69566b38e..578e9943b 100644
--- a/report_qweb_signer/models/ir_actions_report.py
+++ b/report_qweb_signer/models/ir_actions_report.py
@@ -45,7 +45,13 @@ class IrActionsReport(models.Model):
if "company_id" in obj:
company_id = obj.company_id.id or company_id
certificates = self.env["report.certificate"].search(
- [("company_id", "=", company_id), ("model_id", "=", self.model)]
+ [
+ ("company_id", "=", company_id),
+ ("model_id", "=", self.model),
+ "|",
+ ("action_report_ids", "=", False),
+ ("action_report_ids", "in", self.id),
+ ]
)
if not certificates:
return False
diff --git a/report_qweb_signer/models/report_certificate.py b/report_qweb_signer/models/report_certificate.py
index 4a1e62512..52966b014 100644
--- a/report_qweb_signer/models/report_certificate.py
+++ b/report_qweb_signer/models/report_certificate.py
@@ -36,6 +36,16 @@ class ReportCertificate(models.Model):
domain = fields.Char(
string="Domain", help="Domain for filtering if sign or not the document",
)
+ action_report_ids = fields.Many2many(
+ string="Allowed reports",
+ help="Reports to sign for the selected model."
+ "No report selected means all reports are allowed.",
+ comodel_name="ir.actions.report",
+ relation="report_certificate_action_report",
+ column1="report_certificate_id",
+ column2="action_report_id",
+ domain="[('model_id', '=', model_id)]",
+ )
allow_only_one = fields.Boolean(
string="Allow only one document",
default=True,
diff --git a/report_qweb_signer/views/report_certificate_view.xml b/report_qweb_signer/views/report_certificate_view.xml
index 812157edd..bae899f22 100644
--- a/report_qweb_signer/views/report_certificate_view.xml
+++ b/report_qweb_signer/views/report_certificate_view.xml
@@ -33,6 +33,7 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
widget="selection"
groups="base.group_multi_company"
/>
+