如何根据 Odoo 10 中的状态使打印菜单上的某些项目不可见或可见?
How can I make invisible or visible some item on the print menu depending on its state in Odoo 10?
我希望报告仅在状态仅处于 'transfer' 时显示,并使其在除 'transfer' 状态之外的所有状态下不可见。我尝试了属性菜单并将其设置为 false,如 menu = "False" 但它也没有出现在 'transfer' 状态。使报告隐藏的任何属性是否取决于其状态?属性不起作用。有吗?
这是我的代码。
<report
id="handover_info_rep"
header="False"
menu="False"
model="asset.management.handover"
string="Handover issuance receipt"
name="etsi_asset.handover_info_temp"
file="etsi_asset.handover_info_temp"
report_type="qweb-pdf"
paperformat="paperformat_handover"
/>
非常感谢。
你不能以简单的方式做到这一点。您可以使用 menu="False"
或 menu="True"
是否要在打印菜单中无条件显示该项目。
第一种方法
您可以在 render_html
方法中添加一些条件,以验证所选记录是否处于正确状态:
@api.multi
def render_html(self, data=None):
report_obj = self.env['report']
report = report_obj._get_report_from_name('etsi_asset.handover_info_temp')
model_obj = self.env[self.env.context["active_model"]].browse(self.env.context["active_ids"]
# or >> model_obj = self.env['model.name'].browse(self._ids)
for record in model_obj:
if record.state == 'some_state':
raise ValidationError(
_('This record cannot be printed in that state.')
)
docargs = {
'doc_ids': self._ids,
'doc_model': report.model,
'docs': self,
}
return report_obj.render('etsi_asset.handover_info_temp', docargs)
第二种方法
您可以使用 attrs
属性创建按钮。您可以在树视图或表单视图上添加此按钮:
<button name="%(your_module.handover_info_rep)d"
string="Report name"
type="action"
attrs="{'invisible':[('state', '=', 'some_state')]}"/>
我希望报告仅在状态仅处于 'transfer' 时显示,并使其在除 'transfer' 状态之外的所有状态下不可见。我尝试了属性菜单并将其设置为 false,如 menu = "False" 但它也没有出现在 'transfer' 状态。使报告隐藏的任何属性是否取决于其状态?属性不起作用。有吗?
这是我的代码。
<report
id="handover_info_rep"
header="False"
menu="False"
model="asset.management.handover"
string="Handover issuance receipt"
name="etsi_asset.handover_info_temp"
file="etsi_asset.handover_info_temp"
report_type="qweb-pdf"
paperformat="paperformat_handover"
/>
非常感谢。
你不能以简单的方式做到这一点。您可以使用 menu="False"
或 menu="True"
是否要在打印菜单中无条件显示该项目。
第一种方法
您可以在 render_html
方法中添加一些条件,以验证所选记录是否处于正确状态:
@api.multi
def render_html(self, data=None):
report_obj = self.env['report']
report = report_obj._get_report_from_name('etsi_asset.handover_info_temp')
model_obj = self.env[self.env.context["active_model"]].browse(self.env.context["active_ids"]
# or >> model_obj = self.env['model.name'].browse(self._ids)
for record in model_obj:
if record.state == 'some_state':
raise ValidationError(
_('This record cannot be printed in that state.')
)
docargs = {
'doc_ids': self._ids,
'doc_model': report.model,
'docs': self,
}
return report_obj.render('etsi_asset.handover_info_temp', docargs)
第二种方法
您可以使用 attrs
属性创建按钮。您可以在树视图或表单视图上添加此按钮:
<button name="%(your_module.handover_info_rep)d"
string="Report name"
type="action"
attrs="{'invisible':[('state', '=', 'some_state')]}"/>