迁移模块从 10 到 12

oma*_*mas 3 python xml odoo odoo-10 odoo-12

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

\n\n
\n

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

\n
\n\n

你能帮我解决这个问题吗:

\n\n
Field \'state\' used in attributes must be present in view but is missing:\n - \'state\' in attrs="{\'invisible\': [\'|\',\'|\',(\'journal_entry_ids\', \'!=\', []), (\'state\', \'=\', \'confirm\'),(\'type\', \'!=\', \'bank\')]}"\n - \'state\' in attrs="{\'invisible\': [\'|\',\'|\',(\'journal_entry_ids\', \'=\', []), (\'state\', \'=\', \'confirm\'),(\'type\', \'!=\', \'bank\')]}"\n\nError context:\nView `account.bank.statement.form.reconciliation`\n[view_id: 1684, xml_id: n/a, model: account.bank.statement, parent_id: 462]\nNone while parsing /home/PycharmProjects/Odoo12/bank_reconciliation/views/account_view.xml:4, near\n<record id="view_bank_statement_form_reconciliation" model="ir.ui.view">\n    <field name="name">account.bank.statement.form.reconciliation</field>\n    <field name="model">account.bank.statement</field>\n    <field name="inherit_id" ref="account.view_bank_statement_form"/>\n    <field name="arch" type="xml">\n        <data>\n            <field name="date" position="after">\n                <field name="type" invisible="1"/>\n            </field>\n            <xpath expr="//button[1]" position="attributes">\n                <attribute name="attrs">{\'invisible\': [(\'type\', \'!=\', \'cash\')]}</attribute>\n            </xpath>\n            <xpath expr="//field[@name=\'line_ids\']/tree/field[@name=\'bank_account_id\']" position="after">\n                <field name="type" invisible="1"/>\n                <button name="select_account_move_line" type="object" icon="fa-registered" attrs="{\'invisible\': [\'|\',\'|\',(\'journal_entry_ids\', \'!=\', []), (\'state\', \'=\', \'confirm\'),(\'type\', \'!=\', \'bank\')]}"/>\n            </xpath>\n            <xpath expr="//field[@name=\'line_ids\']/tree/field[@name=\'bank_account_id\']" position="after">\n                <button name="cancel_reconciliation" type="object" icon="fa-chain-broken" attrs="{\'invisible\': [\'|\',\'|\',(\'journal_entry_ids\', \'=\', []), (\'state\', \'=\', \'confirm\'),(\'type\', \'!=\', \'bank\')]}"/>\n            </xpath>\n            <xpath expr="//field[@name=\'line_ids\']" position="inside">\n                <form string="Statement Line" create="false">\n                    <group col="4">\n                        <field name="statement_id"/>\n                        <field name="date"/>\n                        <field name="name"/>\n                        <field name="ref"/>\n                        <field name="partner_id"/>\n                        <field name="amount"/>\n                        <field name="journal_currency_id" invisible="1"/>\n                        <field name="sequence"/>\n                        <field name="note"/>\n                </group>\n                    <notebook colspan="4">\n                        <page string="Ecritures li\xc3\xa9es">\n                            <field name="move_line_ids">\n                                <tree readonly="1">\n                                    <field name="name"/>\n                                    <field name="account_id"/>\n                                    <field name="move_id"/>\n                                    <field name="date"/>\n                                    <field name="debit" sum="D\xc3\xa9bit"/>\n                                    <field name="credit" sum="Cr\xc3\xa9dit"/>\n                                </tree>\n                            </field>\n                        </page>\n                    </notebook>\n                </form>\n            </xpath>\n        </data>\n    </field>\n</record>\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

这是父视图:

\n\n
<record id="view_bank_statement_form" model="ir.ui.view">\n    <field name="name">account.bank.statement.form</field>\n    <field name="model">account.bank.statement</field>\n    <field name="priority">1</field>\n    <field name="arch" type="xml">\n        <form string="Bank Statement">\n        <header>\n            <field name="all_lines_reconciled" invisible="1" />\n            <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\')]}"/>\n            <button name="check_confirm_bank" string="Validate" type="object" class="oe_highlight" attrs="{\'invisible\':[\'|\',\'|\',(\'all_lines_reconciled\',\'=\',False),(\'line_ids\',\'=\',[]),(\'state\', \'!=\', \'open\')]}"/>\n            <field name="state" widget="statusbar" statusbar_visible="open,confirm"/>\n        </header>\n        ...\n    </field>\n</record>\n
Run Code Online (Sandbox Code Playgroud)\n

for*_*vas 5

当你写这样的东西时:

<xpath expr="//field[@name='line_ids']/tree/field[@name='bank_account_id']" position="after">
    ...
</xpath>
Run Code Online (Sandbox Code Playgroud)

您添加的所有内容都与 x2many 字段的 comodelline_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>
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您重复相同的操作xpath两次,这对于 Odoo 来说很混乱且速度较慢,因此我将其分组为更有意义的一个。