refactor: SLA form fields
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 ae2080c..7e260db 100644
--- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.js
+++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.js
@@ -22,10 +22,41 @@
refresh: function(frm) {
frm.trigger('fetch_status_fields');
frm.trigger('toggle_resolution_fields');
+ frm.trigger('default_service_level_agreement');
+ frm.trigger('entity');
+ },
+
+ default_service_level_agreement: function(frm) {
+ const field = frm.get_field('default_service_level_agreement');
+ if (frm.doc.default_service_level_agreement) {
+ field.set_description(__('SLA will be applied on every {0}', [frm.doc.document_type]));
+ } else {
+ field.set_description(__('Enable to apply SLA on every {0}', [frm.doc.document_type]));
+ }
},
document_type: function(frm) {
frm.trigger('fetch_status_fields');
+ frm.trigger('default_service_level_agreement');
+ },
+
+ entity_type: function(frm) {
+ frm.set_value('entity', undefined);
+ },
+
+ entity: function(frm) {
+ const field = frm.get_field('entity');
+ if (frm.doc.entity) {
+ const and_descendants = frm.doc.entity_type != 'Customer' ? __(' or its descendants') : '';
+ field.set_description(
+ __('SLA will be applied if {1} is set as {2}{3}', [
+ frm.doc.document_type, frm.doc.entity_type,
+ frm.doc.entity, and_descendants
+ ])
+ );
+ } else {
+ field.set_description('');
+ }
},
fetch_status_fields: function(frm) {
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 5f470aa..1698e23 100644
--- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.json
+++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.json
@@ -6,22 +6,17 @@
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
- "enabled",
- "section_break_2",
"document_type",
- "default_service_level_agreement",
"default_priority",
"column_break_2",
"service_level",
- "holiday_list",
- "entity_section",
- "entity_type",
- "column_break_10",
- "entity",
+ "enabled",
"filters_section",
- "condition",
+ "default_service_level_agreement",
+ "entity_type",
+ "entity",
"column_break_15",
- "condition_description",
+ "condition",
"agreement_details_section",
"start_date",
"column_break_7",
@@ -31,8 +26,10 @@
"priorities",
"status_details",
"sla_fulfilled_on",
+ "column_break_22",
"pause_sla_on",
"support_and_resolution_section_break",
+ "holiday_list",
"support_and_resolution"
],
"fields": [
@@ -42,7 +39,8 @@
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Service Level Name",
- "reqd": 1
+ "reqd": 1,
+ "set_only_once": 1
},
{
"fieldname": "holiday_list",
@@ -56,10 +54,10 @@
"fieldtype": "Column Break"
},
{
- "depends_on": "eval: !doc.default_service_level_agreement",
+ "depends_on": "eval: doc.document_type",
"fieldname": "agreement_details_section",
"fieldtype": "Section Break",
- "label": "Agreement Details"
+ "label": "Valid From"
},
{
"fieldname": "start_date",
@@ -72,7 +70,6 @@
"fieldtype": "Column Break"
},
{
- "depends_on": "eval: !doc.default_service_level_agreement",
"fieldname": "end_date",
"fieldtype": "Date",
"label": "End Date"
@@ -80,7 +77,7 @@
{
"fieldname": "response_and_resolution_time_section",
"fieldtype": "Section Break",
- "label": "Response and Resolution Time"
+ "label": "Response and Resolution"
},
{
"fieldname": "support_and_resolution_section_break",
@@ -90,6 +87,7 @@
{
"fieldname": "support_and_resolution",
"fieldtype": "Table",
+ "label": "Working Hours",
"options": "Service Day",
"reqd": 1
},
@@ -101,10 +99,7 @@
"reqd": 1
},
{
- "fieldname": "column_break_10",
- "fieldtype": "Column Break"
- },
- {
+ "depends_on": "eval: !doc.default_service_level_agreement",
"fieldname": "entity",
"fieldtype": "Dynamic Link",
"in_list_view": 1,
@@ -114,11 +109,6 @@
},
{
"depends_on": "eval: !doc.default_service_level_agreement",
- "fieldname": "entity_section",
- "fieldtype": "Section Break",
- "label": "Entity"
- },
- {
"fieldname": "entity_type",
"fieldtype": "Select",
"in_standard_filter": 1,
@@ -126,11 +116,6 @@
"options": "\nCustomer\nCustomer Group\nTerritory"
},
{
- "fieldname": "section_break_2",
- "fieldtype": "Section Break",
- "hide_border": 1
- },
- {
"default": "0",
"fieldname": "default_service_level_agreement",
"fieldtype": "Check",
@@ -152,7 +137,7 @@
{
"fieldname": "document_type",
"fieldtype": "Link",
- "label": "Document Type",
+ "label": "Apply On",
"options": "DocType",
"reqd": 1,
"set_only_once": 1
@@ -164,6 +149,7 @@
"label": "Enabled"
},
{
+ "depends_on": "document_type",
"fieldname": "status_details",
"fieldtype": "Section Break",
"label": "Status Details"
@@ -182,28 +168,31 @@
"label": "Apply SLA for Resolution Time"
},
{
+ "depends_on": "document_type",
"fieldname": "filters_section",
"fieldtype": "Section Break",
- "label": "Assignment Condition"
+ "label": "Assignment Conditions"
},
{
"fieldname": "column_break_15",
"fieldtype": "Column Break"
},
{
+ "depends_on": "eval: !doc.default_service_level_agreement",
+ "description": "Simple Python Expression, Example: doc.status == 'Open' and doc.issue_type == 'Bug'",
"fieldname": "condition",
"fieldtype": "Code",
"label": "Condition",
- "options": "Python"
+ "max_height": "7rem",
+ "options": "PythonExpression"
},
{
- "fieldname": "condition_description",
- "fieldtype": "HTML",
- "options": "<p><strong>Condition Examples:</strong></p>\n<pre>doc.status==\"Open\"<br>doc.due_date==nowdate()<br>doc.total > 40000\n</pre>"
+ "fieldname": "column_break_22",
+ "fieldtype": "Column Break"
}
],
"links": [],
- "modified": "2021-10-02 11:32:55.556024",
+ "modified": "2021-11-26 15:45:33.289911",
"modified_by": "Administrator",
"module": "Support",
"name": "Service Level Agreement",