一、
定义纸张
<record id="paperformat_page_80width_40height" model="report.paperformat">
<field name="name">80*40</field>
<field name="default" eval="False"/>
<field name="disable_shrinking" eval="True"/>
<field name="format">custom</field>
<field name="page_height">40</field>
<field name="page_width">80</field>
<field name="orientation">Portrait</field>
<field name="margin_top">2</field>
<field name="margin_bottom">1</field>
<field name="margin_left">2</field>
<field name="margin_right">0</field>
<field name="dpi">96</field>
</record>
定义report_action
<record id="record_id" model="ir.actions.report">
<field name="name">发货标签</field>
<field name="model">模型</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">模块.template_id</field>
<field name="report_file">模块.template_id</field>
<field name="print_report_name">'标签 - %s' % (object.name)</field>
<field name="binding_model_id" ref="model_模型(_)"/>
<field name="binding_type">report</field>
<field name="paperformat_id" ref="纸张_id"/>
</record>
定义模板
<template id="report_deliver_label_pdf">
<t t-call="web.basic_layout">
<t t-foreach="docs" t-as="doc">
<t t-if="doc.label_lines" t-foreach="doc.label_lines" t-as="lline">
<div class="page" style="width:200pt;height:36mm;">
开始你的样式布局
</div>
</t>
</t>
</t>
</template>
此时已经可以显示打印按钮了
二、
实现自定义返回的数据
class A(models.AbstractModel):
_name = 'report.模块名.template_id'
_description = '标签打印'
# 重写渲染的数据
@api.model
def _get_report_values(self, docids, data=None):
docs = self.env['模型b'].browse(docids)
return {
'doc_ids': docids,
'data': data,
'docs': docs,
'_get_produce_date': self._get_produce_date,
}
def _get_produce_date(self, label_id):
if not label_id:
return ''
return self.env['模型c'].search([('name', '=', label_id)]).produce_date or ''
在XML中使用
<td style="width:185pt;vertical-align:middle;padding-left:3pt;font-size:8pt;">DATE:<t t-esc="_get_produce_date(lline.label_code)"/></td>