<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>

        <record id="account_edi.action_open_edi_documents" model="ir.actions.act_window">
            <field name="name">Electronic invoicing</field>
            <field name="res_model">account.edi.document</field>
            <field name="view_mode">tree</field>
            <field name="domain">[('move_id', '=', active_id), ('error', '!=', False)]</field>
        </record>

        <record id="view_out_invoice_tree_inherit" model="ir.ui.view">
            <field name="name">account.move.tree.inherit</field>
            <field name="model">account.move</field>
            <field name="inherit_id" ref="account.view_out_invoice_tree" />
            <field name="arch" type="xml">
                <field name="state" position="before">
                    <field name="edi_state" optional="hide"/>
                </field>
            </field>
        </record>

        <record id="view_out_credit_note_tree_inherit" model="ir.ui.view">
            <field name="name">account.move.tree.inherit</field>
            <field name="model">account.move</field>
            <field name="inherit_id" ref="account.view_out_credit_note_tree" />
            <field name="arch" type="xml">
                <field name="state" position="before">
                    <field name="edi_state" optional="hide"/>
                </field>
            </field>
        </record>

        <record id="view_account_invoice_filter" model="ir.ui.view">
            <field name="name">account.invoice.select.inherit</field>
            <field name="model">account.move</field>
            <field name="inherit_id" ref="account.view_account_invoice_filter"/>
            <field name="arch" type="xml">
                <xpath expr="//search/group/filter[@name='status']" position="after">
                    <filter string="Electronic invoicing state" name="edi_state" context="{'group_by': 'edi_state'}" />
                </xpath>
            </field>
        </record>

        <record id="view_move_form_inherit" model="ir.ui.view">
            <field name="name">account.move.form.inherit</field>
            <field name="model">account.move</field>
            <field name="inherit_id" ref="account.view_move_form" />
            <field name="arch" type="xml">
                <xpath expr="//button[@name='button_cancel']" position="after">
                    <field name="edi_show_cancel_button" invisible="1"/>
                    <field name="edi_show_abandon_cancel_button" invisible="1"/>
                    <button name="button_cancel_posted_moves"
                            string="Request EDI Cancellation"
                            type="object"
                            groups="account.group_account_invoice"
                            attrs="{'invisible' : [('edi_show_cancel_button', '=', False)]}"/>
                    <button name="button_abandon_cancel_posted_posted_moves"
                            string="Call off EDI Cancellation"
                            type="object"
                            groups="account.group_account_invoice"
                            attrs="{'invisible' : [('edi_show_abandon_cancel_button', '=', False)]}"/>
                </xpath>
                <xpath expr="//header" position="after">
                    <field name="edi_blocking_level" invisible="1" />
                    <field name="edi_error_count" invisible="1" />
                    <div class="alert alert-info" role="alert" style="margin-bottom:0px;"
                        attrs="{'invisible': ['|', ('edi_web_services_to_process', 'in', ['', False]), ('state', '=', 'draft')]}">
                         <div>The invoice will be processed asynchronously by the following E-invoicing service :
                            <field name="edi_web_services_to_process" class="oe_inline"/>
                         </div>
                         <button name="button_process_edi_web_services" type="object" class="oe_link" string="Process now" /> 
                    </div>
                    <div class="alert alert-danger" role="alert" style="margin-bottom:0px;"
                        attrs="{'invisible': ['|', ('edi_error_count', '=', 0), ('edi_blocking_level', '!=', 'error')]}">
                        <div class="o_row">
                            <field name="edi_error_message" />
                            <button name="%(account_edi.action_open_edi_documents)d" string="⇒ See errors" type="action" class="oe_link" attrs="{'invisible': [('edi_error_count', '=', 1)]}" /> 
                            <button name="action_retry_edi_documents_error" type="object" class="oe_link oe_inline" string="Retry" />
                        </div>
                    </div>
                    <div class="alert alert-warning" role="alert" style="margin-bottom:0px;"
                        attrs="{'invisible': ['|', ('edi_error_count', '=', 0), ('edi_blocking_level', '!=', 'warning')]}">
                        <div class="o_row">
                            <field name="edi_error_message" />
                            <button name="%(account_edi.action_open_edi_documents)d" string="⇒ See errors" type="action" class="oe_link" attrs="{'invisible': [('edi_error_count', '=', 1)]}" /> 
                        </div>
                    </div>
                    <div class="alert alert-info" role="alert" style="margin-bottom:0px;"
                        attrs="{'invisible': ['|', ('edi_error_count', '=', 0), ('edi_blocking_level', '!=', 'info')]}">
                        <div class="o_row">
                            <field name="edi_error_message" />
                            <button name="%(account_edi.action_open_edi_documents)d" string="⇒ See errors" type="action" class="oe_link" attrs="{'invisible': [('edi_error_count', '=', 1)]}" /> 
                        </div>
                    </div>
                </xpath>
                <xpath expr="//div[@name='journal_div']" position="after">
                    <field name="edi_state" attrs="{'invisible': ['|', ('edi_state', '=', False), ('state', '=', 'draft')]}"/>
                </xpath>
                <xpath expr="//page[@id='other_tab']" position="after">
                    <page id="edi_documents"
                          string="EDI Documents"
                          groups="base.group_no_one"
                          attrs="{'invisible': [('edi_document_ids', '=', [])]}">
                        <field name="edi_document_ids" options="{'no_open': '1'}">
                            <tree create="false" delete="false" edit="false" decoration-danger="error">
                                <field name="name"/>
                                <field name="edi_format_name"/>
                                <field name="state"/>
                                <field name="error" invisible="1"/>
                                <field name="blocking_level" invisible="1"/>
                                <button name="action_export_xml"
                                        type="object"
                                        class="oe_link oe_inline"
                                        string="Download"
                                        groups="base.group_no_one"
                                        attrs="{'invisible': ['|', ('error', '=', False), ('blocking_level', '=', 'info')]}"/>
                            </tree>
                        </field>
                    </page>
                </xpath>
            </field>
        </record>
    </data>
</odoo>
