<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="view_job_partner_commission_tree" model="ir.ui.view">
        <field name="name">job.partner.commission.list</field>
        <field name="model">job.partner.commission</field>
        <field name="arch" type="xml">
            <list decoration-success="state == 'completed'"
                  decoration-muted="state == 'canceled'"
                  decoration-info="state == 'pending'">
                <field name="create_date" string="Date"/>
                <field name="transaction_type"/>
                <field name="partner_id"/>
                <field name="job_id" optional="show"/>
                <field name="commission_percentage" string="%" optional="hide"/>
                <field name="commission_amount" sum="Total"/>
                <field name="currency_id" column_invisible="True"/>
                <field name="state" widget="badge"
                       decoration-success="state == 'completed'"
                       decoration-muted="state == 'canceled'"
                       decoration-info="state == 'pending'"/>
                <field name="referrer_source" optional="hide"/>
                <field name="is_invoiced" optional="hide"/>
                <field name="is_paid" optional="hide"/>
            </list>
        </field>
    </record>

    <record id="view_job_partner_commission_form" model="ir.ui.view">
        <field name="name">job.partner.commission.form</field>
        <field name="model">job.partner.commission</field>
        <field name="arch" type="xml">
            <form>
                <header>
                    <button name="action_approve_payout"
                            string="Approve Payout"
                            type="object"
                            class="oe_highlight"
                            invisible="transaction_type != 'payout' or state != 'pending'"/>
                    <button name="action_complete"
                            string="Mark Completed"
                            type="object"
                            invisible="transaction_type != 'commission' or state == 'completed'"/>
                    <button name="action_cancel"
                            string="Cancel"
                            type="object"
                            invisible="state == 'canceled'"/>
                    <button name="action_reopen"
                            string="Reopen"
                            type="object"
                            invisible="state == 'pending'"/>
                    <button name="action_generate_bill_invoice"
                            string="Generate Bill"
                            type="object"
                            invisible="is_invoiced or state != 'completed'"/>
                    <field name="state" widget="statusbar"
                           statusbar_visible="pending,completed"/>
                </header>
                <sheet>
                    <div class="oe_title">
                        <h1>
                            <field name="display_name" readonly="1"/>
                        </h1>
                    </div>
                    <group>
                        <group>
                            <field name="transaction_type"/>
                            <field name="partner_id"/>
                            <field name="job_id" invisible="transaction_type == 'payout'"
                                   required="transaction_type == 'commission'"/>
                            <field name="widget_config_id"
                                   invisible="not widget_config_id"
                                   readonly="1"/>
                            <field name="referrer_source"
                                   invisible="transaction_type == 'payout'"/>
                            <field name="currency_id" invisible="1"/>
                        </group>
                        <group>
                            <field name="commission_percentage"
                                   invisible="transaction_type == 'payout'"/>
                            <field name="commission_amount"
                                   readonly="transaction_type == 'commission'"/>
                            <field name="completed_date"
                                   invisible="not completed_date"/>
                            <field name="canceled_date"
                                   invisible="not canceled_date"/>
                            <field name="bill_invoice_id"
                                   invisible="not bill_invoice_id"/>
                            <field name="is_invoiced"/>
                            <field name="is_paid" invisible="not bill_invoice_id"/>
                        </group>
                    </group>
                    <group string="Service Snapshot"
                           invisible="transaction_type == 'payout'">
                        <field name="service_type"/>
                        <field name="service_price"/>
                        <field name="service_title"/>
                    </group>
                    <group string="Affiliate Note"
                           invisible="not affiliate_note">
                        <field name="affiliate_note" nolabel="1"/>
                    </group>
                </sheet>
                <chatter/>
            </form>
        </field>
    </record>

    <record id="view_job_partner_commission_search" model="ir.ui.view">
        <field name="name">job.partner.commission.search</field>
        <field name="model">job.partner.commission</field>
        <field name="arch" type="xml">
            <search>
                <field name="partner_id"/>
                <field name="job_id"/>
                <field name="bill_invoice_id"/>
                <filter name="commissions" string="Commissions"
                        domain="[('transaction_type', '=', 'commission')]"/>
                <filter name="payouts" string="Payouts"
                        domain="[('transaction_type', '=', 'payout')]"/>
                <separator/>
                <filter name="pending" string="Pending"
                        domain="[('state', '=', 'pending')]"/>
                <filter name="completed" string="Completed"
                        domain="[('state', '=', 'completed')]"/>
                <filter name="canceled" string="Canceled"
                        domain="[('state', '=', 'canceled')]"/>
                <separator/>
                <filter name="invoiced" string="Already Invoiced"
                        domain="[('is_invoiced', '=', True)]"/>
                <filter name="paid" string="Already Paid"
                        domain="[('is_paid', '=', True)]"/>
                <group expand="0" string="Group By">
                    <filter name="g_partner" string="Affiliate"
                            context="{'group_by': 'partner_id'}"/>
                    <filter name="g_job" string="Job"
                            context="{'group_by': 'job_id'}"/>
                    <filter name="g_type" string="Type"
                            context="{'group_by': 'transaction_type'}"/>
                    <filter name="g_state" string="Status"
                            context="{'group_by': 'state'}"/>
                </group>
            </search>
        </field>
    </record>

    <record id="action_job_partner_commission" model="ir.actions.act_window">
        <field name="name">Commissions</field>
        <field name="res_model">job.partner.commission</field>
        <field name="view_mode">list,form</field>
        <field name="search_view_id" ref="view_job_partner_commission_search"/>
        <field name="context">{'search_default_commissions': 1}</field>
    </record>

    <record id="action_affiliate_payout_request" model="ir.actions.act_window">
        <field name="name">Payout Requests</field>
        <field name="res_model">job.partner.commission</field>
        <field name="view_mode">list,form</field>
        <field name="domain">[('transaction_type', '=', 'payout')]</field>
        <field name="context">{'default_transaction_type': 'payout'}</field>
        <field name="search_view_id" ref="view_job_partner_commission_search"/>
    </record>
</odoo>
