Odoo 15 如何为销售订单行添加产品Internal Reference字段
在Odoo销售订单行添加产品Internal Reference字段的实现方法
方法一:开发者模式直接配置视图(非开发人员适用)
- 开启Odoo后台的开发者模式(点击右上角头像,选择「开发者模式」)
- 进入「设置」→「技术」→「用户界面」→「视图」,搜索并打开与
sale.order.line相关的视图(如「销售订单行列表」「销售订单行表单」) - 编辑视图XML代码,在产品字段后插入内部参考字段:
- 树视图示例:在
<field name="product_id"/>后添加<field name="product_id.default_code" string="内部参考"/> - 表单视图示例:在产品字段所在区域插入上述字段标签
- 树视图示例:在
- 保存视图配置,刷新页面即可看到销售订单行显示产品的Internal Reference
方法二:自定义模块开发(开发人员适用)
如果需要将功能封装为可复用模块,按以下步骤操作:
1. 创建模块基础结构
新建模块(如命名为sale_order_line_default_code),包含以下核心文件:
__manifest__.py:模块声明文件models/sale_order_line.py:扩展销售订单行模型views/sale_order_line_view.xml:继承修改视图
2. 编写模型扩展代码
在models/sale_order_line.py中添加关联字段:
from odoo import models, fields class SaleOrderLine(models.Model): _inherit = 'sale.order.line' product_default_code = fields.Char( string="内部参考", related="product_id.default_code", readonly=True )
3. 编写视图继承代码
在views/sale_order_line_view.xml中修改销售订单行的树视图和表单视图:
<odoo> <!-- 继承销售订单行树视图 --> <record id="sale_order_line_tree_inherit" model="ir.ui.view"> <field name="name">sale.order.line.tree.inherit</field> <field name="model">sale.order.line</field> <field name="inherit_id" ref="sale.view_order_line_tree"/> <field name="arch" type="xml"> <field name="product_id" position="after"> <field name="product_default_code" string="内部参考"/> </field> </field> </record> <!-- 继承销售订单行表单视图 --> <record id="sale_order_line_form_inherit" model="ir.ui.view"> <field name="name">sale.order.line.form.inherit</field> <field name="model">sale.order.line</field> <field name="inherit_id" ref="sale.view_order_line_form"/> <field name="arch" type="xml"> <field name="product_id" position="after"> <field name="product_default_code" string="内部参考"/> </field> </field> </record> </odoo>
4. 编写模块声明文件
在__manifest__.py中定义模块信息:
{ 'name': '销售订单行显示产品内部参考', 'version': '1.0', 'depends': ['sale'], 'data': [ 'views/sale_order_line_view.xml', ], 'installable': True, 'auto_install': False, }
5. 安装模块
将模块放入Odoo的addons目录,升级应用列表后安装该模块,刷新页面即可生效。
额外说明
如果需要在销售订单打印单据中也显示Internal Reference,可通过继承销售订单的报表模板(如sale.report_saleorder),在对应位置添加product_default_code字段即可。
内容的提问来源于stack exchange,提问作者Zoro
相关产品推荐
相关产品推荐

