迁移模块从10到12

问题描述 投票:2回答:1

我正在尝试将模块从Odoo 10迁移到12,但它向我显示了这个错误,我不明白为什么:

属性中使用的字段“状态”必须存在于视图中但缺失

你能帮我解决一下这个问题:

Field 'state' used in attributes must be present in view but is missing:
 - 'state' in attrs="{'invisible': ['|','|',('journal_entry_ids', '!=', []), ('state', '=', 'confirm'),('type', '!=', 'bank')]}"
 - 'state' in attrs="{'invisible': ['|','|',('journal_entry_ids', '=', []), ('state', '=', 'confirm'),('type', '!=', 'bank')]}"

Error context:
View `account.bank.statement.form.reconciliation`
[view_id: 1684, xml_id: n/a, model: account.bank.statement, parent_id: 462]
None while parsing /home/PycharmProjects/Odoo12/bank_reconciliation/views/account_view.xml:4, near
<record id="view_bank_statement_form_reconciliation" model="ir.ui.view">
    <field name="name">account.bank.statement.form.reconciliation</field>
    <field name="model">account.bank.statement</field>
    <field name="inherit_id" ref="account.view_bank_statement_form"/>
    <field name="arch" type="xml">
        <data>
            <field name="date" position="after">
                <field name="type" invisible="1"/>
            </field>
            <xpath expr="//button[1]" position="attributes">
                <attribute name="attrs">{'invisible': [('type', '!=', 'cash')]}</attribute>
            </xpath>
            <xpath expr="//field[@name='line_ids']/tree/field[@name='bank_account_id']" position="after">
                <field name="type" invisible="1"/>
                <button name="select_account_move_line" type="object" icon="fa-registered" attrs="{'invisible': ['|','|',('journal_entry_ids', '!=', []), ('state', '=', 'confirm'),('type', '!=', 'bank')]}"/>
            </xpath>
            <xpath expr="//field[@name='line_ids']/tree/field[@name='bank_account_id']" position="after">
                <button name="cancel_reconciliation" type="object" icon="fa-chain-broken" attrs="{'invisible': ['|','|',('journal_entry_ids', '=', []), ('state', '=', 'confirm'),('type', '!=', 'bank')]}"/>
            </xpath>
            <xpath expr="//field[@name='line_ids']" position="inside">
                <form string="Statement Line" create="false">
                    <group col="4">
                        <field name="statement_id"/>
                        <field name="date"/>
                        <field name="name"/>
                        <field name="ref"/>
                        <field name="partner_id"/>
                        <field name="amount"/>
                        <field name="journal_currency_id" invisible="1"/>
                        <field name="sequence"/>
                        <field name="note"/>
                </group>
                    <notebook colspan="4">
                        <page string="Ecritures liées">
                            <field name="move_line_ids">
                                <tree readonly="1">
                                    <field name="name"/>
                                    <field name="account_id"/>
                                    <field name="move_id"/>
                                    <field name="date"/>
                                    <field name="debit" sum="Débit"/>
                                    <field name="credit" sum="Crédit"/>
                                </tree>
                            </field>
                        </page>
                    </notebook>
                </form>
            </xpath>
        </data>
    </field>
</record>

该错误表示父视图中不存在属性“state”,但它存在。

这是父视图:

<record id="view_bank_statement_form" model="ir.ui.view">
    <field name="name">account.bank.statement.form</field>
    <field name="model">account.bank.statement</field>
    <field name="priority">1</field>
    <field name="arch" type="xml">
        <form string="Bank Statement">
        <header>
            <field name="all_lines_reconciled" invisible="1" />
            <button name="%(action_bank_reconcile_bank_statements)d" string="Reconcile" type="action" class="oe_highlight" attrs="{'invisible':['|','|',('all_lines_reconciled','=',True),('line_ids','=',[]),('state', '!=', 'open')]}"/>
            <button name="check_confirm_bank" string="Validate" type="object" class="oe_highlight" attrs="{'invisible':['|','|',('all_lines_reconciled','=',False),('line_ids','=',[]),('state', '!=', 'open')]}"/>
            <field name="state" widget="statusbar" statusbar_visible="open,confirm"/>
        </header>
        ...
    </field>
</record>
python xml odoo odoo-10 odoo-12
1个回答
2
投票

当你写这样的东西:

<xpath expr="//field[@name='line_ids']/tree/field[@name='bank_account_id']" position="after">
    ...
</xpath>

你在那里添加的所有内容都与x2many字段line_ids的模型及其树视图有关。因此,如果添加带有attrs参数的新字段/按钮,则必须检查域左侧的属性是否位于line_ids的树视图内,而不是account.bank.statement的形式。

因此,您必须将字段状态添加到字段line_ids的树视图中:

<xpath expr="//field[@name='line_ids']/tree/field[@name='bank_account_id']" position="after">
    <field name="type" invisible="1"/>
    <field name="state" invisible="1"/>
    <button name="select_account_move_line" type="object" icon="fa-registered" attrs="{'invisible': ['|','|',('journal_entry_ids', '!=', []), ('state', '=', 'confirm'),('type', '!=', 'bank')]}"/>
    <button name="cancel_reconciliation" type="object" icon="fa-chain-broken" attrs="{'invisible': ['|','|',('journal_entry_ids', '=', []), ('state', '=', 'confirm'),('type', '!=', 'bank')]}"/>
</xpath>

顺便说一下,你重复相同的xpath两次,这对于Odoo来说是混乱和慢的,所以我把它分成一个更有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.