<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="view_xeno_orr_request_list" model="ir.ui.view">
        <field name="name">xeno.orr.request.list</field>
        <field name="model">xeno.orr.request</field>
        <field name="arch" type="xml">
            <list string="Outside Requests" decoration-success="state == 'supervisor_approve'"
                  decoration-danger="state == 'supervisor_reject'" decoration-muted="state == 'pending'">
                <field name="name"/>
                <field name="employee_id"/>
                <field name="supervisor_id"/>
                <field name="datetime_leaving"/>
                <field name="vehicle_type"/>
                <field name="distance_km" sum="Total km"/>
                <field name="state" widget="badge"/>
                <field name="reimbursement_state" widget="badge" optional="show"/>
            </list>
        </field>
    </record>

    <record id="view_xeno_orr_request_form" model="ir.ui.view">
        <field name="name">xeno.orr.request.form</field>
        <field name="model">xeno.orr.request</field>
        <field name="arch" type="xml">
            <form string="Outside Request">
                <header>
                    <button name="action_supervisor_approve" type="object" string="Approve"
                            class="btn-primary" invisible="state != 'pending' or not can_supervisor_decide"/>
                    <button name="%(xeno_orr.action_xeno_orr_reject_wizard)d" type="action" string="Reject"
                            invisible="state != 'pending' or not can_supervisor_decide"
                            context="{'default_request_id': id}"/>
                    <button name="action_xeno_open_stops" type="object" string="Manage Trip Stops (GPS)"/>
                    <button name="%(xeno_orr.action_xeno_orr_reimbursement_wizard)d" type="action"
                            string="Ask Reimbursement" class="btn-primary"
                            invisible="not can_ask_reimbursement"
                            context="{'default_request_id': id}"/>
                    <field name="state" widget="statusbar" statusbar_visible="pending,supervisor_approve"/>
                </header>
                <sheet>
                    <div class="oe_title">
                        <h1><field name="name" readonly="1"/></h1>
                    </div>
                    <group>
                        <group string="Trip">
                            <field name="employee_id" options="{'no_create': True}"/>
                            <field name="supervisor_id"/>
                            <field name="department_head_id"/>
                            <field name="datetime_leaving"/>
                            <field name="return_to_office"/>
                            <field name="datetime_returning" invisible="not return_to_office" required="return_to_office"/>
                            <field name="no_return_reason" invisible="return_to_office" required="not return_to_office"/>
                        </group>
                        <group string="Vehicle">
                            <field name="vehicle_type"/>
                            <field name="license_plate" invisible="vehicle_type == 'company_car'"
                                   required="vehicle_type != 'company_car'"/>
                            <field name="has_companion"/>
                            <field name="companion_ids" widget="many2many_tags" invisible="not has_companion"/>
                        </group>
                    </group>
                    <notebook>
                        <page string="Places &amp; Purpose">
                            <field name="stop_ids">
                                <list editable="bottom">
                                    <field name="sequence" widget="handle"/>
                                    <field name="place"/>
                                    <field name="purpose"/>
                                    <field name="gps_captured" widget="boolean_toggle" readonly="1"/>
                                    <field name="latitude" optional="hide" readonly="1"/>
                                    <field name="longitude" optional="hide" readonly="1"/>
                                </list>
                            </field>
                            <group>
                                <group string="Distance">
                                    <field name="gps_distance_km" readonly="1"/>
                                    <field name="manual_distance_km"/>
                                    <field name="distance_km" readonly="1"/>
                                </group>
                                <group string="Fallback">
                                    <field name="map_link"/>
                                </group>
                            </group>
                        </page>
                        <page string="Reimbursement" invisible="not reimbursement_ids">
                            <field name="reimbursement_ids" readonly="1">
                                <list decoration-muted="not is_current">
                                    <field name="attempt_number"/>
                                    <field name="is_current" string="Current"/>
                                    <field name="reimbursement_type"/>
                                    <field name="total_amount" sum="Total"/>
                                    <field name="state" widget="badge"/>
                                    <field name="category"/>
                                </list>
                            </field>
                        </page>
                    </notebook>
                    <div invisible="state != 'pending'" class="text-muted" groups="base.group_user">
                        A request must have at least one Place &amp; Purpose stop before it can be
                        approved.
                    </div>
                    <div invisible="not outside_reject_reason" class="alert alert-danger" role="alert">
                        <field name="outside_reject_reason" readonly="1" nolabel="1"/>
                    </div>
                </sheet>
                <chatter/>
            </form>
        </field>
    </record>

    <record id="view_xeno_orr_request_search" model="ir.ui.view">
        <field name="name">xeno.orr.request.search</field>
        <field name="model">xeno.orr.request</field>
        <field name="arch" type="xml">
            <search string="Outside Requests">
                <field name="name"/>
                <field name="employee_id"/>
                <field name="supervisor_id"/>
                <filter name="filter_pending" string="Pending" domain="[('state', '=', 'pending')]"/>
                <filter name="filter_approved" string="Approved" domain="[('state', '=', 'supervisor_approve')]"/>
                <filter name="filter_rejected" string="Rejected" domain="[('state', '=', 'supervisor_reject')]"/>
                <separator/>
                <filter name="filter_leaving" string="Date Leaving" date="datetime_leaving"/>
                <group>
                    <filter name="groupby_employee" string="Employee" context="{'group_by': 'employee_id'}"/>
                    <filter name="groupby_state" string="Status" context="{'group_by': 'state'}"/>
                </group>
            </search>
        </field>
    </record>

    <record id="action_xeno_orr_request" model="ir.actions.act_window">
        <field name="name">Outside Requests</field>
        <field name="res_model">xeno.orr.request</field>
        <field name="view_mode">list,form</field>
        <field name="search_view_id" ref="view_xeno_orr_request_search"/>
        <field name="context">{'search_default_filter_leaving': 1}</field>
    </record>

    <record id="action_xeno_orr_request_supervisor" model="ir.actions.act_window">
        <field name="name">Outside Requests – Supervisor</field>
        <field name="res_model">xeno.orr.request</field>
        <field name="view_mode">list,form</field>
        <field name="search_view_id" ref="view_xeno_orr_request_search"/>
        <field name="domain">[('state', '=', 'pending')]</field>
        <field name="context">{'search_default_filter_pending': 1}</field>
    </record>
</odoo>
