You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 02:20:47