From 52f7fe0aa3d90757182bc900bd2cd28ed31e7ec3 Mon Sep 17 00:00:00 2001
From: "c.wimmer" <c.wimmer@cwimmer-nb.aditosoftware.local>
Date: Thu, 17 Dec 2020 17:49:28 +0100
Subject: [PATCH] [Projekt: Crowd-Development / Besuch vor Ort][TicketNr.:
 1068895][[Bug] Besuchsvorschlag Sortierung nach Firma funktioniert nicht]

---
 .../recordcontainers/jdito/contentProcess.js  | 34 +++++++++++++++++--
 1 file changed, 31 insertions(+), 3 deletions(-)

diff --git a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
index 1a5bb84a0e..2c1eda5488 100644
--- a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
@@ -216,7 +216,7 @@ if(idValues == false)
 
 var filter = vars.get("$local.filter"); 
 //TODO: this is a workaround that filters the records manually, it should be possible to filter the users with a tools.* method
-var filterFields = ["", "", "STREET", "COUNTRY" , "ZIP", "CITY", "PRIORITY", "PRIORITY_SOURCE", "", "DUE_DATE", "INFO", "CONTACT_ID"
+var filterFields = ["", "ORGANISATION_NAME", "STREET", "COUNTRY" , "ZIP", "CITY", "PRIORITY", "PRIORITY_SOURCE", "", "DUE_DATE", "INFO", "CONTACT_ID"
     , "", "", "USER_NEW", "", "CONTACT_PERSON_ID", "", "RESPONSIBLE"];
 var filterFns = {
     "$$$LOOKUPFIELD$$$" : function (pRecordValue, pFilterValue, pOperator, pRow)
@@ -238,8 +238,36 @@ var filterFns = {
 };
 recommendationData = JditoFilterUtils.filterRecords(filterFields, recommendationData, filter.filter, filterFns);
 
-//sort Array by priority; highest priority first
-ArrayUtils.sort2d(recommendationData, 9, true, true);
+
+var order = vars.get("$local.order");
+
+var columnOrder = {
+    "ORGANISATION_NAME.value": 1, 
+    "STREET.value": 2,
+    "COUNTRY.value": 3, 
+    "ZIP.value": 4, 
+    "CITY.value": 5, 
+    "PRIORITY.value": 6, 
+    "PRIORITY_SOURCE.value": 7, 
+    "DUE_DATE.value": 9,
+    "USER_NEW.displayValue": 13,
+    "CONTACT_PERSON_ID.displayValue": 15,
+    "RESPONSIBLE.displayValue": 17
+};
+var sortOrder = [];
+for (let field in order)
+{
+    if (field in columnOrder)
+    {
+        sortOrder.push(columnOrder[field]);
+        sortOrder.push(order[field] == "DOWN");
+    }
+}
+
+if (!sortOrder.length) 
+    sortOrder = [9, false]; //default sort by duedate
+
+ArrayUtils.sortMulti(recommendationData, sortOrder);
 result.object(recommendationData);
 
 function getPrioByDueDate(pDueDate)
-- 
GitLab