From 488432c0e8c7bfc913f029535bae05c4f7225748 Mon Sep 17 00:00:00 2001 From: Himanshu Warekar Date: Thu, 9 May 2019 11:50:09 +0530 Subject: [PATCH] fix: display sla status --- erpnext/support/doctype/issue/issue.js | 34 ++++++++++++++++++-------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/erpnext/support/doctype/issue/issue.js b/erpnext/support/doctype/issue/issue.js index 2de0451bb3..147505012a 100644 --- a/erpnext/support/doctype/issue/issue.js +++ b/erpnext/support/doctype/issue/issue.js @@ -4,11 +4,12 @@ frappe.ui.form.on("Issue", { }, refresh: function (frm) { - if (frm.doc.service_level_agreement && frm.doc.status !== "Closed") { - set_time_to_resolve_and_response(frm); - } if (frm.doc.status !== "Closed") { + if (frm.doc.service_level_agreement) { + set_time_to_resolve_and_response(frm); + } + frm.add_custom_button(__("Close"), function () { frm.set_value("status", "Closed"); frm.save(); @@ -21,6 +22,22 @@ frappe.ui.form.on("Issue", { }); }, __("Make")); } else { + if (frm.doc.service_level_agreement) { + frm.dashboard.clear_headline(); + + let agreement_status = (frm.doc.agreement_status == "Fulfilled") ? + {"indicator": "green", "msg": "Service Level Agreement has been fulfilled"} : + {"indicator": "red", "msg": "Service Level Agreement Failed"}; + + frm.dashboard.set_headline_alert( + '
' + + '
' + + ' ' + + '
' + + '
' + ); + } + frm.add_custom_button(__("Reopen"), function () { frm.set_value("status", "Open"); frm.save(); @@ -95,8 +112,8 @@ frappe.ui.form.on("Issue", { function set_time_to_resolve_and_response(frm) { frm.dashboard.clear_headline(); - var time_to_respond = get_time_left(frm.doc.response_by); - var time_to_resolve = get_time_left(frm.doc.resolution_by); + var time_to_respond = get_time_left(frm.doc.response_by, frm.doc.agreement_status); + var time_to_resolve = get_time_left(frm.doc.resolution_by, frm.doc.agreement_status); frm.dashboard.set_headline_alert( '
' + @@ -110,12 +127,9 @@ function set_time_to_resolve_and_response(frm) { ); } -function get_time_left(timestamp) { +function get_time_left(timestamp, agreement_status) { const diff = moment(timestamp).diff(moment()); const diff_display = diff >= 44500 ? moment.duration(diff).humanize() : moment(0, 'seconds').format('HH:mm'); - var indicator = "green"; - if (diff_display == '00:00') { - indicator = "red"; - } + let indicator = (diff_display == '00:00' && agreement_status != "Fulfilled") ? "red" : "green"; return {"diff_display": diff_display, "indicator": indicator}; }