odoo16 pdf打印全流程

本文介绍了如何在Odoo系统中创建一个名为TxProductionMergeOrder的报告模型,涉及权限设置、自定义纸张模板和Qweb模板的设计,以实现MRP生产订单的打印功能。
摘要由CSDN通过智能技术生成
1. 新建报告模型
from odoo import fields, models, api, _
class TxProductionMergeOrder(models.AbstractModel):  
    _name = 'report.tx_mrp_production.merge_order'  # report.模块名+(Qweb模板)看板视图id
    _description = '制造单打印'
   def _get_report_values(self, docids, data=None):
	docs = self.env['mrp.production'].sudo().browse(docids)
	return {
	    'docs': docs,
	}
2. 修改权限文件
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_05,report.tx.mrp.production.merge.order,model_report_tx_mrp_production_merge_order,base.group_user,1,1,1,1
3. 定义编写纸张模板
<record id="tx_production_merge_order_print" model="report.paperformat">
    <field name="name">自定义标签打印(150*100)</field>
    <field name="default" eval="True"/>
    <!--format 打印的类型有很多种,这里使用自定义打印custom-->
    <field name="format">custom</field>
    <field name="page_height">150</field>
    <field name="page_width">100</field>
    <!--Landscape为横向打印-->
    <field name="orientation">Portrait</field>
    <!--内容的外边距,就是内容距离顶部的距离,如果有表头这个高度需要大于表头的高度。-->
    <field name="margin_top">1</field>
    <field name="margin_bottom">1</field>
    <field name="margin_left">1</field>
    <field name="margin_right">1</field>
    <!--有表头记得设置为True并设置header_spacing,不然打印内容会在表头下方显示不出来-->
    <field name="disable_shrinking" eval="False"/>
</record>
4. 定义打印动作视图
<record id="act_merge_order" model="ir.actions.report">
    <field name="name">制造订单打印</field>
    <field name="model">mrp.production</field>
    <field name="report_type">qweb-pdf</field>
    <field name="report_name">tx_mrp_production.merge_order</field><!--(主模块的文件名)模块名称+ (Qweb模板)看板视图id   -->
    <field name="report_file">tx_mrp_production.merge_order</field><!--(主模块的文件名)模块名称+ (Qweb模板)看板视图id   -->
    <field name="print_report_name">(object.name)</field>
    <field name="binding_model_id"
           ref="mrp.model_mrp_production"/><!--(主模块的文件名)模块名称+ csv里的模型id (model_id)   用于指定打印模板位置放置于那个模块里,如果不写,不显示 -->
    <field name="binding_type">report</field><!--  固定写法  -->
    <field name="paperformat_id" ref="tx_mrp_production.tx_production_merge_order_print"/>
</record>
5. 定义Qweb模板
<template id="merge_order">
    <t t-call="web.html_container">
        <t t-foreach="docs" t-as="doc">
            <t t-call="web.basic_layout">
                <table style="width:100%;">
                    <t t-foreach="doc.move_raw_ids" t-as="move">
                        <tr>
                            <td colspan="10" class="nowrap cell-center"
                                style="text-align: center; border: 1px solid black; vertical-align: middle; height:20px; width: max-content;">
                                <span t-field="move.product_id.name"/>
                            </td>
                            <td colspan="6" class="nowrap cell-center"
                                style="text-align: center; border: 1px solid black; vertical-align: middle; height:20px; width: max-content;">
                                <span t-field="move.product_id.product_tmpl_id.remarks"/>
                            </td>
                            <td class="nowrap cell-center" colspan="10"
                                style="text-align: center; border: 1px solid black; vertical-align: middle; height:20px; width: max-content;">
                                <span t-esc="str('%.3f' % round(move.mrp_product_qty * 1000, 3)) + 'g'"
                                      t-if="move.operation_id.name != '基料投料'"/>
                                <span t-esc="str('%.3f' % round(move.mrp_product_qty, 3)) + 'kg'"
                                      t-if="move.operation_id.name == '基料投料'"/>
                            </td>
                        </tr>
                    </t>
                </table>
                <!--           换页             -->
                <div style="page-break-after: always;"></div>
            </t>
        </t>
    </t>
</template>
备注

        注意在对应init文件引入python文件,清单文件中引入相关文件

        纸张模型如无需求可不添加,打印动作视图那里移除paperformat_id一行

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值