Merge branch 'develop' of https://github.com/frappe/erpnext into custom_append_to

This commit is contained in:
Himanshu Warekar
2020-03-13 19:40:00 +05:30
536 changed files with 44105 additions and 28622 deletions

View File

@@ -0,0 +1,66 @@
{
"cards": [
{
"links": "[\n {\n \"description\": \"Service Level.\",\n \"label\": \"Service Level\",\n \"name\": \"Service Level\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Service Level Agreement.\",\n \"label\": \"Service Level Agreement\",\n \"name\": \"Service Level Agreement\",\n \"type\": \"doctype\"\n }\n]",
"title": "Service Level Agreement"
},
{
"links": "[\n {\n \"label\": \"Maintenance Schedule\",\n \"name\": \"Maintenance Schedule\",\n \"type\": \"doctype\"\n },\n {\n \"label\": \"Maintenance Visit\",\n \"name\": \"Maintenance Visit\",\n \"type\": \"doctype\"\n }\n]",
"title": "Maintenance"
},
{
"links": "[\n {\n \"description\": \"Support queries from customers.\",\n \"label\": \"Issue\",\n \"name\": \"Issue\",\n \"onboard\": 1,\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Issue Type.\",\n \"label\": \"Issue Type\",\n \"name\": \"Issue Type\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Issue Priority.\",\n \"label\": \"Issue Priority\",\n \"name\": \"Issue Priority\",\n \"type\": \"doctype\"\n }\n]",
"title": "Issues"
},
{
"links": "[\n {\n \"description\": \"Warranty Claim against Serial No.\",\n \"label\": \"Warranty Claim\",\n \"name\": \"Warranty Claim\",\n \"type\": \"doctype\"\n },\n {\n \"description\": \"Single unit of an Item.\",\n \"label\": \"Serial No\",\n \"name\": \"Serial No\",\n \"type\": \"doctype\"\n }\n]",
"title": "Warranty"
},
{
"icon": "fa fa-list",
"links": "[\n {\n \"label\": \"Support Settings\",\n \"name\": \"Support Settings\",\n \"type\": \"doctype\"\n }\n]",
"title": "Settings"
},
{
"icon": "fa fa-list",
"links": "[\n {\n \"dependencies\": [\n \"Issue\"\n ],\n \"doctype\": \"Issue\",\n \"is_query_report\": true,\n \"label\": \"Minutes to First Response for Issues\",\n \"name\": \"Minutes to First Response for Issues\",\n \"type\": \"report\"\n }\n]",
"title": "Reports"
}
],
"category": "Modules",
"charts": [],
"creation": "2020-03-02 15:48:23.224699",
"developer_mode_only": 0,
"disable_user_customization": 0,
"docstatus": 0,
"doctype": "Desk Page",
"extends_another_page": 0,
"icon": "",
"idx": 0,
"is_standard": 1,
"label": "Support",
"modified": "2020-03-12 16:30:39.482621",
"modified_by": "Administrator",
"module": "Support",
"name": "Support",
"owner": "Administrator",
"pin_to_bottom": 0,
"pin_to_top": 0,
"shortcuts": [
{
"is_query_report": 0,
"link_to": "Issue",
"type": "DocType"
},
{
"is_query_report": 0,
"link_to": "Service Level",
"type": "DocType"
},
{
"is_query_report": 0,
"link_to": "Maintenance Visit",
"type": "DocType"
}
]
}

View File

@@ -121,6 +121,7 @@
"default": "Medium",
"fieldname": "priority",
"fieldtype": "Link",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Priority",
"options": "Issue Priority"
@@ -366,7 +367,7 @@
"icon": "fa fa-ticket",
"idx": 7,
"links": [],
"modified": "2020-01-13 16:20:30.392712",
"modified": "2020-03-13 02:19:49.477928",
"modified_by": "Administrator",
"module": "Support",
"name": "Issue",
@@ -388,10 +389,10 @@
"search_fields": "status,customer,subject,raised_by",
"sender_field": "raised_by",
"sort_field": "modified",
"sort_order": "ASC",
"sort_order": "DESC",
"subject_field": "subject",
"timeline_field": "customer",
"title_field": "subject",
"track_changes": 1,
"track_seen": 1
}
}

View File

@@ -164,11 +164,11 @@ class Issue(Document):
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)))
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):
frappe.throw(_("This Service Level Agreement is specific to Customer {0}".format(service_level_agreement.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
self.priority = service_level_agreement.default_priority if not priority else priority
@@ -235,7 +235,7 @@ def get_expected_time_for(parameter, service_level, start_date_time):
allotted_days = service_level.get("resolution_time")
time_period = service_level.get("resolution_time_period")
else:
frappe.throw(_("{0} parameter is invalid".format(parameter)))
frappe.throw(_("{0} parameter is invalid").format(parameter))
allotted_hours = 0
if time_period == 'Hour':

View File

@@ -22,7 +22,7 @@ class ServiceLevel(Document):
for priority in self.priorities:
# Check if response and resolution time is set for every priority
if not (priority.response_time or priority.resolution_time):
frappe.throw(_("Set Response Time and Resolution for Priority {0} at index {1}.".format(priority.priority, priority.idx)))
frappe.throw(_("Set Response Time and Resolution for Priority {0} at index {1}.").format(priority.priority, priority.idx))
priorities.append(priority.priority)
@@ -44,12 +44,12 @@ class ServiceLevel(Document):
resolution = priority.resolution_time * 7
if response > resolution:
frappe.throw(_("Response Time for {0} at index {1} can't be greater than Resolution Time.".format(priority.priority, priority.idx)))
frappe.throw(_("Response Time for {0} at index {1} can't be greater than Resolution Time.").format(priority.priority, priority.idx))
# Check if repeated priority
if not len(set(priorities)) == len(priorities):
repeated_priority = get_repeated(priorities)
frappe.throw(_("Priority {0} has been repeated.".format(repeated_priority)))
frappe.throw(_("Priority {0} has been repeated.").format(repeated_priority))
# Check if repeated default priority
if not len(set(default_priority)) == len(default_priority):
@@ -81,7 +81,7 @@ class ServiceLevel(Document):
# Check for repeated workday
if not len(set(support_days)) == len(support_days):
repeated_days = get_repeated(support_days)
frappe.throw(_("Workday {0} has been repeated.".format(repeated_days)))
frappe.throw(_("Workday {0} has been repeated.").format(repeated_days))
def get_repeated(values):
unique_list = []