feat(Issue): Reset SLA (#18244)
* feat: reset sla * fix: db.get_single_value * feat: timeline entry for reset sla * fix: remove communication from support config * fix: reset sla on split_issue
This commit is contained in:
parent
53e7df078e
commit
7d1d9aa46b
@ -21,13 +21,7 @@ def get_data():
|
||||
"type": "doctype",
|
||||
"name": "Issue Priority",
|
||||
"description": _("Issue Priority."),
|
||||
},
|
||||
{
|
||||
"type": "doctype",
|
||||
"name": "Communication",
|
||||
"description": _("Communication log."),
|
||||
"onboard": 1,
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -2,6 +2,12 @@ frappe.ui.form.on("Issue", {
|
||||
onload: function(frm) {
|
||||
frm.email_field = "raised_by";
|
||||
|
||||
frappe.db.get_value("Support Settings", {name: "Support Settings"}, "allow_resetting_service_level_agreement", (r) => {
|
||||
if (!r.allow_resetting_service_level_agreement) {
|
||||
frm.set_df_property("reset_service_level_agreement", "hidden", 1) ;
|
||||
}
|
||||
});
|
||||
|
||||
if (frm.doc.service_level_agreement) {
|
||||
frappe.call({
|
||||
method: "erpnext.support.doctype.service_level_agreement.service_level_agreement.get_service_level_agreement_filters",
|
||||
@ -73,6 +79,42 @@ frappe.ui.form.on("Issue", {
|
||||
}
|
||||
},
|
||||
|
||||
reset_service_level_agreement: function(frm) {
|
||||
let reset_sla = new frappe.ui.Dialog({
|
||||
title: __("Reset Service Level Agreement"),
|
||||
fields: [
|
||||
{
|
||||
fieldtype: "Data",
|
||||
fieldname: "reason",
|
||||
label: __("Reason"),
|
||||
reqd: 1
|
||||
}
|
||||
],
|
||||
primary_action_label: __("Reset"),
|
||||
primary_action: (values) => {
|
||||
reset_sla.disable_primary_action();
|
||||
reset_sla.hide();
|
||||
reset_sla.clear();
|
||||
|
||||
frappe.show_alert({
|
||||
indicator: 'green',
|
||||
message: __('Resetting Service Level Agreement.')
|
||||
});
|
||||
|
||||
frm.call("reset_service_level_agreement", {
|
||||
reason: values.reason,
|
||||
user: frappe.session.user_email
|
||||
}, () => {
|
||||
reset_sla.enable_primary_action();
|
||||
frm.refresh();
|
||||
frappe.msgprint(__("Service Level Agreement Reset."));
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
reset_sla.show();
|
||||
},
|
||||
|
||||
timeline_refresh: function(frm) {
|
||||
// create button for "Help Article"
|
||||
if(frappe.model.can_create('Help Article')) {
|
||||
|
@ -22,10 +22,12 @@
|
||||
"service_level_agreement",
|
||||
"response_by",
|
||||
"response_by_variance",
|
||||
"reset_service_level_agreement",
|
||||
"cb",
|
||||
"agreement_fulfilled",
|
||||
"resolution_by",
|
||||
"resolution_by_variance",
|
||||
"service_level_agreement_creation",
|
||||
"response",
|
||||
"mins_to_first_response",
|
||||
"first_responded_on",
|
||||
@ -68,9 +70,9 @@
|
||||
"fieldname": "subject",
|
||||
"fieldtype": "Data",
|
||||
"in_global_search": 1,
|
||||
"in_standard_filter": 1,
|
||||
"label": "Subject",
|
||||
"reqd": 1,
|
||||
"in_standard_filter": 1
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "customer",
|
||||
@ -336,11 +338,24 @@
|
||||
"fieldtype": "Float",
|
||||
"label": "Resolution By Variance",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "service_level_agreement_creation",
|
||||
"fieldtype": "Datetime",
|
||||
"hidden": 1,
|
||||
"label": "Service Level Agreement Creation",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"depends_on": "eval: doc.service_level_agreement",
|
||||
"fieldname": "reset_service_level_agreement",
|
||||
"fieldtype": "Button",
|
||||
"label": "Reset Service Level Agreement"
|
||||
}
|
||||
],
|
||||
"icon": "fa fa-ticket",
|
||||
"idx": 7,
|
||||
"modified": "2019-06-30 13:19:38.215525",
|
||||
"modified": "2019-07-11 23:57:22.015881",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Support",
|
||||
"name": "Issue",
|
||||
@ -365,4 +380,4 @@
|
||||
"timeline_field": "customer",
|
||||
"title_field": "subject",
|
||||
"track_seen": 1
|
||||
}
|
||||
}
|
@ -121,6 +121,7 @@ class Issue(Document):
|
||||
|
||||
# Reset SLA
|
||||
if replicated_issue.service_level_agreement:
|
||||
replicated_issue.service_level_agreement_creation = now_datetime()
|
||||
replicated_issue.service_level_agreement = None
|
||||
replicated_issue.agreement_fulfilled = "Ongoing"
|
||||
replicated_issue.response_by = None
|
||||
@ -173,8 +174,9 @@ class Issue(Document):
|
||||
|
||||
if not self.creation:
|
||||
self.creation = now_datetime()
|
||||
self.service_level_agreement_creation = now_datetime()
|
||||
|
||||
start_date_time = get_datetime(self.creation)
|
||||
start_date_time = get_datetime(self.service_level_agreement_creation)
|
||||
self.response_by = get_expected_time_for(parameter='response', service_level=priority, start_date_time=start_date_time)
|
||||
self.resolution_by = get_expected_time_for(parameter='resolution', service_level=priority, start_date_time=start_date_time)
|
||||
|
||||
@ -193,6 +195,23 @@ class Issue(Document):
|
||||
self.set_response_and_resolution_time(priority=self.priority, service_level_agreement=self.service_level_agreement)
|
||||
frappe.msgprint(_("Service Level Agreement has been changed to {0}.").format(self.service_level_agreement))
|
||||
|
||||
def reset_service_level_agreement(self, reason, user):
|
||||
if not frappe.db.get_single_value("Support Settings", "allow_resetting_service_level_agreement"):
|
||||
frappe.throw(_("Allow Resetting Service Level Agreement from Support Settings."))
|
||||
|
||||
frappe.get_doc({
|
||||
"doctype": "Comment",
|
||||
"comment_type": "Info",
|
||||
"reference_doctype": self.doctype,
|
||||
"reference_name": self.name,
|
||||
"comment_email": user,
|
||||
"content": " resetted Service Level Agreement - {0}".format(_(reason)),
|
||||
}).insert(ignore_permissions=True)
|
||||
|
||||
self.service_level_agreement_creation = now_datetime()
|
||||
self.set_response_and_resolution_time(priority=self.priority, service_level_agreement=self.service_level_agreement)
|
||||
self.save()
|
||||
|
||||
def get_expected_time_for(parameter, service_level, start_date_time):
|
||||
current_date_time = start_date_time
|
||||
expected_time = current_date_time
|
||||
|
@ -80,7 +80,8 @@ def make_issue(creation=None, customer=None, index=0):
|
||||
"customer": customer,
|
||||
"raised_by": "test@example.com",
|
||||
"description": "Service Level Agreement Issue",
|
||||
"creation": creation
|
||||
"creation": creation,
|
||||
"service_level_agreement_creation": creation
|
||||
}).insert(ignore_permissions=True)
|
||||
|
||||
return issue
|
||||
|
@ -76,6 +76,7 @@ def create_service_level_agreement(default_service_level_agreement, service_leve
|
||||
|
||||
service_level_agreement = frappe.get_doc({
|
||||
"doctype": "Service Level Agreement",
|
||||
"enable": 1,
|
||||
"default_service_level_agreement": default_service_level_agreement,
|
||||
"service_level": service_level,
|
||||
"holiday_list": holiday_list,
|
||||
|
@ -6,6 +6,7 @@
|
||||
"field_order": [
|
||||
"sb_00",
|
||||
"track_service_level_agreement",
|
||||
"allow_resetting_service_level_agreement",
|
||||
"issues_sb",
|
||||
"close_issue_after_days",
|
||||
"portal_sb",
|
||||
@ -118,10 +119,16 @@
|
||||
"fieldname": "track_service_level_agreement",
|
||||
"fieldtype": "Check",
|
||||
"label": "Track Service Level Agreement"
|
||||
},
|
||||
{
|
||||
"default": "0",
|
||||
"fieldname": "allow_resetting_service_level_agreement",
|
||||
"fieldtype": "Check",
|
||||
"label": "Allow Resetting Service Level Agreement"
|
||||
}
|
||||
],
|
||||
"issingle": 1,
|
||||
"modified": "2019-07-09 17:11:38.216732",
|
||||
"modified": "2019-07-10 22:52:39.663873",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Support",
|
||||
"name": "Support Settings",
|
||||
|
Loading…
x
Reference in New Issue
Block a user