Odoo15:如何在销售订单行添加产品现存量及供应商信息
Odoo销售订单行添加现存量及供应商信息解决方案
一、解决现存量字段类型不匹配报错
报错核心原因是关联字段类型必须与源字段完全一致:product.product.qty_available是浮点(Float)类型,你定义的qty_on_hand用了字符(Char)类型,导致类型冲突。
修正后的现存量字段代码:
from odoo import models, fields class SaleOrderLine(models.Model): _inherit = 'sale.order.line' qty_on_hand = fields.Float(related="product_id.qty_available", string="Quantity On Hand", readonly=True)
二、添加产品供应商信息
根据产品供应商的存储逻辑(一个产品可关联多个供应商,数据存于product.supplierinfo),提供两种实现方式:
方式1:直接关联供应商记录(支持多选查看详情)
supplier_ids = fields.Many2many(related="product_id.seller_ids", string="Suppliers", readonly=True)
方式2:显示供应商名称字符串(适合快速查看)
supplier_names = fields.Char(string="Supplier Names", compute="_compute_supplier_names", readonly=True) def _compute_supplier_names(self): for line in self: if line.product_id and line.product_id.seller_ids: # 拼接所有供应商名称 line.supplier_names = ", ".join([seller.name.name for seller in line.product_id.seller_ids]) else: line.supplier_names = ""
三、视图层配置(可选)
需要在销售订单行的表单/树视图中添加字段,示例XML代码:
<record id="view_sale_order_line_inherit" model="ir.ui.view"> <field name="name">sale.order.line.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_uom_qty" position="after"> <field name="qty_on_hand"/> <!-- 二选一:关联记录或名称字符串 --> <field name="supplier_ids"/> <!-- <field name="supplier_names"/> --> </field> </field> </record>
内容的提问来源于stack exchange,提问作者Zoro
相关产品推荐
相关产品推荐

