summaryrefslogtreecommitdiff
path: root/sh_helpdesk/views/helpdesk_ticket_portal_template.xml
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 17:14:58 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 17:14:58 +0700
commit1ca3b3df3421961caec3b747a364071c80f5c7da (patch)
tree6778a1f0f3f9b4c6e26d6d87ccde16e24da6c9d6 /sh_helpdesk/views/helpdesk_ticket_portal_template.xml
parentb57188be371d36d96caac4b8d65a40745c0e972c (diff)
initial commit
Diffstat (limited to 'sh_helpdesk/views/helpdesk_ticket_portal_template.xml')
-rw-r--r--sh_helpdesk/views/helpdesk_ticket_portal_template.xml663
1 files changed, 663 insertions, 0 deletions
diff --git a/sh_helpdesk/views/helpdesk_ticket_portal_template.xml b/sh_helpdesk/views/helpdesk_ticket_portal_template.xml
new file mode 100644
index 0000000..e08ee6f
--- /dev/null
+++ b/sh_helpdesk/views/helpdesk_ticket_portal_template.xml
@@ -0,0 +1,663 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<odoo>
+ <template id="sh_portal_assets" inherit_id="portal.assets_frontend">
+ <xpath expr="." position="inside">
+ <script type="text/javascript" src="/sh_helpdesk/static/src/js/portal.js" />
+ <link rel="stylesheet" href="/sh_helpdesk/static/src/css/bootstrap-multiselect.min.css" type="text/css"/>
+ <script type="text/javascript" src="/sh_helpdesk/static/src/js/bootstrap-multiselect.min.js"></script>
+ </xpath>
+ </template>
+ <template id="portal_my_home_menu_ticket" name="Portal layout : ticket menu entries" inherit_id="portal.portal_breadcrumbs" priority="30">
+ <xpath expr="//ol[hasclass('o_portal_submenu')]" position="inside">
+ <li t-if="page_name == 'ticket' or ticket" t-attf-class="breadcrumb-item #{'active ' if not ticket else ''}">
+ <a t-if="ticket" t-attf-href="/my/tickets?{{ keep_query() }}">Tickets</a>
+ <t t-else="">Tickets</t>
+ </li>
+ <li t-if="ticket" class="breadcrumb-item active">
+ <t t-esc="ticket.name" t-if="ticket.name" />
+ <t t-else=""><em>Ticket</em></t>
+ </li>
+ </xpath>
+ </template>
+
+ <template id="portal_my_home_ticket" name="Portal My Home : ticket entries" inherit_id="portal.portal_my_home" priority="30">
+ <xpath expr="//div[hasclass('o_portal_docs')]" position="inside">
+ <t t-call="portal.portal_docs_entry">
+ <t t-set="title">Tickets</t>
+ <t t-set="url" t-value="'/my/tickets'" />
+ <t t-set="count" t-value="ticket_count" />
+ </t>
+ </xpath>
+ </template>
+
+ <template id="portal_my_tickets" name="My Tickets">
+ <t t-call="portal.portal_layout">
+ <t t-set="breadcrumbs_searchbar" t-value="True" />
+
+ <t t-call="portal.portal_searchbar">
+ <t t-set="title">Tickets</t>
+ <div class="form-inline ml-lg-4">
+ <a id="new_request" class="btn btn-success btn-sm" name="new_request" title="Create Support Request" aria-label="Create Support Request" role="button"><i class="fa fa-plus" /> Create New</a>
+ </div>
+ </t>
+ <div id="createticketModal" class="modal fade" role="dialog">
+ <div class="modal-dialog">
+ <!-- Modal content-->
+ <div class="modal-content">
+ <div class="modal-header">
+ <h4 class="modal-title">Create Helpdesk Ticket</h4>
+ <button type="button" class="close" data-dismiss="modal">&amp;times;</button>
+ </div>
+ <div class="modal-body">
+ <form action="/portal-create-ticket" id="form_id" method="POST" class="form-horizontal mt32" enctype="multipart/form-data">
+ <t t-if="request.env.user.has_group('base.group_portal') and request.env.user.sh_portal_user_access or not request.env.user.has_group('base.group_portal')">
+ <div class="row">
+ <div class="col-6">
+ <label class="control-label" for="partner">Partner:</label>
+ <input class="form-control" list="partner_ids" name="partner" id="partner" />
+ <input type="hidden" name="partner_id" id="partner_id" />
+ <datalist id="partner_ids"> </datalist>
+ </div>
+ </div>
+ </t>
+ <div class="row">
+ <t t-if="request.env.user.has_group('base.group_portal') and not request.env.user.sh_portal_user_access">
+ <div class="col-6">
+ <div t-attf-class="form-group #{error and 'portal_contact_name' in error and 'has-error' or ''}">
+ <label class="control-label" for="portal_contact_name">Name</label>
+ <input type="text" class="form-control" id="portal_contact_name" name="portal_contact_name" t-att-value="request.env.user.partner_id.name" readonly="True" />
+ </div>
+ </div>
+ <div class="col-6">
+ <div name="portal_email_from_container" t-attf-class="form-group #{error and 'portal_email' in error and 'has-error' or ''}">
+ <label class="control-label" for="portal_email">Email</label>
+ <input type="email" class="form-control" id="portal_email" name="portal_email" t-att-value="request.env.user.partner_id.email" readonly="True" />
+ </div>
+ </div>
+ </t>
+ <t t-else="">
+ <div class="col-6">
+ <div t-attf-class="form-group #{error and 'portal_contact_name' in error and 'has-error' or ''}">
+ <label class="control-label" for="portal_contact_name">Name</label>
+ <input type="text" class="form-control" id="portal_contact_name" name="portal_contact_name" required="True" />
+ </div>
+ </div>
+ <div class="col-6">
+ <div name="portal_email_from_container" t-attf-class="form-group #{error and 'portal_email' in error and 'has-error' or ''}">
+ <label class="control-label" for="portal_email">Email</label>
+ <input type="email" class="form-control" id="portal_email" name="portal_email" required="True" />
+ </div>
+ </div>
+ </t>
+ </div>
+ <t t-if="request.env.user.sh_portal_user_access and request.env.user.sh_portal_user_access=='manager'">
+ <div class="row">
+ <t t-if="request.env.company.sh_display_multi_user">
+ <div class="col-4">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_team">Team</label>
+ <select class="form-control form-field o_website_form_required_custom" id="portal_team" name="portal_team">
+ <option value="team">Select Team</option>
+ <t t-foreach="request.env['helpdesk.team'].sudo().search([])" t-as="team">
+ <option t-att-value="team.id"><t t-esc="team.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ <div class="col-4">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_assign_user">Assign To</label>
+ <select class="form-control form-field o_website_form_required_custom" id="portal_assign_user" name="portal_assign_user">
+ <option value="user">Select Assign User</option>
+ <t t-foreach="request.env['res.users'].sudo().search(['|',('share','=',False),('sh_portal_user_access','!=',False)])" t-as="user">
+ <option t-att-value="user.id"><t t-esc="user.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ <div class="col-4">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_assign_multi_user">Assign Multi Users</label>
+ <select class="form-control form-field o_website_form_required_custom" multiple="multiple" id="portal_assign_multi_user" name="portal_assign_multi_user">
+ <option value="users">Select Multi Users</option>
+ <t t-foreach="request.env['res.users'].sudo().search(['|',('share','=',False),('sh_portal_user_access','!=',False)])" t-as="user">
+ <option t-att-value="user.id"><t t-esc="user.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ </t>
+ <t t-if="not request.env.company.sh_display_multi_user">
+ <div class="col-6">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_team">Team</label>
+ <select class="form-control form-field o_website_form_required_custom" id="portal_team" name="portal_team">
+ <option value="team">Select Team</option>
+ <t t-foreach="request.env['helpdesk.team'].sudo().search([])" t-as="team">
+ <option t-att-value="team.id"><t t-esc="team.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ <div class="col-6">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_assign_user">Assign To</label>
+ <select class="form-control form-field o_website_form_required_custom" id="portal_assign_user" name="portal_assign_user">
+ <option value="user">Select Assign User</option>
+ <t t-foreach="request.env['res.users'].sudo().search(['|',('share','=',False),('sh_portal_user_access','!=',False)])" t-as="user">
+ <option t-att-value="user.id"><t t-esc="user.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ </t>
+ </div>
+ </t>
+ <t t-if="request.env.user.sh_portal_user_access and request.env.user.sh_portal_user_access=='leader'">
+ <div class="row">
+ <t t-if="request.env.company.sh_display_multi_user">
+ <div class="col-4">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_team">Team</label>
+ <select class="form-control form-field o_website_form_required_custom" id="portal_team" name="portal_team">
+ <option value="team">Select Team</option>
+ <t t-foreach="request.env['helpdesk.team'].sudo().search(['|',('team_head','=',request.env.user.id),('team_members','in',[request.env.user.id])])" t-as="team">
+ <option t-att-value="team.id"><t t-esc="team.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ <div class="col-4">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_assign_user">Assign To</label>
+ <select class="form-control form-field o_website_form_required_custom" id="portal_assign_user" name="portal_assign_user">
+ <option value="user">Select Assign User</option>
+ <t t-foreach="request.env['res.users'].sudo().search(['|',('share','=',False),('sh_portal_user_access','!=',False)])" t-as="user">
+ <option t-att-value="user.id"><t t-esc="user.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ <div class="col-4">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_assign_multi_user">Assign Multi Users</label>
+ <select class="form-control form-field o_website_form_required_custom" multiple="multiple" id="portal_assign_multi_user" name="portal_assign_multi_user">
+ <option value="users">Select Assign User</option>
+ <t t-foreach="request.env['res.users'].sudo().search(['|',('share','=',False),('sh_portal_user_access','!=',False)])" t-as="user">
+ <option t-att-value="user.id"><t t-esc="user.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ </t>
+ <t t-if="not request.env.company.sh_display_multi_user">
+ <div class="col-6">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_team">Team</label>
+ <select class="form-control form-field o_website_form_required_custom" id="portal_team" name="portal_team">
+ <option value="team">Select Team</option>
+ <t t-foreach="request.env['helpdesk.team'].sudo().search(['|',('team_head','=',request.env.user.id),('team_members','in',[request.env.user.id])])" t-as="team">
+ <option t-att-value="team.id"><t t-esc="team.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ <div class="col-6">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_assign_user">Assign To</label>
+ <select class="form-control form-field o_website_form_required_custom" id="portal_assign_user" name="portal_assign_user">
+ <option value="user">Select Assign User</option>
+ <t t-foreach="request.env['res.users'].sudo().search(['|',('share','=',False),('sh_portal_user_access','!=',False)])" t-as="user">
+ <option t-att-value="user.id"><t t-esc="user.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ </t>
+ </div>
+ </t>
+ <div class="row">
+ <div class="col-6">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_category">Category</label>
+ <select class="form-control form-field o_website_form_required_custom" id="portal_category" name="portal_category">
+ <option value="category">Select Category</option>
+ <t t-foreach="request.env['helpdesk.category'].sudo().search([])" t-as="category">
+ <option t-att-value="category.id"><t t-esc="category.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ <div class="col-6">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_subcategory">Sub Category</label>
+ <select class="form-control form-field o_website_form_required_custom" id="portal_subcategory" name="portal_subcategory">
+ <option value="sub_category">Select Sub Category</option>
+ <t t-foreach="request.env['helpdesk.subcategory'].sudo().search([])" t-as="subcategory">
+ <option t-att-value="subcategory.id"><t t-esc="subcategory.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-6">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_subject">Subject</label>
+ <select class="form-control form-field o_website_form_required_custom" id="portal_subject" name="portal_subject">
+ <option value="subject">Select Subject</option>
+ <t t-foreach="request.env['helpdesk.sub.type'].sudo().search([])" t-as="subject">
+ <option t-att-value="subject.id"><t t-esc="subject.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ <div class="col-6">
+ <div t-attf-class="form-group #{error and 'portal_description' in error and 'has-error' or ''}">
+ <label class="control-label" for="portal_description">Description</label>
+ <textarea id="description" name="portal_description" class="form-control form-field o_website_form_required_custom" placeholder="Description" />
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-6">
+ <div t-attf-class="form-group">
+ <label class="control-label" for="portal_priority">Priority</label>
+ <select class="form-control form-field o_website_form_required_custom" id="portal_priority" name="portal_priority">
+ <option value="priority">Select Priority</option>
+ <t t-foreach="request.env['helpdesk.priority'].sudo().search([])" t-as="priority">
+ <option t-att-value="priority.id"><t t-esc="priority.name" /></option>
+ </t>
+ </select>
+ </div>
+ </div>
+ <div class="col-6">
+ <div name="portal_file_container" t-attf-class="form-group #{error and 'portal_file' in error and 'has-error' or ''}">
+ <label class="control-label" for="portal_file">Attachments</label>
+ <label class="custom-file">
+ <input name="portal_file" id="portal_file" type="file" multiple="multiple" />
+ <span class="custom-file-control" />
+ </label>
+ </div>
+ </div>
+ </div>
+ <div class="row" style="text-align: right;">
+ <div class="col-12">
+ <button type="submit" id="create_helpdesk_ticket" class="btn btn-primary">Create Ticket</button>
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+ </div>
+ </div>
+ <t t-if="not tickets">
+ <p>There are currently no tickets for your account.</p>
+ </t>
+ <t t-if="grouped_tickets" t-call="portal.portal_table">
+ <t t-foreach="grouped_tickets" t-as="ticket">
+ <thead>
+ <tr t-attf-class="{{'thead-light' if not groupby == 'none' else ''}}">
+ <th t-if="groupby == 'create_by'">
+ <em class="font-weight-normal text-muted">Created By:</em>
+ <span t-field="ticket[0].create_uid.name" />
+ </th>
+ <th t-if="groupby == 'ticket_type'">
+ <em class="font-weight-normal text-muted">Ticket Type:</em>
+ <span t-field="ticket[0].ticket_type.name" />
+ </th>
+ <th t-if="groupby == 'status'">
+ <em class="font-weight-normal text-muted">Status:</em>
+ <span t-esc="ticket[0].stage_id.name" />
+ </th>
+ <th t-if="groupby == 'customer'">
+ <em class="font-weight-normal text-muted">Customer:</em>
+ <span t-esc="ticket[0].partner_id.name" />
+ </th>
+ <th t-if="groupby == 'category'">
+ <em class="font-weight-normal text-muted">Category:</em>
+ <span t-esc="ticket[0].category_id.name" />
+ </th>
+ <th t-if="groupby == 'subcategory'">
+ <em class="font-weight-normal text-muted">Sub Category:</em>
+ <span t-esc="ticket[0].sub_category_id.name" />
+ </th>
+
+ <th t-if="groupby == 'subject'">
+ <em class="font-weight-normal text-muted">Subject:</em>
+ <span t-esc="ticket[0].subject_id.name" />
+ </th>
+ <th t-if="groupby == 'priority'">
+ <em class="font-weight-normal text-muted">Priority:</em>
+ <span t-esc="ticket[0].priority.name" />
+ </th>
+ <th t-if="groupby == 'state'">
+ <em class="font-weight-normal text-muted">Reply Status:</em>
+ <span t-esc="ticket[0].state" />
+ </th>
+ <th>Create Date</th>
+ <th>Last Update Date</th>
+ <th>Ticket Type</th>
+ <th>Status</th>
+ </tr>
+ </thead>
+ <tbody>
+ <t t-foreach="ticket" t-as="t">
+ <tr>
+ <td>
+ <a t-att-href="t.get_portal_url()" t-att-title="t.name">
+ <t t-esc="t.name" t-if="t.name" />
+ <em t-else="">Ticket</em>
+ </a>
+ </td>
+ <td><span t-field="t.create_date" t-options='{"widget": "date"}' /></td>
+ <td><span t-field="t.write_date" t-options='{"widget": "date"}' /></td>
+ <td><span t-field="t.ticket_type" /></td>
+ <td><span t-field="t.stage_id" /></td>
+ </tr>
+ </t>
+ </tbody>
+ </t>
+ </t>
+ </t>
+ </template>
+
+ <template id="portal_ticket_page" name="Ticket Portal Template" inherit_id="portal.portal_sidebar" primary="True">
+ <xpath expr="//div[hasclass('o_portal_sidebar')]" position="inside">
+ <div class="row mt16 o_portal_ticket_sidebar">
+ <!-- Sidebar -->
+ <t t-call="portal.portal_record_sidebar">
+ <t t-set="classes" t-value="'col-12 col-lg flex-lg-grow-0 d-print-none'" />
+ <t t-set="title">
+ <h2 class="mb-0">
+ <b t-if="ticket" t-field="ticket.name" />
+ <b t-else="Ticket" t-field="ticket.name" />
+ </h2>
+ </t>
+
+ <t t-set="entries">
+ <ul class="list-group list-group-flush flex-wrap flex-row flex-lg-column">
+ <li class="list-group-item flex-grow-1">
+ <div class="o_download_pdf btn-toolbar flex-sm-nowrap">
+ <div class="btn-group flex-grow-1 mr-1 mb-1">
+ <a class="btn btn-secondary btn-block o_download_btn" t-att-href="ticket.get_portal_url(report_type='pdf', download=True)" title="Download"><i class="fa fa-download" /> Download</a>
+ </div>
+ </div>
+ </li>
+ <li t-if="ticket.user_id" class="list-group-item flex-grow-1">
+ <div class="small mb-1"><strong class="text-muted">Your Contact</strong></div>
+ <div class="row">
+ <div class="col flex-grow-0 pr-2">
+ <img t-if="ticket.user_id.image_128" class="rounded-circle mt-1 o_portal_contact_img" t-att-src="image_data_uri(ticket.user_id.image_128)" alt="Contact" />
+ <img t-else="" class="rounded-circle mt-1 o_portal_contact_img" src="/web/static/src/img/user_menu_avatar.png" alt="Contact" />
+ </div>
+ <div class="col pl-0" style="min-width: 150px;">
+ <span t-field="ticket.user_id" t-options='{"widget": "contact", "fields": ["name", "phone"], "no_marker": True}' />
+ <a href="#discussion" class="small"><i class="fa fa-comment"></i> Send message</a>
+ </div>
+ </div>
+ </li>
+ </ul>
+ </t>
+ </t>
+
+ <!-- Page Content -->
+ <div id="ticket_content" class="col-12 col-lg justify-content-end">
+ <div t-attf-class="card #{'pb-5' if report_type == 'html' else ''}">
+ <div t-call="sh_helpdesk.helpdesk_ticket_portal_content" />
+ </div>
+
+ <!-- chatter -->
+ <div id="ticket_communication" class="mt-4">
+ <h2>History</h2>
+ <t t-call="portal.message_thread">
+ <t t-set="object" t-value="ticket" />
+ </t>
+ </div>
+ </div>
+ </div>
+ </xpath>
+ </template>
+ <template id="helpdesk_ticket_portal_content" name="Helpdesk Ticket Portal Content">
+ <!-- Intro -->
+
+ <div id="introduction" t-attf-class="pb-2 pt-3 #{'card-header bg-white' if report_type == 'html' else ''}">
+ <h2 class="my-0">
+ <strong><em t-esc="ticket.name" /></strong>
+ </h2>
+ </div>
+ <div t-attf-class="#{'card-body' if report_type == 'html' else ''}">
+ <div id="informations">
+ <div class="row">
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Ticket Type</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.ticket_type" />
+ </div>
+ </div>
+ </div>
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Create Date</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.create_date" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Last Update Date</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.write_date" />
+ </div>
+ </div>
+ </div>
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Person Name</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.person_name" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Ticket Subject Type</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.subject_id" />
+ </div>
+ </div>
+ </div>
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Email</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.email" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Category</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.category_id" />
+ </div>
+ </div>
+ </div>
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Replied Date</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.replied_date" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Sub Category</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.sub_category_id" />
+ </div>
+ </div>
+ </div>
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Closed Date</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.close_date" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Priority</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.priority" />
+ </div>
+ </div>
+ </div>
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Closed By</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.close_by" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Cancelled Date</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.cancel_date" />
+ </div>
+ </div>
+ </div>
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Cancelled By</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.cancel_by" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Status</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.stage_id" />
+ </div>
+ </div>
+ </div>
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Cancelled Reason</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.cancel_reason" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <t t-if="ticket.comment">
+ <div class="row">
+ <div class="mb-3 col-12">
+ <strong>Customer Comment</strong>
+ </div>
+ </div>
+ <div class="row">
+ <div class="mb-3 col-12">
+ <span t-field="ticket.comment" />
+ </div>
+ </div>
+ </t>
+ <t t-if="ticket.description">
+ <div class="row">
+ <div class="mb-3 col-12">
+ <strong>Description</strong>
+ </div>
+ </div>
+ <div class="row">
+ <div class="mb-3 col-12">
+ <span t-field="ticket.description" />
+ </div>
+ </div>
+ </t>
+ <t t-if="ticket.priority_new and ticket.customer_comment">
+ <div class="row">
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Customer Rating</strong>
+ </div>
+ <div class="col-6">
+ <span class="float-right" title="Rating" role="img" t-attf-aria-label="Rating: #{ticket.priority_new} on 3">
+ <t t-foreach="range(2, 7)" t-as="i">
+ <span t-attf-class="fa fa-lg fa-star#{'' if i &lt;= int(ticket.priority_new) else '-o'}" />
+ </t>
+ </span>
+ </div>
+ </div>
+ </div>
+ <div class="mb-3 col-6">
+ <div class="row">
+ <div class="col-6">
+ <strong>Customer Comment</strong>
+ </div>
+ <div class="col-6">
+ <span t-field="ticket.customer_comment" />
+ </div>
+ </div>
+ </div>
+ </div>
+ </t>
+ </div>
+ </div>
+ </template>
+</odoo>