oca-ocb-mail/odoo-bringout-oca-ocb-im_livechat/im_livechat/views/discuss_channel_views.xml
Ernad Husremovic daa394e8b0 19.0 vanilla
2026-03-09 09:31:39 +01:00

377 lines
26 KiB
XML

<?xml version="1.0"?>
<odoo>
<data>
<record id="discuss_channel_view_search" model="ir.ui.view">
<field name="name">discuss.channel.search</field>
<field name="model">discuss.channel</field>
<field name="arch" type="xml">
<search string="Search history">
<field name="livechat_agent_partner_ids" string="Agent"/>
<field name="livechat_agent_requesting_help_history"/>
<field name="livechat_agent_providing_help_history"/>
<field name="country_id" string="Country"/>
<field name="livechat_customer_partner_ids" string="Customer"/>
<filter name="filter_my_sessions" domain="[('livechat_operator_id.user_ids', '=', uid)]" string="My Sessions"/>
<separator/>
<filter name="ongoing" string="Ongoing" domain="[('livechat_end_dt', '=', False)]"/>
<separator/>
<filter name="filter_session_rating_happy" domain="[('rating_ids', '!=', False), ('rating_avg', '&gt;=', 3.66)]" string="Happy"/>
<filter name="filter_session_rating_neutral" domain="[('rating_ids', '!=', False), ('rating_avg', '&gt;=', 2.33), ('rating_avg', '&lt;', 3.66)]" string="Neutral"/>
<filter name="fiter_session_rating_unhappy" domain="[('rating_ids', '!=', False), ('rating_avg', '&lt;', 2.33) ]" string="Unhappy"/>
<filter name="filter_session_unrated" domain="[('rating_ids', '=', False)]" string="Unrated"/>
<separator />
<filter name="filter_session_date" date="create_date" string="Session Date">
<filter name="rated_on_last_24_hours" string="Last 24 Hours" domain="[('create_date', '&gt;', '-1d')]"/>
<filter name="rated_on_last_7_days" string="Last 7 Days" domain="[('create_date', '&gt;', 'today -7d +1d')]"/>
<filter name="rated_on_last_30_days" string="Last 30 Days" domain="[('create_date', '&gt;', 'today -30d +1d')]"/>
<filter name="rated_on_last_365_days" string="Last 365 Days" domain="[('create_date', '&gt;', 'today -365d +1d')]"/>
</filter>
<separator/>
<group>
<filter name="group_by_channel" string="Channel" domain="[]" context="{'group_by':'livechat_channel_id'}"/>
<filter name="group_by_agent" string="Agent" domain="[]" context="{'group_by':'livechat_agent_partner_ids'}"/>
<filter name="group_by_agent_requesting_help" domain="[]" context="{'group_by': 'livechat_agent_requesting_help_history'}"/>
<filter name="group_by_agent_providing_help" domain="[]" context="{'group_by': 'livechat_agent_providing_help_history'}"/>
<filter name="group_by_rating" string="Rating" domain="[]" context="{'group_by':'rating_last_text'}"/>
<filter name="group_by_country" string="Country" domain="[]" context="{'group_by':'country_id'}"/>
<filter name="group_by_customer_partner" string="Customer" domain="[]" context="{'group_by':'livechat_customer_partner_ids'}"/>
<separator orientation="vertical"/>
<filter name="group_by_month" string="Session Date" domain="[]" context="{'group_by':'create_date:month'}"/>
</group>
<group>
<filter name="escalated" string="Escalated" domain="[('livechat_is_escalated', '=', True)]" invisible="1"/>
<filter name="handled_by_agent" string="Handled by Agent" domain="[('livechat_agent_history_ids', '!=', False)]" invisible="1"/>
<filter name="handled_by_bot" string="Handled by Bot" domain="[('livechat_channel_member_history_ids.livechat_member_type', '=', 'bot'), ('livechat_agent_history_ids', '=', False)]" invisible="1"/>
<filter name="in_call" string="In Call" domain="[('livechat_agent_history_ids.call_history_ids.end_dt', '=', False)]" invisible="1"/>
</group>
</search>
</field>
</record>
<record id="discuss_channel_view_tree" model="ir.ui.view">
<field name="name">discuss.channel.list</field>
<field name="model">discuss.channel</field>
<field name="arch" type="xml">
<list js_class="im_livechat.discuss_channel_list" sample="1" string="History" create="false" default_order="create_date desc, id desc">
<field name="create_date" string="Date"/>
<field name="livechat_customer_history_ids" string="Customer" widget="many2many_tags_avatar" optional="show"/>
<field name="livechat_agent_history_ids" string="Agents" widget="many2many_tags_avatar" optional="show"/>
<field name="livechat_agent_requesting_help_history" widget="many2one_avatar" optional="hide"/>
<field name="livechat_agent_providing_help_history" widget="many2one_avatar" optional="hide"/>
<field name="livechat_bot_history_ids" string="Chatbot" widget="many2many_tags_avatar" optional="hide"/>
<field name="country_id" optional="show"/>
<field name="livechat_lang_id" optional="show"/>
<field name="livechat_expertise_ids" string="Expertise" widget="many2many_tags" optional="show"/>
<field name="livechat_conversation_tag_ids" string="Tags" widget="many2many_tags" options="{'color_field': 'color'}" optional="hide"/>
<field name="livechat_channel_id" optional="hide"/>
<field name="duration" widget="float_time" options="{'displaySeconds': True}" optional="show"/>
<field name="message_count" string="Messages" optional="show"/>
<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'"
widget="badge" optional="show"/>
<field name="rating_last_feedback" string="Comment" optional="hide"/>
</list>
</field>
</record>
<record id="discuss_channel_view_kanban" model="ir.ui.view">
<field name="name">discuss.channel.kanban</field>
<field name="model">discuss.channel</field>
<field name="arch" type="xml">
<kanban js_class="im_livechat.discuss_channel_kanban" class="o_kanban_mobile" sample="1" quick_create="false" create="False" default_order="create_date desc">
<templates>
<t t-name="card">
<div class="d-flex">
<div class="d-flex flex-column">
<field class="fw-bolder" name="livechat_customer_history_ids" widget="im_livechat.one2many_names"/>
<span class="fw-bold">Date: <field name="create_date" class="fw-normal"/></span>
<span class="fw-bold">Duration: <field class="d-inline fw-normal" name="duration" widget="float_time" options="{'displaySeconds': True}"/></span>
<span class="fw-bold">Messages: <field name="message_count" class="fw-normal"/></span>
<field name="livechat_failure" invisible="1"/>
<field name="livechat_is_escalated" invisible="1"/>
<span t-if="record.livechat_is_escalated.raw_value or record.livechat_failure.raw_value" class="fw-bold">
Status:
<span class="fw-normal">
<t t-if="record.livechat_is_escalated.raw_value">Escalated</t>
<t t-elif="record.livechat_failure.raw_value === 'no_failure'">Success</t>
<t t-else="" t-esc="record.livechat_failure.value"/>
</span>
</span>
</div>
<field name="rating_last_image" string="Rating" widget="image" options='{"size": [40, 40], "img_class": "bg-transparent"}' class="ms-auto" invisible="not rating_last_image"/>
</div>
<footer class="pt-0">
<t t-if="record.country_id.raw_value">
<span class="fw-bold">Country: </span><field string="Country" name="country_id"/>
</t>
<field name="livechat_agent_partner_ids" widget="many2many_avatar_user" class="ms-auto me-1"/>
</footer>
</t>
</templates>
</kanban>
</field>
</record>
<record id="discuss_channel_view_form" model="ir.ui.view">
<field name="name">discuss.channel.form</field>
<field name="model">discuss.channel</field>
<field name="arch" type="xml">
<form string="Session Form" create="false" edit="false" js_class="livechat_session_form">
<sheet>
<div style="width:50%" class="float-end">
<field name="rating_last_image" widget="image" options='{"img_class": "bg-transparent"}' class="float-end bg-view" readonly="1" nolabel="1"/>
<field name="rating_last_feedback" nolabel="1"/>
</div>
<div style="width:50%" class="float-start">
<group>
<field name="name" string="Participants"/>
<field name="create_date" readonly="1" string="Session Date"/>
</group>
</div>
</sheet>
</form>
</field>
</record>
<record id="discuss_channel_view_pivot" model="ir.ui.view">
<field name="name">discuss.channel.pivot</field>
<field name="model">discuss.channel</field>
<field name="arch" type="xml">
<pivot string="Sessions" display_quantity="1" sample="1">
<field name="livechat_operator_id" type="row"/>
<field name="create_date" interval="day" type="col"/>
<field name="rating_last_value" type="measure" string="Rating (%)" widget="im_livechat.rating_percentage"/>
</pivot>
</field>
</record>
<record id="discuss_channel_view_graph" model="ir.ui.view">
<field name="name">discuss.channel.graph</field>
<field name="model">discuss.channel</field>
<field name="arch" type="xml">
<graph string="Sessions" sample="1">
<field name="create_date" interval="day"/>
<field name="rating_last_value" type="measure" string="Rating (%)" widget="im_livechat.rating_percentage"/>
</graph>
</field>
</record>
<record id="discuss_channel_action" model="ir.actions.act_window">
<field name="name">Sessions</field>
<field name="res_model">discuss.channel</field>
<field name="view_mode">kanban,list,pivot,graph,form</field>
<field name="search_view_id" ref="im_livechat.discuss_channel_view_search"/>
<field name="domain">[('livechat_channel_id', '!=', None)]</field>
<field name="context">
{
"search_default_filter_session_date": "custom_rated_on_last_30_days",
"im_livechat_hide_partner_company": True,
}
</field>
<field name="help" type="html">
<p class="o_view_nocontent_empty_folder">
No data yet!
</p><p>
Start a conversation to populate your chat history.
</p>
</field>
</record>
<record id="discuss_channel_action_kanban" model="ir.actions.act_window.view">
<field name="sequence">1</field>
<field name="view_mode">kanban</field>
<field name="view_id" ref="im_livechat.discuss_channel_view_kanban"/>
<field name="act_window_id" ref="im_livechat.discuss_channel_action"/>
</record>
<record id="discuss_channel_action_tree" model="ir.actions.act_window.view">
<field name="sequence">2</field>
<field name="view_mode">list</field>
<field name="view_id" ref="im_livechat.discuss_channel_view_tree"/>
<field name="act_window_id" ref="im_livechat.discuss_channel_action"/>
</record>
<record id="discuss_channel_action_pivot" model="ir.actions.act_window.view">
<field name="sequence">3</field>
<field name="view_mode">pivot</field>
<field name="view_id" ref="im_livechat.discuss_channel_view_pivot"/>
<field name="act_window_id" ref="im_livechat.discuss_channel_action"/>
</record>
<record id="discuss_channel_action_graph" model="ir.actions.act_window.view">
<field name="sequence">4</field>
<field name="view_mode">graph</field>
<field name="view_id" ref="im_livechat.discuss_channel_view_graph"/>
<field name="act_window_id" ref="im_livechat.discuss_channel_action"/>
</record>
<record id="discuss_channel_action_form" model="ir.actions.act_window.view">
<field name="sequence">5</field>
<field name="view_mode">form</field>
<field name="view_id" ref="im_livechat.discuss_channel_view_form"/>
<field name="act_window_id" ref="im_livechat.discuss_channel_action"/>
</record>
<record id="discuss_channel_action_from_livechat_channel" model="ir.actions.act_window">
<field name="name">Sessions</field>
<field name="res_model">discuss.channel</field>
<field name="view_mode">kanban,list,pivot,graph,form</field>
<field name="domain">[('livechat_channel_id', 'in', [active_id])]</field>
<field name="context">{
'search_default_livechat_channel_id': [active_id],
'default_livechat_channel_id': active_id,
}</field>
<field name="search_view_id" ref="discuss_channel_view_search"/>
<field name="help" type="html">
<p class="o_view_nocontent_empty_folder">No data yet!</p>
<p>Start a conversation to populate your chat history.</p>
</field>
</record>
<record id="discuss_channel_action_livechat_kanban" model="ir.actions.act_window.view">
<field name="sequence">1</field>
<field name="view_mode">kanban</field>
<field name="view_id" ref="im_livechat.discuss_channel_view_kanban"/>
<field name="act_window_id" ref="im_livechat.discuss_channel_action_from_livechat_channel"/>
</record>
<record id="discuss_channel_action_livechat_tree" model="ir.actions.act_window.view">
<field name="sequence">2</field>
<field name="view_mode">list</field>
<field name="view_id" ref="im_livechat.discuss_channel_view_tree"/>
<field name="act_window_id" ref="im_livechat.discuss_channel_action_from_livechat_channel"/>
</record>
<record id="discuss_channel_action_livechat_pivot" model="ir.actions.act_window.view">
<field name="sequence">3</field>
<field name="view_mode">pivot</field>
<field name="view_id" ref="im_livechat.discuss_channel_view_pivot"/>
<field name="act_window_id" ref="im_livechat.discuss_channel_action_from_livechat_channel"/>
</record>
<record id="discuss_channel_action_livechat_graph" model="ir.actions.act_window.view">
<field name="sequence">4</field>
<field name="view_mode">graph</field>
<field name="view_id" ref="im_livechat.discuss_channel_view_graph"/>
<field name="act_window_id" ref="im_livechat.discuss_channel_action_from_livechat_channel"/>
</record>
<record id="discuss_channel_action_livechat_form" model="ir.actions.act_window.view">
<field name="sequence">5</field>
<field name="view_mode">form</field>
<field name="view_id" ref="im_livechat.discuss_channel_view_form"/>
<field name="act_window_id" ref="im_livechat.discuss_channel_action_from_livechat_channel"/>
</record>
<record id="discuss_channel_looking_for_help_view_search" model="ir.ui.view">
<field name="name">discuss.channel.looking.for.help.view.search</field>
<field name="model">discuss.channel</field>
<field name="arch" type="xml">
<search string="Search history">
<field name="livechat_agent_partner_ids" string="Agent"/>
<field name="description"/>
<field name="country_id"/>
<field name="livechat_lang_id"/>
<field name="livechat_expertise_ids" string="Expertise"/>
<field name="livechat_conversation_tag_ids" string="Tags"/>
<field name="livechat_bot_partner_ids" string="Chatbot"/>
<field name="livechat_customer_partner_ids" string="Customer"/>
<filter name="filter_my_sessions" domain="[('livechat_operator_id.user_ids', '=', uid)]" string="My Sessions"/>
<filter name="filter_my_languages" string="My Languages" domain="[('livechat_matches_self_lang', '=', True)]"/>
<filter name="filter_my_expertise" string="My Expertise" domain="[('livechat_matches_self_expertise', '=', True)]"/>
<separator />
<filter name="filter_session_date" date="create_date" string="Session Date">
<filter name="created_on_last_24_hours" string="Last 24 Hours" domain="[('create_date', '&gt;', '-24H')]"/>
<filter name="created_on_last_7_days" string="Last 7 Days" domain="[('create_date', '&gt;=', 'today -7d +1d')]"/>
<filter name="created_on_last_30_days" string="Last 30 Days" domain="[('create_date', '&gt;=', 'today -30d +1d')]"/>
<filter name="created_on_last_365_days" string="Last 365 Days" domain="[('create_date', '&gt;=', 'today -365d +1d')]"/>
</filter>
<separator/>
<group>
<filter name="group_by_channel" string="Channel" domain="[]" context="{'group_by':'livechat_channel_id'}"/>
<filter name="group_by_agent" string="Agent" domain="[]" context="{'group_by':'livechat_agent_partner_ids'}"/>
<filter name="group_by_country" string="Country" domain="[]" context="{'group_by':'country_id'}"/>
<filter name="group_by_lang" string="Language" domain="[]" context="{'group_by':'livechat_lang_id'}"/>
<filter name="group_by_expertise" string="Expertise" domain="[]" context="{'group_by':'livechat_expertise_ids'}"/>
<filter name="group_by_tags" string="Tags" domain="[]" context="{'group_by':'livechat_conversation_tag_ids'}"/>
<filter name="group_by_chatbot" string="Chatbot" domain="[]" context="{'group_by':'livechat_bot_partner_ids'}"/>
<filter name="group_by_customer_partner" string="Customer" domain="[]" context="{'group_by':'livechat_customer_partner_ids'}"/>
<separator orientation="vertical"/>
<filter name="group_by_month" string="Session Date" domain="[]" context="{'group_by':'create_date:month'}"/>
</group>
</search>
</field>
</record>
<record id="discuss_channel_looking_for_help_action" model="ir.actions.act_window">
<field name="name">Looking for Help</field>
<field name="res_model">discuss.channel</field>
<field name="view_mode">list,kanban,form</field>
<field name="domain">[("livechat_status", "=", "need_help")]</field>
<field name="context">
{
"search_default_filter_session_date": "custom_created_on_last_30_days",
"im_livechat_hide_partner_company": True,
}
</field>
<field name="search_view_id" ref="im_livechat.discuss_channel_looking_for_help_view_search"/>
<field name="help" type="html">
<p class="o_view_nocontent_empty_folder">No conversations found</p>
<p>Help out by joining requests from teammates, or mark your own conversations as needing help.</p>
</field>
</record>
<record id="discuss_channel_looking_for_help_view_list" model="ir.ui.view">
<field name="name">discuss.channel.looking.for.help.list</field>
<field name="model">discuss.channel</field>
<field name="arch" type="xml">
<list js_class="im_livechat.discuss_channel_looking_for_help_list" sample="1" string="History" create="false" default_order="create_date asc">
<field name="create_date" string="Date"/>
<field name="description" string="Description" optional="show"/>
<field name="livechat_agent_history_ids" string="Agents" widget="many2many_tags_avatar" optional="show"/>
<field name="livechat_bot_history_ids" string="Bot" widget="many2many_tags_avatar" optional="hide"/>
<field name="livechat_customer_history_ids" string="Customer" widget="many2many_tags_avatar" optional="show"/>
<field name="country_id" optional="show"/>
<field name="livechat_lang_id"/>
<field name="livechat_expertise_ids" string="Expertise" widget="many2many_tags" optional="show"/>
<field name="livechat_conversation_tag_ids" string="Tags" widget="many2many_tags" options="{'color_field': 'color'}" optional="hide"/>
<field name="livechat_channel_id" optional="hide"/>
<field name="duration" widget="float_time" options="{'displaySeconds': True}" optional="hide"/>
<field name="message_count" string="Messages" optional="hide"/>
</list>
</field>
</record>
<record id="discuss_channel_looking_for_help_action_list" model="ir.actions.act_window.view">
<field name="sequence">1</field>
<field name="view_mode">list</field>
<field name="view_id" ref="im_livechat.discuss_channel_looking_for_help_view_list"/>
<field name="act_window_id" ref="im_livechat.discuss_channel_looking_for_help_action"/>
</record>
<record id="discuss_channel_looking_for_help_view_kanban" model="ir.ui.view">
<field name="name">discuss.channel.kanban</field>
<field name="model">discuss.channel</field>
<field name="arch" type="xml">
<kanban js_class="im_livechat.discuss_channel_looking_for_help_kanban" class="o_kanban_mobile" sample="1" quick_create="false" create="False" default_order="create_date desc">
<templates>
<t t-name="card">
<field class="fw-bolder" name="livechat_customer_history_ids" widget="im_livechat.one2many_names"/>
<span class="fw-bold">Date: <field name="create_date" class="fw-normal"/></span>
<span class="fw-bold" t-if="record.country_id.raw_value">Country: <field name="country_id" class="fw-normal"/></span>
<span class="fw-bold" t-if="record.livechat_lang_id.raw_value">Language: <field name="livechat_lang_id" class="fw-normal"/></span>
<div class="d-flex gap-1 fw-bold" t-if="record.livechat_expertise_ids.raw_value.length">Expertise: <field name="livechat_expertise_ids" class="fw-normal"/></div>
<footer class="pt-0">
<field name="livechat_agent_partner_ids" widget="many2many_avatar_user" class="ms-auto me-1"/>
</footer>
</t>
</templates>
</kanban>
</field>
</record>
<record id="discuss_channel_looking_for_help_action_kanban" model="ir.actions.act_window.view">
<field name="sequence">2</field>
<field name="view_mode">kanban</field>
<field name="view_id" ref="im_livechat.discuss_channel_looking_for_help_view_kanban"/>
<field name="act_window_id" ref="im_livechat.discuss_channel_looking_for_help_action"/>
</record>
<record id="discuss_channel_looking_for_help_action_form" model="ir.actions.act_window.view">
<field name="sequence">3</field>
<field name="view_mode">form</field>
<field name="view_id" ref="im_livechat.discuss_channel_view_form"/>
<field name="act_window_id" ref="im_livechat.discuss_channel_looking_for_help_action"/>
</record>
</data>
</odoo>