diff --git a/erpnext/patches/v13_0/update_sla_enhancements.py b/erpnext/patches/v13_0/update_sla_enhancements.py index 884d01b10c1..2356fb2679b 100644 --- a/erpnext/patches/v13_0/update_sla_enhancements.py +++ b/erpnext/patches/v13_0/update_sla_enhancements.py @@ -4,7 +4,6 @@ from __future__ import unicode_literals import frappe -from erpnext.setup.install import add_sla_hold_statuses_to_support_settings def execute(): # add holiday list and employee group fields in SLA @@ -79,9 +78,6 @@ def execute(): 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): seconds = 0 diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py index 90e5f5a0ae0..74ff0ecfd8f 100644 --- a/erpnext/setup/install.py +++ b/erpnext/setup/install.py @@ -25,7 +25,6 @@ def after_install(): create_default_success_action() create_default_energy_point_rules() add_company_to_session_defaults() - add_sla_hold_statuses_to_support_settings() frappe.db.commit() @@ -107,12 +106,3 @@ def add_company_to_session_defaults(): }) 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() diff --git a/erpnext/support/doctype/issue/issue.js b/erpnext/support/doctype/issue/issue.js index 32a77739d0a..e7e5bd312bc 100644 --- a/erpnext/support/doctype/issue/issue.js +++ b/erpnext/support/doctype/issue/issue.js @@ -43,11 +43,11 @@ frappe.ui.form.on("Issue", { frappe.call({ 'method': 'frappe.client.get', args: { - doctype: 'Support Settings', - name: 'Support Settings' + doctype: 'Service Level Agreement', + name: frm.doc.service_level_agreement }, callback: function(data) { - let statuses = data.message.pause_sla_on_status; + let statuses = data.message.pause_sla_on; const hold_statuses = []; $.each(statuses, (_i, entry) => { hold_statuses.push(entry.status); diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py index 146eb5a2499..4003047e81c 100644 --- a/erpnext/support/doctype/issue/issue.py +++ b/erpnext/support/doctype/issue/issue.py @@ -78,9 +78,10 @@ class Issue(Document): self.handle_hold_time(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 - 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] if self.status in hold_statuses and status not in hold_statuses: diff --git a/erpnext/support/doctype/issue/test_issue.py b/erpnext/support/doctype/issue/test_issue.py index 93a6005cc24..a0048432705 100644 --- a/erpnext/support/doctype/issue/test_issue.py +++ b/erpnext/support/doctype/issue/test_issue.py @@ -5,7 +5,6 @@ from __future__ import unicode_literals import frappe import unittest 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 import datetime from datetime import timedelta @@ -101,7 +100,6 @@ class TestIssue(unittest.TestCase): self.assertEqual(issue.user_resolution_time, 1200) def test_hold_time_on_replied(self): - add_sla_hold_statuses_to_support_settings() creation = datetime.datetime(2020, 3, 4, 4, 0) issue = make_issue(creation, index=1) diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.js b/erpnext/support/doctype/service_level_agreement/service_level_agreement.js index 7aeaae48bab..5346195a396 100644 --- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.js +++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.js @@ -2,5 +2,15 @@ // For license information, please see license.txt 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); + }); + } +}); \ No newline at end of file diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.json b/erpnext/support/doctype/service_level_agreement/service_level_agreement.json index ede5f98ebae..e65169c0d43 100644 --- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.json +++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.json @@ -23,6 +23,8 @@ "active", "column_break_7", "end_date", + "section_break_18", + "pause_sla_on", "response_and_resolution_time_section", "priorities", "support_and_resolution_section_break", @@ -160,10 +162,25 @@ "read_only": 1, "show_days": 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": [], - "modified": "2020-05-26 16:02:59.859980", + "modified": "2020-06-05 17:51:15.050785", "modified_by": "Administrator", "module": "Support", "name": "Service Level Agreement", diff --git a/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py b/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py index 26740ed899b..0746a9c73ef 100644 --- a/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py +++ b/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py @@ -115,6 +115,11 @@ def create_service_level_agreement(default_service_level_agreement, holiday_list "resolution_time_period": "Hour", } ], + "pause_sla_on": [ + { + "status": "Replied" + } + ], "support_and_resolution": [ { "workday": "Monday", diff --git a/erpnext/support/doctype/support_settings/support_settings.js b/erpnext/support/doctype/support_settings/support_settings.js index 33ddf0b0792..78adca81ca5 100644 --- a/erpnext/support/doctype/support_settings/support_settings.js +++ b/erpnext/support/doctype/support_settings/support_settings.js @@ -2,15 +2,7 @@ // For license information, please see license.txt frappe.ui.form.on('Support Settings', { - 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); - }); + refresh: function(frm) { + // } }); diff --git a/erpnext/support/doctype/support_settings/support_settings.json b/erpnext/support/doctype/support_settings/support_settings.json index da4b607e2cd..1c1b0c3517e 100644 --- a/erpnext/support/doctype/support_settings/support_settings.json +++ b/erpnext/support/doctype/support_settings/support_settings.json @@ -10,7 +10,6 @@ "allow_resetting_service_level_agreement", "issues_sb", "close_issue_after_days", - "pause_sla_on_status", "portal_sb", "get_started_sections", "show_latest_forum_posts", @@ -128,20 +127,11 @@ "fieldname": "allow_resetting_service_level_agreement", "fieldtype": "Check", "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, "links": [], - "modified": "2020-06-05 16:35:13.905096", + "modified": "2020-06-05 17:56:17.491684", "modified_by": "Administrator", "module": "Support", "name": "Support Settings",