<?xml version="1.0" encoding="utf-8" ?>
<odoo>
    <record id="hr_payslip_view_tree" model="ir.ui.view">
        <field name="name">hr.payslip.tree</field>
        <field name="model">hr.payslip</field>
        <field name="arch" type="xml">
            <tree decoration-muted="state == 'cancel'" multi_edit="1" sample="1">
                <field name="number" readonly="1" decoration-bf="1" />
                <field name="employee_id" readonly="1" />
                <field name="name" />
                <field name="date_from" optional="show" decoration-bf="1" />
                <field name="date_to" optional="show" decoration-bf="1" />
                <field name="activity_ids" widget="list_activity" optional="show" />
                <field
                    name="state"
                    decoration-success="state == 'done'"
                    decoration-warning="state == 'verify'"
                    decoration-info="state == 'draft'"
                    decoration-danger="state == 'cancel'"
                    widget="badge"
                    optional="show"
                />
                <field
                    name="company_id"
                    groups="base.group_multi_company"
                    options="{'no_create': True}"
                />
                <field name="payslip_run_id" invisible="1" />
                <field name="message_needaction" invisible="1" />
            </tree>
        </field>
    </record>
    <record id="hr_payslip_view_kanban" model="ir.ui.view">
        <field name="name">hr.payslip.kanban</field>
        <field name="model">hr.payslip</field>
        <field name="arch" type="xml">
            <kanban class="o_kanban_mobile">
                <templates>
                    <t t-name="kanban-box">
                        <div t-attf-class="oe_kanban_content oe_kanban_global_click">
                            <div class="row">
                                <div class="col-6">
                                    <strong>
                                        <field name="employee_id" />
                                    </strong>
                                </div>
                                <div class="col-6">
                                    <span class="float-right badge badge-secondary">
                                        <field name="state" />
                                    </span>
                                </div>
                                <div class="col-12">
                                    <span>
                                        <field name="date_from" />
                                        -
                                        <field name="date_to" />
                                    </span>
                                </div>
                                <div class="col-12">
                                    <span>
                                        <field name="name" />
                                    </span>
                                </div>
                            </div>
                        </div>
                    </t>
                </templates>
            </kanban>
        </field>
    </record>
    <record id="hr_payslip_view_form" model="ir.ui.view">
        <field name="name">hr.payslip.form</field>
        <field name="model">hr.payslip</field>
        <field name="arch" type="xml">
            <form string="Payslip">
                <header>
                    <field name="allow_cancel_payslips" invisible="1" />
                    <button
                        string="Confirm"
                        name="action_payslip_done"
                        type="object"
                        states="verify"
                        class="oe_highlight"
                    />
                    <button
                        string="Refund"
                        name="refund_sheet"
                        states="done"
                        type='object'
                    />
                    <button
                        string="Compute Sheet"
                        name="compute_sheet"
                        type="object"
                        states="draft,verify"
                        class="oe_highlight"
                    />
                    <button
                        string="Set to Draft"
                        name="action_payslip_draft"
                        type="object"
                        states="cancel,verify"
                    />
                    <button
                        string="Cancel Payslip"
                        name="action_payslip_cancel"
                        type="object"
                        states="draft,verify"
                    />
                    <button
                        string="Cancel Payslip"
                        name="action_payslip_cancel"
                        type="object"
                        attrs="{'invisible': ['|', ('state', '!=', 'done'), ('allow_cancel_payslips', '=', False)]}"
                    />
                    <button
                        string="Refetch Payslip Data"
                        name="onchange_employee"
                        type="object"
                        states="draft,verify"
                    />
                    <field
                        name="state"
                        widget="statusbar"
                        statusbar_visible="draft,verify,done,cancel"
                    />
                </header>
                <sheet>
                    <div class="oe_button_box" name="button_box">
                        <button
                            name="%(hr_payslip_line_action_computation_details)d"
                            class="oe_stat_button"
                            icon="fa-money"
                            type="action"
                        >
                            <field
                                name="payslip_count"
                                widget="statinfo"
                                string="Payslip Lines"
                                help="Payslip Computation Details"
                            />
                        </button>
                    </div>
                    <div class="oe_title">
                        <label for="employee_id" class="oe_edit_only" />
                        <h1>
                            <field name="employee_id" placeholder="Employee" />
                        </h1>
                    </div>
                    <group col="4">
                        <label for="date_from" string="Period" />
                        <div>
                            <field
                                name="date_from"
                                widget="daterange"
                                class="oe_inline"
                                options="{'related_end_date': 'date_to'}"
                            />
                            -
                            <field
                                name="date_to"
                                widget="daterange"
                                class="oe_inline"
                                options="{'related_start_date': 'date_from'}"
                            />
                        </div>
                        <field
                            name="contract_id"
                            domain="[('employee_id','=',employee_id),('date_start','&lt;=',date_to),'|',('date_end','&gt;=',date_from),('date_end','=',False)]"
                            context="{'default_employee_id': employee_id}"
                        />
                        <field name="number" />
                        <field
                            name="struct_id"
                            attrs="{'required':[('contract_id','!=',False)]}"
                        />
                        <field name="name" />
                        <field name="credit_note" />
                        <field
                            name="refunded_id"
                            attrs="{'invisible': [('refunded_id', '=', False)]}"
                        />
                        <field
                            name="compute_date"
                            attrs="{'invisible':[('compute_date','==',False)]}"
                        />
                    </group>
                    <notebook>
                        <page name="input" string="Worked Days &amp; Inputs">
                            <separator name="worked" string="Worked Days" />
                            <field name="worked_days_line_ids">
                                <tree editable="bottom">
                                    <field name="name" />
                                    <field name="code" />
                                    <field name="number_of_days" string="Days" />
                                    <field name="number_of_hours" string="Hours" />
                                    <field
                                        name="contract_id"
                                        domain="[('employee_id','=',parent.employee_id),('date_start','&lt;=',parent.date_to),'|',('date_end','&gt;=',parent.date_from),('date_end','=',False)]"
                                        context="{'default_employee_id': parent.employee_id}"
                                    />
                                    <field name="sequence" invisible="True" />
                                </tree>
                                <form string="Worked Day">
                                    <group col="4">
                                        <field name="name" />
                                        <field name="code" />
                                        <field name="sequence" />
                                        <field name="number_of_days" />
                                        <field name="number_of_hours" />
                                        <field name="contract_id" />
                                    </group>
                                </form>
                            </field>
                            <separator name="other" string="Other Inputs" />
                            <field name="input_line_ids" colspan="4" nolabel="1">
                                <tree editable="bottom">
                                    <field name="name" />
                                    <field name="code" />
                                    <field name="amount_qty" />
                                    <field name="amount" />
                                    <field
                                        name="contract_id"
                                        domain="[('employee_id','=',parent.employee_id),('date_start','&lt;=',parent.date_to),'|',('date_end','&gt;=',parent.date_from),('date_end','=',False)]"
                                        context="{'default_employee_id': parent.employee_id}"
                                    />
                                    <field name="sequence" invisible="True" />
                                </tree>
                                <form string="Payslip Line">
                                    <group col="4">
                                        <field name="name" />
                                        <field name="code" />
                                        <field name="sequence" />
                                        <field name="amount" />
                                        <field name="contract_id" />
                                    </group>
                                </form>
                            </field>
                        </page>
                        <page name="computation" string="Salary Computation">
                            <group name="controls">
                                <group>
                                    <field
                                        name="hide_child_lines"
                                        widget="boolean_toggle"
                                    />
                                    <field
                                        name="hide_invisible_lines"
                                        widget="boolean_toggle"
                                    />
                                </group>
                            </group>
                            <field
                                name="dynamic_filtered_payslip_lines"
                                colspan="4"
                                nolabel="1"
                            >
                                <tree
                                    decoration-info="total == 0 and appears_on_payslip == True"
                                    decoration-bf="parent_rule_id == False"
                                    decoration-it="parent_rule_id != False"
                                    decoration-muted="parent_rule_id != False or appears_on_payslip != True"
                                    create="false"
                                    delete="false"
                                >
                                    <field name="appears_on_payslip" invisible="1" />
                                    <field name="sequence" optional="hide" />
                                    <field name="parent_line_id" invisible="1" />
                                    <field name="parent_rule_id" invisible="1" />
                                    <field name="code" readonly="1" />
                                    <field
                                        name="salary_rule_id"
                                        readonly="1"
                                        invisible="1"
                                    />
                                    <field name="category_id" readonly="1" />
                                    <field name="name" />
                                    <field name="quantity" readonly="1" />
                                    <field name="rate" readonly="1" />
                                    <field name="amount" readonly="1" />
                                    <field
                                        name="total"
                                        decoration-danger="0 > total and parent_rule_id == False"
                                        decoration-success="total > 0 and parent_rule_id == False"
                                        readonly="1"
                                    />
                                </tree>
                            </field>
                        </page>
                        <page name="accounting" string="Accounting Information">
                            <group>
                                <group string="Miscellaneous">
                                    <field
                                        name="company_id"
                                        groups="base.group_multi_company"
                                    />
                                    <field
                                        name="payslip_run_id"
                                        domain="[('state','=','draft')]"
                                    />
                                </group>
                                <group name="accounting" string="Accounting">
                                    <field name="paid" readonly="1" />
                                </group>
                            </group>
                            <div colspan="4">
                                <field
                                    name="note"
                                    placeholder="Add an internal note..."
                                />
                            </div>
                        </page>
                    </notebook>
                </sheet>
                <div class="oe_chatter">
                    <field name="message_follower_ids" />
                    <field name="activity_ids" />
                    <field name="message_ids" />
                </div>
            </form>
        </field>
    </record>
    <record id="hr_payslip_view_search" model="ir.ui.view">
        <field name="name">hr.payslip.select</field>
        <field name="model">hr.payslip</field>
        <field name="arch" type="xml">
            <search string="Search Payslips">
                <field name="employee_id" />
                <field
                    name="name"
                    string="Payslips"
                    filter_domain="['|',('name','ilike',self),('number','ilike',self)]"
                />
                <field name="date_from" />
                <field name="contract_id" />
                <field name="payslip_run_id" />
                <filter
                    string="Draft"
                    name="draft"
                    domain="[('state', '=', 'draft')]"
                />
                <filter
                    string="Pending Review"
                    name="verify"
                    domain="[('state', '=', 'verify')]"
                />
                <filter
                    string="Done"
                    name="done"
                    domain="[('state','=','done')]"
                    help="Done Slip"
                />
                <separator />
                <filter
                    string="Date"
                    name="date_filter"
                    date="date_to"
                    default_period="last_month"
                />
                <separator />
                <filter
                    string="Refunded"
                    name="credit_note"
                    domain="[('credit_note', '=', True)]"
                />
                <separator />
                <group expand="0" string="Group By">
                    <filter
                        string="Employees"
                        name="employee_id"
                        context="{'group_by':'employee_id'}"
                    />
                    <filter
                        string="PaySlip Batch"
                        name="payslip_run_id"
                        context="{'group_by':'payslip_run_id'}"
                    />
                    <filter
                        string="Companies"
                        name="company_id"
                        groups="base.group_multi_company"
                        context="{'group_by':'company_id'}"
                    />
                    <filter
                        string="States"
                        name="state"
                        context="{'group_by':'state'}"
                    />
                </group>
            </search>
        </field>
    </record>
    <record id="hr_payslip_action" model="ir.actions.act_window">
        <field name="name">Employee Payslips</field>
        <field name="res_model">hr.payslip</field>
        <field name="view_mode">tree,kanban,form</field>
        <field name="search_view_id" ref="hr_payslip_view_search" />
    </record>
    <record id="hr_payslip_action_employee" model="ir.actions.act_window">
        <field name="res_model">hr.payslip</field>
        <field name="name">Payslips</field>
        <field name="view_mode">tree,form</field>
        <field name="context">
            {
                'search_default_employee_id': [active_id],
                'default_employee_id': active_id,
            }
        </field>
    </record>
    <menuitem
        id="hr_payslip_menu"
        action="hr_payslip_action"
        parent="payroll_menu_root"
        groups="payroll.group_payroll_user"
    />
</odoo>
