feat: dashboards
diff --git a/erpnext/support/doctype/service_level/service_level.json b/erpnext/support/doctype/service_level/service_level.json
index ab2f4f2..dced3aa 100644
--- a/erpnext/support/doctype/service_level/service_level.json
+++ b/erpnext/support/doctype/service_level/service_level.json
@@ -51,7 +51,7 @@
{
"fieldname": "section_break_01",
"fieldtype": "Section Break",
- "label": "Support and Resolution"
+ "label": "Support Hours"
},
{
"fieldname": "support_and_resolution",
@@ -75,7 +75,7 @@
"read_only": 1
}
],
- "modified": "2019-06-05 13:37:20.342946",
+ "modified": "2019-06-06 12:58:03.464056",
"modified_by": "Administrator",
"module": "Support",
"name": "Service Level",
diff --git a/erpnext/support/doctype/service_level/service_level_dashboard.py b/erpnext/support/doctype/service_level/service_level_dashboard.py
new file mode 100644
index 0000000..393095e
--- /dev/null
+++ b/erpnext/support/doctype/service_level/service_level_dashboard.py
@@ -0,0 +1,12 @@
+from frappe import _
+
+def get_data():
+ return {
+ 'fieldname': 'service_level',
+ 'transactions': [
+ {
+ 'label': _('Service Level Agreement'),
+ 'items': ['Service Level Agreement']
+ }
+ ]
+ }
\ 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 a8183ba..c68d385 100644
--- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.json
+++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.json
@@ -1,24 +1,22 @@
{
- "autoname": "format:SLA-{service_level_agreement_name}",
+ "autoname": "format:SLA-{service_level}-{####}",
"creation": "2018-12-26 21:08:15.448812",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
- "service_level_agreement_name",
+ "service_level",
"customer",
"default_service_level_agreement",
"holiday_list",
"column_break_2",
- "service_level",
"employee_group",
"default_priority",
"agreement_details_section",
"start_date",
- "agreement_status",
+ "active",
"column_break_7",
"end_date",
- "ignore_start_and_end_date",
"response_and_resolution_time_section",
"priorities",
"support_and_resolution_section_break",
@@ -30,6 +28,7 @@
"fieldname": "customer",
"fieldtype": "Link",
"in_list_view": 1,
+ "in_standard_filter": 1,
"label": "Customer",
"options": "Customer",
"set_only_once": 1
@@ -39,7 +38,6 @@
"depends_on": "eval: !doc.customer;",
"fieldname": "default_service_level_agreement",
"fieldtype": "Check",
- "in_list_view": 1,
"label": "Default Service Level Agreement",
"set_only_once": 1
},
@@ -47,6 +45,7 @@
"fieldname": "service_level",
"fieldtype": "Link",
"in_list_view": 1,
+ "in_standard_filter": 1,
"label": "Service Level",
"options": "Service Level",
"reqd": 1,
@@ -68,6 +67,8 @@
"fetch_from": "service_level.employee_group",
"fieldname": "employee_group",
"fieldtype": "Link",
+ "in_list_view": 1,
+ "in_standard_filter": 1,
"label": "Employee Group",
"options": "Employee Group",
"read_only": 1
@@ -84,14 +85,6 @@
"label": "Start Date"
},
{
- "default": "Active",
- "fieldname": "agreement_status",
- "fieldtype": "Select",
- "label": "Agreement Status",
- "options": "Active\nExpired",
- "read_only": 1
- },
- {
"depends_on": "eval: !doc.default_contract",
"fieldname": "column_break_7",
"fieldtype": "Column Break"
@@ -106,13 +99,13 @@
"collapsible": 1,
"fieldname": "response_and_resolution_time_section",
"fieldtype": "Section Break",
- "label": "Priorities, Response and Resolution Time"
+ "label": "Response and Resolution Time"
},
{
"collapsible": 1,
"fieldname": "support_and_resolution_section_break",
"fieldtype": "Section Break",
- "label": "Support and Resolution"
+ "label": "Support Hours"
},
{
"fieldname": "support_and_resolution",
@@ -127,30 +120,22 @@
"options": "Service Level Priority"
},
{
- "fieldname": "service_level_agreement_name",
- "fieldtype": "Data",
- "label": "Service Level Agreement Name",
- "reqd": 1,
- "unique": 1
- },
- {
- "default": "0",
- "depends_on": "eval: !doc.default_service_level_agreement",
- "fieldname": "ignore_start_and_end_date",
- "fieldtype": "Check",
- "label": "Ignore Start and End Date",
- "set_only_once": 1
- },
- {
"fetch_from": "service_level.default_priority",
"fieldname": "default_priority",
"fieldtype": "Link",
"label": "Default Priority",
"options": "Issue Priority",
"read_only": 1
+ },
+ {
+ "default": "1",
+ "fieldname": "active",
+ "fieldtype": "Check",
+ "label": "Active",
+ "read_only": 1
}
],
- "modified": "2019-06-06 12:03:11.247979",
+ "modified": "2019-06-06 12:56:24.545060",
"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 8ea29c0..4ff0312 100644
--- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py
+++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py
@@ -14,14 +14,12 @@
if frappe.db.exists("Service Level Agreement", {"default_service_level_agreement": "1", "name": ["!=", self.name]}):
frappe.throw(_("A Default Service Level Agreement already exists."))
else:
- if not self.ignore_start_and_end_date and not (self.start_date and self.end_date):
- frappe.throw(_("Enter Start and End Date for the Agreement."))
+ if self.start_date and self.end_date:
+ if 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.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():
- frappe.throw(_("End Date of Agreement can't be less than today."))
+ if self.end_date < frappe.utils.getdate():
+ frappe.throw(_("End Date of Agreement can't be less than today."))
def get_service_level_agreement_priority(self, priority):
priority = frappe.get_doc("Service Level Priority", {"priority": priority, "parent": self.name})
@@ -36,18 +34,18 @@
def check_agreement_status():
service_level_agreements = frappe.get_list("Service Level Agreement", filters=[
- {"agreement_status": "Active"},
+ {"active": 1},
{"default_service_level_agreement": 0}
- ], fields=["name", "end_date"])
+ ], fields=["name"])
for service_level_agreement in service_level_agreements:
- if service_level_agreement.end_date < frappe.utils.getdate():
- frappe.db.set_value("Service Level Agreement", service_level_agreement.name,
- "agreement_status", "Expired")
+ doc = frappe.get_doc("Service Level Agreement", service_level_agreement.name)
+ if doc.end_date and doc.end_date < frappe.utils.getdate():
+ frappe.db.set_value("Service Level Agreement", service_level_agreement.name, "active", 0)
def get_active_service_level_agreement_for(priority, customer=None, service_level_agreement=None):
filters = [
- ["Service Level Agreement", "agreement_status", "=", "Active"]
+ ["Service Level Agreement", "active", "=", 1]
]
if priority:
diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement_dashboard.py b/erpnext/support/doctype/service_level_agreement/service_level_agreement_dashboard.py
new file mode 100644
index 0000000..f2bd681
--- /dev/null
+++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement_dashboard.py
@@ -0,0 +1,12 @@
+from frappe import _
+
+def get_data():
+ return {
+ 'fieldname': 'service_level_agreement',
+ 'transactions': [
+ {
+ 'label': _('Issue'),
+ 'items': ['Issue']
+ }
+ ]
+ }
\ No newline at end of file