单击打印调查按钮(人力资源 - 评估 - 面试请求)时,标准输出为 HTML(action_print_survey 方法)。我想将输出更改为 PDF。我找不到关于 Odoo 配置和 Qweb 标准结构的报告,它们作为标准代表的方式(模板是,菜单否,python 包装器否)。我试图纠正一个包装,但它不起作用。有任何想法吗?在此先感谢古斯塔沃
2 回答
报告
每个报告都必须由报告操作声明。
为简单起见,可以使用快捷方式<report>
元素来定义报告,而不必手动设置操作及其周围环境。这<report>
可以采用以下属性:
身份证:
生成记录的外部 id
姓名(必填):
仅在在某种列表中查找报告时用作报告的助记符/描述
型号(强制):
您的报告将涉及的模型
报告类型(强制):
- qweb-pdf 用于 PDF 报告或 qweb-html 用于 HTML
报告名称:
您的报告的名称(将是 PDF 输出的名称)
团体:
允许查看/使用当前报告的组的 Many2many 字段
附件使用:
如果设置为 True,报告将使用附件表达式生成的名称存储为记录的附件;如果您只需要生成一次报告(例如出于法律原因),则可以使用此功能
附件:
定义报告名称的python表达式;记录可作为变量对象访问
例子 :
<report
id="account_invoices"
model="account.invoice"
string="Invoices"
report_type="qweb-pdf"
name="account.report_invoice"
file="account.report_invoice"
attachment_use="True"
attachment="(object.state in ('open','paid')) and
('INV'+(object.number or '').replace('/','')+'.pdf')"
/>
参考链接:https ://www.odoo.com/documentation/8.0/reference/reports.html
@Gustavo这不是html报告,它是响应使用该按钮操作打印调查的请求而呈现的模板。这就是为什么您找不到报告的任何声明,但您可以通过更改模型survey.survey 的方法定义轻松地做到这一点,例如:
def action_print_survey(self, cr, uid, ids, context=None):
context = dict(context or {}, active_ids=ids, active_model=self._name)
return {
'type': 'ir.actions.report.xml',
'report_name': 'module.survey_print',
'context': context,
}
您还需要定义报告 module.survey_print 以使用原始模板。为此,您可以看到如何做到这一点: https ://www.odoo.com/fr_FR/forum/help-1/question/how-to-define-a-custom-methods-functions-to-be-used -in-a-qweb-report-how-to-define-and-use-a-report-parser-92244