迁移模块从 10 到 12
Migration module from 10 to 12
我正在尝试将一个模块从 Odoo 10 迁移到 12,但它向我显示此错误,我不明白为什么:
Field 'state' used in attributes must be present in view but is missing
你能帮我解决这个问题吗:
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>
当你这样写的时候:
<xpath expr="//field[@name='line_ids']/tree/field[@name='bank_account_id']" position="after">
...
</xpath>
您在此处添加的所有内容都与 x2many 字段 line_ids
及其树视图的协同模型相关。因此,如果您添加一个带有 attrs
参数的新 field/button,则必须检查域左侧的属性是否在 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 来说很混乱而且速度较慢,所以我将它归为一组更有意义。
我正在尝试将一个模块从 Odoo 10 迁移到 12,但它向我显示此错误,我不明白为什么:
Field 'state' used in attributes must be present in view but is missing
你能帮我解决这个问题吗:
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>
当你这样写的时候:
<xpath expr="//field[@name='line_ids']/tree/field[@name='bank_account_id']" position="after">
...
</xpath>
您在此处添加的所有内容都与 x2many 字段 line_ids
及其树视图的协同模型相关。因此,如果您添加一个带有 attrs
参数的新 field/button,则必须检查域左侧的属性是否在 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 来说很混乱而且速度较慢,所以我将它归为一组更有意义。