refactor: move pause SLA configuration to SLA DocType

This commit is contained in:
Rucha Mahabal 2020-06-05 18:23:39 +05:30
parent d7d3ca4214
commit 73326d308b
10 changed files with 43 additions and 44 deletions

View File

@ -4,7 +4,6 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe import frappe
from erpnext.setup.install import add_sla_hold_statuses_to_support_settings
def execute(): def execute():
# add holiday list and employee group fields in SLA # add holiday list and employee group fields in SLA
@ -79,9 +78,6 @@ def execute():
frappe.delete_doc('DocType', 'Service Level') frappe.delete_doc('DocType', 'Service Level')
# add SLA hold statuses to Support Settings
add_sla_hold_statuses_to_support_settings()
def convert_to_seconds(value, unit): def convert_to_seconds(value, unit):
seconds = 0 seconds = 0

View File

@ -25,7 +25,6 @@ def after_install():
create_default_success_action() create_default_success_action()
create_default_energy_point_rules() create_default_energy_point_rules()
add_company_to_session_defaults() add_company_to_session_defaults()
add_sla_hold_statuses_to_support_settings()
frappe.db.commit() frappe.db.commit()
@ -107,12 +106,3 @@ def add_company_to_session_defaults():
}) })
settings.save() settings.save()
def add_sla_hold_statuses_to_support_settings():
settings = frappe.get_single("Support Settings")
settings.append("pause_sla_on_status", {
"status": "Replied"
})
settings.append("pause_sla_on_status", {
"status": "Hold"
})
settings.save()

View File

