未知字段' state'在编辑属性时在域中

时间:2017-05-03 19:49:45

标签: openerp odoo-10

使用Odoo 10(从GitHub提交7413b26,分支10.0),安装我从Odoo 8移植的模块。

此模块通过从purchase.order.line删除purchase.order属性,强制点击editable中的一行时显示tree表单,但保存更改时形式Odoo提出:

  

错误:域中的未知字段状态[["州","在",["购买","批准", "完成""取消"]]]

purchase_order_error.xml:

<record id="purchase_order_line_tree" model="ir.ui.view">
    <field name="name">purchase.order.form</field>
    <field name="model">purchase.order</field>
    <field name="priority" eval="33"/>
    <field name="type">form</field>
    <field name="inherit_id" ref="purchase.purchase_order_form"/>
    <field name="arch" type="xml">
        <xpath expr="//notebook/page/field[@name='order_line']/tree" position="attributes">
            <attribute name="editable"/>
        </xpath>
    </field>
</record>

__manifest__.py是:

{'name': "purchase_order_error",'depends': ['base', 'product', 'purchase'],'data': ['purchase_order_error.xml',],'installable':True}

__init__.py只是通常的from . import purchase_order_error

以下是一些更多的观察结果:

  • 字段state可以包含以下选择值:[draft][sent][to approve][purchase][done],{{1 }}; [cancel][draft]未出现在错误中。
  • Odoo GitHub错误跟踪器上的Odoo用户reported same problem,在撰写本文时没有任何解决方案。

有解决方法吗?

2 个答案:

答案 0 :(得分:2)

你应该添加

<record id="purchase_order_line_tree" model="ir.ui.view">
    <field name="name">purchase.order.form</field>
    <field name="model">purchase.order</field>
    <field name="priority" eval="33"/>
    <field name="type">form</field>
    <field name="inherit_id" ref="purchase.purchase_order_form"/>
    <field name="arch" type="xml">
        <xpath expr="//notebook/page/field[@name='order_line']/tree" position="attributes">
            <attribute name="editable">top</attribute>
        </xpath>
    </field>
</record>
  

在您的情况下,它会打开表单视图以允许您创建   记录,因为您没有给出可编辑属性的值。

因此,在采购订单行的表单视图中,可能没有定义字段&#34; state&#34;。根据规则,如果字段在attrs,domains中的任何地方使用,那么它必须在视图上定义,并不重要,你可以将它定义为不可见。

只需在采购订单行表单视图中添加此字段,或按照editable="top"

的第一个解决方案
<field name="state" invisible="1" />

答案 1 :(得分:1)

问题是从表单视图中保存记录时  状态字段未定义。你不会得到这个错误  在树视图中,因为该字段在那里:

 
                <page string="Products">
                        <field name="order_line" attrs="{'readonly': [('state', 'in', ('done', 'cancel'))]}">
                             <tree string="Purchase Order Lines" editable="bottom">
                                <field name="currency_id" invisible="1"/>
                                <field name="state" invisible="1"/>
                                .....
                                ....
                                ..

所以你需要将它添加到嵌入式表格中:

 
    <record id="xxx_purchase_order_form_list_details" model="ir.ui.view">
        <field name="name">xxx_purchase_order_form_list_details</field>
        <field name="model">purchase.order</field>
        <field name="inherit_id" ref="purchase.purchase_order_form"/>
        <field name="arch" type="xml">
            <xpath expr="//field[@name='order_line']/tree" position="attributes">
                <attribute name="editable"/>
            </xpath>

             <xpath expr="//field[@name='order_line']//form//field[@name='product_id']" position="before">
                <field name="state" invisible="1"/>
            </xpath>
        </field>
    </record>