<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data noupdate="0">

        <record id="module_category_helpdesk" model="ir.module.category">
            <field name="name">Helpdesk</field>
            <field name="description">Silicon Overdrive Helpdesk access groups</field>
            <field name="sequence">25</field>
        </record>

        <record id="group_helpdesk_user" model="res.groups">
            <field name="name">User</field>
            <field name="category_id" ref="module_category_helpdesk"/>
            <field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
        </record>

        <record id="group_helpdesk_agent" model="res.groups">
            <field name="name">Agent</field>
            <field name="category_id" ref="module_category_helpdesk"/>
            <field name="implied_ids" eval="[(4, ref('group_helpdesk_user'))]"/>
        </record>

        <record id="group_helpdesk_manager" model="res.groups">
            <field name="name">Manager</field>
            <field name="category_id" ref="module_category_helpdesk"/>
            <field name="implied_ids" eval="[(4, ref('group_helpdesk_agent'))]"/>
            <field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
        </record>

        <!-- Agents see tickets for their teams -->
        <record id="helpdesk_ticket_agent_rule" model="ir.rule">
            <field name="name">Helpdesk Ticket: agent team access</field>
            <field name="model_id" ref="model_so_helpdesk_ticket"/>
            <field name="domain_force">[
                '|',
                ('team_id.member_ids', 'in', [user.id]),
                ('team_id.leader_id', '=', user.id)
            ]</field>
            <field name="groups" eval="[(4, ref('group_helpdesk_agent'))]"/>
        </record>

        <!-- Managers see all tickets -->
        <record id="helpdesk_ticket_manager_rule" model="ir.rule">
            <field name="name">Helpdesk Ticket: manager full access</field>
            <field name="model_id" ref="model_so_helpdesk_ticket"/>
            <field name="domain_force">[(1, '=', 1)]</field>
            <field name="groups" eval="[(4, ref('group_helpdesk_manager'))]"/>
        </record>

        <!-- Users can read all tickets (reporting/overview) -->
        <record id="helpdesk_ticket_user_rule" model="ir.rule">
            <field name="name">Helpdesk Ticket: user read all</field>
            <field name="model_id" ref="model_so_helpdesk_ticket"/>
            <field name="domain_force">[(1, '=', 1)]</field>
            <field name="groups" eval="[(4, ref('group_helpdesk_user'))]"/>
            <field name="perm_read" eval="True"/>
            <field name="perm_write" eval="False"/>
            <field name="perm_create" eval="False"/>
            <field name="perm_unlink" eval="False"/>
        </record>

        <record id="helpdesk_ticket_portal_rule" model="ir.rule">
            <field name="name">Helpdesk Ticket: portal own tickets</field>
            <field name="model_id" ref="model_so_helpdesk_ticket"/>
            <field name="domain_force">[('partner_id', 'child_of', user.partner_id.commercial_partner_id.id)]</field>
            <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
        </record>

    </data>
</odoo>
