Skip to content

Commit

Permalink
fix(ux): ticket: move feedback to master doctype (frappe#1585)
Browse files Browse the repository at this point in the history
  • Loading branch information
ssiyad authored Oct 8, 2023
1 parent eaac0bd commit fefb2e5
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 19 deletions.
6 changes: 3 additions & 3 deletions desk/src/pages/ticket/TicketDetails.vue
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,11 @@
{{ ticket.data.via_customer_portal ? "Portal" : "Mail" }}
</span>
</div>
<div v-if="data.feedback" class="space-y-1.5">
<div v-if="data.feedback_rating" class="space-y-1.5">
<span class="block text-sm text-gray-700">Feedback</span>
<StarRating :rating="data.feedback.rating" />
<StarRating :rating="data.feedback_rating" />
<span class="block font-medium text-gray-900">
{{ data.feedback.label }}
{{ data.feedback_text }}
</span>
<span class="block text-gray-900">
{{ data.feedback_extra }}
Expand Down
9 changes: 2 additions & 7 deletions desk/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,6 @@ export interface ViewLog {
creation: string;
}

export interface TicketFeedback {
name: string;
label: string;
rating: number;
}

export interface Ticket {
_assign: string;
assignee: UserInfo;
Expand All @@ -79,11 +73,12 @@ export interface Ticket {
response_by: string;
first_responded_on: string;
resolution_date: string;
feedback: TicketFeedback;
status: string;
subject: string;
ticket_type: string;
via_customer_portal: string;
feedback_rating?: number;
feedback_text?: string;
feedback_extra?: string;
contact: Contact;
comments: Comment[];
Expand Down
8 changes: 0 additions & 8 deletions helpdesk/helpdesk/doctype/hd_ticket/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ def new(doc, attachments=[]):
def get_one(name):
check_permissions("HD Ticket", None)
QBContact = frappe.qb.DocType("Contact")
QBFeedback = frappe.qb.DocType("HD Ticket Feedback Option")
QBTicket = frappe.qb.DocType("HD Ticket")

_is_agent = is_agent()
Expand Down Expand Up @@ -58,19 +57,12 @@ def get_one(name):
if contact:
contact = contact[0]

feedback = (
frappe.qb.from_(QBFeedback)
.select(QBFeedback.name, QBFeedback.label, QBFeedback.rating)
.where(QBFeedback.name == ticket.feedback)
)

return {
**ticket,
"assignee": get_assignee(ticket._assign),
"communications": get_communications(name),
"comments": get_comments(name),
"contact": contact,
"feedback": feedback.run(as_dict=True).pop() if ticket.feedback else None,
"history": get_history(name),
"template": get_template(ticket.template or DEFAULT_TICKET_TEMPLATE),
"views": get_views(name),
Expand Down
14 changes: 13 additions & 1 deletion helpdesk/helpdesk/doctype/hd_ticket/hd_ticket.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@
"attachment",
"content_type",
"customer_feedback_section",
"feedback_rating",
"feedback_text",
"feedback",
"feedback_extra"
],
Expand Down Expand Up @@ -363,12 +365,22 @@
"fieldtype": "Link",
"label": "Feedback (Option)",
"options": "HD Ticket Feedback Option"
},
{
"fieldname": "feedback_rating",
"fieldtype": "Rating",
"label": "Rating"
},
{
"fieldname": "feedback_text",
"fieldtype": "Data",
"label": "Feedback (Text)"
}
],
"icon": "fa fa-issue",
"idx": 61,
"links": [],
"modified": "2023-09-27 17:10:20.664187",
"modified": "2023-10-08 23:24:56.917977",
"modified_by": "Administrator",
"module": "Helpdesk",
"name": "HD Ticket",
Expand Down
8 changes: 8 additions & 0 deletions helpdesk/helpdesk/doctype/hd_ticket/hd_ticket.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ def before_validate(self):
self.set_customer()
self.set_priority()
self.set_first_responded_on()
self.set_feedback_values()
self.apply_escalation_rule()
self.set_sla()

Expand Down Expand Up @@ -237,6 +238,13 @@ def set_first_responded_on(self):
if self.status == "Replied" and not self.first_responded_on:
self.first_responded_on = frappe.utils.now_datetime()

def set_feedback_values(self):
if not self.feedback:
return
feedback_option = frappe.get_doc("HD Ticket Feedback Option", self.feedback)
self.feedback_rating = feedback_option.rating
self.feedback_text = feedback_option.label

def validate_ticket_type(self):
settings = frappe.get_doc("HD Settings")
if settings.is_ticket_type_mandatory and not self.ticket_type:
Expand Down
18 changes: 18 additions & 0 deletions helpdesk/helpdesk/doctype/hd_ticket/patches/feedback_in_master.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import frappe


def execute():
"""
Move feedback rating and text from `HD Ticket Feedback Option` to `HD Ticket`.
This is sometimes better because it avoids an extra API call when fetching.
"""
for t in frappe.get_all("HD Ticket"):
t = frappe.get_doc("HD Ticket", t.name)
if not t.feedback:
continue
if not frappe.db.exists("HD Ticket Feedback Option", t.feedback):
continue
f = frappe.get_doc("HD Ticket Feedback Option", t.feedback)
t.db_set("feedback_rating", f.rating)
t.db_set("feedback_text", f.label)
frappe.db.commit()
1 change: 1 addition & 0 deletions helpdesk/patches.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ helpdesk.helpdesk.doctype.hd_ticket_feedback_option.patches.label_as_name
helpdesk.helpdesk.doctype.hd_service_level_agreement.patches.missing_sla_creation
helpdesk.helpdesk.doctype.hd_ticket.patches.replace_overdue_failed
helpdesk.patches.create_helpdesk_folder
helpdesk.helpdesk.doctype.hd_ticket.patches.feedback_in_master

0 comments on commit fefb2e5

Please sign in to comment.