单击“打印调查”按钮(人力资源 - Apraissal - 面试请求)时,标准输出为HTML(action_print_survey方法)。我想将输出更改为PDF。 我找不到Odoo配置,也没有Qweb的标准结构报告他们这样做的方式作为标准站(模板是,菜单号,python包装器没有)。 我试图纠正一个包装但它不起作用。 有任何想法吗? 提前致谢 古斯塔沃
答案 0 :(得分:0)
报告强>
必须通过报告操作声明每个报告。
为简单起见,可以使用快捷方式<report>
元素来定义报告,而不必手动设置操作及其周围环境。 <report>
可以采用以下属性:
id :
生成的记录的外部ID
名称(必填):
在查找某种列表中的一个时,仅用作报告的助记符/描述
型号(必填):
您的报告所针对的模型
report_type(必填):
- 用于PDF报告的qweb-pdf或用于HTML的qweb-html
report_name :
报告的名称(将是PDF输出的名称)
<强>基强>:
允许查看/使用当前报告的组中的Many2many字段
<强> attachment_use 强>:
如果设置为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
答案 1 :(得分:0)
@Gustavo 这不是一个HTML报告,它是一个渲染模板,用于响应使用该按钮操作打印调查的请求。这就是为什么你无法找到报告的任何声明,但你可以通过改变模型调查的方法定义来轻松完成。如:
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