<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="view_pos_session_form" model="ir.ui.view">
        <field name="name">pos.session.form.view</field>
        <field name="model">pos.session</field>
        <field name="arch" type="xml">
            <form string="Point of Sale Session" create="0" edit="0">
                <header>
                    <button name="open_frontend_cb" type="object" string="Continue Selling"
                        invisible="rescue or state not in ['opening_control', 'opened']"/>
                    <button id="validate_closing_control" name="action_pos_session_closing_control" type="object" string="Close Session &amp; Post Entries"
                            invisible="(state != 'closing_control' and not rescue or state == 'closed' and rescue) and state != 'closing_control'"
                    class="oe_highlight"/>
                    <field name="state" widget="statusbar" statusbar_visible="opened,closing_control,closed" nolabel="1" />
                </header>
                <sheet>
                    <field name="failed_pickings" invisible="1"/>
                    <field name="rescue" invisible="1"/>
                    <div class="oe_button_box" name="button_box">
                        <button name="action_view_order"
                            class="oe_stat_button"
                            icon="fa-shopping-basket"
                            type="object">
                            <field name="order_count" widget="statinfo" string="Orders"/>
                        </button>
                        <button class="oe_stat_button" name="action_stock_picking" type="object" icon="fa-truck" invisible="picking_count == 0">
                            <field name="picking_count" widget="statinfo" string="Pickings" invisible="failed_pickings"/>
                            <field name="picking_count" widget="statinfo" string="Pickings" class="text-danger" invisible="not failed_pickings"/>
                        </button>
                        <button
                            name="action_show_payments_list"
                            type="object"
                            class="oe_stat_button"
                            icon="fa-dollar"
                            >
                            <field name="total_payments_amount" widget="statinfo" string="Payments"/>
                        </button>
                        <button
                            name="show_journal_items"
                            type="object"
                            class="oe_stat_button"
                            icon="fa-bars"
                            groups="account.group_account_readonly"
                            >
                            <div class="o_stat_info">
                                <span class="o_stat_text">Journal Items</span>
                            </div>
                        </button>
                        <button
                            name="show_cash_register"
                            type="object"
                            class="oe_stat_button"
                            icon="fa-bars"
                            invisible="not cash_control"
                            groups="account.group_account_readonly">
                            <div class="o_stat_info">
                                <span class="o_stat_text">Cash Register</span>
                            </div>
                        </button>
                    </div>
                    <h1 class="oe_title">
                        <field name="name" invisible="name == '/'" class="oe_inline"/>
                    </h1>
                    <group>
                        <field name="cash_control" invisible="1" />
                        <field name="user_id" readonly="state != 'opening_control'"/>
                        <field name="currency_id" invisible="1"/>
                        <field name="config_id" readonly="1"/>
                        <field name="move_id" readonly="1" groups="account.group_account_readonly" />
                        <field name="start_at" invisible="state == 'opening_control'"/>
                        <field name="stop_at" invisible="state != 'closed'"/>
                        <field name="cash_register_balance_start"/>
                        <field name="cash_register_balance_end_real" invisible="state != 'closed'"/>
                    </group>
                </sheet>
                <chatter/>
            </form>
        </field>
    </record>

    <record id="view_pos_session_tree" model="ir.ui.view">
        <field name="name">pos.session.list.view</field>
        <field name="model">pos.session</field>
        <field name="arch" type="xml">
            <list string="Point of Sale Session" create="0" sample="1">
                <field name="name" decoration-bf="1"/>
                <field name="config_id" />
                <field name="user_id" widget="many2one_avatar_user" readonly="state != 'opening_control'"/>
                <field name="start_at" />
                <field name="stop_at" />
                <field name="cash_register_balance_start"/>
                <field name="cash_register_balance_end_real"/>
                <field name="cash_register_balance_end"/>
                <field name="state" widget="badge" decoration-info="state in ('opening_control')" decoration-success="state in ('opened', 'closed')" decoration-warning="state == 'closing_control'" />
            </list>
        </field>
    </record>

    <record model="ir.ui.view" id="view_pos_session_kanban">
        <field name="name">pos.session.kanban</field>
        <field name="model">pos.session</field>
        <field name="arch" type="xml">
            <kanban class="o_kanban_mobile" create="0" sample="1">
                <templates>
                    <t t-name="card">
                        <div class="d-flex">
                            <field name="config_id" class="fw-bolder mb-1"/>
                            <field name="state" widget="label_selection" options="{'classes': {'opening_control': 'default',
                                    'opened': 'success', 'closing_control': 'warning', 'closed': 'warning'}}" class="ms-auto"/>
                        </div>
                        <field name="name" />
                        <footer class="pt-1">
                            <field name="start_at" />
                            <field name="user_id" widget="many2one_avatar_user" readonly="state != 'opening_control'" class="ms-auto"/>
                        </footer>
                    </t>
                </templates>
            </kanban>
        </field>
    </record>

    <record id="view_pos_session_search" model="ir.ui.view">
        <field name="name">pos.session.search.view</field>
        <field name="model">pos.session</field>
        <field name="arch" type="xml">
            <search string="Point of Sale Session">
                <field name="name"/>
                <field name="config_id" />
                <field name="user_id" />
                <filter name="my_sessions" string="My Sessions" domain="[('user_id', '=', uid)]"/>
                <separator/>
                <filter name="open_sessions" string="In Progress" domain="[('state', '=', 'opened')]"/>
                <separator/>
                <filter string="Opening Date" name="start_date" date="start_at" />
                <group>
                    <filter string="Opened By" name="user" domain="[]" context="{'group_by' : 'user_id'}"/>
                    <filter string="Point of Sale" name="point_of_sale" domain="[]" context="{'group_by': 'config_id'}"/>
                    <filter string="Status" name="status" domain="[]" context="{'group_by': 'state'}"/>
                    <filter string="Opening Date" name="opening_date" domain="[]" context="{'group_by': 'start_at'}"/>
                    <filter string="Closing Date" name="closing_date" domain="[]" context="{'group_by': 'stop_at'}"/>
                </group>
            </search>
        </field>
    </record>

    <record id="action_pos_session" model="ir.actions.act_window">
        <field name="name">Sessions</field>
        <field name="res_model">pos.session</field>
        <field name="path">pos-sessions</field>
        <field name="view_mode">list,kanban,form</field>
        <field name="search_view_id" ref="view_pos_session_search" />
        <field name="help" type="html">
            <p class="o_view_nocontent_empty_folder">
                No sessions found
            </p><p>
                A session is a period of time, usually one day, during which you sell through the Point of Sale.
            </p>
        </field>
    </record>

    <record id="mail_activity_old_session" model="mail.activity.type">
        <field name="name">Session open over 7 days</field>
        <field name="summary">note</field>
        <field name="category">default</field>
        <field name="res_model">pos.session</field>
        <field name="icon">fa-tasks</field>
        <field name="delay_count">0</field>
    </record>

    <menuitem
        id="menu_pos_session_all"
        parent="menu_point_of_sale"
        action="action_pos_session"
        sequence="2"
        groups="group_pos_manager"/>
</odoo>
