<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="l10n_fr_pdp_reports_view_flow_list" model="ir.ui.view">
        <field name="name">l10n.fr.pdp.reports.flow.list.reporting</field>
        <field name="model">l10n.fr.pdp.reports.flow</field>
        <field name="arch" type="xml">
            <list string="Flows 10" create="0" default_order="period_start">
                <field name="name" />
                <field name="period_start" string="Start date"/>
                <field name="period_end" string="End date"/>
                <field name="due_period_start" optional="hide"/>
                <field name="due_period_end" optional="hide"/>
                <field name="state" string="Status" widget="badge"
                       decoration-info="state == 'ready'"
                       decoration-muted="state in ('pending', 'sent')"
                       decoration-success="state == 'completed'"
                       decoration-danger="state == 'error'"/>
                <field name="report_type" string="Type"/>
                <field name="company_id" string="Company" optional="hide"/>
                <field name="transmission_type" string="Transmission type" widget="badge" optional="hide"
                       decoration-info="transmission_type == 'initial'"
                       decoration-warning="transmission_type == 'rectificative'"/>
            </list>
        </field>
    </record>

    <record id="l10n_fr_pdp_reports_view_flow_form" model="ir.ui.view">
        <field name="name">l10n.fr.pdp.reports.flow.form.reporting</field>
        <field name="model">l10n.fr.pdp.reports.flow</field>
        <field name="arch" type="xml">
            <form string="E-Reporting" create="0">
                <header>
                    <field name="state" widget="statusbar"
                           statusbar_visible="pending,ready,error,sent,completed"/>
                    <button name="action_build_payload_manual"
                            type="object"
                            class="btn-secondary"
                            string="Build Payload"
                            invisible="state not in ['pending', 'error']"/>
                    <button name="action_open_send_wizard"
                            type="object"
                            class="btn-primary"
                            string="Send"
                            invisible="state not in ['ready', 'pending', 'error']"/>
                </header>
                <sheet>
                    <widget name="web_ribbon" title="Sent" bg_color="text-bg-success"
                            invisible="state not in ['sent', 'completed']"/>
                    <widget name="web_ribbon" title="Error" bg_color="text-bg-danger"
                            invisible="state != 'error' or not transport_status or transport_status not in ['ERROR', 'REFUSED']"/>
                    <div class="oe_button_box" name="button_box">
                        <button type="object"
                                name="action_view_moves"
                                class="oe_stat_button"
                                icon="fa-file-text-o"
                                invisible="not move_ids">
                            <field name="move_ids" string="Invoices" widget="statinfo" invisible="report_type == 'payment'"/>
                            <field name="move_ids" string="Payments" widget="statinfo" invisible="report_type == 'transaction'"/>
                        </button>
                        <button type="object"
                                name="action_view_initial"
                                class="oe_stat_button"
                                icon="fa-file-text-o"
                                invisible="not initial_flow_id">
                            <div>Initial</div>
                        </button>
                    </div>
                    <div class="alert alert-warning" role="alert" invisible="not error_moves_count or period_status == 'open'">
                        <span>
                            Some invoices were excluded because of validation errors.
                            <button type="object" name="action_view_error_moves" class="btn-link">View invoices</button>
                        </span>
                    </div>
                    <group>
                        <group>
                            <field name="name" readonly="1"/>
                            <field name="report_type" string="Type" readonly="1"/>
                            <field name="state" string="Status" readonly="1"/>
                            <field name="transmission_type" string="Transmission type"
                                   help="Type of transmission per Flux 10 v1.2: IN (Initial) or RE (Rectificative). No references to previous flows in v1.2."/>
                        </group>
                        <group>
                            <field name="period_start" string="Start date" readonly="1"/>
                            <field name="period_end" string="End date" readonly="1"/>
                            <field name="period_status" string="Period status" readonly="1" widget="badge"
                                   decoration-info="period_status == 'open'"
                                   decoration-warning="period_status == 'grace'"
                                   decoration-danger="period_status == 'closed'"/>
                            <label string="Due Period Start" for="due_period_start" invisible="due_period_start == due_period_end"/>
                            <label string="Due Date" for="due_period_start" invisible="due_period_start != due_period_end"/>
                            <field name="due_period_start" readonly="1" nolabel="1"/>
                            <field name="due_period_end" readonly="1" invisible="due_period_start == due_period_end"/>
                            
                        </group>
                    </group>
                </sheet>
                <chatter/>
            </form>
        </field>
    </record>

    <record id="l10n_fr_pdp_reports_view_flow_search" model="ir.ui.view">
        <field name="name">l10n.fr.pdp.reports.flow.search.reporting</field>
        <field name="model">l10n.fr.pdp.reports.flow</field>
        <field name="arch" type="xml">
            <search string="Search EDI exports">
                <field name="name"/>
                <filter name="filter_state_pending" string="Pending" domain="[('state', '=', 'pending')]"/>
                <filter name="filter_state_ready" string="Ready" domain="[('state', '=', 'ready')]"/>
                <filter name="filter_state_sent" string="Sent" domain="[('state', 'in', ('sent', 'completed'))]"/>
                <filter name="filter_state_error" string="Error" domain="[('state', '=', 'error')]"/>
                <separator/>
                <filter name="filter_kind_transaction" string="Transactions" domain="[('report_type', '=', 'transaction')]"/>
                <filter name="filter_kind_payment" string="Payments" domain="[('report_type', '=', 'payment')]"/>
                <separator/>
                <filter name="filter_transmission_in" string="Initial" domain="[('initial_flow_id', '=', None)]"/>
                <filter name="filter_transmission_re" string="Rectificative" domain="[('initial_flow_id', '!=', None)]"/>
            </search>
        </field>
    </record>

    <record id="l10n_fr_pdp_reports_action_flows" model="ir.actions.act_window">
        <field name="name">E-Reporting</field>
        <field name="res_model">l10n.fr.pdp.reports.flow</field>
        <field name="view_mode">list,form</field>
        <field name="search_view_id" ref="l10n_fr_pdp_reports_view_flow_search"/>
    </record>

    <!-- Bulk actions -->
    <record id="l10n_fr_pdp_reports_action_build_multi" model="ir.actions.server">
        <field name="name">Build Payload</field>
        <field name="model_id" ref="model_l10n_fr_pdp_reports_flow"/>
        <field name="binding_model_id" ref="model_l10n_fr_pdp_reports_flow"/>
        <field name="binding_type">action</field>
        <field name="state">code</field>
        <field name="code">records.action_build_payload_manual(); action = {'type': 'ir.actions.act_window_close'}</field>
    </record>

    <record id="l10n_fr_pdp_reports_action_error_moves" model="ir.actions.act_window">
        <field name="name">E-Reporting Attention Needed</field>
        <field name="res_model">account.move</field>
        <field name="view_mode">list,form</field>
        <field name="domain">[('l10n_fr_pdp_status', '=', 'error')]</field>
        <field name="context">{'search_default_group_by_move_type': 1, 'group_by': ['l10n_fr_pdp_last_flow_id']}</field>
    </record>

    <!-- Menu structure: Reporting > France > E-reporting -->
    <!-- Use the France menu from l10n_fr_account (access restrictions removed via inherit) -->
    <menuitem id="l10n_fr_pdp_reports_menu_flows"
              name="E-reporting"
              parent="l10n_fr_account.account_reports_fr_statements_menu"
              action="l10n_fr_pdp_reports_action_flows"
              sequence="10"/>
</odoo>
