refactor: move pause SLA configuration to SLA DocType
This commit is contained in:
parent
d7d3ca4214
commit
73326d308b
@ -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
|
||||||
|
@ -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()
|
|
||||||
|
@ -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);
|
||||||
|
@ -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:
|
||||||
|
@ -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)
|
||||||
|
@ -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);
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
@ -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",
|
||||||
|
@ -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",
|
||||||
|
@ -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);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -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",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user