mirror of
https://gitlab.com/flectra-community/reporting-engine.git
synced 2024-11-25 07:32:04 +00:00
89 lines
3.0 KiB
Python
89 lines
3.0 KiB
Python
|
# Copyright 2014 Guewen Baconnier (Camptocamp SA)
|
||
|
# Copyright 2013-2014 Nicolas Bessi (Camptocamp SA)
|
||
|
# Copyright 2020 NextERP Romania SRL
|
||
|
# Copyright 2021 Tecnativa - Víctor Martínez
|
||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||
|
from flectra import fields, models
|
||
|
|
||
|
|
||
|
class BaseCommentTemplate(models.Model):
|
||
|
"""Comment templates printed on reports"""
|
||
|
|
||
|
_name = "base.comment.template"
|
||
|
_description = "Comments Template"
|
||
|
_order = "sequence,id"
|
||
|
|
||
|
active = fields.Boolean(default=True)
|
||
|
position = fields.Selection(
|
||
|
string="Position on document",
|
||
|
selection=[("before_lines", "Top"), ("after_lines", "Bottom")],
|
||
|
required=True,
|
||
|
default="before_lines",
|
||
|
help="This field allows to select the position of the comment on reports.",
|
||
|
)
|
||
|
name = fields.Char(
|
||
|
string="Name",
|
||
|
translate=True,
|
||
|
required=True,
|
||
|
help="Name/description of this comment template",
|
||
|
)
|
||
|
text = fields.Html(
|
||
|
string="Template",
|
||
|
translate=True,
|
||
|
required=True,
|
||
|
sanitize=False,
|
||
|
help="This is the text template that will be inserted into reports.",
|
||
|
)
|
||
|
company_id = fields.Many2one(
|
||
|
comodel_name="res.company",
|
||
|
string="Company",
|
||
|
ondelete="cascade",
|
||
|
index=True,
|
||
|
help="If set, the comment template will be available only for the selected "
|
||
|
"company.",
|
||
|
)
|
||
|
partner_ids = fields.Many2many(
|
||
|
comodel_name="res.partner",
|
||
|
relation="base_comment_template_res_partner_rel",
|
||
|
column1="base_comment_template_id",
|
||
|
column2="res_partner_id",
|
||
|
string="Partner",
|
||
|
readonly=True,
|
||
|
help="If set, the comment template will be available only for the selected "
|
||
|
"partner.",
|
||
|
)
|
||
|
model_ids = fields.Many2many(
|
||
|
comodel_name="ir.model",
|
||
|
string="IR Model",
|
||
|
ondelete="cascade",
|
||
|
domain=[
|
||
|
("is_comment_template", "=", True),
|
||
|
("model", "!=", "comment.template"),
|
||
|
],
|
||
|
required=True,
|
||
|
help="This comment template will be available on this models. "
|
||
|
"You can see here only models allowed to set the coment template.",
|
||
|
)
|
||
|
domain = fields.Char(
|
||
|
string="Filter Domain",
|
||
|
required=True,
|
||
|
default="[]",
|
||
|
help="This comment template will be available only for objects "
|
||
|
"that satisfy the condition",
|
||
|
)
|
||
|
sequence = fields.Integer(
|
||
|
required=True, default=10, help="The smaller number = The higher priority"
|
||
|
)
|
||
|
|
||
|
def name_get(self):
|
||
|
"""Redefine the name_get method to show the template name with the position."""
|
||
|
res = []
|
||
|
for item in self:
|
||
|
name = "{} ({})".format(
|
||
|
item.name, dict(self._fields["position"].selection).get(item.position)
|
||
|
)
|
||
|
if self.env.context.get("comment_template_model_display"):
|
||
|
name += " (%s)" % ", ".join(item.model_ids.mapped("name"))
|
||
|
res.append((item.id, name))
|
||
|
return res
|