@ -43,11 +43,11 @@ frappe.ui.form.on("Issue", {
frappe.call({ frappe.call({
'method': 'frappe.client.get', 'method': 'frappe.client.get',
args: { args: {
doctype: 'Support Settings', doctype: 'Service Level Agreement',
name: 'Support Settings' name: frm.doc.service_level_agreement
}, },
callback: function(data) { callback: function(data) {
let statuses = data.message.pause_sla_on_status; let statuses = data.message.pause_sla_on;
const hold_statuses = []; const hold_statuses = [];
$.each(statuses, (_i, entry) => { $.each(statuses, (_i, entry) => {
hold_statuses.push(entry.status); hold_statuses.push(entry.status);

View File

@ -78,9 +78,10 @@ class Issue(Document):
self.handle_hold_time(status) self.handle_hold_time(status)
def handle_hold_time(self, status): def handle_hold_time(self, status):
if frappe.db.get_single_value("Support Settings", "track_service_level_agreement"): if self.service_level_agreement:
# set response and resolution variance as None as the issue is on Hold for status as Replied # set response and resolution variance as None as the issue is on Hold for status as Replied
pause_sla_on = frappe.db.get_all("Pause SLA On Status", fields=["status"]) pause_sla_on = frappe.db.get_all("Pause SLA On Status", fields=["status"],
filters={"parent": self.service_level_agreement})
hold_statuses = [entry.status for entry in pause_sla_on] hold_statuses = [entry.status for entry in pause_sla_on]
if self.status in hold_statuses and status not in hold_statuses: if self.status in hold_statuses and status not in hold_statuses:

View File

@ -5,7 +5,6 @@ from __future__ import unicode_literals
import frappe import frappe
import unittest import unittest
from erpnext.support.doctype.service_level_agreement.test_service_level_agreement import create_service_level_agreements_for_issues from erpnext.support.doctype.service_level_agreement.test_service_level_agreement import create_service_level_agreements_for_issues
from erpnext.setup.install import add_sla_hold_statuses_to_support_settings
from frappe.utils import now_datetime, get_datetime from frappe.utils import now_datetime, get_datetime
import datetime import datetime
from datetime import timedelta from datetime import timedelta
@ -101,7 +100,6 @@ class TestIssue(unittest.TestCase):
self.assertEqual(issue.user_resolution_time, 1200) self.assertEqual(issue.user_resolution_time, 1200)
def test_hold_time_on_replied(self): def test_hold_time_on_replied(self):
add_sla_hold_statuses_to_support_settings()
creation = datetime.datetime(2020, 3, 4, 4, 0) creation = datetime.datetime(2020, 3, 4, 4, 0)
issue = make_issue(creation, index=1) issue = make_issue(creation, index=1)

View File

@ -2,5 +2,15 @@
// For license information, please see license.txt // For license information, please see license.txt
frappe.ui.form.on('Service Level Agreement', { frappe.ui.form.on('Service Level Agreement', {
setup: function(frm) {
let allow_statuses = [];
const exclude_statuses = ['Open', 'Closed', 'Resolved'];
frappe.model.with_doctype('Issue', () => {
let statuses = frappe.meta.get_docfield('Issue', 'status', frm.doc.name).options;
statuses = statuses.split('\n');
allow_statuses = statuses.filter((status) => !exclude_statuses.includes(status));
frappe.meta.get_docfield('Pause SLA On Status', 'status', frm.doc.name).options = [''].concat(allow_statuses);
});
}
}); });

View File

@ -23,6 +23,8 @@
"active", "active",
"column_break_7", "column_break_7",
"end_date", "end_date",
"section_break_18",
"pause_sla_on",
"response_and_resolution_time_section", "response_and_resolution_time_section",
"priorities", "priorities",
"support_and_resolution_section_break", "support_and_resolution_section_break",
@ -160,10 +162,25 @@
"read_only": 1, "read_only": 1,
"show_days": 1, "show_days": 1,
"show_seconds": 1 "show_seconds": 1
},
{
"fieldname": "section_break_18",
"fieldtype": "Section Break",
"hide_border": 1,
"show_days": 1,
"show_seconds": 1
},
{
"fieldname": "pause_sla_on",
"fieldtype": "Table",
"label": "Pause SLA On",
"options": "Pause SLA On Status",
"show_days": 1,
"show_seconds": 1
} }
], ],
"links": [], "links": [],
"modified": "2020-05-26 16:02:59.859980", "modified": "2020-06-05 17:51:15.050785",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Support", "module": "Support",
"name": "Service Level Agreement", "name": "Service Level Agreement",

View File

@ -115,6 +115,11 @@ def create_service_level_agreement(default_service_level_agreement, holiday_list
"resolution_time_period": "Hour", "resolution_time_period": "Hour",
} }
], ],
"pause_sla_on": [
{
"status": "Replied"
}
],
"support_and_resolution": [ "support_and_resolution": [
{ {
"workday": "Monday", "workday": "Monday",

View File

@ -2,15 +2,7 @@
// For license information, please see license.txt // For license information, please see license.txt
frappe.ui.form.on('Support Settings', { frappe.ui.form.on('Support Settings', {
setup: function(frm) { refresh: function(frm) {
let allow_statuses = []; //
const exclude_statuses = ['Open', 'Closed', 'Resolved'];
frappe.model.with_doctype('Issue', () => {
let statuses = frappe.meta.get_docfield('Issue', 'status', frm.doc.name).options;
statuses = statuses.split('\n');
allow_statuses = statuses.filter((status) => !exclude_statuses.includes(status));
frappe.meta.get_docfield('Pause SLA On Status', 'status', frm.doc.name).options = [''].concat(allow_statuses);
});
} }
}); });

View File

@ -10,7 +10,6 @@
"allow_resetting_service_level_agreement", "allow_resetting_service_level_agreement",
"issues_sb", "issues_sb",
"close_issue_after_days", "close_issue_after_days",
"pause_sla_on_status",
"portal_sb", "portal_sb",
"get_started_sections", "get_started_sections",
"show_latest_forum_posts", "show_latest_forum_posts",
@ -128,20 +127,11 @@
"fieldname": "allow_resetting_service_level_agreement", "fieldname": "allow_resetting_service_level_agreement",
"fieldtype": "Check", "fieldtype": "Check",
"label": "Allow Resetting Service Level Agreement" "label": "Allow Resetting Service Level Agreement"
},
{
"depends_on": "eval:doc.track_service_level_agreement;",
"fieldname": "pause_sla_on_status",
"fieldtype": "Table",
"label": "Pause SLA On",
"options": "Pause SLA On Status",
"show_days": 1,
"show_seconds": 1
} }
], ],
"issingle": 1, "issingle": 1,
"links": [], "links": [],
"modified": "2020-06-05 16:35:13.905096", "modified": "2020-06-05 17:56:17.491684",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Support", "module": "Support",
"name": "Support Settings", "name": "Support Settings",