You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Odoo 10如何仅在库存内部转移/交货单移动行显示自定义字段?

解决Odoo中stock.move自定义字段仅在交货单/内部转移显示的问题

这个错误的根源是Odoo视图的attrs属性无法直接解析嵌套的关联字段路径(比如picking_id.picking_type_code),尤其是在tree视图场景下。我们需要通过添加一个关联字段来绕开这个限制,同时纠正你的显示条件逻辑。

步骤1:给stock.move添加关联字段

首先在你的自定义模块的Python文件中,给stock.move模型添加一个关联字段,将picking_id.picking_type_code映射到当前模型:

from odoo import models, fields

class StockMove(models.Model):
    _inherit = 'stock.move'

    picking_type_code = fields.Selection(related='picking_id.picking_type_code', string='Picking Type Code', store=False)

这里用store=False表示不把这个字段存储到数据库,仅在运行时获取关联值,这样不会增加数据库负担。

步骤2:修正XML视图代码

接下来修改你的XML视图,使用新添加的picking_type_code字段来设置显示条件,同时调整逻辑以匹配你的需求(仅在交货单outgoing和内部转移internal时显示字段):

<record id="view_move_picking_tree_inherit1" model="ir.ui.view">
    <field name="name">stock.move.tree.inherit.finish.item</field>
    <field name="model">stock.move</field>
    <field name="inherit_id" ref="stock.view_move_picking_tree"/>
    <field name="arch" type="xml">
        <field name="product_id" position="after">
            <field name="finish_item" nolabel="1" attrs="{'invisible': [('picking_type_code', 'not in', ['outgoing', 'internal'])]}"/>
        </field>
    </field>
</record>

关键调整说明:

  • 替换了原来的picking_id.picking_type_code为新的关联字段picking_type_code,这样Odoo视图解析器可以正确识别这个字段。
  • 调整了attrs的条件逻辑:原来的条件是当类型为outgoing时隐藏,现在改为当类型不在outgoinginternal列表中时隐藏,正好匹配你需要仅在这两种单据显示字段的需求。
  • 给视图的name字段增加了更具辨识度的后缀,避免和系统视图重名。

额外注意事项

  • 确保你的自定义模块依赖stock模块,在__manifest__.py中添加'depends': ['stock']
  • 升级模块后,记得刷新浏览器缓存,确保新字段和视图生效。

内容的提问来源于stack exchange,提问作者M Tahir Noor

火山引擎 最新活动