在 OpenERP v8 中添加列到 BOM 行
Add column to BOM lines in OpenERP v8
我正在尝试使用 BOM 行中的自定义列自定义 BOM 表单视图,基于 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>
您已在模型 mrp.bom
中添加了字段 product_qty_available
,并且您正在尝试在字段 bom_line_ids
的内部添加字段 - 在 [=14] 的树视图中=] 是 mbrp.bom.line
的 one2many,因此系统会尝试在 mrp.bom.line
模型中找到实际上不存在的字段 product_qty_available
。
我不确定,您的确切目标是什么,但是请尝试以下操作
1.The 字段已添加到模型 mrp.bom
中,因此您应该尝试
正在关注
<xpath expr="/form/group/group[1]/field[@name='product_id']" position="after">
<field name="product_qty_available"/>
</xpath>
因此这将在显示主信息的屏幕顶部 product_id
字段后添加字段。
2.Add mrp.bom.line
模型中的字段,然后尝试以下操作:
<xpath expr="//field[@name='bom_line_ids']/tree/field[@name='product_qty']" position="after">
<field name="product_qty_available"/>
</xpath>
我正在尝试使用 BOM 行中的自定义列自定义 BOM 表单视图,基于 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>
您已在模型 mrp.bom
中添加了字段 product_qty_available
,并且您正在尝试在字段 bom_line_ids
的内部添加字段 - 在 [=14] 的树视图中=] 是 mbrp.bom.line
的 one2many,因此系统会尝试在 mrp.bom.line
模型中找到实际上不存在的字段 product_qty_available
。
我不确定,您的确切目标是什么,但是请尝试以下操作
1.The 字段已添加到模型 mrp.bom
中,因此您应该尝试
正在关注
<xpath expr="/form/group/group[1]/field[@name='product_id']" position="after">
<field name="product_qty_available"/>
</xpath>
因此这将在显示主信息的屏幕顶部 product_id
字段后添加字段。
2.Add mrp.bom.line
模型中的字段,然后尝试以下操作:
<xpath expr="//field[@name='bom_line_ids']/tree/field[@name='product_qty']" position="after">
<field name="product_qty_available"/>
</xpath>