forked from Mapan/odoo17e
997 lines
58 KiB
XML
997 lines
58 KiB
XML
<?xml version="1.0"?>
|
|
<odoo>
|
|
|
|
<record id="helpdesk_ticket_view_activity" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.activity</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="arch" type="xml">
|
|
<activity string="Ticket">
|
|
<field name="legend_normal" invisible="1"/>
|
|
<field name="legend_blocked" invisible="1"/>
|
|
<field name="legend_done" invisible="1"/>
|
|
<field name="user_id"/>
|
|
<templates>
|
|
<div t-name="activity-box">
|
|
<field t-if="record.user_id.value" name="user_id" widget="many2one_avatar_user" class="m-0"/>
|
|
<img t-else="" t-att-src="activity_image('res.users', 'image_128', record.user_id.raw_value)" role="img" t-att-title="record.user_id.value" t-att-alt="record.user_id.value" class="me-2"/>
|
|
<div class="w-100">
|
|
<div class="d-flex justify-content-between">
|
|
<span class="o_helpdesk_activity_box_title">
|
|
<field name="name" display="full" class="o_text_block"/>
|
|
</span>
|
|
<span class="flex-shrink-0">
|
|
<field name="kanban_state" nolabel="1" widget="state_selection"/>
|
|
<span class="m-1"/>#<field name="ticket_ref"/>
|
|
</span>
|
|
</div>
|
|
<field name="partner_id" muted="1" display="full" class="o_text_block"/>
|
|
</div>
|
|
</div>
|
|
</templates>
|
|
</activity>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_view_graph_main" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.graph</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="arch" type="xml">
|
|
<graph string="Helpdesk Tickets" type="bar" sample="1" js_class="helpdesk_ticket_graph">
|
|
<field name="stage_id"/>
|
|
<field name="rating_last_value" string="Rating (/5)"/>
|
|
<field name="avg_response_hours" widget="float_time"/>
|
|
<field name="close_hours" string="Hours to Close" widget="float_time"/>
|
|
<field name="first_response_hours" widget="float_time"/>
|
|
<field name="sla_deadline_hours" widget="float_time"/>
|
|
<field name="assign_hours" string="Hours to Assign" widget="float_time"/>
|
|
<field name="color" invisible="1"/>
|
|
<field name="answered_customer_message_count" invisible="1"/>
|
|
<field name="total_response_hours" invisible="1" widget="float_time"/>
|
|
</graph>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_view_pivot_main" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.pivot</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="arch" type="xml">
|
|
<pivot string="Helpdesk Tickets" sample="1" js_class="helpdesk_ticket_pivot">
|
|
<field name="stage_id" type="col"/>
|
|
<field name="rating_last_value" string="Rating (/5)"/>
|
|
<field name="close_hours" string="Hours to Close" widget="float_time"/>
|
|
<field name="assign_hours" string="Hours to Assign" widget="float_time"/>
|
|
<field name="color" invisible="1"/>
|
|
<field name="answered_customer_message_count" invisible="1"/>
|
|
<field name="total_response_hours" invisible="1"/>
|
|
</pivot>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_tickets_view_search_base" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.search.base</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="priority">999</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Tickets Search">
|
|
<field name="name" string="Ticket" filter_domain="['|', ('name', 'ilike', self), ('ticket_ref', 'ilike', self)]"/>
|
|
<field name="tag_ids"/>
|
|
<field name="user_id"/>
|
|
<field name="partner_id" filter_domain="['|', '|', '|', ('partner_id', 'ilike', self), ('partner_email', 'ilike', self), ('partner_phone', 'ilike', self), ('partner_name', 'ilike', self)]"/>
|
|
<field name="team_id" invisible="context.get('default_team_id', False)"/>
|
|
<field name="ticket_type_id"/>
|
|
<field name="stage_id"/>
|
|
<field name="sla_ids" groups="helpdesk.group_use_sla"/>
|
|
<field name="priority" invisible="1"/>
|
|
<field name="company_id" groups="base.group_multi_company" invisible="context.get('default_team_id', False)"/>
|
|
<field name="description"/>
|
|
|
|
<filter string="My Tickets" domain="[('user_id','=',uid)]" name="my_ticket"/>
|
|
<filter string="Followed" domain="[('message_is_follower', '=', True)]" name="my_follow_ticket"/>
|
|
<filter string="Unassigned" domain="[('user_id','=',False)]" name="unassigned"/>
|
|
<separator/>
|
|
<filter string="Urgent" domain="[('priority', '=', 3)]" name="urgent_priority"/>
|
|
<filter string="High Priority" domain="[('priority', '=', 2)]" name="high_priority"/>
|
|
<filter string="Medium Priority" domain="[('priority', '=', 1)]" name="medium_priority"/>
|
|
<filter string="Low Priority" domain="[('priority', '=', 0)]" name="low_priority"/>
|
|
<separator groups="helpdesk.group_use_sla"/>
|
|
<filter string="SLA Success" domain="[('sla_success', '=', True)]" name="sla_success" groups="helpdesk.group_use_sla"/>
|
|
<filter string="SLA in Progress" domain="[('sla_status_ids.status', '=', 'ongoing')]" name="sla_inprogress" groups="helpdesk.group_use_sla"/>
|
|
<filter string="SLA Failed" domain="[('sla_fail', '=', True)]" name="sla_failed" groups="helpdesk.group_use_sla"/>
|
|
<separator/>
|
|
<filter string="Open" domain="[('stage_id.fold', '=', False)]" name="is_open"/>
|
|
<filter string="Closed" domain="[('stage_id.fold', '=', True)]" name="is_close"/>
|
|
<filter string="Closed in Last 7 days" name="closed_last_7days" domain="[('close_date','>', (context_today() - datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"/>
|
|
<filter string="Closed in Last 30 days" name="closed_last_30days" domain="[('close_date', '>', (context_today() - datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"/>
|
|
<separator />
|
|
<filter name="rating_satisfied" string="Satisfied" domain="[('rating_avg', '>', 3.66)]" groups="helpdesk.group_use_rating"/>
|
|
<filter name="rating_okay" string="Okay" domain="[('rating_avg', '<', 3.66), ('rating_avg', '>=', 2.33)]" groups="helpdesk.group_use_rating"/>
|
|
<filter name="dissatisfied" string="Dissatisfied" domain="[('rating_avg', '<', 2.33), ('rating_last_value', '!=', 0.0)]" groups="helpdesk.group_use_rating"/>
|
|
<separator/>
|
|
<filter string="Creation Date" date="create_date" name="creation_date"/>
|
|
<separator/>
|
|
<filter string="Archived" domain="[('active', '=', False)]" name="archive"/>
|
|
<group expand="0" string="Group By">
|
|
<filter string="Assigned to" name="assignee" context="{'group_by':'user_id'}"/>
|
|
<filter string="Helpdesk Team" name="team" context="{'group_by':'team_id'}" invisible="context.get('default_team_id', False)"/>
|
|
<filter string="Stage" name="stage" context="{'group_by':'stage_id'}"/>
|
|
<filter string="Status" name="state" context="{'group_by': 'kanban_state'}"/>
|
|
<filter string="SLA" name="sla_ids" context="{'group_by': 'sla_ids'}" groups="helpdesk.group_use_sla"/>
|
|
<filter string="Type" name="ticket_type_id" context="{'group_by':'ticket_type_id'}"/>
|
|
<filter string="Tags" name="tag" context="{'group_by': 'tag_ids'}"/>
|
|
<filter string="Priority" name="priority" context="{'group_by': 'priority'}"/>
|
|
<filter string="Customer" name="partner" context="{'group_by': 'partner_id'}"/>
|
|
<filter string="Company" name="company" context="{'group_by': 'company_id'}" groups="base.group_multi_company"/>
|
|
<filter string="Create Date" name="created_by" context="{'group_by': 'create_date'}"/>
|
|
<filter string="SLA Deadline" name="sla_deadline" context="{'group_by': 'sla_deadline'}" groups="helpdesk.group_use_sla"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_tickets_view_search" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.search</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="mode">primary</field>
|
|
<field name="inherit_id" ref="helpdesk_tickets_view_search_base"/>
|
|
<field name="priority">15</field>
|
|
<field name="arch" type="xml">
|
|
<field name="description" position="after">
|
|
<field name="properties"/>
|
|
</field>
|
|
<filter name="sla_deadline" position="after">
|
|
<separator/>
|
|
<filter string="Properties" name="group_by_properties" context="{'group_by': 'properties'}"/>
|
|
</filter>
|
|
<filter name="archive" position="before">
|
|
<filter string="Unread Messages" name="message_needaction" domain="[('message_needaction', '=', True)]" groups="mail.group_mail_notification_type_inbox"/>
|
|
<separator/>
|
|
</filter>
|
|
<filter name="archive" position="after">
|
|
<separator invisible="1"/>
|
|
<filter invisible="1" string="Late Activities" name="activities_overdue"
|
|
domain="[('my_activity_date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"
|
|
help="Show all records which has next action date is before today"/>
|
|
<filter invisible="1" string="Today Activities" name="activities_today"
|
|
domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
|
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
|
|
domain="[('my_activity_date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/>
|
|
</filter>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_view_search_analysis_closed" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.search</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Tickets Search">
|
|
<field name="name"/>
|
|
<field name="ticket_type_id"/>
|
|
<field name="team_id"/>
|
|
<field name="user_id"/>
|
|
<filter string="My Tickets" domain="[('user_id','=',uid)]" name="my_ticket"/>
|
|
<filter string="Unassigned Tickets" domain="[('user_id','=',False)]" name="unassigned"/>
|
|
<separator/>
|
|
<filter string="Archived" domain="[('active','=',False)]" name="archive"/>
|
|
<separator/>
|
|
<filter name="filter_create_date" date="create_date"/>
|
|
<filter name="filter_assign_date" date="assign_date"/>
|
|
<filter name="filter_sla_deadline" date="sla_deadline"/>
|
|
<filter invisible="1" string="Late Activities" name="activities_overdue"
|
|
domain="[('my_activity_date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"
|
|
help="Show all records which has next action date is before today"/>
|
|
<filter invisible="1" string="Today Activities" name="activities_today"
|
|
domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
|
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
|
|
domain="[('my_activity_date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/>
|
|
<separator/>
|
|
<filter string="SLA Failed" name="sla_failed" domain="[('sla_fail','!=',False)]" groups="helpdesk.group_use_sla"/>
|
|
<group expand="0" string="Group By">
|
|
<filter string="Assignee" name="assignee" context="{'group_by':'user_id'}"/>
|
|
<filter string="Helpdesk Team" name="team" context="{'group_by':'team_id'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_tickets_view_tree" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.tree</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Tickets" multi_edit="1" sample="1" default_order="priority desc, sla_deadline, id" js_class="helpdesk_ticket_list">
|
|
<field name="company_id" column_invisible="True"/>
|
|
<field name="use_sla" column_invisible="True"/>
|
|
<field name="fold" column_invisible="True"/>
|
|
<field name="legend_normal" column_invisible="True"/>
|
|
<field name="legend_blocked" column_invisible="True"/>
|
|
<field name="legend_done" column_invisible="True"/>
|
|
<field name="ticket_ref" string="ID" readonly="1" optional="show"/>
|
|
<field name="priority" optional="show" widget="priority"/>
|
|
<field name="name" string="Name"/>
|
|
<field name="team_id" optional="show" readonly="1" column_invisible="context.get('default_team_id', False)"/>
|
|
<field name="team_id" optional="hide" readonly="1" column_invisible="not context.get('default_team_id', False)"/>
|
|
<field name="user_id" optional="show" widget="many2one_avatar_user" options="{'no_quick_create': True}"/>
|
|
<field name="partner_id" domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" optional="show" options="{'no_open': True}"/>
|
|
<field name="company_id" groups="base.group_multi_company" optional="show" readonly="1" column_invisible="context.get('default_team_id', False)"/>
|
|
<field name="company_id" groups="base.group_multi_company" optional="hide" readonly="1" column_invisible="not context.get('default_team_id', False)"/>
|
|
<field name="activity_ids" widget="list_activity" optional="show"/>
|
|
<field name="my_activity_date_deadline" string="My Deadline" widget="remaining_days" optional="hide"/>
|
|
<field name="sla_status_ids" widget="helpdesk_sla_many2many_tags" options="{'color_field': 'color'}" string="SLAs" optional="hide" readonly="1" invisible="not use_sla"/>
|
|
<field name="sla_deadline" invisible="not use_sla or fold" optional="show" widget="remaining_days"/>
|
|
<field name="create_date" optional="hide" readonly="1" string="Creation Date"/>
|
|
<field name="write_date" optional="hide" readonly="1"/>
|
|
<field name="ticket_type_id" options="{'no_create_edit': True}" optional="hide"/>
|
|
<field name="tag_ids" optional="hide" widget="many2many_tags" options="{'color_field': 'color'}"/>
|
|
<field name="properties"/>
|
|
<!-- To Do: remove me in master -->
|
|
<field name="rating_last_text" string="Rating" decoration-danger="rating_last_text == 'ko'"
|
|
decoration-warning="rating_last_text == 'ok'" decoration-success="rating_last_text == 'top'"
|
|
column_invisible="1"
|
|
class="fw-bold" widget="badge" optional="hide"/>
|
|
<field name="rating_avg_text" string="Rating" decoration-danger="rating_avg_text == 'ko'"
|
|
decoration-warning="rating_avg_text == 'ok'" decoration-success="rating_avg_text == 'top'"
|
|
invisible="rating_avg_text == 'none'"
|
|
class="fw-bold" widget="badge" optional="hide"/>
|
|
<field name="kanban_state" nolabel="1" optional="show" widget="state_selection"/>
|
|
<field name="stage_id" optional="show" readonly="not context.get('default_team_id', False)"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- helpdesk ticket list view group_by stage_id -->
|
|
<record id="ticket_list_view_group_stage" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.tree.group.stage</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="inherit_id" ref="helpdesk.helpdesk_tickets_view_tree"/>
|
|
<field name="mode">primary</field>
|
|
<field name="arch" type="xml">
|
|
<tree position="attributes">
|
|
<attribute name="default_group_by">stage_id</attribute>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="quick_create_ticket_form" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.form.quick_create</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="priority">1000</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<group>
|
|
<field name="stage_id" invisible="1"/>
|
|
<field name="team_id" invisible="1"/>
|
|
<field name="legend_normal" invisible="1"/>
|
|
<field name="legend_blocked" invisible="1"/>
|
|
<field name="legend_done" invisible="1"/>
|
|
<field name="name" string="Ticket Title" placeholder="e.g. Product arrived damaged"/>
|
|
<field name="domain_user_ids" invisible="1"/>
|
|
<field name="team_id" required="1" invisible="context.get('default_team_id')" options="{'no_open': True}"/>
|
|
<field name="user_id" domain="[('id', 'in', domain_user_ids)]" options="{'no_open': True}"/>
|
|
<field name="partner_id" options="{'no_open': True}" widget="res_partner_many2one"/>
|
|
</group>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_view_kanban" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.kanban</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="priority">10</field>
|
|
<field name="arch" type="xml">
|
|
<kanban default_group_by="stage_id" on_create="quick_create" class="o_kanban_small_column" quick_create_view="helpdesk.quick_create_ticket_form" sample="1" js_class="helpdesk_ticket_kanban">
|
|
<field name="stage_id" options='{"group_by_tooltip": {"description": "Stage Description"}}'/>
|
|
<field name="user_id"/>
|
|
<field name="color"/>
|
|
<field name="priority"/>
|
|
<field name="sla_fail"/>
|
|
<field name="tag_ids"/>
|
|
<field name="active"/>
|
|
<field name="activity_ids"/>
|
|
<field name="activity_state"/>
|
|
<field name="team_id"/>
|
|
<field name="legend_blocked"/>
|
|
<field name="legend_normal"/>
|
|
<field name="legend_done"/>
|
|
<field name="use_rating"/>
|
|
<field name="rating_count"/>
|
|
<field name="rating_avg"/>
|
|
<field name="fold"/>
|
|
<progressbar field="kanban_state" colors='{"done": "success", "blocked": "danger", "normal": "200"}'/>
|
|
<templates>
|
|
<t t-name="kanban-menu">
|
|
<t t-if="widget.editable"><a type="edit" class="dropdown-item" role="menuitem">Edit</a></t>
|
|
<t t-if="widget.deletable"><a type="delete" class="dropdown-item" role="menuitem">Delete</a></t>
|
|
<a name="toggle_active" type="object" class="dropdown-item" role="menuitem" t-if="! record.active.value">Restore</a>
|
|
<ul class="oe_kanban_colorpicker" data-field="color"/>
|
|
</t>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="#{!selection_mode ? kanban_color(record.color.raw_value) : ''} oe_kanban_global_click">
|
|
<span class="oe_kanban_color_help" t-attf-title="In #{kanban_getcolorname(record.color.raw_value)}" role="img" t-attf-aria-label="In #{kanban_getcolorname(record.color.raw_value)}"/>
|
|
<div class="oe_kanban_content text-break">
|
|
<div>
|
|
<strong class="o_kanban_record_title"><field name="name"/> (#<field name="ticket_ref"/>)</strong>
|
|
</div>
|
|
<div class="o_kanban_record_body">
|
|
<field name="commercial_partner_id"/>
|
|
<div>
|
|
<field name="ticket_type_id"/>
|
|
</div>
|
|
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}" invisible="not tag_ids"/>
|
|
<field name="use_sla" invisible="1"/>
|
|
<div t-if="record.sla_deadline.raw_value && record.use_sla.raw_value && !record.fold.raw_value">
|
|
<t t-if="luxon.DateTime.fromISO(record.sla_deadline.raw_value) < luxon.DateTime.local()" t-set="red" t-value="'oe_kanban_text_red'"/>
|
|
<span t-attf-class="{{red}}">
|
|
<field name="sla_deadline" widget="remaining_days"/>
|
|
</span>
|
|
</div>
|
|
<field name="properties" widget="properties"/>
|
|
</div>
|
|
<div class="o_kanban_record_bottom">
|
|
<div class="oe_kanban_bottom_left">
|
|
<field name="priority" widget="priority"/>
|
|
<field name="activity_ids" widget="kanban_activity"/>
|
|
<b t-if="record.use_rating.raw_value and record.rating_count.raw_value > 0" groups="helpdesk.group_use_rating">
|
|
<strong class="fa fa-fw fa-smile-o fa-lg text-success fw-bolder" t-if="record.rating_avg.raw_value >= 3.66" title="Average Rating: Satisfied" role="img" aria-label="Happy face"/>
|
|
<strong class="fa fa-fw fa-meh-o fa-lg text-warning fw-bolder" t-elif="record.rating_avg.raw_value >= 2.33" title="Average Rating: Okay" role="img" aria-label="Neutral face"/>
|
|
<strong class="fa fa-fw fa-frown-o fa-lg text-danger fw-bolder" t-else="" title="Average Rating: Dissatisfied" role="img" aria-label="Sad face"/>
|
|
</b>
|
|
</div>
|
|
<div class="oe_kanban_bottom_right">
|
|
<field name="kanban_state" widget="state_selection" groups="base.group_user"/>
|
|
<field t-if="record.user_id.raw_value" name="user_id" widget="many2one_avatar_user"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="clearfix"></div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_view_form" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.form</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Helpdesk Ticket">
|
|
<header>
|
|
<field name="stage_id" widget="statusbar_duration" options="{'clickable': '1', 'fold_field': 'fold'}"/>
|
|
</header>
|
|
<sheet>
|
|
<field name="legend_blocked" invisible="1"/>
|
|
<field name="legend_normal" invisible="1"/>
|
|
<field name="legend_done" invisible="1"/>
|
|
<field name="rating_count" invisible="1"/>
|
|
<field name="use_rating" invisible="1"/>
|
|
<field name="rating_avg" invisible="1"/>
|
|
<field name="company_id" invisible="1"/>
|
|
<field name="team_privacy_visibility" invisible="1"/>
|
|
<div class="oe_button_box" name="button_box">
|
|
<button name="action_open_ratings" type="object" class="oe_stat_button" icon="" invisible="not use_rating or rating_count == 0" groups="helpdesk.group_use_rating">
|
|
<i class="fa fa-fw o_button_icon fa-smile-o text-success" invisible="rating_avg < 3.66" title="Satisfied"/>
|
|
<i class="fa fa-fw o_button_icon fa-meh-o text-warning" invisible="rating_avg < 2.33 or rating_avg >= 3.66" title="Okay"/>
|
|
<i class="fa fa-fw o_button_icon fa-frown-o text-danger" invisible="rating_avg >= 2.33" title="Dissatisfied"/>
|
|
<div class="o_field_widget o_stat_info">
|
|
<span class="o_stat_value"><field name="rating_avg_text" nolabel="1"/></span>
|
|
<span class="o_stat_text">Rating</span>
|
|
</div>
|
|
</button>
|
|
<button class="oe_stat_button" type="object" name="action_open_helpdesk_ticket" icon="fa-life-ring" invisible="not partner_id or partner_ticket_count == 0">
|
|
<div class="o_field_widget o_stat_info">
|
|
<div class="d-flex align-items-baseline gap-1">
|
|
<span class="o_stat_value order-1">
|
|
<field name="partner_ticket_count" nolabel="1"/>
|
|
</span>
|
|
<span class="o_stat_text order-2">Tickets</span>
|
|
</div>
|
|
<div class="d-flex align-items-baseline gap-1">
|
|
<span class="o_stat_value">
|
|
<field name="partner_open_ticket_count" nolabel="1"/>
|
|
</span>
|
|
<span class="o_stat_text order-2">Open</span>
|
|
</div>
|
|
</div>
|
|
</button>
|
|
</div>
|
|
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
|
|
<field name="kanban_state" widget="state_selection"/>
|
|
<field name="use_sla" invisible="1"/>
|
|
<field name="fold" invisible="1"/>
|
|
<div class="oe_title">
|
|
<h1><field name="name" options="{'line_breaks': False}" widget="text" class="field_name" placeholder="e.g. Product arrived damaged"/></h1>
|
|
</div>
|
|
<div class="d-flex mb-4" invisible="not sla_status_ids" groups="helpdesk.group_use_sla">
|
|
<field name="sla_status_ids" widget="helpdesk_sla_many2many_tags" invisible="not use_sla" options="{'color_field': 'color', 'no_edit_color': True}" class="mb-0" readonly="1" groups="helpdesk.group_use_sla"/>
|
|
<div invisible="not sla_deadline or not use_sla" groups="helpdesk.group_use_sla" class="mx-2 text-muted d-inline-flex align-items-center h-100">
|
|
<i class="fa fa-lg fa-clock-o me-2 mt-1" aria-label="Sla Deadline" title="Sla Deadline"/>
|
|
<field name="sla_deadline" class="mb-0" widget="remaining_days"/>
|
|
</div>
|
|
</div>
|
|
<group class="mb-0 mt-4">
|
|
<group>
|
|
<field name="active" invisible="1"/>
|
|
<field name="team_id" required="1" context="{'kanban_view_ref': 'helpdesk.helpdesk_team_view_kanban_mobile', 'default_use_sla': True}"/>
|
|
<field name="user_id" class="field_user_id" domain="['&', ('id', 'in', domain_user_ids), ('share', '=', False)]" widget="many2one_avatar_user"/>
|
|
<field name="domain_user_ids" invisible="1"/>
|
|
<field name="priority" widget="priority"/>
|
|
<field name="ticket_type_id" options="{'no_open': True}"/>
|
|
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}"/>
|
|
</group>
|
|
<group>
|
|
<field name="partner_id" class="field_partner_id" domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" widget="res_partner_many2one" context="{'default_phone': partner_phone}"/>
|
|
<field name="is_partner_phone_update" invisible="1"/>
|
|
<label for="partner_phone" string="Phone"/>
|
|
<div class="o_row o_row_readonly">
|
|
<field name="partner_phone" widget="phone" string="Phone"/>
|
|
<span class="fa fa-exclamation-triangle text-warning oe_edit_only"
|
|
title="By saving this change, the customer phone number will also be updated." invisible="not is_partner_phone_update"/>
|
|
</div>
|
|
<field name="email_cc" groups="base.group_no_one"/>
|
|
</group>
|
|
</group>
|
|
<div class="d-flex">
|
|
<field name="properties" nolabel="1" columns="2" hideKanbanOption="1"/>
|
|
</div>
|
|
<notebook>
|
|
<field name="display_extra_info" invisible="1"/>
|
|
<page string="Description" name="description">
|
|
<field name="description"/>
|
|
</page>
|
|
<page string="Extra Info" name="extra_info"
|
|
invisible="not display_extra_info">
|
|
<group>
|
|
<field name="company_id" groups="base.group_multi_company" context="{'create': False}"/>
|
|
</group>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids"/>
|
|
<field name="activity_ids"/>
|
|
<field name="message_ids" options="{'post_refresh': 'recipients'}"/>
|
|
</div>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_view_cohort" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.view.cohort</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="arch" type="xml">
|
|
<cohort string="Tickets" date_start="create_date" date_stop="close_date" interval="day" sample="1">
|
|
<field name="rating_last_value" string="Rating (/5)"/>
|
|
<field name="close_hours" string="Hours to Close"/>
|
|
<field name="assign_hours" string="Hours to Assign"/>
|
|
<field name="color" invisible="1"/>
|
|
<field name="answered_customer_message_count" invisible="1"/>
|
|
<field name="total_response_hours" invisible="1"/>
|
|
</cohort>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_main_my" model="ir.actions.act_window">
|
|
<field name="name">My Tickets</field>
|
|
<field name="res_model">helpdesk.ticket</field>
|
|
<field name="view_mode">list,kanban,form,activity,pivot,graph,cohort</field>
|
|
<field name="search_view_id" ref="helpdesk_tickets_view_search"/>
|
|
<field name="context">{
|
|
'search_default_my_ticket': True,
|
|
'search_default_is_open': True,
|
|
'default_user_id': uid,
|
|
}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
No tickets found. Let's create one!
|
|
</p><p>To get things done, plan activities and use the ticket status.<br/>
|
|
Collaborate efficiently by chatting in real-time or via email.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_view_graph_main_inherit_all_ticket" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.graph.inherit.all.ticket</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="inherit_id" ref="helpdesk_ticket_view_graph_main"/>
|
|
<field name="priority">80</field>
|
|
<field name="mode">primary</field>
|
|
<field name="arch" type="xml">
|
|
<field name="stage_id" position="replace">
|
|
<field name="team_id"/>
|
|
<field name="answered_customer_message_count" invisible="1"/>
|
|
<field name="total_response_hours" invisible="1" widget="float_time"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_main_tree" model="ir.actions.act_window">
|
|
<field name="name">All Tickets</field>
|
|
<field name="res_model">helpdesk.ticket</field>
|
|
<field name="view_mode">tree,kanban,form,activity,pivot,graph,cohort</field>
|
|
<field name="search_view_id" ref="helpdesk_tickets_view_search"/>
|
|
<field name="context">{'search_default_is_open': True}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
No tickets found. Let's create one!
|
|
</p><p>To get things done, plan activities and use the ticket status.<br/>
|
|
Collaborate efficiently by chatting in real-time or via email.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_view_pivot_main_inherit_all_ticket" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.pivot.inherit.all.ticket</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="inherit_id" ref="helpdesk_ticket_view_pivot_main"/>
|
|
<field name="priority">81</field>
|
|
<field name="mode">primary</field>
|
|
<field name="arch" type="xml">
|
|
<field name="stage_id" position="after">
|
|
<field name="create_date" type="row" interval="day"/>
|
|
<field name="answered_customer_message_count" invisible="1"/>
|
|
<field name="total_response_hours" invisible="1"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_main_tree_view" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="1"/>
|
|
<field name="view_mode">tree</field>
|
|
<field name="view_id" ref="helpdesk_tickets_view_tree"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_main_tree"/>
|
|
</record>
|
|
<record id="helpdesk_ticket_action_main_tree_kanban" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="18"/>
|
|
<field name="view_mode">kanban</field>
|
|
<field name="view_id" ref="helpdesk_ticket_view_kanban"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_main_tree"/>
|
|
</record>
|
|
<record id="helpdesk_ticket_action_main_tree_activity" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="25"/>
|
|
<field name="view_mode">activity</field>
|
|
<field name="view_id" ref="helpdesk_ticket_view_activity"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_main_tree"/>
|
|
</record>
|
|
<record id="helpdesk_ticket_action_main_tree_pivot" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="30"/>
|
|
<field name="view_mode">pivot</field>
|
|
<field name="view_id" ref="helpdesk_ticket_view_pivot_main_inherit_all_ticket"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_main_tree"/>
|
|
</record>
|
|
<record id="helpdesk_ticket_action_main_tree_graph" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="35"/>
|
|
<field name="view_mode">graph</field>
|
|
<field name="view_id" ref="helpdesk_ticket_view_graph_main_inherit_all_ticket"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_main_tree"/>
|
|
</record>
|
|
<record id="helpdesk_ticket_action_main_tree_cohort" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="40"/>
|
|
<field name="view_mode">cohort</field>
|
|
<field name="view_id" ref="helpdesk_ticket_view_cohort"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_main_tree"/>
|
|
</record>
|
|
|
|
<record id="action_helpdesk_ticket_mass_mail" model="ir.actions.act_window">
|
|
<field name="name">Send Email</field>
|
|
<field name="res_model">mail.compose.message</field>
|
|
<field name="view_mode">form</field>
|
|
<field name="target">new</field>
|
|
<field name="context" eval="{
|
|
'default_composition_mode': 'mass_mail',
|
|
'default_partner_to': '{{ object.partner_id.id or \'\' }}',
|
|
}"/>
|
|
<field name="binding_model_id" ref="helpdesk.model_helpdesk_ticket"/>
|
|
<field name="binding_view_types">list</field>
|
|
</record>
|
|
|
|
<!-- Action for dashboard button -->
|
|
<record id="helpdesk_my_ticket_action_no_create" model="ir.actions.act_window">
|
|
<field name="name">Tickets</field>
|
|
<field name="res_model">helpdesk.ticket</field>
|
|
<field name="view_mode">list,kanban,form,activity,pivot,graph,cohort</field>
|
|
<field name="search_view_id" ref="helpdesk_tickets_view_search"/>
|
|
<field name="context">{'create': False, 'search_default_is_open': True, 'search_default_my_ticket': True}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
No tickets found
|
|
</p><p>To get things done, plan activities and use the ticket status.<br/>
|
|
Collaborate efficiently by chatting in real-time or via email.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_sla" model="ir.actions.act_window">
|
|
<field name="name">Tickets</field>
|
|
<field name="res_model">helpdesk.ticket</field>
|
|
<field name="view_mode">list,kanban,form,activity,pivot,graph,cohort</field>
|
|
<field name="domain">[]</field>
|
|
<field name="context">{'create': False, 'search_default_is_open': True, 'search_default_my_ticket': True, 'search_default_sla_failed': True}</field>
|
|
<field name="search_view_id" ref="helpdesk_tickets_view_search"/>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
Congratulations!
|
|
</p><p>You completed all your tickets on time.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Reporting action for dashboard -->
|
|
<record id="helpdesk_ticket_action_close_analysis_pivot_inherit_dashboard" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.close.analysis.pivot.inherit</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="inherit_id" ref="helpdesk_ticket_view_pivot_main"/>
|
|
<field name="priority">80</field>
|
|
<field name="mode">primary</field>
|
|
<field name="arch" type="xml">
|
|
<field name="stage_id" position="replace">
|
|
<field name="name" type="row"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
<record id="helpdesk_ticket_action_close_analysis_graph_inherit_dashboard" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.close.analysis.graph.inherit</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="inherit_id" ref="helpdesk_ticket_view_graph_main"/>
|
|
<field name="priority">80</field>
|
|
<field name="mode">primary</field>
|
|
<field name="arch" type="xml">
|
|
<field name="stage_id" position="replace">
|
|
<field name="name"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
<record id="helpdesk_ticket_action_close_analysis" model="ir.actions.act_window">
|
|
<field name="name">Closed Tickets Analysis</field>
|
|
<field name="res_model">helpdesk.ticket</field>
|
|
<field name="view_mode">tree,form,pivot,graph</field>
|
|
<field name="search_view_id" ref="helpdesk_tickets_view_search"/>
|
|
<field name="domain" eval="[('close_date', '>=', (DateTime.today() - relativedelta(hours=12)).strftime('%Y-%m-%d %H:%M:%S'))]"/>
|
|
<field name="context">{
|
|
'search_default_my_ticket': True,
|
|
'search_default_is_close': True,
|
|
}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_empty_folder">
|
|
No data yet!
|
|
</p><p>
|
|
Create tickets to get statistics.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
<record id="helpdesk_ticket_action_close_analysis_tree" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="1"/>
|
|
<field name="view_mode">tree</field>
|
|
<field name="view_id" ref="helpdesk_tickets_view_tree"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_close_analysis"/>
|
|
</record>
|
|
<record id="helpdesk_ticket_action_close_analysis_pivot" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="18"/>
|
|
<field name="view_mode">pivot</field>
|
|
<field name="view_id" ref="helpdesk_ticket_action_close_analysis_pivot_inherit_dashboard"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_close_analysis"/>
|
|
</record>
|
|
<record id="helpdesk_ticket_action_close_analysis_graph" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="25"/>
|
|
<field name="view_mode">graph</field>
|
|
<field name="view_id" ref="helpdesk_ticket_action_close_analysis_graph_inherit_dashboard"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_close_analysis"/>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_view_graph_7days_inherit_dashboard" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.graph.7days.inherit</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="inherit_id" ref="helpdesk_ticket_view_graph_main"/>
|
|
<field name="mode">primary</field>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//field[@name='stage_id']" position="replace">
|
|
<field name="close_date" interval="day"/>
|
|
</xpath>
|
|
<field name="close_hours" position="replace"/>
|
|
<field name="rating_last_value" position="replace"/>
|
|
<field name="assign_hours" position="replace"/>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_pivot_view_7days_inherit_dashboard" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.pivot.7days.inherit</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="inherit_id" ref="helpdesk.helpdesk_ticket_view_pivot_main"/>
|
|
<field name="mode">primary</field>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//field[@name='stage_id']" position="replace">
|
|
<field name="close_date" interval="day" type="row"/>
|
|
</xpath>
|
|
<field name="close_hours" position="replace"/>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7days_tickets" model="ir.actions.act_window">
|
|
<field name="name">Closed Tickets</field>
|
|
<field name="res_model">helpdesk.ticket</field>
|
|
<field name="view_mode">tree,kanban,form,activity,pivot,graph,cohort</field>
|
|
<field name="domain" eval="[('close_date', '>=', (DateTime.today() - relativedelta(days=7)).strftime('%Y-%m-%d %H:%M:%S'))]"/>
|
|
<field name="context">{
|
|
'search_default_my_ticket': True,
|
|
'search_default_closed_last_7days': True,
|
|
}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_empty_folder">
|
|
No data yet!
|
|
</p><p>
|
|
Create tickets to get statistics.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7days_tickets_tree" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="10"/>
|
|
<field name="view_mode">tree</field>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_7days_tickets"/>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7days_tickets_kanban" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="18"/>
|
|
<field name="view_mode">kanban</field>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_7days_tickets"/>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7days_tickets_activity" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="25"/>
|
|
<field name="view_mode">activity</field>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_7days_tickets"/>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7days_tickets_pivot" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="2"/>
|
|
<field name="view_mode">pivot</field>
|
|
<field name="view_id" ref="helpdesk.helpdesk_ticket_pivot_view_7days_inherit_dashboard"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_7days_tickets"/>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7days_tickets_graph" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="5"/>
|
|
<field name="view_mode">graph</field>
|
|
<field name="view_id" ref="helpdesk.helpdesk_ticket_view_graph_7days_inherit_dashboard"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_7days_tickets"/>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7days_tickets_cohort" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="40"/>
|
|
<field name="view_mode">cohort</field>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_7days_tickets"/>
|
|
</record>
|
|
|
|
<!-- action for helpdesk team -->
|
|
<record id="helpdesk_ticket_action_team" model="ir.actions.act_window">
|
|
<field name="name">Tickets</field>
|
|
<field name="res_model">helpdesk.ticket</field>
|
|
<field name="view_mode">kanban,tree,form,activity,pivot,graph,cohort</field>
|
|
<field name="domain">[('team_id', '=', active_id)]</field>
|
|
<field name="context">{'default_team_id': active_id}</field>
|
|
<field name="search_view_id" ref="helpdesk_tickets_view_search"/>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
No tickets found. Let's create one!
|
|
</p><p>To get things done, plan activities and use the ticket status.<br/>
|
|
Collaborate efficiently by chatting in real-time or via email.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="open_view_ticket_group_stage_kanban_view" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="5"/>
|
|
<field name="view_mode">kanban</field>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_team"/>
|
|
</record>
|
|
|
|
<record id="open_view_ticket_group_stage_tree_view" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="10"/>
|
|
<field name="view_mode">tree</field>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_team"/>
|
|
<field name="view_id" ref="ticket_list_view_group_stage"/>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_unassigned" model="ir.actions.act_window">
|
|
<field name="name">Tickets</field>
|
|
<field name="res_model">helpdesk.ticket</field>
|
|
<field name="view_mode">kanban,list,form,activity,pivot,graph,cohort</field>
|
|
<field name="context">{'search_default_unassigned': True, 'search_default_is_open': True}</field>
|
|
<field name="domain">[('team_id', '=', active_id)]</field>
|
|
<field name="search_view_id" ref="helpdesk_tickets_view_search"/>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
No tickets found. Let's create one!
|
|
</p><p>To get things done, plan activities and use the ticket status.<br/>
|
|
Collaborate efficiently by chatting in real-time or via email.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_view_search_analysis" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.search</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Tickets Search">
|
|
<field name="name"/>
|
|
<field name="ticket_type_id"/>
|
|
<field name="priority" invisible="1"/>
|
|
<field name="team_id"/>
|
|
<field name="user_id"/>
|
|
|
|
<filter string="My Tickets" domain="[('user_id','=',uid)]" name="my_ticket"/>
|
|
<filter string="Unassigned Tickets" domain="[('user_id','=',False)]" name="unassigned"/>
|
|
<separator/>
|
|
<filter string="Open Tickets" domain="[('stage_id.fold', '=', False)]" name="is_open"/>
|
|
<filter string="Closed Tickets" domain="[('stage_id.fold', '=', True)]" name="is_close"/>
|
|
<separator/>
|
|
<filter name="filter_create_date" date="create_date"/>
|
|
<filter name="filter_sla_deadline" date="sla_deadline"/>
|
|
<separator/>
|
|
<filter string="SLA Failed" domain="[('sla_fail','!=',False)]" name="sla_failed" groups="helpdesk.group_use_sla"/>
|
|
<filter string="SLA in Progress" domain="[('sla_fail','=',False)]" name="not_sla_failed" groups="helpdesk.group_use_sla"/>
|
|
<filter string="SLA Success" name="sla_successed" domain="[('sla_success', '=', True)]" groups="helpdesk.group_use_sla"/>
|
|
<separator/>
|
|
<filter string="Archived" domain="[('active','=',False)]" name="archive"/>
|
|
<group expand="0" string="Group By">
|
|
<filter string="Assignee" name="assignee" context="{'group_by':'user_id'}"/>
|
|
<filter string="Helpdesk Team" name="team" context="{'group_by':'team_id'}"/>
|
|
<filter string="Ticket Type" name="ticket_type_id" context="{'group_by':'ticket_type_id'}"/>
|
|
<filter string="Creation Date" context="{'group_by':'create_date:week'}" name="group_by_create_date"/>
|
|
<filter string="First Assignment Date" context="{'group_by': 'assign_date:month'}" name="group_by_assign_date"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- helpdesk team pivot View -->
|
|
<record id="helpdesk_team_view_pivot_analysis" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.pivot</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="arch" type="xml">
|
|
<pivot string="Performance Analysis" sample="1">
|
|
<field name="stage_id" type="col"/>
|
|
<field name="name"/>
|
|
<field name="close_hours" type="measure"/>
|
|
<field name="color" invisible="1"/>
|
|
</pivot>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_team_view_graph_analysis" model="ir.ui.view">
|
|
<field name="name">helpdesk.ticket.graph</field>
|
|
<field name="model">helpdesk.ticket</field>
|
|
<field name="arch" type="xml">
|
|
<graph string="Performance Analysis" sample="1">
|
|
<field name="stage_id"/>
|
|
<field name="team_id"/>
|
|
<field name="close_hours" type="measure"/>
|
|
</graph>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_team_performance" model="ir.actions.act_window">
|
|
<field name="name">Performance Analysis</field>
|
|
<field name="res_model">helpdesk.ticket</field>
|
|
<field name="view_mode">pivot,graph</field>
|
|
<field name="search_view_id" ref="helpdesk_ticket_view_search_analysis"/>
|
|
<field name="view_ids"
|
|
eval="[(5, 0, 0),
|
|
(0, 0, {'view_mode': 'graph', 'view_id': ref('helpdesk_team_view_graph_analysis')}),
|
|
(0, 0, {'view_mode': 'pivot', 'view_id': ref('helpdesk_team_view_pivot_analysis')})]"/>
|
|
<field name="search_view_id" ref="helpdesk_ticket_view_search_analysis"/>
|
|
<field name="context">{'search_default_team_id': active_ids, 'pivot_measures': ['close_hours', '__count__']}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_empty_folder">
|
|
No data yet!
|
|
</p><p>
|
|
Create tickets to get statistics.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_success" model="ir.actions.act_window">
|
|
<field name="name">Success Rate Analysis</field>
|
|
<field name="res_model">helpdesk.ticket</field>
|
|
<field name="view_mode">tree,form,pivot,graph</field>
|
|
<field name="domain" eval="[('close_date', '>=', (DateTime.today() - relativedelta(hours=12)).strftime('%Y-%m-%d %H:%M:%S'))]"/>
|
|
<field name="search_view_id" ref="helpdesk_tickets_view_search"/>
|
|
<field name="context">{
|
|
'search_default_is_close': True,
|
|
'search_default_my_ticket': True,
|
|
'search_default_sla_success': True,
|
|
'pivot_measures': ['__count__'],
|
|
}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_empty_folder">
|
|
No data yet!
|
|
</p><p>
|
|
Create tickets to get statistics.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
<record id="helpdesk_ticket_action_success_tree" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="16"/>
|
|
<field name="view_mode">tree</field>
|
|
<field name="view_id" ref="helpdesk_tickets_view_tree"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_success"/>
|
|
</record>
|
|
<record id="helpdesk_ticket_action_success_graph" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="25"/>
|
|
<field name="view_mode">graph</field>
|
|
<field name="view_id" ref="helpdesk_ticket_action_close_analysis_graph_inherit_dashboard"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_success"/>
|
|
</record>
|
|
<record id="helpdesk_ticket_action_success_pivot" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="18"/>
|
|
<field name="view_mode">pivot</field>
|
|
<field name="view_id" ref="helpdesk_ticket_action_close_analysis_pivot_inherit_dashboard"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_success"/>
|
|
</record>
|
|
|
|
<record id="action_open_customer_preview" model="ir.actions.server">
|
|
<field name="name">Customer Preview</field>
|
|
<field name="model_id" ref="helpdesk.model_helpdesk_ticket"/>
|
|
<field name="binding_model_id" ref="helpdesk.model_helpdesk_ticket"/>
|
|
<field name="binding_view_types">form</field>
|
|
<field name="state">code</field>
|
|
<field name="code">action = records.action_customer_preview()</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7days_success" model="ir.actions.act_window">
|
|
<field name="name">Success Rate</field>
|
|
<field name="res_model">helpdesk.ticket</field>
|
|
<field name="view_mode">tree,kanban,form,activity,pivot,graph,cohort</field>
|
|
<field name="domain" eval="[('close_date', '>=', (DateTime.today() - relativedelta(days=7)).strftime('%Y-%m-%d %H:%M:%S'))]"/>
|
|
<field name="context">{
|
|
'search_default_my_ticket': True,
|
|
'search_default_sla_success': True,
|
|
'search_default_closed_last_7days': True,
|
|
}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_empty_folder">
|
|
No data yet!
|
|
</p><p>
|
|
Create tickets to get statistics.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7dayssuccess_tree" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="10"/>
|
|
<field name="view_mode">tree</field>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_7days_success"/>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7dayssuccess_kanban" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="18"/>
|
|
<field name="view_mode">kanban</field>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_7days_success"/>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7dayssuccess_activity" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="25"/>
|
|
<field name="view_mode">activity</field>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_7days_success"/>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7dayssuccess_pivot" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="2"/>
|
|
<field name="view_mode">pivot</field>
|
|
<field name="view_id" ref="helpdesk.helpdesk_ticket_pivot_view_7days_inherit_dashboard"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_7days_success"/>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7dayssuccess_graph" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="5"/>
|
|
<field name="view_mode">graph</field>
|
|
<field name="view_id" ref="helpdesk.helpdesk_ticket_view_graph_7days_inherit_dashboard"/>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_7days_success"/>
|
|
</record>
|
|
|
|
<record id="helpdesk_ticket_action_7dayssuccess_cohort" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="40"/>
|
|
<field name="view_mode">cohort</field>
|
|
<field name="act_window_id" ref="helpdesk_ticket_action_7days_success"/>
|
|
</record>
|
|
|
|
</odoo>
|