gpt4 book ai didi

python - 在 OpenERP v8 中向 BOM 行添加列

转载 作者:太空宇宙 更新时间:2023-11-03 17:57:09 25 4
gpt4 key购买 nike

我正在尝试使用 BOM 行中的自定义列自定义 BOM 表单 View ,基于 https://www.odoo.com/apps/modules/7.0/mrp_bom_product_details/

我的尝试陷入以下状态:

custom_bom_form.py:

from openerp.osv import fields, osv
from openerp.tools.translate import _

class mrp_bom(osv.osv):
_inherit = 'mrp.bom'

_columns ={
'product_qty_available': fields.related('product_id', 'qty_available', type='float', string='Quantity On Hand', readonly=True),
}
_defaults = {
}

mrp_bom()

custom_bom_form.xml:

<?xml version="1.0"?>
<openerp>
<data>

<record id="mrp_bom_form_view_product_details" model="ir.ui.view">
<field name="name">mrp.bom.form.product_details</field>
<field name="model">mrp.bom</field>
<field name="inherit_id" ref="mrp.mrp_bom_form_view"/>
<field name="arch" type="xml">
<xpath expr="//notebook/page[@string='Components']/field/tree[@string='Components']/field[@name='product_qty']" position="after" >
<field name="product_qty_available" />
</xpath>
</field>
</record>

</data>
</openerp>

这会导致安装模块时 Odoo 出错:

ParseError: "ValidateError
Field(s) `arch` failed against a constraint: Invalid view definition

Error details:
Field `product_qty_available` does not exist

Error context:
View `mrp.bom.form.product_details`
[view_id: 1094, xml_id: n/a, model: mrp.bom, parent_id: 675]" while parsing /usr/lib/python2.7/dist-packages/openerp/addons/mrp_bom_product_details/mrp_bom_product_details.xml:5, near
<record id="mrp_bom_form_view_product_details" model="ir.ui.view">
<field name="name">mrp.bom.form.product_details</field>
<field name="model">mrp.bom</field>
<field name="inherit_id" ref="mrp.mrp_bom_form_view"/>
<field name="arch" type="xml">
<xpath expr="//notebook/page[@string='Components']/field/tree[@string='Components']/field[@name='product_qty']" position="after">
<field name="product_qty_available"/>
</xpath>
</field>
</record>

我不明白为什么我不能在那里引用 product_qty_available,它可以在 BOM 表单中的其他位置工作。例如:

        <field name="arch" type="xml">
<field name="product_id" position="after">
<field name="product_qty_available" />
</field>
</field>

有效。

另外,将引用的字段更改为系统知道有效的字段,例如添加另一个 product_qty 列:

        <field name="arch" type="xml">
<xpath expr="//notebook/page[@string='Components']/field/tree[@string='Components']/field[@name='product_qty']" position="after" >
<field name="product_qty" />
</xpath>
</field>

有人可以告诉我我做错了什么吗?我如何在那里引用product_qty_available?笔记本页面有什么特别的吗?

更新

工作py文件:

from openerp.osv import fields, osv
from openerp.tools.translate import _

class mrp_bom_line(osv.osv):
_inherit = 'mrp.bom.line'

_columns ={
'product_qty_available': fields.related('product_id', 'qty_available', type='float', string='Quantity On Hand', readonly=True),
}
_defaults = {
}

mrp_bom_line()

和 xml 文件:

<?xml version="1.0"?>
<openerp>
<data>

<record id="mrp_bom_form_view_product_details" model="ir.ui.view">
<field name="name">mrp.bom.form.product_details</field>
<field name="model">mrp.bom</field>
<field name="inherit_id" ref="mrp.mrp_bom_form_view"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='bom_line_ids']/tree/field[@name='product_qty']" position="after">
<field name="product_qty_available" />
</xpath>
</field>
</record>

</data>
</openerp>

最佳答案

您已添加字段 product_qty_available在模型中mrp.bom并且您正在尝试在字段 bom_line_ids 内部添加该字段- 在 bom_line_ids 的 TreeView 中这是 mbrp.bom.line 中的 one2many ,因此系统尝试查找字段 product_qty_available在那儿mrp.bom.line模型实际上不存在。

我不确定您的确切目标是什么,但是请尝试以下操作

1.模型中添加字段mrp.bom所以你应该尝试 正在关注

<xpath expr="/form/group/group[1]/field[@name='product_id']" position="after">
<field name="product_qty_available"/>
</xpath>

所以这将在 product_id 之后添加字段屏幕顶部的字段,其中显示主信息。

2.在mrp.bom.line中添加字段模型,然后尝试以下操作:

<xpath expr="//field[@name='bom_line_ids']/tree/field[@name='product_qty']"  position="after">
<field name="product_qty_available"/>
</xpath>

关于python - 在 OpenERP v8 中向 BOM 行添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28326095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com