diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py index c50a288330..b47f7108bc 100644 --- a/erpnext/support/doctype/issue/issue.py +++ b/erpnext/support/doctype/issue/issue.py @@ -135,9 +135,11 @@ class Issue(Document): customer=self.customer, service_level_agreement=service_level_agreement) if not service_level_agreement: + if frappe.db.get_value("Issue", self.name, "service_level_agreement"): + frappe.throw(_("Couldn't Set Service Level Agreement {0}.".format(self.service_level_agreement))) return - if service_level_agreement.customer and self.customer and not service_level_agreement.customer == self.customer: + if (service_level_agreement.customer and self.customer) and not (service_level_agreement.customer == self.customer): frappe.throw(_("This Service Level Agreement is specific to Customer {0}".format(service_level_agreement.customer))) self.service_level_agreement = service_level_agreement.name diff --git a/erpnext/support/doctype/service_level/service_level.json b/erpnext/support/doctype/service_level/service_level.json index 71e12c04ce..d4ce7d34d6 100644 --- a/erpnext/support/doctype/service_level/service_level.json +++ b/erpnext/support/doctype/service_level/service_level.json @@ -7,6 +7,7 @@ "field_order": [ "service_level", "employee_group", + "priorities_list", "column_break_2", "holiday_list", "default_priority", @@ -73,9 +74,15 @@ "label": "Default Priority", "options": "Issue Priority", "read_only": 1 + }, + { + "fieldname": "priorities_list", + "fieldtype": "Long Text", + "hidden": 1, + "label": "Priorities List" } ], - "modified": "2019-05-21 20:53:11.731727", + "modified": "2019-05-25 20:18:00.240337", "modified_by": "Administrator", "module": "Support", "name": "Service Level", diff --git a/erpnext/support/doctype/service_level/service_level.py b/erpnext/support/doctype/service_level/service_level.py index 857a21614c..80e4e22b90 100644 --- a/erpnext/support/doctype/service_level/service_level.py +++ b/erpnext/support/doctype/service_level/service_level.py @@ -13,6 +13,7 @@ class ServiceLevel(Document): def validate(self): self.check_priorities() + self.set_priorities() self.check_support_and_resolution() def check_priorities(self): @@ -56,7 +57,18 @@ class ServiceLevel(Document): frappe.throw(_("Select only one Priority as Default.")) # set default priority from priorities - self.default_priority = next(d.priority for d in self.priorities if d.default_priority) + try: + self.default_priority = next(d.priority for d in self.priorities if d.default_priority) + except Exception: + frappe.throw(_("Select a Default Priority.")) + + def set_priorities(self): + priorities = [] + + for priority in self.priorities: + priorities.append(priority.priority) + + self.priorities_list = ",".join(priorities) def check_support_and_resolution(self): week = get_weekdays() 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 b3166f0002..98baa6ece9 100644 --- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.json +++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.json @@ -8,8 +8,8 @@ "service_level_agreement_name", "customer", "default_service_level_agreement", - "ignore_customer_and_default_sla", "holiday_list", + "priorities_list", "column_break_2", "service_level", "employee_group", @@ -27,7 +27,7 @@ ], "fields": [ { - "depends_on": "eval: !doc.default_service_level_agreement;\neval: !doc.ignore_customer_and_default_sla;", + "depends_on": "eval: !doc.default_service_level_agreement;", "fieldname": "customer", "fieldtype": "Link", "in_list_view": 1, @@ -37,7 +37,7 @@ }, { "default": "0", - "depends_on": "eval: !doc.customer;\neval: !doc.ignore_customer_and_default_sla;", + "depends_on": "eval: !doc.customer;", "fieldname": "default_service_level_agreement", "fieldtype": "Check", "in_list_view": 1, @@ -151,13 +151,14 @@ "read_only": 1 }, { - "default": "0", - "fieldname": "ignore_customer_and_default_sla", - "fieldtype": "Check", - "label": "Ignore Customer and Default SLA" + "fetch_from": "service_level.priorities_list", + "fieldname": "priorities_list", + "fieldtype": "Text", + "hidden": 1, + "label": "Priorities List" } ], - "modified": "2019-05-21 21:53:12.686806", + "modified": "2019-05-25 20:20:41.231834", "modified_by": "Administrator", "module": "Support", "name": "Service Level Agreement", diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py index 61c6cac1f2..d1d040722f 100644 --- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py +++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py @@ -20,7 +20,7 @@ class ServiceLevelAgreement(Document): if not self.ignore_start_and_end_date and self.start_date >= self.end_date: frappe.throw(_("Start Date of Agreement can't be greater than or equal to End Date.")) - if not self.ignore_start_and_end_date and self.end_date < frappe.utils.getdate(): + if not self.ignore_start_and_end_date and self.end_date < frappe.utils.today(): frappe.throw(_("End Date of Agreement can't be less than today.")) def get_service_level_agreement_priority(self, priority): @@ -54,7 +54,7 @@ def get_active_service_level_agreement_for(priority, customer=None, service_leve filters.append(["Service Level Priority", "priority", "=", priority]) or_filters = [ - ["Service Level Agreement", "customer", "=", customer], + ["Service Level Agreement", "customer", "=", customer] ] if service_level_agreement: or_filters = [