From f487f8a4e034ba1dff131ea016967dc5fa03308a Mon Sep 17 00:00:00 2001 From: "S.Listl" <S.Listl@slistl-nb.aditosoftware.local> Date: Tue, 28 Apr 2020 11:06:21 +0200 Subject: [PATCH 001/184] 1055717 - Workflow processes documentation --- .../CreateActivity_workflowService.aod | 1 + .../documentation.adoc | 3 +++ .../CreateNotification_workflowService.aod | 1 + .../documentation.adoc | 3 +++ .../SendEmail_workflowService.aod | 1 + .../documentation.adoc | 3 +++ .../SetAttribute_workflowService.aod | 1 + .../documentation.adoc | 3 +++ .../UpdateOffer_workflowService.aod | 1 + .../documentation.adoc | 3 +++ process/workflowRoles_rest/documentation.adoc | 3 +++ process/workflowRoles_rest/process.js | 19 +++++++------ .../workflowRoles_rest/workflowRoles_rest.aod | 1 + .../documentation.adoc | 3 +++ .../workflowServiceTaskParams_rest.aod | 1 + .../documentation.adoc | 3 +++ process/workflowServiceTasks_rest/process.js | 4 +-- .../workflowServiceTasks_rest.aod | 1 + process/workflowUsers_rest/documentation.adoc | 3 +++ process/workflowUsers_rest/process.js | 27 +++++++++++-------- .../workflowUsers_rest/workflowUsers_rest.aod | 1 + 21 files changed, 65 insertions(+), 21 deletions(-) create mode 100644 process/CreateActivity_workflowService/documentation.adoc create mode 100644 process/CreateNotification_workflowService/documentation.adoc create mode 100644 process/SendEmail_workflowService/documentation.adoc create mode 100644 process/SetAttribute_workflowService/documentation.adoc create mode 100644 process/UpdateOffer_workflowService/documentation.adoc create mode 100644 process/workflowRoles_rest/documentation.adoc create mode 100644 process/workflowServiceTaskParams_rest/documentation.adoc create mode 100644 process/workflowServiceTasks_rest/documentation.adoc create mode 100644 process/workflowUsers_rest/documentation.adoc diff --git a/process/CreateActivity_workflowService/CreateActivity_workflowService.aod b/process/CreateActivity_workflowService/CreateActivity_workflowService.aod index 1c0a3458bb3..917f286c18c 100644 --- a/process/CreateActivity_workflowService/CreateActivity_workflowService.aod +++ b/process/CreateActivity_workflowService/CreateActivity_workflowService.aod @@ -3,6 +3,7 @@ <name>CreateActivity_workflowService</name> <title>Create activity</title> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/CreateActivity_workflowService/documentation.adoc</documentation> <process>%aditoprj%/process/CreateActivity_workflowService/process.js</process> <alias>Data_alias</alias> <variants> diff --git a/process/CreateActivity_workflowService/documentation.adoc b/process/CreateActivity_workflowService/documentation.adoc new file mode 100644 index 00000000000..c7aefa99449 --- /dev/null +++ b/process/CreateActivity_workflowService/documentation.adoc @@ -0,0 +1,3 @@ += CreateActivity_workflowService + +The service task can be used to create a new activity with the given parameter data. \ No newline at end of file diff --git a/process/CreateNotification_workflowService/CreateNotification_workflowService.aod b/process/CreateNotification_workflowService/CreateNotification_workflowService.aod index 15076d30377..079aa45c03a 100644 --- a/process/CreateNotification_workflowService/CreateNotification_workflowService.aod +++ b/process/CreateNotification_workflowService/CreateNotification_workflowService.aod @@ -3,6 +3,7 @@ <name>CreateNotification_workflowService</name> <title>Create notification</title> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/CreateNotification_workflowService/documentation.adoc</documentation> <process>%aditoprj%/process/CreateNotification_workflowService/process.js</process> <variants> <element>WORKFLOW</element> diff --git a/process/CreateNotification_workflowService/documentation.adoc b/process/CreateNotification_workflowService/documentation.adoc new file mode 100644 index 00000000000..ec49a2843f5 --- /dev/null +++ b/process/CreateNotification_workflowService/documentation.adoc @@ -0,0 +1,3 @@ += CreateNotification_workflowService + +This service task creates a notification for the given user with the given title and description. \ No newline at end of file diff --git a/process/SendEmail_workflowService/SendEmail_workflowService.aod b/process/SendEmail_workflowService/SendEmail_workflowService.aod index 3805be07dfc..28ebfa538d5 100644 --- a/process/SendEmail_workflowService/SendEmail_workflowService.aod +++ b/process/SendEmail_workflowService/SendEmail_workflowService.aod @@ -3,6 +3,7 @@ <name>SendEmail_workflowService</name> <title>Send email</title> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/SendEmail_workflowService/documentation.adoc</documentation> <process>%aditoprj%/process/SendEmail_workflowService/process.js</process> <alias>Data_alias</alias> <variants> diff --git a/process/SendEmail_workflowService/documentation.adoc b/process/SendEmail_workflowService/documentation.adoc new file mode 100644 index 00000000000..f69f13c363e --- /dev/null +++ b/process/SendEmail_workflowService/documentation.adoc @@ -0,0 +1,3 @@ += SendEmail_workflowService + +A service task for sending an email from the server to the configured recipient using a document template. \ No newline at end of file diff --git a/process/SetAttribute_workflowService/SetAttribute_workflowService.aod b/process/SetAttribute_workflowService/SetAttribute_workflowService.aod index 9d4e32046bc..4929460f801 100644 --- a/process/SetAttribute_workflowService/SetAttribute_workflowService.aod +++ b/process/SetAttribute_workflowService/SetAttribute_workflowService.aod @@ -3,6 +3,7 @@ <name>SetAttribute_workflowService</name> <title>Set attribute</title> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/SetAttribute_workflowService/documentation.adoc</documentation> <process>%aditoprj%/process/SetAttribute_workflowService/process.js</process> <alias>Data_alias</alias> <variants> diff --git a/process/SetAttribute_workflowService/documentation.adoc b/process/SetAttribute_workflowService/documentation.adoc new file mode 100644 index 00000000000..ecc5dfcd140 --- /dev/null +++ b/process/SetAttribute_workflowService/documentation.adoc @@ -0,0 +1,3 @@ += SetAttribute_workflowService + +Can be used to create a new attributeRelation. \ No newline at end of file diff --git a/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod b/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod index 9770a01efb9..6afa7117eb9 100644 --- a/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod +++ b/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod @@ -3,6 +3,7 @@ <name>UpdateOffer_workflowService</name> <title>Update offer</title> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/UpdateOffer_workflowService/documentation.adoc</documentation> <process>%aditoprj%/process/UpdateOffer_workflowService/process.js</process> <alias>Data_alias</alias> <variants> diff --git a/process/UpdateOffer_workflowService/documentation.adoc b/process/UpdateOffer_workflowService/documentation.adoc new file mode 100644 index 00000000000..3f802fe3972 --- /dev/null +++ b/process/UpdateOffer_workflowService/documentation.adoc @@ -0,0 +1,3 @@ += UpdateOffer_workflowService + +Sets the status of an offer. \ No newline at end of file diff --git a/process/workflowRoles_rest/documentation.adoc b/process/workflowRoles_rest/documentation.adoc new file mode 100644 index 00000000000..4505a43a7e3 --- /dev/null +++ b/process/workflowRoles_rest/documentation.adoc @@ -0,0 +1,3 @@ += workflowRoles_rest + +This webservice provides a list of the user roles for the workflow modeler application, the roles can be filtered by setting the correct headers. \ No newline at end of file diff --git a/process/workflowRoles_rest/process.js b/process/workflowRoles_rest/process.js index 07b379e4fd8..dd60527468b 100644 --- a/process/workflowRoles_rest/process.js +++ b/process/workflowRoles_rest/process.js @@ -3,21 +3,22 @@ import("system.tools"); function restget (pRequest) { - let request = JSON.parse(pRequest); - let header = request.header; - let roleIds = header.Ids && JSON.parse(header.Ids); - let userId = header.Userid; + var request = JSON.parse(pRequest); + var header = request.header; + var roleIds = header.Ids && JSON.parse(header.Ids); + var userId = header.Userid; if (userId) { + //if a userId is present, get only the roles of that user let user = tools.getUserByAttribute(tools.NAME, userId); roleIds = user ? user[tools.ROLENAMES].slice() : []; } - let roles = tools.getAllRoles([tools.ROLE_PROJECT, tools.ROLE_CUSTOM], false); + var roles = tools.getAllRoles([tools.ROLE_PROJECT, tools.ROLE_CUSTOM], false); roles = Object.keys(roles).map(function (role) { - let [title, type, desc, id] = roles[role]; + var [title, type, desc, id] = roles[role]; return { name : title, id : id, @@ -25,7 +26,8 @@ function restget (pRequest) }; }); - let filter = { + //object for handling filtering + var filter = { EQUAL : "equal", IGNORECASE : "ignoreCase", IN : "in", @@ -67,13 +69,14 @@ function restget (pRequest) } }; + //add the filters of the request to the filter object filter.addIfSet("id", header.Id, filter.EQUAL); filter.addIfSet("id", roleIds, filter.IN); filter.addIfSet("name", header.Name, filter.EQUAL); filter.addIfSet("name", header.Namelike, filter.LIKE); filter.addIfSet("name", header.Namelikeignorecase, filter.LIKEIGNORECASE); - roles = roles.filter(filter.check, filter); + roles = roles.filter(filter.check, filter); //do the filtering request.response.body = JSON.stringify(roles); diff --git a/process/workflowRoles_rest/workflowRoles_rest.aod b/process/workflowRoles_rest/workflowRoles_rest.aod index 6f2ffed6317..4f15d52de42 100644 --- a/process/workflowRoles_rest/workflowRoles_rest.aod +++ b/process/workflowRoles_rest/workflowRoles_rest.aod @@ -2,6 +2,7 @@ <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> <name>workflowRoles_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/workflowRoles_rest/documentation.adoc</documentation> <process>%aditoprj%/process/workflowRoles_rest/process.js</process> <publishAsWebservice v="true" /> <style>REST</style> diff --git a/process/workflowServiceTaskParams_rest/documentation.adoc b/process/workflowServiceTaskParams_rest/documentation.adoc new file mode 100644 index 00000000000..1559728f993 --- /dev/null +++ b/process/workflowServiceTaskParams_rest/documentation.adoc @@ -0,0 +1,3 @@ += workflowServiceTaskParams_rest + +The webservice takes the service task name as header and gives back the parameters of that service task that can be used to configure it in the modeler. \ No newline at end of file diff --git a/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod b/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod index 266ba1f462a..7922e7f73b3 100644 --- a/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod +++ b/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod @@ -2,6 +2,7 @@ <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> <name>workflowServiceTaskParams_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/workflowServiceTaskParams_rest/documentation.adoc</documentation> <process>%aditoprj%/process/workflowServiceTaskParams_rest/process.js</process> <publishAsWebservice v="true" /> <style>REST</style> diff --git a/process/workflowServiceTasks_rest/documentation.adoc b/process/workflowServiceTasks_rest/documentation.adoc new file mode 100644 index 00000000000..e180e390c23 --- /dev/null +++ b/process/workflowServiceTasks_rest/documentation.adoc @@ -0,0 +1,3 @@ += workflowServiceTasks_rest + +Provides a list of service tasks for the workflow modeler. \ No newline at end of file diff --git a/process/workflowServiceTasks_rest/process.js b/process/workflowServiceTasks_rest/process.js index 967a59c5b8e..2da45ade353 100644 --- a/process/workflowServiceTasks_rest/process.js +++ b/process/workflowServiceTasks_rest/process.js @@ -4,9 +4,9 @@ import("system.process"); function restget (pRequest) { - let request = JSON.parse(pRequest); + var request = JSON.parse(pRequest); - let serviceTasks = project.getDataModels(project.DATAMODEL_KIND_PROCESS) + var serviceTasks = project.getDataModels(project.DATAMODEL_KIND_PROCESS) .filter(function (row) { return /.+_workflowService$/.test(row[0]); diff --git a/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod b/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod index db543d1d50d..ea3dfbea15a 100644 --- a/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod +++ b/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod @@ -2,6 +2,7 @@ <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> <name>workflowServiceTasks_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/workflowServiceTasks_rest/documentation.adoc</documentation> <process>%aditoprj%/process/workflowServiceTasks_rest/process.js</process> <publishAsWebservice v="true" /> <style>REST</style> diff --git a/process/workflowUsers_rest/documentation.adoc b/process/workflowUsers_rest/documentation.adoc new file mode 100644 index 00000000000..63c68a38f11 --- /dev/null +++ b/process/workflowUsers_rest/documentation.adoc @@ -0,0 +1,3 @@ += workflowUsers_rest + +This webservice is used by the identity management in the workflow modeler so that users can be assigned to user tasks there. \ No newline at end of file diff --git a/process/workflowUsers_rest/process.js b/process/workflowUsers_rest/process.js index 6f33fd3573c..99246ce894b 100644 --- a/process/workflowUsers_rest/process.js +++ b/process/workflowUsers_rest/process.js @@ -10,14 +10,14 @@ function restget (pRequest) //minimum required length of the search pattern const MIN_SEARCHLENGTH = 0; - let request = JSON.parse(pRequest); - let header = request.header; - let userFilter = header.Userfilter + var request = JSON.parse(pRequest); + var header = request.header; + var userFilter = header.Userfilter ? JSON.parse(header.Userfilter) : {}; //object that helps with filtering, it provides functions for adding conditions to the object and for checking the conditions - let filter = { + var filter = { EQUAL : "equal", IGNORECASE : "ignoreCase", IN : "in", @@ -64,6 +64,7 @@ function restget (pRequest) } }; + //put all filters of the request into the filter object filter.addIfSet("id", userFilter.id, filter.EQUAL); filter.addIfSet("id", userFilter.ids && JSON.parse(userFilter.ids), filter.IN); filter.addIfSet("id", userFilter.idIgnoreCase, filter.IGNORECASE); @@ -87,17 +88,21 @@ function restget (pRequest) return JSON.stringify(request); + /** + * Loads the users depending on the filter and search value. There is an own parameter for the search value, because it is not handled the + * same way as the other filters. + */ function _getUsers (pSearch) { + //empty result if the search value does not have the minimal required length if (pSearch !== undefined && pSearch.trim() < MIN_SEARCHLENGTH) return []; - //separate words by spaces - let patterns = pSearch && pSearch.replace("%", "", "g").toUpperCase().split(/\s/).filter(function (pat) {return pat;}) - + //if the search value contains spaces, it will be split into individual words, every word must be found + var patterns = pSearch && text.replaceAll(pSearch, {"%" : ""}).toUpperCase().split(/\s/).filter(function (pat) {return pat;}) - let allUsers = tools.getUsersByAttribute(tools.ISACTIVE, ["true"], tools.PROFILE_DEFAULT); - let resultUsers = []; + var allUsers = tools.getUsersByAttribute(tools.ISACTIVE, ["true"], tools.PROFILE_DEFAULT); + var resultUsers = []; for (let i = 0, l = allUsers.length; i < l; i++) { @@ -119,7 +124,7 @@ function restget (pRequest) privileges : [], searchRating : rating }; - if (filter.check(user) && rating !== 0) + if (rating !== 0 && filter.check(user)) resultUsers.push(user); } @@ -133,7 +138,7 @@ function restget (pRequest) } /** - * checks if the pattern is contained in the name + * Checks if the patterns are contained in the name and how good the result is. * * @return {Number} higher number -> better result, 0 if no match */ diff --git a/process/workflowUsers_rest/workflowUsers_rest.aod b/process/workflowUsers_rest/workflowUsers_rest.aod index 06a7396d8da..6669992f8a6 100644 --- a/process/workflowUsers_rest/workflowUsers_rest.aod +++ b/process/workflowUsers_rest/workflowUsers_rest.aod @@ -2,6 +2,7 @@ <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> <name>workflowUsers_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/workflowUsers_rest/documentation.adoc</documentation> <process>%aditoprj%/process/workflowUsers_rest/process.js</process> <publishAsWebservice v="true" /> <style>REST</style> -- GitLab From cb3fa1199e78f1de5fd1b58279a256624fdd32b4 Mon Sep 17 00:00:00 2001 From: "S.Listl" <S.Listl@slistl-nb.aditosoftware.local> Date: Thu, 7 May 2020 11:16:47 +0200 Subject: [PATCH 002/184] AttributeRelation refactored to make sure uids don't change --- .../AttributeRelation_entity.aod | 13 + .../ab_attributerelationid/valueProcess.js | 7 + .../displaysimplename_param/valueProcess.js | 3 + .../gettheme_param/valueProcess.js | 3 + .../gettree_param/valueProcess.js | 3 + .../showempty_param/valueProcess.js | 3 + .../entityfields/uid/valueProcess.js | 9 +- .../recordcontainers/jdito/contentProcess.js | 419 +++++++++--------- .../recordcontainers/jdito/onInsert.js | 2 +- .../recordcontainers/jdito/onUpdate.js | 51 +-- entity/Attribute_entity/Attribute_entity.aod | 1 - .../Attribute_entity/afterOperatingState.js | 5 - 12 files changed, 278 insertions(+), 241 deletions(-) create mode 100644 entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js create mode 100644 entity/AttributeRelation_entity/entityfields/displaysimplename_param/valueProcess.js create mode 100644 entity/AttributeRelation_entity/entityfields/gettheme_param/valueProcess.js create mode 100644 entity/AttributeRelation_entity/entityfields/gettree_param/valueProcess.js create mode 100644 entity/AttributeRelation_entity/entityfields/showempty_param/valueProcess.js delete mode 100644 entity/Attribute_entity/afterOperatingState.js diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod index 9b293dd144d..f57675a893d 100644 --- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod +++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod @@ -22,11 +22,13 @@ <entityParameter> <name>ObjectType_param</name> <expose v="true" /> + <mandatory v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>ObjectRowId_param</name> <expose v="true" /> + <mandatory v="true" /> <description>PARAMETER</description> </entityParameter> <entityProvider> @@ -156,6 +158,7 @@ </entityConsumer> <entityParameter> <name>GetTree_param</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/gettree_param/valueProcess.js</valueProcess> <expose v="true" /> <description>PARAMETER</description> </entityParameter> @@ -261,6 +264,7 @@ </entityField> <entityParameter> <name>DisplaySimpleName_param</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/displaysimplename_param/valueProcess.js</valueProcess> <expose v="true" /> <description>PARAMETER</description> </entityParameter> @@ -271,6 +275,7 @@ </entityParameter> <entityParameter> <name>ShowEmpty_param</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/showempty_param/valueProcess.js</valueProcess> <expose v="true" /> <documentation>%aditoprj%/entity/AttributeRelation_entity/entityfields/showempty_param/documentation.adoc</documentation> </entityParameter> @@ -293,6 +298,7 @@ </entityParameter> <entityParameter> <name>GetTheme_param</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/gettheme_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> <entityField> @@ -333,6 +339,10 @@ <entityProvider> <name>ThemeProvider</name> </entityProvider> + <entityField> + <name>AB_ATTRIBUTERELATIONID</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js</valueProcess> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -346,6 +356,9 @@ <jDitoRecordFieldMapping> <name>UID.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>AB_ATTRIBUTERELATIONID.value</name> + </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>PARENT_ID.value</name> </jDitoRecordFieldMapping> diff --git a/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js b/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js new file mode 100644 index 00000000000..e11e370a0bf --- /dev/null +++ b/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js @@ -0,0 +1,7 @@ +import("system.util"); +import("system.neon"); +import("system.vars"); +import("system.result"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + result.string(util.getNewUUID()); \ No newline at end of file diff --git a/entity/AttributeRelation_entity/entityfields/displaysimplename_param/valueProcess.js b/entity/AttributeRelation_entity/entityfields/displaysimplename_param/valueProcess.js new file mode 100644 index 00000000000..e0f3ec47e2b --- /dev/null +++ b/entity/AttributeRelation_entity/entityfields/displaysimplename_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string(false); \ No newline at end of file diff --git a/entity/AttributeRelation_entity/entityfields/gettheme_param/valueProcess.js b/entity/AttributeRelation_entity/entityfields/gettheme_param/valueProcess.js new file mode 100644 index 00000000000..e0f3ec47e2b --- /dev/null +++ b/entity/AttributeRelation_entity/entityfields/gettheme_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string(false); \ No newline at end of file diff --git a/entity/AttributeRelation_entity/entityfields/gettree_param/valueProcess.js b/entity/AttributeRelation_entity/entityfields/gettree_param/valueProcess.js new file mode 100644 index 00000000000..e0f3ec47e2b --- /dev/null +++ b/entity/AttributeRelation_entity/entityfields/gettree_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string(false); \ No newline at end of file diff --git a/entity/AttributeRelation_entity/entityfields/showempty_param/valueProcess.js b/entity/AttributeRelation_entity/entityfields/showempty_param/valueProcess.js new file mode 100644 index 00000000000..e0f3ec47e2b --- /dev/null +++ b/entity/AttributeRelation_entity/entityfields/showempty_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string(false); \ No newline at end of file diff --git a/entity/AttributeRelation_entity/entityfields/uid/valueProcess.js b/entity/AttributeRelation_entity/entityfields/uid/valueProcess.js index a319d00c1f4..bc7ce9f825d 100644 --- a/entity/AttributeRelation_entity/entityfields/uid/valueProcess.js +++ b/entity/AttributeRelation_entity/entityfields/uid/valueProcess.js @@ -3,5 +3,10 @@ import("system.result"); import("system.neon"); import("system.util"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) - result.string("," + util.getNewUUID()); // set "," to mark this as new generated UUID \ No newline at end of file +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + if (vars.getString("$param.ShowEmpty_param") == "true") + result.string(JSON.stringify([vars.get("$field.AB_ATTRIBUTERELATIONID"), vars.get("$field.AB_ATTRIBUTE_ID")])); + else + result.string(vars.get("$field.AB_ATTRIBUTERELATIONID")); +} \ No newline at end of file diff --git a/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js b/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js index 7b1e0391013..75671ac47d2 100644 --- a/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js @@ -7,251 +7,256 @@ import("system.db"); import("Attribute_lib"); import("Sql_lib"); -var objectType = vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param"); -var objectRowId = vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param"); +var idvalues = vars.exists("$local.idvalues") ? vars.get("$local.idvalues") : null; +var getTree = !idvalues && vars.getString("$param.GetTree_param") == "true"; +var loadFullAttributeName = vars.getString("$param.DisplaySimpleName_param") != "true"; -var idvalues = vars.exists("$local.idvalues") && vars.get("$local.idvalues"); - -var getTree = vars.exists("$param.GetTree_param") && vars.getString("$param.GetTree_param") == "true"; -var getTheme = vars.exists("$param.IsTheme_param") && vars.getString("$param.IsTheme_param") == "true"; -var showEmpty = vars.exists("$param.ShowEmpty_param") && vars.getString("$param.ShowEmpty_param") == "true"; -var displaySimpleName = vars.exists("$param.DisplaySimpleName_param") && vars.getString("$param.DisplaySimpleName_param") == "true"; - -var defaultFields = [ - "AB_ATTRIBUTERELATIONID", - "AB_ATTRIBUTE.AB_ATTRIBUTEID", - "AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", - "AB_ATTRIBUTE.ATTRIBUTE_TYPE", - "AB_ATTRIBUTE.ATTRIBUTE_NAME", - "AB_ATTRIBUTE.DROPDOWNDEFINITION", - "COMBOVAL.ATTRIBUTE_NAME", - "AB_ATTRIBUTERELATION.DATE_NEW", - "AB_ATTRIBUTERELATION.USER_NEW", - "AB_ATTRIBUTERELATION.DATE_EDIT", - "AB_ATTRIBUTERELATION.USER_EDIT", - "AB_ATTRIBUTE.DROPDOWNFILTER" -]; - -//these fields hold the attributeRelation value, depending on the attribute type -var valueFields = AttributeTypeUtil.getAllDatabaseFields(); -var attributeSql = newSelect(defaultFields.concat(valueFields)) - .from("AB_ATTRIBUTE") - .orderBy("AB_ATTRIBUTE.SORTING asc") - .where(); // go into where mode - -var possibleAttributes; +var typeWhitelist, typeBlacklist; +if (vars.getString("$param.GetTheme_param") == "true") + typeWhitelist = [$AttributeTypes.THEME.toString()]; +else + typeBlacklist = [$AttributeTypes.THEME.toString()]; + +var loadEmptyAttributes = vars.getString("$param.ShowEmpty_param") == "true"; +var filteredAttributeIds = vars.exists("$param.FilteredAttributeIds_param") && vars.get("$param.FilteredAttributeIds_param"); +if (filteredAttributeIds) + filteredAttributeIds = JSON.parse(filteredAttributeIds); +var objectRowId = vars.get("$param.ObjectRowId_param"); +var objectType = vars.get("$param.ObjectType_param"); -if (idvalues) -{ - let attrId = idvalues.length === 1 && idvalues[0].split(",")[1]; - if (!attrId) - showEmpty = false; +var attributeQueryMaker = { + defaultQueryFields : [ + "AB_ATTRIBUTERELATIONID", + "AB_ATTRIBUTE.AB_ATTRIBUTEID", + "AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", + "AB_ATTRIBUTE.ATTRIBUTE_TYPE", + "AB_ATTRIBUTE.ATTRIBUTE_NAME", + "AB_ATTRIBUTE.DROPDOWNDEFINITION", + "COMBOVAL.ATTRIBUTE_NAME", + "AB_ATTRIBUTERELATION.DATE_NEW", + "AB_ATTRIBUTERELATION.USER_NEW", + "AB_ATTRIBUTERELATION.DATE_EDIT", + "AB_ATTRIBUTERELATION.USER_EDIT", + "AB_ATTRIBUTE.DROPDOWNFILTER" + ], + valueQueryFields : AttributeTypeUtil.getAllDatabaseFields(), - if (showEmpty) - attributeSql.and("AB_ATTRIBUTE.AB_ATTRIBUTEID", attrId); - else + getConditionForIdValues : function (pIdValues, pLoadEmptyAttributes) { - attributeSql.andIfSet("AB_ATTRIBUTERELATION.AB_ATTRIBUTERELATIONID", idvalues.map(function(pId) + var idCondition = newWhere(); + + if (pLoadEmptyAttributes) { - return pId[0] == "," ? pId.split(",")[1] : pId; - }), SqlBuilder.IN()); - objectRowId = null; - } - getTree = false; -} -else if (showEmpty || objectRowId) -{ - if (getTheme) - attributeSql.and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.THEME); - else - attributeSql.and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.THEME, SqlBuilder.NOT_EQUAL()); - - if (showEmpty) - { - possibleAttributes = AttributeUtil.getPossibleAttributes(objectType); - let filtered = vars.exists("$param.FilteredAttributeIds_param") && vars.getString("$param.FilteredAttributeIds_param"); + pIdValues.forEach(function (id) + { + var [attributeRelationId, attributeId] = JSON.parse(id); + idCondition.or("AB_ATTRIBUTERELATION.AB_ATTRIBUTERELATIONID", attributeRelationId); + idCondition.or(newWhere("AB_ATTRIBUTERELATION.AB_ATTRIBUTERELATIONID is null") + .and("AB_ATTRIBUTE.AB_ATTRIBUTEID", attributeId)); + }); + } + else + idCondition.andIfSet("AB_ATTRIBUTERELATION.AB_ATTRIBUTERELATIONID", pIdValues, SqlBuilder.IN()); - attributeSql.andIfSet("AB_ATTRIBUTE.AB_ATTRIBUTEID", possibleAttributes, SqlBuilder.IN()); - } - if (vars.get("$param.FilteredAttributeIds_param")) + return idCondition; + }, + getConditionForLinkedObject : function (pObjectType, pLoadEmptyAttributes, pAttributeIds, pTypeBlacklist, pTypeWhitelist) { - let filteredIds = JSON.parse(vars.getString("$param.FilteredAttributeIds_param")); + var attributeCondition = newWhereIfSet("AB_ATTRIBUTE.ATTRIBUTE_TYPE", pTypeBlacklist, SqlBuilder.NOT_IN()); + attributeCondition.andIfSet("AB_ATTRIBUTE.ATTRIBUTE_TYPE", pTypeWhitelist, SqlBuilder.IN()); - let filteredIdChildren = AttributeUtil.getAllChildren(filteredIds); + if (pLoadEmptyAttributes) + attributeCondition.andIfSet("AB_ATTRIBUTE.AB_ATTRIBUTEID", AttributeUtil.getPossibleAttributes(pObjectType), SqlBuilder.IN()); - let filteredCondition = newWhere(); + if (pAttributeIds) + { + let attributeChildren = AttributeUtil.getAllChildren(pAttributeIds); + let attributeIdCondition = newWhere(); + + if (attributeChildren.length > 0) + { + attributeIdCondition.and("AB_ATTRIBUTE.AB_ATTRIBUTEID", attributeChildren, SqlBuilder.IN()) + attributeIdCondition.and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, SqlBuilder.NOT_EQUAL()); + } + + // return nothing if filteredAttributeIds is an empty array. (--> and 1=2) + if (!attributeIdCondition.hasCondition()) + return null; + attributeCondition.and(attributeIdCondition); + } + return attributeCondition; + }, + + getAttributeQuery : function (pIdValues, pObjectRowId, pObjectType, pLoadEmptyAttributes, pAttributeIds, pTypeBlacklist, pTypeWhitelist) + { + var attributeQuery = newSelect(this.defaultQueryFields.concat(this.valueQueryFields)) + .from("AB_ATTRIBUTE") + .orderBy("AB_ATTRIBUTE.SORTING asc"); - if (filteredIdChildren.length > 0) + if (pIdValues) + attributeQuery.where(this.getConditionForIdValues(pIdValues, pLoadEmptyAttributes)); + else if (pObjectRowId) { - filteredCondition.and("AB_ATTRIBUTE.AB_ATTRIBUTEID", filteredIdChildren, SqlBuilder.IN()) - .and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, SqlBuilder.NOT_EQUAL()); + let condition = this.getConditionForLinkedObject(pObjectType, pLoadEmptyAttributes, pAttributeIds, pTypeBlacklist, pTypeWhitelist); + if (condition === null) + return null; + attributeQuery.where(condition); } - // return nothing if filteredAttributeIds is an empty array. (--> and 1=2) - if (filteredCondition.hasCondition()) - attributeSql.and(filteredCondition); - else - attributeSql.and("1=2"); - } -} + var attributeRelationCond = newWhere("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"); //condition for the joined values (for AttributeRelation) -var attributeRelationCond = newWhere("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"); //condition for the joined values (for AttributeRelation) - -if (objectRowId) -{ - attributeRelationCond.and("AB_ATTRIBUTERELATION.OBJECT_ROWID", objectRowId); - if (objectType) - attributeRelationCond.and("AB_ATTRIBUTERELATION.OBJECT_TYPE", objectType); -} + if (!pIdValues && pObjectRowId) + { + attributeRelationCond.and("AB_ATTRIBUTERELATION.OBJECT_ROWID", pObjectRowId); + attributeRelationCond.andIfSet("AB_ATTRIBUTERELATION.OBJECT_TYPE", pObjectType); + } + if (pLoadEmptyAttributes) + attributeQuery.leftJoin("AB_ATTRIBUTERELATION", attributeRelationCond); + else + attributeQuery.join("AB_ATTRIBUTERELATION", attributeRelationCond); - -if (showEmpty) - attributeSql.leftJoin("AB_ATTRIBUTERELATION", attributeRelationCond); -else - attributeSql.join("AB_ATTRIBUTERELATION", attributeRelationCond); + attributeQuery.leftJoin("AB_ATTRIBUTE", "COMBOVAL.AB_ATTRIBUTEID = " + $AttributeTypes.COMBO.databaseField, "COMBOVAL"); + + return attributeQuery; + } +} -attributeSql.leftJoin("AB_ATTRIBUTE", "COMBOVAL.AB_ATTRIBUTEID = " + $AttributeTypes.COMBO.databaseField, "COMBOVAL") +var attributeQuery = attributeQueryMaker.getAttributeQuery(idvalues, objectRowId, objectType, loadEmptyAttributes, filteredAttributeIds, typeBlacklist, typeWhitelist); +var attributeRelations = attributeQuery != null ? attributeQuery.table(false) : []; //Builds an object containing the minimal counts of the attributes, this is required for //checking if an attribute is used not often enough or just often enough. When this is the case, //deletion of this attributeRelation will be prohibited. -var minCountInsurance = {}; -if (getTree) -{ - if (!possibleAttributes) - possibleAttributes = AttributeUtil.getPossibleAttributes(objectType); +var minCountInsurance = { + minCounts : {}, + usageCounts : {}, - let minUsages = newSelect("AB_ATTRIBUTE_ID, MIN_COUNT") - .from("AB_ATTRIBUTEUSAGE") - .whereIfSet("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", possibleAttributes, SqlBuilder.IN()) - .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", objectType) - .table(true); - - minUsages.forEach(function (usage) + loadMinCounts : function (pObjectType) { - this[usage[0]] = { - count : 0, - min : usage[1] - }; - }, minCountInsurance); -} + + var minUsages = newSelect("AB_ATTRIBUTE_ID, MIN_COUNT") + .from("AB_ATTRIBUTEUSAGE") + .whereIfSet("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", Object.keys(this.usageCounts), SqlBuilder.IN()) + .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", pObjectType) + .table(true); -var attrRelations = attributeSql.table(true).map( - function (row) - { - var [attrRelId, attrId, attrParentId, attrType, attrName, dropDownDef, comboViewVal, dateNew, userNew, dateEdit, userEdit, dropDownFilter] = row; - attrName = translate.text(attrName); - attrType = attrType.trim(); - if (!getTree && !displaySimpleName && attrParentId) + minUsages.forEach(function ([attributeId, minCount]) { - let parentName = AttributeUtil.getFullAttributeName(attrParentId); - attrName = (parentName ? parentName + " / " : "") + attrName; - } - var value = row[AttributeTypeUtil.getTypeColumnIndex(attrType) + defaultFields.length]; - var viewValue; - if (attrType == $AttributeTypes.COMBO) - viewValue = translate.text(comboViewVal); - else - viewValue = AttributeTypeUtil.getAttributeViewValue(attrType, value, dropDownDef); + this.minCounts[attributeId] = minCount; + }, this); + }, + incrUsageCount : function (pAttributeId) + { + if (pAttributeId in this.usageCounts) + this.usageCounts[pAttributeId]++; + else + this.usageCounts[pAttributeId] = 1; + }, + attributeNotDeletable : function (pAttributeId) + { + return this.minCounts[pAttributeId] >= this.usageCounts[pAttributeId]; + } +}; - if (attrId in minCountInsurance) - minCountInsurance[attrId].count++; - - //TODO: what should be the uid if showEmpty is true? - // V-- set "," to mark this as new generated UUID - return [ - attrRelId || util.getNewUUID() + "," + attrId, - attrParentId, - value, - viewValue, - attrId, - attrName, - "", - attrType.trim(), - dateNew, - userNew, - dateEdit, - userEdit, - value, - viewValue, - dropDownDef, - dropDownFilter - ]; +attributeRelations = attributeRelations.map(function (row) +{ + var [attrRelId, attrId, attrParentId, attrType, attrName, dropDownDef, comboViewVal, dateNew, userNew, dateEdit, userEdit, dropDownFilter] = row; + attrName = translate.text(attrName); + attrType = attrType.trim(); + if (!getTree && loadFullAttributeName && attrParentId) + { + let parentName = AttributeUtil.getFullAttributeName(attrParentId); + attrName = (parentName ? parentName + " / " : "") + attrName; } -); + var value = row[AttributeTypeUtil.getTypeColumnIndex(attrType) + attributeQueryMaker.defaultQueryFields.length]; + var viewValue; + if (attrType == $AttributeTypes.COMBO) + viewValue = translate.text(comboViewVal); + else + viewValue = AttributeTypeUtil.getAttributeViewValue(attrType, value, dropDownDef); - _protectMinCountAttributes(attrRelations, minCountInsurance); + minCountInsurance.incrUsageCount(attrId); + + //if loadEmptyAttributes is true, the id is contains the attributeRelation id and the attribute id. + //in case there is no attributeRelation, a random id is used + return [ + loadEmptyAttributes ? JSON.stringify([attrRelId || util.getNewUUID(), attrId]) : attrRelId, + attrRelId, + attrParentId, + value, + viewValue, + attrId, + attrName, + "", //protected + attrType.trim(), + dateNew, + userNew, + dateEdit, + userEdit, + value, + viewValue, + dropDownDef, + dropDownFilter + ]; +}); + +minCountInsurance.loadMinCounts(objectType); +attributeRelations.forEach(function (attributeRelation) +{ + var attrId = attributeRelation[4]; + if (minCountInsurance.attributeNotDeletable(attrId)) + attributeRelation[7] = "true"; +}); -//object of attribute ids to avoid duplicates (more than one attribute can have the same parent) -var attrCatalog = {}; if (getTree) - attrRelations = _buildAttributeTree(attrRelations); + attributeRelations = _buildAttributeTree(attributeRelations); -result.object(attrRelations); +result.object(attributeRelations); /* * loads the parents for a tree */ function _buildAttributeTree (pAttrRelations) { - var parentAttributes = []; - _fetchParentAttributes(pAttrRelations.map(function (row) {return row[1]}), parentAttributes); - return TreeUtils.sortArrayForTree(parentAttributes, 0, 1).concat(pAttrRelations); -} + //object of attribute ids to avoid duplicates (more than one attribute can have the same parent) + var attrCatalog = {}; -/* - * recursive function that loads all superordinate attributes for the tree - */ -function _fetchParentAttributes (pAttributeIds, pParentAttributes) -{ - var attributeCond = newSelect("AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, ATTRIBUTE_NAME") - .from("AB_ATTRIBUTE") - .where() - var nextIds = []; - pAttributeIds.forEach(function (id) - { - if (!(id in this)) - attributeCond.andIfSet("AB_ATTRIBUTE.AB_ATTRIBUTEID", id); - }, attrCatalog); + var parentAttributes = []; + _fetchParentAttributes(pAttrRelations.map(function (row) {return row[2]}), parentAttributes); + return TreeUtils.sortArrayForTree(parentAttributes, 0, 2).concat(pAttrRelations); - attributeCond.table(true) - .forEach(function ([attrId, parentId, attrName]) - { - this[attrId] = true; //make entry in attrCatalog to avoid duplicates - if (parentId) - nextIds.push(parentId); - - pParentAttributes.push([ - attrId, - parentId, - "", - "", - "", - translate.text(attrName), //translate attribute name - "true", - "", - "", - "", - "", - "", - "", - "", - "", - "", - ]); - }, attrCatalog); - - if (nextIds.length) - _fetchParentAttributes(nextIds, pParentAttributes); -} - -function _protectMinCountAttributes (pAttrRelations, pMinCountInsurance) -{ - for (let i = 0; i < pAttrRelations.length; i++) + /* + * recursive function that loads all superordinate attributes for the tree + */ + function _fetchParentAttributes (pAttributeIds, pParentAttributes) { - let attrId = pAttrRelations[i][4]; - if (attrId in pMinCountInsurance && pMinCountInsurance[attrId].min >= pMinCountInsurance[attrId].count) - pAttrRelations[i][6] = "true"; + var attributeCond = newSelect("AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, ATTRIBUTE_NAME") + .from("AB_ATTRIBUTE") + .where() + var nextIds = []; + pAttributeIds.forEach(function (id) + { + if (!(id in this)) + attributeCond.orIfSet("AB_ATTRIBUTE.AB_ATTRIBUTEID", id); + }, attrCatalog); + + attributeCond.table(true) + .forEach(function ([attrId, parentId, attrName]) + { + this[attrId] = true; //make entry in attrCatalog to avoid duplicates + if (parentId) + nextIds.push(parentId); + + pParentAttributes.push([ + attrId, "", parentId, "", "", "", //0-5 + translate.text(attrName), //translate attribute name + "true", //7 + "", "", "", "", "", "", "", "", "" //8-16 + ]); + }, attrCatalog); + + if (nextIds.length) + _fetchParentAttributes(nextIds, pParentAttributes); } -} \ No newline at end of file +} diff --git a/entity/AttributeRelation_entity/recordcontainers/jdito/onInsert.js b/entity/AttributeRelation_entity/recordcontainers/jdito/onInsert.js index 4a307bcf23d..43c5873d91a 100644 --- a/entity/AttributeRelation_entity/recordcontainers/jdito/onInsert.js +++ b/entity/AttributeRelation_entity/recordcontainers/jdito/onInsert.js @@ -17,7 +17,7 @@ var columns = [ var rowdata = vars.get("$local.rowdata"); var uid = rowdata["UID.value"]; var values = [ - uid[0] == "," ? uid.substr(1) : uid, // if first char is "," it is a newly generated UUID + rowdata["AB_ATTRIBUTERELATIONID.value"], rowdata["AB_ATTRIBUTE_ID.value"], vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param"), diff --git a/entity/AttributeRelation_entity/recordcontainers/jdito/onUpdate.js b/entity/AttributeRelation_entity/recordcontainers/jdito/onUpdate.js index 293c5955a52..3078607f9c5 100644 --- a/entity/AttributeRelation_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/AttributeRelation_entity/recordcontainers/jdito/onUpdate.js @@ -8,31 +8,11 @@ import("Attribute_lib"); var rowdata = vars.get("$local.rowdata"); var attributeId = rowdata["AB_ATTRIBUTE_ID.value"] var type = AttributeUtil.getAttributeType(attributeId); -var uid = vars.get("$local.uid").split(","); +var attributeRelationId = vars.getString("$param.ShowEmpty_param") == "true" + ? JSON.parse(vars.get("$local.uid"))[0] + : vars.get("$local.uid"); -// if first char is "," it is a newly generated UUID -if (uid.length === 1) -{ - var fieldValues = { - "AB_ATTRIBUTE_ID" : attributeId, - "DATE_EDIT" : rowdata["DATE_EDIT.value"], - "USER_EDIT" : rowdata["USER_EDIT.value"] - }; - - var dbFields = AttributeTypeUtil.getAllDatabaseFields(); - dbFields.forEach(function (row) - { - fieldValues[row] = ""; //set every field but the correct value field to null - }); - - fieldValues[AttributeTypeUtil.getDatabaseField(type)] = AttributeTypeUtil.useLookup(type) - ? rowdata["VALUE_LOOKUP.value"] - : rowdata["VALUE.value"]; - - newWhere("AB_ATTRIBUTERELATION.AB_ATTRIBUTERELATIONID", "$local.uid") - .updateFields(fieldValues); -} -else +if (vars.getString("$param.ShowEmpty_param") == "true" && !rowdata["AB_ATTRIBUTERELATIONID.value"]) { var columns = [ "AB_ATTRIBUTERELATIONID", @@ -44,7 +24,7 @@ else ]; var values = [ - uid[0], // if first char is "," it is a newly generated UUID + attributeRelationId, attributeId, vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param"), @@ -62,6 +42,27 @@ else } db.insertData("AB_ATTRIBUTERELATION", columns, null, values); } +else +{ + var fieldValues = { + "AB_ATTRIBUTE_ID" : attributeId, + "DATE_EDIT" : rowdata["DATE_EDIT.value"], + "USER_EDIT" : rowdata["USER_EDIT.value"] + }; + + var dbFields = AttributeTypeUtil.getAllDatabaseFields(); + dbFields.forEach(function (row) + { + fieldValues[row] = ""; //set every field but the correct value field to null + }); + + fieldValues[AttributeTypeUtil.getDatabaseField(type)] = AttributeTypeUtil.useLookup(type) + ? rowdata["VALUE_LOOKUP.value"] + : rowdata["VALUE.value"]; + + newWhere("AB_ATTRIBUTERELATION.AB_ATTRIBUTERELATIONID", attributeRelationId) + .updateFields(fieldValues); +} if (vars.get("$param.ObjectType_param") == "Person") DataPrivacyUtils.notifyNeedDataPrivacyUpdate(vars.get("$param.ObjectRowId_param"), vars.get("$param.ShowDsgvoMessage_param")); \ No newline at end of file diff --git a/entity/Attribute_entity/Attribute_entity.aod b/entity/Attribute_entity/Attribute_entity.aod index d8ffe836b1d..8f0a4a35b9b 100644 --- a/entity/Attribute_entity/Attribute_entity.aod +++ b/entity/Attribute_entity/Attribute_entity.aod @@ -7,7 +7,6 @@ <contentTitleProcess>%aditoprj%/entity/Attribute_entity/contentTitleProcess.js</contentTitleProcess> <afterUiInit>%aditoprj%/entity/Attribute_entity/afterUiInit.js</afterUiInit> <onValidation>%aditoprj%/entity/Attribute_entity/onValidation.js</onValidation> - <afterOperatingState>%aditoprj%/entity/Attribute_entity/afterOperatingState.js</afterOperatingState> <iconId>VAADIN:TAG</iconId> <titlePlural>Attributes</titlePlural> <recordContainer>jdito</recordContainer> diff --git a/entity/Attribute_entity/afterOperatingState.js b/entity/Attribute_entity/afterOperatingState.js deleted file mode 100644 index 084c14a53af..00000000000 --- a/entity/Attribute_entity/afterOperatingState.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.vars"); -import("system.neon"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW && vars.get("$param.ParentIdPreset_param")) - neon.refreshAll(); \ No newline at end of file -- GitLab From c40fce66a62b4aebaed77aeee9751d02cdf92b23 Mon Sep 17 00:00:00 2001 From: Martin Bilda <m.bilda@adito.de> Date: Tue, 7 Jul 2020 07:20:29 +0200 Subject: [PATCH 003/184] =?UTF-8?q?#Prototyp=20f=C3=BCr=20MSTeams=20Anbind?= =?UTF-8?q?ung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Data_alias/basic/2020.2.1/changelog.xml | 5 + .../basic/2020.2.1/create_MST_TEAM.xml | 18 + .../create_asys_notificationcontents.xml | 4 +- aliasDefinition/Data_alias/Data_alias.aod | 927 ++---------------- entity/Activity_entity/Activity_entity.aod | 37 +- .../createnewchatactivity/onActionProcess.js | 6 + .../createnewchatactivity/stateProcess.js | 23 + entity/Document_entity/Document_entity.aod | 12 + .../synchronizedocuments/onActionProcess.js | 16 + .../synchronizedocuments/stateProcess.js | 24 + .../MSTChooseTeam_entity.aod | 60 ++ .../allarchivedteams/dropDownProcess.js | 9 + .../entityfields/allteams/dropDownProcess.js | 18 + .../recordcontainers/jdito/contentProcess.js | 9 + .../recordcontainers/jdito/onInsert.js | 78 ++ entity/MSTTeam2_entity/MSTTeam2_entity.aod | 43 + .../recordcontainers/jdito/contentProcess.js | 12 + .../MSTTeamChannel_entity.aod | 58 ++ .../entityfields/channelname/valueProcess.js | 6 + .../entityfields/description/valueProcess.js | 6 + .../recordcontainers/jdito/contentProcess.js | 9 + .../recordcontainers/jdito/onInsert.js | 18 + .../MSTTeamChat_entity/MSTTeamChat_entity.aod | 84 ++ .../allchannels/dropDownProcess.js | 24 + .../entityfields/allchannels/valueProcess.js | 0 .../children/messages_param/valueProcess.js | 24 + .../loadnewmessages/onActionProcess.js | 9 + .../loadnewmessages/stateProcess.js | 19 + .../recordcontainers/jdito/contentProcess.js | 9 + .../recordcontainers/jdito/onInsert.js | 3 + .../MSTTeamDocument_entity.aod | 58 ++ .../allchannels/dropDownProcess.js | 26 + .../entityfields/documents/dropDownProcess.js | 30 + .../recordcontainers/jdito/contentProcess.js | 9 + .../recordcontainers/jdito/onInsert.js | 38 + .../MSTTeamMember_entity.aod | 74 ++ .../mailsofextern/dropDownProcess.js | 6 + .../upnsofmembers/dropDownProcess.js | 6 + .../recordcontainers/jdito/contentProcess.js | 9 + .../recordcontainers/jdito/onInsert.js | 57 ++ entity/MSTTeam_entity/MSTTeam_entity.aod | 141 +++ .../entityfields/description/valueProcess.js | 6 + .../mailsofextern/dropDownProcess.js | 6 + .../objectrowid_param/valueProcess.js | 4 + .../children/objecttype_param/valueProcess.js | 3 + .../entityfields/obect_rowid/valueProcess.js | 6 + .../entityfields/teamname/valueProcess.js | 6 + .../upnsofmembers/dropDownProcess.js | 6 + .../upnsofowners/dropDownProcess.js | 6 + .../upnsofownersoriginal/dropDownProcess.js | 17 + .../recordcontainers/jdito/contentProcess.js | 9 + .../recordcontainers/jdito/onInsert.js | 91 ++ .../MSTTeamsMessage_entity.aod | 74 ++ .../loadnewmessages/onActionProcess.js | 26 + .../recordcontainers/jdito/contentProcess.js | 30 + entity/Member_entity/Member_entity.aod | 84 ++ .../entityfields/assignedteam/valueProcess.js | 38 + .../children/addapp/onActionProcess.js | 17 + .../children/addapp/stateProcess.js | 29 + .../children/addnewmember/onActionProcess.js | 11 + .../children/addnewmember/stateProcess.js | 23 + .../changetomsteam/onActionProcess.js | 3 + .../children/changetomsteam/stateProcess.js | 23 + .../children/chooseteam/onActionProcess.js | 8 + .../children/chooseteam/stateProcess.js | 11 + .../children/createchannel/onActionProcess.js | 12 + .../children/createchannel/stateProcess.js | 23 + .../children/createteam/onActionProcess.js | 32 + .../children/createteam/stateProcess.js | 11 + .../children/deleteteam/onActionProcess.js | 30 + .../children/deleteteam/stateProcess.js | 25 + .../children/restoreteam/onActionProcess.js | 28 + .../children/restoreteam/stateProcess.js | 23 + .../Salesproject_entity.aod | 58 ++ .../entityfields/addapp/onActionProcess.js | 12 + .../entityfields/addapp/stateProcess.js | 10 + .../entityfields/addmember/onActionProcess.js | 11 + .../entityfields/addmember/stateProcess.js | 10 + .../createchannel/onActionProcess.js | 10 + .../createchannel/stateProcess.js | 10 + .../createteam/onActionProcess.js | 20 + .../entityfields/createteam/stateProcess.js | 11 + .../deleteteam/onActionProcess.js | 10 + .../entityfields/deleteteam/stateProcess.js | 11 + .../restoreteam/onActionProcess.js | 10 + .../entityfields/restoreteam/stateProcess.js | 10 + .../recordcontainers/db/onDBUpdate.js | 16 + .../SingleObject_entity.aod | 44 + neonContext/MSTChooseTeam/MSTChooseTeam.aod | 13 + neonContext/MSTTeam/MSTTeam.aod | 13 + neonContext/MSTTeamChannel/MSTTeamChannel.aod | 13 + neonContext/MSTTeamChat/MSTTeamChat.aod | 13 + .../MSTTeamDocument/MSTTeamDocument.aod | 13 + neonContext/MSTTeamMember/MSTTeamMember.aod | 13 + .../MSTTeamsMessage/MSTTeamsMessage.aod | 13 + neonContext/Salesproject/Salesproject.aod | 4 + .../ActivityFilter_view.aod | 1 + .../DocumentFilter_view.aod | 1 + .../MSTChooseTeamEdit_view.aod | 49 + .../MSTTeamChannelEdit_view.aod | 10 + .../MSTTeamChannelEdit_view2.aod | 29 + .../MSTTeamChatEdit_view.aod | 41 + .../MSTTeamDocumentEdit_view.aod | 34 + .../MSTTeamEdit_view/MSTTeamEdit_view.aod | 48 + .../MSTTeamMemberEdit_view.aod | 36 + .../MSTTeamsMessageFilter_view.aod | 30 + .../MemberFilter_view/MemberFilter_view.aod | 38 +- .../SalesprojectMSTeams_view.aod | 36 + .../SalesprojectMain_view.aod | 12 +- .../_test_clientProcess.aod | 2 + process/_test_clientProcess/wsdl.wsdl | 0 process/mstws/mstws.aod | 13 + process/mstws/process.js | 53 + 113 files changed, 2589 insertions(+), 937 deletions(-) create mode 100644 .liquibase/Data_alias/basic/2020.2.1/changelog.xml create mode 100644 .liquibase/Data_alias/basic/2020.2.1/create_MST_TEAM.xml create mode 100644 entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/onActionProcess.js create mode 100644 entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/stateProcess.js create mode 100644 entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js create mode 100644 entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js create mode 100644 entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod create mode 100644 entity/MSTChooseTeam_entity/entityfields/allarchivedteams/dropDownProcess.js create mode 100644 entity/MSTChooseTeam_entity/entityfields/allteams/dropDownProcess.js create mode 100644 entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js create mode 100644 entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js create mode 100644 entity/MSTTeam2_entity/MSTTeam2_entity.aod create mode 100644 entity/MSTTeam2_entity/recordcontainers/jdito/contentProcess.js create mode 100644 entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod create mode 100644 entity/MSTTeamChannel_entity/entityfields/channelname/valueProcess.js create mode 100644 entity/MSTTeamChannel_entity/entityfields/description/valueProcess.js create mode 100644 entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js create mode 100644 entity/MSTTeamChannel_entity/recordcontainers/jdito/onInsert.js create mode 100644 entity/MSTTeamChat_entity/MSTTeamChat_entity.aod create mode 100644 entity/MSTTeamChat_entity/entityfields/allchannels/dropDownProcess.js create mode 100644 entity/MSTTeamChat_entity/entityfields/allchannels/valueProcess.js create mode 100644 entity/MSTTeamChat_entity/entityfields/consumer/children/messages_param/valueProcess.js create mode 100644 entity/MSTTeamChat_entity/entityfields/loadnewmessages/onActionProcess.js create mode 100644 entity/MSTTeamChat_entity/entityfields/loadnewmessages/stateProcess.js create mode 100644 entity/MSTTeamChat_entity/recordcontainers/jdito/contentProcess.js create mode 100644 entity/MSTTeamChat_entity/recordcontainers/jdito/onInsert.js create mode 100644 entity/MSTTeamDocument_entity/MSTTeamDocument_entity.aod create mode 100644 entity/MSTTeamDocument_entity/entityfields/allchannels/dropDownProcess.js create mode 100644 entity/MSTTeamDocument_entity/entityfields/documents/dropDownProcess.js create mode 100644 entity/MSTTeamDocument_entity/recordcontainers/jdito/contentProcess.js create mode 100644 entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js create mode 100644 entity/MSTTeamMember_entity/MSTTeamMember_entity.aod create mode 100644 entity/MSTTeamMember_entity/entityfields/mailsofextern/dropDownProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/upnsofmembers/dropDownProcess.js create mode 100644 entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js create mode 100644 entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js create mode 100644 entity/MSTTeam_entity/MSTTeam_entity.aod create mode 100644 entity/MSTTeam_entity/entityfields/description/valueProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/mailsofextern/dropDownProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/membercomsumer/children/objectrowid_param/valueProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/membercomsumer/children/objecttype_param/valueProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/obect_rowid/valueProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/teamname/valueProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/upnsofmembers/dropDownProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/upnsofowners/dropDownProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/upnsofownersoriginal/dropDownProcess.js create mode 100644 entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js create mode 100644 entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js create mode 100644 entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod create mode 100644 entity/MSTTeamsMessage_entity/entityfields/msteam/children/loadnewmessages/onActionProcess.js create mode 100644 entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js create mode 100644 entity/Member_entity/entityfields/assignedteam/valueProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/onActionProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/stateProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js create mode 100644 entity/Salesproject_entity/entityfields/addapp/onActionProcess.js create mode 100644 entity/Salesproject_entity/entityfields/addapp/stateProcess.js create mode 100644 entity/Salesproject_entity/entityfields/addmember/onActionProcess.js create mode 100644 entity/Salesproject_entity/entityfields/addmember/stateProcess.js create mode 100644 entity/Salesproject_entity/entityfields/createchannel/onActionProcess.js create mode 100644 entity/Salesproject_entity/entityfields/createchannel/stateProcess.js create mode 100644 entity/Salesproject_entity/entityfields/createteam/onActionProcess.js create mode 100644 entity/Salesproject_entity/entityfields/createteam/stateProcess.js create mode 100644 entity/Salesproject_entity/entityfields/deleteteam/onActionProcess.js create mode 100644 entity/Salesproject_entity/entityfields/deleteteam/stateProcess.js create mode 100644 entity/Salesproject_entity/entityfields/restoreteam/onActionProcess.js create mode 100644 entity/Salesproject_entity/entityfields/restoreteam/stateProcess.js create mode 100644 entity/SingleObject_entity/SingleObject_entity.aod create mode 100644 neonContext/MSTChooseTeam/MSTChooseTeam.aod create mode 100644 neonContext/MSTTeam/MSTTeam.aod create mode 100644 neonContext/MSTTeamChannel/MSTTeamChannel.aod create mode 100644 neonContext/MSTTeamChat/MSTTeamChat.aod create mode 100644 neonContext/MSTTeamDocument/MSTTeamDocument.aod create mode 100644 neonContext/MSTTeamMember/MSTTeamMember.aod create mode 100644 neonContext/MSTTeamsMessage/MSTTeamsMessage.aod create mode 100644 neonView/MSTChooseTeamEdit_view/MSTChooseTeamEdit_view.aod create mode 100644 neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod create mode 100644 neonView/MSTTeamChannelEdit_view2/MSTTeamChannelEdit_view2.aod create mode 100644 neonView/MSTTeamChatEdit_view/MSTTeamChatEdit_view.aod create mode 100644 neonView/MSTTeamDocumentEdit_view/MSTTeamDocumentEdit_view.aod create mode 100644 neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod create mode 100644 neonView/MSTTeamMemberEdit_view/MSTTeamMemberEdit_view.aod create mode 100644 neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod create mode 100644 neonView/SalesprojectMSTeams_view/SalesprojectMSTeams_view.aod create mode 100644 process/_test_clientProcess/wsdl.wsdl create mode 100644 process/mstws/mstws.aod create mode 100644 process/mstws/process.js diff --git a/.liquibase/Data_alias/basic/2020.2.1/changelog.xml b/.liquibase/Data_alias/basic/2020.2.1/changelog.xml new file mode 100644 index 00000000000..7a6f495d3a7 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.1/changelog.xml @@ -0,0 +1,5 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <include file="create_MST_TEAM.xml" relativeToChangelogFile="true"/> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.1/create_MST_TEAM.xml b/.liquibase/Data_alias/basic/2020.2.1/create_MST_TEAM.xml new file mode 100644 index 00000000000..1181ee7b3a2 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.1/create_MST_TEAM.xml @@ -0,0 +1,18 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> +<changeSet author="m.bilda" id="3d4f843d-9c5d-46b1-9475-9527d45a65b6"> + <createTable tableName="MST_TEAM"> + <column name="MST_ID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_MST_TEAM_MST_ID"/> + </column> + <column name="MST_TEAMID" type="CHAR(36)"/> + <column name="TEAMNAME" type="NVARCHAR(255)"/> + <column name="GENERAL_CHANNELID" type="CHAR(48)"/> + <column name="OBJECT_ROWID" type="CHAR(36)"/> + <column name="IS_ARCHIVED" type="TINYINT"/> + <column name="SERVICE_URL" type="NVARCHAR(255)"/> + <column name="FINAL_DELETE_DATE" type="TIMESTAMP"/> + </createTable> +</changeSet> +</databaseChangeLog> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml index d045c993887..8da1987f7f3 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml @@ -7,11 +7,11 @@ </column> <column name="BACKPACK" type="CLOB"/> <column name="CAPTION" type="VARCHAR(512)"/> - <column name="CREATIONDATE" type="BIGINT"/> + <column name="CREATEDATE" type="TIMESTAMP"/> + <column name="DELETEDATE" type="TIMESTAMP"/> <column name="DESCRIPTION" type="VARCHAR(1023)"/> <column name="FORCEDPRIORITY" type="VARCHAR(15)"/> <column name="ICON_INFO" type="VARCHAR(1023)"/> - <column name="LIFETIME" type="BIGINT"/> <column name="LINK_INFO" type="VARCHAR(1023)"/> <column name="ORIGINATORNAME" type="VARCHAR(63)"/> <column name="RECIPIENTUSERIDS" type="CLOB"/> diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 06901c17a5e..9f5df436ed9 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -14,7 +14,6 @@ <idColumn>ORGANISATIONID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/organisation/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -230,7 +229,6 @@ <idColumn>CONTACTID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/contact/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -263,7 +261,7 @@ <customJDitoProperty> <name>translate4Log</name> <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/contact/entityfields/isolanguage/customproperties/translate4log/property.js</property> + <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/contact/entityfields/language/customproperties/translate4log/property.js</property> </customJDitoProperty> </customProperties> </entityFieldDb> @@ -518,7 +516,6 @@ <idColumn>PERSONID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/person/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -800,7 +797,6 @@ <idColumn>ADDRESSID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/address/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -1151,7 +1147,6 @@ <idColumn>COMMUNICATIONID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/communication/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -1332,7 +1327,6 @@ <idColumn>CONTRACTID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/contract/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -1496,13 +1490,6 @@ <property v="true" /> </customBooleanProperty> </customProperties> - <dependencies> - <entityDependency> - <name>f3ac610e-e9a7-4806-bab1-eeab4de8969b</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>CONTRACTSTART</name> @@ -1552,7 +1539,6 @@ <idColumn>PRODUCTID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/product/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -1686,7 +1672,7 @@ <name>GROUPCODEID</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> + <columnType v="1" /> <size v="36" /> <scale v="0" /> <notNull v="false" /> @@ -1746,19 +1732,11 @@ <global v="false" /> <property v="true" /> </customBooleanProperty> - <customJDitoProperty> + <customStringProperty> <name>translate4Log</name> <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/product/entityfields/contact_id/customproperties/translate4log/property.js</property> - </customJDitoProperty> + </customStringProperty> </customProperties> - <dependencies> - <entityDependency> - <name>8d17eacc-3169-4a36-9eab-9c0ba2dabab6</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>DATE_EDIT</name> @@ -1838,7 +1816,6 @@ <idColumn>PROD2PRODID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/prod2prod/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -1985,7 +1962,6 @@ <idColumn>PRODUCTPRICEID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/productprice/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -2187,19 +2163,7 @@ <global v="false" /> <property v="true" /> </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/productprice/entityfields/contact_id/customproperties/translate4log/property.js</property> - </customJDitoProperty> </customProperties> - <dependencies> - <entityDependency> - <name>a8b943c0-cdd0-4be3-a23d-6daffa1c996e</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>VALID_FROM</name> @@ -2242,7 +2206,6 @@ <idColumn>STOCKID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/stock/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -2402,7 +2365,6 @@ <idColumn>ISO2</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/ab_countryinfo/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -2581,7 +2543,6 @@ <idColumn>OFFERID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/offer/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -2765,13 +2726,6 @@ <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/offer/entityfields/contact_id/customproperties/translate4log/property.js</property> </customJDitoProperty> </customProperties> - <dependencies> - <entityDependency> - <name>77e369c9-c809-404d-bb2a-95cd1b8dd62e</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>NET</name> @@ -3088,7 +3042,6 @@ <idColumn>OFFERITEMID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/offeritem/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -3209,13 +3162,6 @@ <property>OFFER</property> </customStringProperty> </customProperties> - <dependencies> - <entityDependency> - <name>49169abb-4334-4c58-8668-0fd5e9b1df24</name> - <entityName>OFFER</entityName> - <fieldName>OFFERID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>OFFERITEMID</name> @@ -3249,13 +3195,6 @@ <property v="true" /> </customBooleanProperty> </customProperties> - <dependencies> - <entityDependency> - <name>7e57f7d7-3902-4c0f-be04-62fd61bf6154</name> - <entityName>PRODUCT</entityName> - <fieldName>PRODUCTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>DISCOUNT</name> @@ -3436,7 +3375,6 @@ <idColumn>SALESPROJECTID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesproject/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -3610,13 +3548,6 @@ <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesproject/entityfields/contact_id/customproperties/translate4log/property.js</property> </customJDitoProperty> </customProperties> - <dependencies> - <entityDependency> - <name>0a2f3157-9427-4a62-aa98-2baed6aecba6</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>PROJECTTITLE</name> @@ -3724,7 +3655,6 @@ <idColumn>TIMETRACKINGID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/timetracking/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -3791,13 +3721,6 @@ <property v="true" /> </customBooleanProperty> </customProperties> - <dependencies> - <entityDependency> - <name>b59a9e9a-ab55-4b1c-bc62-fa4d930dc36d</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>INFO</name> @@ -3877,7 +3800,6 @@ <idColumn>ACTIVITYID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/activity/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -4364,13 +4286,6 @@ <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/contact_id/customproperties/translate4log/property.js</property> </customJDitoProperty> </customProperties> - <dependencies> - <entityDependency> - <name>8ccaf66c-44a2-4a80-a821-99b356b782ec</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>NET</name> @@ -4432,13 +4347,6 @@ <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/offer_id/customproperties/translate4log/property.js</property> </customJDitoProperty> </customProperties> - <dependencies> - <entityDependency> - <name>dca4dcc4-625b-4d29-a525-60496815c93a</name> - <entityName>OFFER</entityName> - <fieldName>OFFERID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>ISOLANGUAGE</name> @@ -4601,9 +4509,9 @@ <name>UNPAID</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="3" /> - <size v="14" /> - <scale v="2" /> + <columnType v="4" /> + <size v="10" /> + <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -4787,9 +4695,9 @@ <name>PAID</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="3" /> - <size v="14" /> - <scale v="2" /> + <columnType v="4" /> + <size v="10" /> + <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -4983,13 +4891,6 @@ <global v="false" /> </customJDitoProperty> </customProperties> - <dependencies> - <entityDependency> - <name>493ddfe2-9dde-4214-98d7-0ce557a68d4e</name> - <entityName>PRODUCT</entityName> - <fieldName>PRODUCTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>DISCOUNT</name> @@ -5131,13 +5032,6 @@ <property>SALESORDER</property> </customStringProperty> </customProperties> - <dependencies> - <entityDependency> - <name>8c51f477-536d-4a3e-ac92-7257b2b46742</name> - <entityName>SALESORDER</entityName> - <fieldName>SALESORDERID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>ASSIGNEDTO</name> @@ -5224,7 +5118,6 @@ <idColumn>TASKID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/task/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -5308,13 +5201,6 @@ <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/task/entityfields/editor_contact_id/customproperties/translate4log/property.js</property> </customJDitoProperty> </customProperties> - <dependencies> - <entityDependency> - <name>f3b9dcbf-aee9-4436-9310-c03fb232ee32</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>TASKID</name> @@ -5402,13 +5288,6 @@ <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/task/entityfields/requestor_contact_id/customproperties/translate4log/property.js</property> </customJDitoProperty> </customProperties> - <dependencies> - <entityDependency> - <name>d5ba5511-466e-480c-adb8-e1391eba8180</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>SUBJECT</name> @@ -5718,7 +5597,6 @@ <idColumn>AB_ATTRIBUTEUSAGEID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/ab_attributeusage/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -5836,7 +5714,6 @@ <idColumn>AB_ATTRIBUTEID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/ab_attribute/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -5935,7 +5812,7 @@ <notNull v="false" /> <isUnique v="false" /> <index v="true" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/ab_attribute/entityfields/attribute_parent_id/documentation.adoc</documentation> + <documentation></documentation> <title>Superordinate Attribute</title> <description></description> <customProperties> @@ -6031,7 +5908,6 @@ <idColumn>AB_ATTRIBUTERELATIONID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/ab_attributerelation/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -6355,13 +6231,6 @@ <property v="true" /> </customBooleanProperty> </customProperties> - <dependencies> - <entityDependency> - <name>f83509a9-7882-446e-ba31-c176b577ea43</name> - <entityName>ACTIVITY</entityName> - <fieldName>ACTIVITYID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>OBJECT_TYPE</name> @@ -6607,7 +6476,6 @@ <idColumn>ISO3</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/ab_language/documentation.adoc</documentation> <title></title> <description></description> <auditSyncConfig> @@ -7069,7 +6937,7 @@ <idColumn>TASKLINKID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/tasklink/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -7157,13 +7025,6 @@ <property v="true" /> </customBooleanProperty> </customProperties> - <dependencies> - <entityDependency> - <name>a03028c0-df78-4449-8781-04f811c8076c</name> - <entityName>TASK</entityName> - <fieldName>TASKID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> </entityFields> </entityDb> @@ -7326,7 +7187,7 @@ <idColumn>SALUTATIONID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salutation/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -7500,6 +7361,7 @@ <idColumn></idColumn> <idGeneratorType v="1" /> <idGeneratorInterval v="1" /> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -7813,6 +7675,7 @@ <idColumn>ID</idColumn> <idGeneratorType v="1" /> <idGeneratorInterval v="1" /> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -7908,7 +7771,7 @@ <dbName></dbName> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/ab_loghistory/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -8040,7 +7903,7 @@ <idColumn>SALESPROJECT_MILESTONEID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesproject_milestone/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -8093,13 +7956,6 @@ <property v="true" /> </customBooleanProperty> </customProperties> - <dependencies> - <entityDependency> - <name>8b4e2e45-4e16-43e9-a231-709853522a8b</name> - <entityName>SALESPROJECT</entityName> - <fieldName>SALESPROJECTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>DATE_END</name> @@ -8186,7 +8042,7 @@ <idColumn>CAMPAIGNPARTICIPANTID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/campaignparticipant/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -8211,13 +8067,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>8b82a111-3ca0-4382-bd70-e4507f805b7e</name> - <entityName>CAMPAIGN</entityName> - <fieldName>CAMPAIGNID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>CAMPAIGNPARTICIPANTID</name> @@ -8260,13 +8109,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>cfb5cc49-d342-48aa-8006-8c42e9090ff7</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>DATE_NEW</name> @@ -8323,13 +8165,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>88fd6b78-4ace-4f03-80ee-d16a73c5e0eb</name> - <entityName>CAMPAIGNSTEP</entityName> - <fieldName>CAMPAIGNSTEPID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> </entityFields> </entityDb> @@ -8339,7 +8174,7 @@ <idColumn>DOCUMENTTEMPLATEID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/documenttemplate/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -8513,7 +8348,7 @@ <idColumn>DOCUMENTTEMPLATELINKID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/documenttemplatelink/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -8631,7 +8466,7 @@ <idColumn>CAMPAIGNID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/campaign/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -8684,13 +8519,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>09fa1bdb-24f2-42a2-a577-d098bfba2f1b</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>DATE_NEW</name> @@ -8798,7 +8626,7 @@ <idColumn>CAMPAIGNSTEPID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/campaignstep/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -8823,13 +8651,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>490118eb-5bac-4398-b80c-19e1dd2a1935</name> - <entityName>CAMPAIGN</entityName> - <fieldName>CAMPAIGNID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>DATE_EDIT</name> @@ -8928,13 +8749,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>9acfbd74-b640-4124-8acf-734af78f579b</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>SORTING</name> @@ -9056,7 +8870,7 @@ <idColumn>CAMPAIGNPARTICIPANTLOGID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/campaignparticipantlog/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -9081,13 +8895,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>ea37a467-733c-47d7-bcad-72b99bd1f65c</name> - <entityName>CAMPAIGN</entityName> - <fieldName>CAMPAIGNID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>DATE_EDIT</name> @@ -9116,13 +8923,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>ce9a4c12-5021-4c4a-bbbf-7829f09555f3</name> - <entityName>CAMPAIGNPARTICIPANT</entityName> - <fieldName>CAMPAIGNPARTICIPANTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>DATE_NEW</name> @@ -9193,13 +8993,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>99531847-67e5-4a87-bbfe-40873e85921e</name> - <entityName>CAMPAIGNSTEP</entityName> - <fieldName>CAMPAIGNSTEPID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>PREVIOUS_CAMPAIGNSTEP_ID</name> @@ -9214,13 +9007,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>afb04c8c-469e-4a89-a330-1ea9624d42bd</name> - <entityName>CAMPAIGNSTEP</entityName> - <fieldName>CAMPAIGNSTEPID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> </entityFields> </entityDb> @@ -9230,7 +9016,7 @@ <idColumn>CAMPAIGNCOSTID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/campaigncost/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -9255,13 +9041,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>c2fd8b9c-4e2a-4290-8e5f-f5da327ad424</name> - <entityName>CAMPAIGN</entityName> - <fieldName>CAMPAIGNID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>DATE_EDIT</name> @@ -9374,13 +9153,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>972341d8-bfda-4a2b-82a6-39470c475af4</name> - <entityName>CAMPAIGNSTEP</entityName> - <fieldName>CAMPAIGNSTEPID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> </entityFields> </entityDb> @@ -9390,7 +9162,7 @@ <idColumn>CLASSIFICATIONTYPEID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/classificationtype/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -9466,7 +9238,7 @@ <idColumn>CLASSIFICATIONID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/classification/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -9491,13 +9263,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>99de8b6e-5e34-4c5a-99d1-51c12bcaa99c</name> - <entityName>CLASSIFICATIONTYPE</entityName> - <fieldName>CLASSIFICATIONTYPEID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>OBJECT_ROWID</name> @@ -9512,13 +9277,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>1f1c15ab-7784-4e17-a59f-33eee8bdd766</name> - <entityName>OBJECTMEMBER</entityName> - <fieldName>OBJECT_ROWID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>CLASSIFICATIONSCORE_ID</name> @@ -9533,13 +9291,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>aeeb4a24-4e92-4f78-a98c-3c423678000a</name> - <entityName>CLASSIFICATIONSCORE</entityName> - <fieldName>CLASSIFICATIONSCOREID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>CLASSIFICATIONID</name> @@ -9577,7 +9328,7 @@ <idColumn>CLASSIFICATIONSCOREID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/classificationscore/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -9658,13 +9409,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>d9eb29b7-a77c-4b72-b98e-13a87bedfc2b</name> - <entityName>CLASSIFICATIONTYPE</entityName> - <fieldName>CLASSIFICATIONTYPE</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> </entityFields> </entityDb> @@ -9674,7 +9418,7 @@ <idColumn>FORECASTID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/forecast/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -9699,13 +9443,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>a1759554-192b-49fa-b6a8-b982115f71ab</name> - <entityName>OBJECTMEMBER</entityName> - <fieldName>OBJECT_ROWID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>GROUPCODE</name> @@ -9799,7 +9536,7 @@ <idColumn>COMPETITIONID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/competition/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -9866,13 +9603,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>b2a38bff-3d1a-45e4-b940-1c01af46e2c1</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>COMPETITIONID</name> @@ -9952,7 +9682,7 @@ <idColumn>COMMRESTRICTIONID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/commrestriction/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -10033,13 +9763,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>02f366e1-7356-4bd7-9b78-dd49b763a2e1</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>REASON</name> @@ -10063,7 +9786,7 @@ <idColumn>BULKMAILID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/bulkmail/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -10085,7 +9808,7 @@ <notNull v="false" /> <isUnique v="false" /> <index v="true" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/bulkmail/entityfields/documenttemplate_id/documentation.adoc</documentation> + <documentation></documentation> <title>Document Template</title> <description></description> <customProperties> @@ -10100,13 +9823,6 @@ <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/bulkmail/entityfields/documenttemplate_id/customproperties/translate4log/property.js</property> </customJDitoProperty> </customProperties> - <dependencies> - <entityDependency> - <name>ce13c1b7-2a63-4275-9e2e-c51078d972ef</name> - <entityName>DOCUMENTTEMPLATE</entityName> - <fieldName>DOCUMENTTEMPLATEID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>BULKMAILID</name> @@ -10284,7 +10000,7 @@ <idColumn>BULKMAILRECIPIENTID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/bulkmailrecipient/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -10323,13 +10039,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>bdcbf4b9-6bed-496d-80cf-7ec7d081e7fa</name> - <entityName>BULKMAIL</entityName> - <fieldName>BULKMAILID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>BULKMAILRECIPIENTID</name> @@ -10358,13 +10067,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>637b1a29-8f20-436d-9f5b-26c650941fb0</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>SENTDATE</name> @@ -10416,7 +10118,7 @@ <idColumn>TICKETID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/ticket/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -10469,13 +10171,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>9f25a871-5d9b-480c-8ac2-12a26f557d7f</name> - <entityName>TASK</entityName> - <fieldName>TASKID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>TICKETTYPE</name> @@ -10566,13 +10261,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>de3799fa-b558-4dc3-8eff-3a9468c098d7</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>DATE_NEW</name> @@ -10680,8 +10368,9 @@ <idColumn>DESCRIPTIONTRANSLATIONID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/descriptiontranslation/documentation.adoc</documentation> + <documentation></documentation> <title></title> + <description></description> <auditSyncConfig> <name>auditSyncConfig</name> <auditMode v="0" /> @@ -10704,13 +10393,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>0397ff2a-4405-4c41-8122-5f38167625be</name> - <entityName>OBJECTMEMBER</entityName> - <fieldName>OBJECT_ROWID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>DESCRIPTIONTRANSLATIONID</name> @@ -10764,7 +10446,7 @@ <notNull v="false" /> <isUnique v="false" /> <index v="false" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/descriptiontranslation/entityfields/lang/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> </entityFieldDb> @@ -10776,7 +10458,7 @@ <idColumn>AB_UNLINKEDMAILID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/ab_unlinkedmail/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -10936,8 +10618,9 @@ <idColumn>AB_CTILOGID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/ab_ctilog/documentation.adoc</documentation> + <documentation></documentation> <title></title> + <description></description> <auditSyncConfig> <name>auditSyncConfig</name> <auditMode v="0" /> @@ -11162,13 +10845,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>74635747-d666-4886-9354-3173f8c8983a</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> </entityFields> </entityDb> @@ -11178,7 +10854,7 @@ <idColumn>LETTERRECIPIENTID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/letterrecipient/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -11203,13 +10879,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>44c3a8d3-b40e-4151-ad86-2024c255c348</name> - <entityName>SERIALLETTER</entityName> - <fieldName>SERIALLETTERID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>LETTERRECIPIENTID</name> @@ -11238,13 +10907,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>c965c60a-3d92-407e-a27a-0a638760d2b3</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> </entityFields> </entityDb> @@ -11254,7 +10916,7 @@ <idColumn>SERIALLETTERID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/serialletter/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -11460,7 +11122,7 @@ <idColumn>SALESPROJECT_TOUCHPOINTID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesproject_touchpoint/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -11541,13 +11203,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>e432f140-04db-464f-84a1-620c58709a26</name> - <entityName>SALESPROJECT_MILESTONE</entityName> - <fieldName>SALESPROJECT_ID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> </entityFields> </entityDb> @@ -11908,13 +11563,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>9b123a17-2f41-49f8-9492-f386ece46f7c</name> - <entityName>DUPLICATESCANNER</entityName> - <fieldName>ID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>DATE_NEW</name> @@ -11994,7 +11642,7 @@ <idColumn>LEADLOGID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/leadlog/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -12131,13 +11779,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>1dcb1dbc-9294-43a2-b7a7-0cbc66a151e7</name> - <entityName>LEADIMPORT</entityName> - <fieldName>LEADIMPORTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>USER_EDIT</name> @@ -12671,7 +12312,7 @@ <idColumn>LEADIMPORTID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/leadimport/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -13010,13 +12651,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>e8d3b2fc-6c20-4fcb-96fe-f38fc461a25b</name> - <entityName>LEADIMPORT</entityName> - <fieldName>LEADIMPORTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>USER_EDIT</name> @@ -13040,7 +12674,7 @@ <idColumn>LEADID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/lead/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -13303,13 +12937,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>14ab15d3-99fc-4c58-9c4a-c2ec404e5c67</name> - <entityName>LEADIMPORT</entityName> - <fieldName>LEADIMPORTID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>BUILDINGNO</name> @@ -13478,13 +13105,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>b3823998-cf9c-4fa1-914c-6158945e9863</name> - <entityName>PERSON</entityName> - <fieldName>PERSONID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>ADDRESS</name> @@ -13639,13 +13259,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>abfbfb1e-678a-409b-a5cb-a87c8332478f</name> - <entityName>ORGANISATION</entityName> - <fieldName>ORGANISATIONID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>LEADID</name> @@ -13953,20 +13566,6 @@ <title></title> <description></description> </entityFieldDb> - <entityFieldDb> - <name>VARIABLES</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="512" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -13975,7 +13574,7 @@ <idColumn>EXPORTTEMPLATEPLACEOFUSEID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/exporttemplateplaceofuse/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -14044,7 +13643,7 @@ <idColumn>DOCUMENTTEMPLATEPLACEOFUSEID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/documenttemplateplaceofuse/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -14069,13 +13668,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>14bbdba4-88c2-4cf3-aaa6-71328e590968</name> - <entityName>DOCUMENTTEMPLATE</entityName> - <fieldName>DOCUMENTTEMPLATEID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> <entityFieldDb> <name>PLACEOFUSE</name> @@ -14113,7 +13705,7 @@ <idColumn>EXPORTTEMPLATEID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/exporttemplate/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -14167,6 +13759,20 @@ <title></title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>SEPARATOR</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> <entityFieldDb> <name>EXPORTTEMPLATEID</name> <dbName></dbName> @@ -14237,48 +13843,6 @@ <title></title> <description></description> </entityFieldDb> - <entityFieldDb> - <name>FIELDSEPARATOR</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SENTENCESEPARATOR</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>FIELDDELIMITER</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -14287,7 +13851,7 @@ <idColumn>EXPORTTEMPLATEFIELDID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/exporttemplatefield/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -14354,13 +13918,6 @@ <documentation></documentation> <title></title> <description></description> - <dependencies> - <entityDependency> - <name>b5bdf0af-cfed-4718-bcb6-9f8ff24842dd</name> - <entityName>EXPORTTEMPLATE</entityName> - <fieldName>EXPORTTEMPLATEID</fieldName> - </entityDependency> - </dependencies> </entityFieldDb> </entityFields> </entityDb> @@ -14370,7 +13927,7 @@ <idColumn>EXPORTTEMPLATESELECTIONID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> - <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/exporttemplateselection/documentation.adoc</documentation> + <documentation></documentation> <title></title> <description></description> <auditSyncConfig> @@ -14593,360 +14150,6 @@ </entityFieldDb> </entityFields> </entityDb> - <entityDb> - <name>VISITRECOMMENDATION</name> - <dbName></dbName> - <idColumn>VISITRECOMMENDATIONID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <documentation></documentation> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="0" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>DUE_DATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SOURCE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>VISITRECOMMENDATIONID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="true" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>PRIORITY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>VISITPLANEMPLOYEEWEEK</name> - <dbName></dbName> - <idColumn>VISITPLANEMPLOYEEWEEKID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <documentation></documentation> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="0" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>VISITPLANEMPLOYEEWEEKID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="true" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>VISITPLAN_WEEK</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>VISITPLAN_YEAR</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>VISITPLANENTRY</name> - <dbName></dbName> - <idColumn>VISITPLANENTRYID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <documentation></documentation> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="0" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>STATUS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>END_TIME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="92" /> - <size v="8" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>BEGIN_TIME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="92" /> - <size v="8" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>VISITPLANEMPLOYEEWEEK_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>VISITRECOMMENDATION_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ORGANISATION_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>VISITPLANENTRYID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="true" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>APPOINTMENT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ENTRYDATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> </entities> </entityGroup> </aliasDefDb> diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index 0d0a112f0c5..97ca6191f20 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -51,7 +51,6 @@ <consumer>KeywordCategories</consumer> <groupable v="true" /> <mandatory v="true" /> - <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/category/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Activity_entity/entityfields/category/displayValueProcess.js</displayValueProcess> </entityField> <entityField> @@ -87,12 +86,6 @@ <fieldName>Activities</fieldName> <isConsumer v="false" /> </entityDependency> - <entityDependency> - <name>262fe53d-7358-40ff-8641-e08add14528a</name> - <entityName>Object_entity</entityName> - <fieldName>Activities</fieldName> - <isConsumer v="false" /> - </entityDependency> </dependencies> </entityProvider> <entityField> @@ -270,12 +263,6 @@ <fieldName>Activities</fieldName> <isConsumer v="false" /> </entityDependency> - <entityDependency> - <name>943c36a2-d378-44a1-b214-25e92244c8cb</name> - <entityName>UniversalFileProcessor_entity</entityName> - <fieldName>Activities</fieldName> - <isConsumer v="false" /> - </entityDependency> </dependencies> <children> <entityParameter> @@ -491,6 +478,7 @@ <children> <entityParameter> <name>LinkedObjectId_param</name> + <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/appointments/children/linkedobjectid_param/valueProcess.js</valueProcess> </entityParameter> </children> </entityConsumer> @@ -571,7 +559,6 @@ </entityField> <entityField> <name>bindata</name> - <title>data</title> <contentType>FILE</contentType> <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/bindata/stateProcess.js</stateProcess> <onValueChange>%aditoprj%/entity/Activity_entity/entityfields/bindata/onValueChange.js</onValueChange> @@ -595,27 +582,6 @@ </entityParameter> </children> </entityConsumer> - <entityParameter> - <name>Category_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>Entrydate_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>VisitPlanEntryId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ActivityIDs_param</name> - <expose v="true" /> - </entityParameter> - <entityField> - <name>countLinks</name> - <title> number of connections</title> - <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/countlinks/valueProcess.js</valueProcess> - </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -625,7 +591,6 @@ <conditionProcess>%aditoprj%/entity/Activity_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <orderClauseProcess>%aditoprj%/entity/Activity_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> <onDBInsert>%aditoprj%/entity/Activity_entity/recordcontainers/db/onDBInsert.js</onDBInsert> - <onDBUpdate>%aditoprj%/entity/Activity_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> <onDBDelete>%aditoprj%/entity/Activity_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> <linkInformation> diff --git a/entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/onActionProcess.js b/entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/onActionProcess.js new file mode 100644 index 00000000000..6840e66a0bf --- /dev/null +++ b/entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/onActionProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.neon"); + +neon.openContext("MSTTeamChat", null, null, neon.OPERATINGSTATE_NEW, { + "ROWID_param" : vars.get("$param.RowId_param") +}); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/stateProcess.js b/entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/stateProcess.js new file mode 100644 index 00000000000..0b93d5c410b --- /dev/null +++ b/entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/stateProcess.js @@ -0,0 +1,23 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", vars.get("$param.RowId_param")) + .cell(); + +var isArchived = newSelect("IS_ARCHIVED") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", vars.get("$param.RowId_param")) + .cell(); + +if (teamId == "" || isArchived == 1) +{ + result.string(neon.COMPONENTSTATE_INVISIBLE); +} +else +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod index fa1098dc639..15883a25940 100644 --- a/entity/Document_entity/Document_entity.aod +++ b/entity/Document_entity/Document_entity.aod @@ -343,6 +343,18 @@ </entityParameter> </children> </entityProvider> + <entityActionGroup> + <name>MSTeam</name> + <children> + <entityActionField> + <name>synchronizeDocuments</name> + <title>Dateien synchronisieren</title> + <onActionProcess>%aditoprj%/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js</onActionProcess> + <stateProcess>%aditoprj%/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js</stateProcess> + <tooltip>Synchronisiert die Dokumente der Datenbank mit den Dokumenten von MSTeams</tooltip> + </entityActionField> + </children> + </entityActionGroup> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js new file mode 100644 index 00000000000..e9608493005 --- /dev/null +++ b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js @@ -0,0 +1,16 @@ +import("system.teams"); +import("system.vars"); +import("system.db"); +import("system.util") +import("Sql_lib"); +import("system.net") + +var rowId = vars.get("$param.AssignmentRowId_param"); + +neon.openContext("MSTTeamDocument", null, null, neon.OPERATINGSTATE_NEW, { + "ObjectRowId_param" : rowId, + "AssignmentName_param" : vars.get("$param.AssignmentName_param"), + "AssignmentTable_param" : vars.get("$param.AssignmentTable_param") +}); + + diff --git a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js new file mode 100644 index 00000000000..7350dbf89fd --- /dev/null +++ b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js @@ -0,0 +1,24 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); +import("system.logging"); + +var teamId = newSelect("MST_TEAMID", "Data_alias") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.AssignmentRowId_param") + .cell(); + +var isArchived = newSelect("IS_ARCHIVED", "Data_alias") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.AssignmentRowId_param") + .cell(); + +if (teamId == "" || isArchived == 1) +{ + result.string(neon.COMPONENTSTATE_INVISIBLE); +} +else +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod new file mode 100644 index 00000000000..fc249eca704 --- /dev/null +++ b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> + <name>MSTChooseTeam_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>ALLTEAMS</name> + <title>All Teams</title> + <dropDownProcess>%aditoprj%/entity/MSTChooseTeam_entity/entityfields/allteams/dropDownProcess.js</dropDownProcess> + <selectionMode>SINGLE</selectionMode> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityParameter> + <name>RowId_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>ALLARCHIVEDTEAMS</name> + <title>allArchivedTeams</title> + <dropDownProcess>%aditoprj%/entity/MSTChooseTeam_entity/entityfields/allarchivedteams/dropDownProcess.js</dropDownProcess> + </entityField> + <entityField> + <name>SEARCHVALUE</name> + <title>Surchbegriff</title> + <tooltip>Inhalt dieses Feldes wird als Suche verwendet</tooltip> + </entityField> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isPageable v="true" /> + <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTChooseTeam_entity/entityfields/allarchivedteams/dropDownProcess.js b/entity/MSTChooseTeam_entity/entityfields/allarchivedteams/dropDownProcess.js new file mode 100644 index 00000000000..2320b0c176b --- /dev/null +++ b/entity/MSTChooseTeam_entity/entityfields/allarchivedteams/dropDownProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.teams"); + + +var allArchivedTeams = teams.getAllArchivedTeams(null); + + +if (allArchivedTeams) + result.object(allArchivedTeams); \ No newline at end of file diff --git a/entity/MSTChooseTeam_entity/entityfields/allteams/dropDownProcess.js b/entity/MSTChooseTeam_entity/entityfields/allteams/dropDownProcess.js new file mode 100644 index 00000000000..c32b84a9577 --- /dev/null +++ b/entity/MSTChooseTeam_entity/entityfields/allteams/dropDownProcess.js @@ -0,0 +1,18 @@ +import("system.result"); +import("system.teams"); +import("system.vars"); +import("system.logging"); + +var searchValue = vars.get("$field.SEARCHVALUE"); +var allTeams; +if(searchValue) +{ + allTeams = teams.getAllTeams(searchValue); +} +else +{ + allTeams = teams.getAllTeams(null) +} + +if (allTeams) + result.object(allTeams); \ No newline at end of file diff --git a/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 00000000000..488d22d4b38 --- /dev/null +++ b/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.vars"); + +//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 +var rows = []; +if (vars.get("$local.idvalues")) + rows = vars.get("$local.idvalues").map(function (id) {return [id, "", "", "", ""];}); + +result.object(rows); \ No newline at end of file diff --git a/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 00000000000..041a32b69ab --- /dev/null +++ b/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1,78 @@ +import("system.teams"); +import("Sql_lib") +import("system.logging"); +import("system.vars") +import("system.teams"); +import("system.util"); +import("system.neon"); + +var rowData = vars.get("$local.rowdata"); + +var teamId = rowData["ALLTEAMS.value"]; +var teamName = rowData["ALLTEAMS.displayValue"] + +var archivedTeamId = rowData["ALLARCHIVEDTEAMS.value"]; +var archivedTeamName = rowData["ALLARCHIVEDTEAMS.displayValue"]; + +if(teamId) +{ + var channelId = teams.getGeneralChannelId(teamId); + + var serviceUrl = newSelect("SERVICE_URL") + .from("MST_TEAM") + .where("MST_TEAM.MST_TEAMID", teamId) + .cell(); + + if(serviceUrl == null) + { + serviceUrl = ""; + } + + new SqlBuilder().insertFields({ + "MST_ID" : util.getNewUUID(), + "MST_TEAMID" : teamId, + "TEAMNAME" : teamName, + "GENERAL_CHANNELID" : channelId, + "OBJECT_ROWID" : vars.get("$param.RowId_param"), + "IS_ARCHIVED" : 0, + "SERVICE_URL" : serviceUrl +}, "MST_TEAM"); +} +else if(archivedTeamId) +{ + + teams.unarchiveTeamAndRestoreGroup(archivedTeamId) + + var channelId = teams.getGeneralChannelId(archivedTeamId); + + + var serviceUrl = newSelect("SERVICE_URL") + .from("MST_TEAM") + .where("MST_TEAM.MST_TEAMID", archivedTeamId) + .cell(); + + if(serviceUrl == null) + { + serviceUrl = ""; + } + + newWhere("MST_TEAM.MST_TEAMID", archivedTeamId) + .updateFields({ + "IS_ARCHIVED" : "0", + "FINAL_DELETE_DATE" : "" + }); + + new SqlBuilder().insertFields({ + "MST_ID" : util.getNewUUID(), + "MST_TEAMID" : archivedTeamId, + "TEAMNAME" : archivedTeamName, + "GENERAL_CHANNELID" : channelId, + "OBJECT_ROWID" : vars.get("$param.RowId_param"), + "IS_ARCHIVED" : 0, + "SERVICE_URL" : serviceUrl +}, "MST_TEAM"); +} + +neon.refreshAll(); + + diff --git a/entity/MSTTeam2_entity/MSTTeam2_entity.aod b/entity/MSTTeam2_entity/MSTTeam2_entity.aod new file mode 100644 index 00000000000..5267111150c --- /dev/null +++ b/entity/MSTTeam2_entity/MSTTeam2_entity.aod @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> + <name>MSTTeam2_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>MEMBERS</name> + </entityField> + <entityField> + <name>OWNER</name> + <selectionMode>MULTI</selectionMode> + </entityField> + <entityProvider> + <name>Members2</name> + <recordContainer>jdito</recordContainer> + </entityProvider> + <entityField> + <name>UID</name> + </entityField> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/MSTTeam2_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>OWNER.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>MEMBERS.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTTeam2_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeam2_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 00000000000..06d65a53088 --- /dev/null +++ b/entity/MSTTeam2_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,12 @@ +import("system.result"); +import("system.teams"); +import("system.util"); +import("system.vars"); + +var myDataArray = []; + +myDataArray.push([util.getNewUUID(), false, "mbilda@adito.de"]); +myDataArray.push([util.getNewUUID(), false, "marco@mbsolution2.onmicrosoft.com"]); + +result.object(myDataArray); + diff --git a/entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod b/entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod new file mode 100644 index 00000000000..924b711c221 --- /dev/null +++ b/entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> + <name>MSTTeamChannel_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>DESCRIPTION</name> + <title>Channel Beschreibung</title> + <valueProcess>%aditoprj%/entity/MSTTeamChannel_entity/entityfields/description/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>CHANNELNAME</name> + <title>Channel Name</title> + <valueProcess>%aditoprj%/entity/MSTTeamChannel_entity/entityfields/channelname/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityParameter> + <name>CHANNELNAME_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>CHANNELDESC_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>ROWID</name> + </entityField> + <entityParameter> + <name>ROWID_param</name> + <expose v="true" /> + </entityParameter> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTTeamChannel_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>CHANNELNAME.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>DESCRIPTION.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTTeamChannel_entity/entityfields/channelname/valueProcess.js b/entity/MSTTeamChannel_entity/entityfields/channelname/valueProcess.js new file mode 100644 index 00000000000..487d909b0d9 --- /dev/null +++ b/entity/MSTTeamChannel_entity/entityfields/channelname/valueProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.CHANNELNAME_param") && vars.get("$this.value") == null) + result.string(vars.get("$param.CHANNELNAME_param")); \ No newline at end of file diff --git a/entity/MSTTeamChannel_entity/entityfields/description/valueProcess.js b/entity/MSTTeamChannel_entity/entityfields/description/valueProcess.js new file mode 100644 index 00000000000..ea6333027ca --- /dev/null +++ b/entity/MSTTeamChannel_entity/entityfields/description/valueProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.CHANNELDESC_param") && vars.get("$this.value") == null) + result.string(vars.get("$param.CHANNELDESC_param")); \ No newline at end of file diff --git a/entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 00000000000..a0ca9709897 --- /dev/null +++ b/entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.vars"); + +//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 +var rows = []; +if (vars.get("$local.idvalues")) + rows = vars.get("$local.idvalues").map(function (id) {return [id, "", ""];}); + +result.object(rows); \ No newline at end of file diff --git a/entity/MSTTeamChannel_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeamChannel_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 00000000000..b43e3fa9728 --- /dev/null +++ b/entity/MSTTeamChannel_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1,18 @@ +import("system.teams"); +import("Sql_lib"); +import("system.vars"); + + +var rowData = vars.get("$local.rowdata"); + + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", vars.get("$param.ROWID_param")) + .cell(); + +var channelName = rowData["CHANNELNAME.value"]; +var channelDescription = rowData["CHANNELDESC.value"]; + + +teams.createNewChannel(teamId, channelName, channelDescription); diff --git a/entity/MSTTeamChat_entity/MSTTeamChat_entity.aod b/entity/MSTTeamChat_entity/MSTTeamChat_entity.aod new file mode 100644 index 00000000000..f09ac0a9ade --- /dev/null +++ b/entity/MSTTeamChat_entity/MSTTeamChat_entity.aod @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> + <name>MSTTeamChat_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>CREATED_DATE_TIME</name> + </entityField> + <entityField> + <name>MESSAGE</name> + <state>READONLY</state> + </entityField> + <entityField> + <name>FROM</name> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityParameter> + <name>ROWID_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>Consumer</name> + <dependency> + <name>dependency</name> + <entityName>MSTTeamsMessage_entity</entityName> + <fieldName>Messages</fieldName> + </dependency> + <children> + <entityParameter> + <name>Messages_param</name> + <valueProcess>%aditoprj%/entity/MSTTeamChat_entity/entityfields/consumer/children/messages_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>ALLCHANNELS</name> + <title>Alle Channel</title> + <mandatory v="true" /> + <dropDownProcess>%aditoprj%/entity/MSTTeamChat_entity/entityfields/allchannels/dropDownProcess.js</dropDownProcess> + <valueProcess>%aditoprj%/entity/MSTTeamChat_entity/entityfields/allchannels/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>SEARCHVALUE</name> + <title>Suchbegriff (Case Sensitive)</title> + </entityField> + <entityActionField> + <name>LoadNewMessages</name> + <title>Lade neue Nachrichten</title> + <onActionProcess>%aditoprj%/entity/MSTTeamChat_entity/entityfields/loadnewmessages/onActionProcess.js</onActionProcess> + <stateProcess>%aditoprj%/entity/MSTTeamChat_entity/entityfields/loadnewmessages/stateProcess.js</stateProcess> + </entityActionField> + <entityField> + <name>NEWMESSAGES</name> + </entityField> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/MSTTeamChat_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTTeamChat_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>FROM.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>MESSAGE.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CREATED_DATE_TIME.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTTeamChat_entity/entityfields/allchannels/dropDownProcess.js b/entity/MSTTeamChat_entity/entityfields/allchannels/dropDownProcess.js new file mode 100644 index 00000000000..bf5fb95d272 --- /dev/null +++ b/entity/MSTTeamChat_entity/entityfields/allchannels/dropDownProcess.js @@ -0,0 +1,24 @@ +import("system.result"); +import("system.teams"); +import("system.vars"); +import("Sql_lib"); + +var searchValue = vars.get("$field.SEARCHVALUE"); +var allChannels; + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ROWID_param") + .cell(); + +if(searchValue) +{ + allChannels = teams.getAllChannelsInTeam(teamId, searchValue); +} +else +{ + allChannels = teams.getAllChannelsInTeam(teamId, null) +} + +if (allChannels) + result.object(allChannels); \ No newline at end of file diff --git a/entity/MSTTeamChat_entity/entityfields/allchannels/valueProcess.js b/entity/MSTTeamChat_entity/entityfields/allchannels/valueProcess.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/entity/MSTTeamChat_entity/entityfields/consumer/children/messages_param/valueProcess.js b/entity/MSTTeamChat_entity/entityfields/consumer/children/messages_param/valueProcess.js new file mode 100644 index 00000000000..8e36993e162 --- /dev/null +++ b/entity/MSTTeamChat_entity/entityfields/consumer/children/messages_param/valueProcess.js @@ -0,0 +1,24 @@ +import("system.teams"); +import("system.vars"); +import("system.result"); +import("system.util"); +import("Sql_lib"); + +if(vars.get("$field.ALLCHANNELS")) +{ + var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ROWID_param") + .cell(); + + var messages = teams.getChannelMessages(teamId, vars.get("$field.ALLCHANNELS"), 10) + + result.string(messages); +} + +if(vars.get("$field.NEWMESSAGES") == "true") +{ + vars.set("$field.NEWMESSAGES", "false"); + var messages = teams.getNextChannelMessages(vars.get("$global.nextLink")); + result.string(messages); +} \ No newline at end of file diff --git a/entity/MSTTeamChat_entity/entityfields/loadnewmessages/onActionProcess.js b/entity/MSTTeamChat_entity/entityfields/loadnewmessages/onActionProcess.js new file mode 100644 index 00000000000..0f2f3a48446 --- /dev/null +++ b/entity/MSTTeamChat_entity/entityfields/loadnewmessages/onActionProcess.js @@ -0,0 +1,9 @@ +import("system.vars"); + +vars.set("$field.NEWMESSAGES", "true"); + + + + + + diff --git a/entity/MSTTeamChat_entity/entityfields/loadnewmessages/stateProcess.js b/entity/MSTTeamChat_entity/entityfields/loadnewmessages/stateProcess.js new file mode 100644 index 00000000000..e92007c6780 --- /dev/null +++ b/entity/MSTTeamChat_entity/entityfields/loadnewmessages/stateProcess.js @@ -0,0 +1,19 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); + +if(vars.exists("$global.nextLink")) +{ + if(vars.get("$global.nextLink") != "") + { + result.string(neon.COMPONENTSTATE_EDITABLE); + } + else + { + result.string(neon.COMPONENTSTATE_DISABLED); + } +} +else +{ + result.string(neon.COMPONENTSTATE_DISABLED); +} \ No newline at end of file diff --git a/entity/MSTTeamChat_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamChat_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 00000000000..d1824307a60 --- /dev/null +++ b/entity/MSTTeamChat_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.vars"); + +//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 +var rows = []; +if (vars.get("$local.idvalues")) + rows = vars.get("$local.idvalues").map(function (id) {return [id, "", "", ""];}); + +result.object(rows); \ No newline at end of file diff --git a/entity/MSTTeamChat_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeamChat_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 00000000000..954340e1c3b --- /dev/null +++ b/entity/MSTTeamChat_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1,3 @@ +import("system.logging"); + +logging.log("Erstelle eine neue Aktivität"); \ No newline at end of file diff --git a/entity/MSTTeamDocument_entity/MSTTeamDocument_entity.aod b/entity/MSTTeamDocument_entity/MSTTeamDocument_entity.aod new file mode 100644 index 00000000000..5b396445a13 --- /dev/null +++ b/entity/MSTTeamDocument_entity/MSTTeamDocument_entity.aod @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> + <name>MSTTeamDocument_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>DOCUMENTS</name> + <title>Dokumente</title> + <dropDownProcess>%aditoprj%/entity/MSTTeamDocument_entity/entityfields/documents/dropDownProcess.js</dropDownProcess> + <selectionMode>MULTI</selectionMode> + </entityField> + <entityField> + <name>ALLCHANNELS</name> + <title>Alle Channel</title> + <mandatory v="true" /> + <dropDownProcess>%aditoprj%/entity/MSTTeamDocument_entity/entityfields/allchannels/dropDownProcess.js</dropDownProcess> + </entityField> + <entityParameter> + <name>ObjectRowId_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>SEARCHVALUE</name> + <title>Suchbegriff (Case Sensitive)</title> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityParameter> + <name>AssignmentTable_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>AssignmentName_param</name> + <expose v="true" /> + </entityParameter> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/MSTTeamDocument_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>DOCUMENTS.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTTeamDocument_entity/entityfields/allchannels/dropDownProcess.js b/entity/MSTTeamDocument_entity/entityfields/allchannels/dropDownProcess.js new file mode 100644 index 00000000000..297dc97e992 --- /dev/null +++ b/entity/MSTTeamDocument_entity/entityfields/allchannels/dropDownProcess.js @@ -0,0 +1,26 @@ +import("system.result"); +import("system.teams"); +import("system.vars"); +import("system.logging"); +import("Sql_lib"); + +var allChannels; + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", vars.get("$param.ObjectRowId_param")) + .cell(); + +var searchValue = vars.get("$field.SEARCHVALUE"); + +if(searchValue) +{ + allChannels = teams.getAllChannelsInTeam(teamId, searchValue); +} +else +{ + allChannels = teams.getAllChannelsInTeam(teamId, null) +} + +if (allChannels) + result.object(allChannels); \ No newline at end of file diff --git a/entity/MSTTeamDocument_entity/entityfields/documents/dropDownProcess.js b/entity/MSTTeamDocument_entity/entityfields/documents/dropDownProcess.js new file mode 100644 index 00000000000..5fa658ec1ea --- /dev/null +++ b/entity/MSTTeamDocument_entity/entityfields/documents/dropDownProcess.js @@ -0,0 +1,30 @@ +import("system.result"); +import("system.teams"); +import("system.vars"); +import("system.logging"); +import("Sql_lib"); + +if(vars.get("$field.ALLCHANNELS")) +{ + var channelId = vars.get("$field.ALLCHANNELS"); + + var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", vars.get("$param.ObjectRowId_param")) + .cell(); + + var allChannels = teams.getAllChannelsInTeam(teamId, null); + + var documents = teams.getAllDocumentsOfChannel(teamId, allChannels[channelId]) + var jsonDocuments = JSON.parse(documents); + + var resultString = [[jsonDocuments[0].downloadUrl, jsonDocuments[0].name]]; +// for (var i = 0; i < jsonDocuments.length; i++) +// { +// resultString = resultString + "[" + jsonDocuments[i].downloadUrl + ", " + jsonDocuments[i].name + "]"; +// } +// var upnsOfOwners = [["marco@mbsolutions2.onmicrosoft.com", "marco@mbsolutions2.onmicrosoft.com"], ["franz@mbsolutions2.onmicrosoft.com", "franz@mbsolutions2.onmicrosoft.com"], ["martin@mbsolutions2.onmicrosoft.com", "martin@mbsolutions2.onmicrosoft.com"]]; + +// resultString = resultString + "]"; + result.object(resultString); +} \ No newline at end of file diff --git a/entity/MSTTeamDocument_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamDocument_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 00000000000..af9ece7caa7 --- /dev/null +++ b/entity/MSTTeamDocument_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.vars"); + +//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 +var rows = []; +if (vars.get("$local.idvalues")) + rows = vars.get("$local.idvalues").map(function (id) {return [id, ""];}); + +result.object(rows); \ No newline at end of file diff --git a/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 00000000000..52a04a021ef --- /dev/null +++ b/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1,38 @@ +import("system.teams"); +import("system.vars"); +import("system.db"); +import("system.util") +import("Sql_lib"); +import("system.net") +import("system.logging"); +import("system.neon"); + + +var rowData = vars.get("$local.rowdata"); + +var documents = text.decodeMS(rowData["DOCUMENTS.value"]); + +for(var i=0; i<documents.length; i++) +{ + //hier muss überprüft werden ob es dieses Dokument schon in der Datenbank gibt! +// if(documents[i].alreadyExistInDB) +// break; + //Wenn es dieses noch nicht gibt, wird es in die DB gespeichert + var docName = "Präsentation 1.pptx"; + var downloadUrl = documents; + + var file = net.getURLContent(downloadUrl, false, null, null, null, false); + + var assignmentTable = vars.get("$param.AssignmentTable_param"); + var assignmentName = vars.get("$param.AssignmentName_param"); + var assignmentRowId = vars.get("$param.ObjectRowId_param"); + var alias = "_____SYSTEMALIAS"; + + + var uid = db.insertBinary(assignmentTable, assignmentName, assignmentRowId, null, + file, docName, "Hier können Sie nachträglich ihre Description ändern", "", alias, util.getNewUUID()); +} + +neon.refreshAll(); + + diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod new file mode 100644 index 00000000000..65caeb26918 --- /dev/null +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> + <name>MSTTeamMember_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>UPNSOFMEMBERS</name> + <title>Members</title> + <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/upnsofmembers/dropDownProcess.js</dropDownProcess> + <selectionMode>MULTI</selectionMode> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityField> + <name>ARETHESEOWNERS</name> + <title>Handelt es sich bei den Benutzer(n) um "Besitzer"?</title> + <contentType>BOOLEAN</contentType> + </entityField> + <entityParameter> + <name>ROWID_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>MAILSOFEXTERN</name> + <title>Externe Benutzer</title> + <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/mailsofextern/dropDownProcess.js</dropDownProcess> + <selectionMode>MULTI</selectionMode> + </entityField> + <entityField> + <name>EXTERN</name> + <title>Nicht vorhandene externe Benutzer einladen?</title> + <contentType>BOOLEAN</contentType> + </entityField> + <entityParameter> + <name>UpnsOfMembers_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>MailsOfExtern_param</name> + <expose v="true" /> + </entityParameter> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <hasDependentRecords v="true" /> + <onInsert>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>UPNSOFMEMBERS.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ARETHESEOWNERS.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>MAILSOFEXTERN.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>EXTERN.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTTeamMember_entity/entityfields/mailsofextern/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/mailsofextern/dropDownProcess.js new file mode 100644 index 00000000000..9aa7e9e18d0 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/mailsofextern/dropDownProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.vars"); + +var mails = vars.getString("$param.MailsOfExtern_param"); +if (mails) + result.object(JSON.parse(mails)); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/upnsofmembers/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/upnsofmembers/dropDownProcess.js new file mode 100644 index 00000000000..4f6ddbb607f --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/upnsofmembers/dropDownProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.vars"); + +var upns = vars.getString("$param.UpnsOfMembers_param"); +if (upns) + result.object(JSON.parse(upns)); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 00000000000..488d22d4b38 --- /dev/null +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.vars"); + +//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 +var rows = []; +if (vars.get("$local.idvalues")) + rows = vars.get("$local.idvalues").map(function (id) {return [id, "", "", "", ""];}); + +result.object(rows); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 00000000000..0ffe832f7cd --- /dev/null +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1,57 @@ +import("system.teams"); +import("Sql_lib"); +import("system.vars"); +import("system.question"); + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", vars.get("$param.ROWID_param")) + .cell(); + +var rowData = vars.get("$local.rowdata"); + +var upnsOfMembers = text.decodeMS(rowData["UPNSOFMEMBERS.value"]); +var areTheseOwners = rowData["ARETHESEOWNERS.value"]; +var mailsOfExtern = text.decodeMS(rowData["MAILSOFEXTERN.value"]); +var sendInvitation = rowData["EXTERN.value"]; +var failedInternUsers; +var failedExternUsers; + +if(upnsOfMembers != "") +{ + if(areTheseOwners == 1) + { + failedUsers = teams.addMembers(teamId, upnsOfMembers, true); + if(failedUsers != null) + { + question.showMessage(failedUsers, "FailedUsers"); + } + } + else + { + failedUsers = teams.addMembers(teamId, upnsOfMembers, false); + if(failedUsers != null) + { + question.showMessage(failedUsers, "FailedUsers"); + } + } +} +if(mailsOfExtern != "") +{ + if(sendInvitation == 1) + { + failedExternUsers = teams.addExternMembers(teamId, mailsOfExtern, true); + if(failedExternUsers != null) + { + question.showMessage(failedExternUsers, "FailedExternUsers"); + } + } + else + { + failedExternUsers = teams.addExternMembers(teamId, mailsOfExtern, false); + if(failedExternUsers != null) + { + question.showMessage(failedExternUsers, "FailedExternUsers"); + } + } +} diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod new file mode 100644 index 00000000000..7481608126b --- /dev/null +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -0,0 +1,141 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> + <name>MSTTeam_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>UID</name> + </entityField> + <entityField> + <name>TEAMNAME</name> + <title>Name</title> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>DESCRIPTION</name> + <title>Description</title> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/description/valueProcess.js</valueProcess> + </entityField> + <entityParameter> + <name>TeamName_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>Description_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>UpnsOfOwners_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>UpnsOfMembers_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>UPNSOFMEMBERS</name> + <title>Members</title> + <dropDownProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/upnsofmembers/dropDownProcess.js</dropDownProcess> + <selectionMode>MULTI</selectionMode> + </entityField> + <entityField> + <name>UPNSOFOWNERS</name> + <title>Owners</title> + <dropDownProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/upnsofowners/dropDownProcess.js</dropDownProcess> + <selectionMode>MULTI</selectionMode> + </entityField> + <entityParameter> + <name>RowId_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>OBECT_ROWID</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/obect_rowid/valueProcess.js</valueProcess> + </entityField> + <entityParameter> + <name>ChannelName_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>Mailnickname_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>MemberComsumer</name> + <dependency> + <name>dependency</name> + <entityName>Member_entity</entityName> + <fieldName>TeamMemberProvider</fieldName> + </dependency> + <children> + <entityParameter> + <name>ObjectRowId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/membercomsumer/children/objectrowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/membercomsumer/children/objecttype_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>EXTERN</name> + <title>Nicht vorhandene externe Benutzer einladen?</title> + <contentType>BOOLEAN</contentType> + </entityField> + <entityField> + <name>MAILSOFEXTERN</name> + <title>Externe Benutzer</title> + <dropDownProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/mailsofextern/dropDownProcess.js</dropDownProcess> + <selectionMode>MULTI</selectionMode> + </entityField> + <entityParameter> + <name>MailsOfExtern_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>UPNSOFOWNERSORIGINAL</name> + <dropDownProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/upnsofownersoriginal/dropDownProcess.js</dropDownProcess> + <selectionMode>MULTI</selectionMode> + </entityField> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isPageable v="true" /> + <contentProcess>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>TEAMNAME.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>DESCRIPTION.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>OBECT_ROWID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>UPNSOFMEMBERS.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>UPNSOFOWNERS.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>MAILSOFEXTERN.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>EXTERN.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTTeam_entity/entityfields/description/valueProcess.js b/entity/MSTTeam_entity/entityfields/description/valueProcess.js new file mode 100644 index 00000000000..561cefe7b56 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/description/valueProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.Description_param") && vars.get("$this.value") == null) + result.string(vars.get("$param.Description_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/mailsofextern/dropDownProcess.js b/entity/MSTTeam_entity/entityfields/mailsofextern/dropDownProcess.js new file mode 100644 index 00000000000..9aa7e9e18d0 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/mailsofextern/dropDownProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.vars"); + +var mails = vars.getString("$param.MailsOfExtern_param"); +if (mails) + result.object(JSON.parse(mails)); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/membercomsumer/children/objectrowid_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/membercomsumer/children/objectrowid_param/valueProcess.js new file mode 100644 index 00000000000..90824419458 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/membercomsumer/children/objectrowid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(vars.get("$param.RowId_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/membercomsumer/children/objecttype_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/membercomsumer/children/objecttype_param/valueProcess.js new file mode 100644 index 00000000000..32bdd9f268d --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/membercomsumer/children/objecttype_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("Salesproject"); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/obect_rowid/valueProcess.js b/entity/MSTTeam_entity/entityfields/obect_rowid/valueProcess.js new file mode 100644 index 00000000000..cf5cb63c330 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/obect_rowid/valueProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.RowId_param")) + result.string(vars.get("$param.RowId_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js b/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js new file mode 100644 index 00000000000..31b659fe172 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.TeamName_param") && vars.get("$this.value") == null) + result.string(vars.get("$param.TeamName_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/upnsofmembers/dropDownProcess.js b/entity/MSTTeam_entity/entityfields/upnsofmembers/dropDownProcess.js new file mode 100644 index 00000000000..4f6ddbb607f --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/upnsofmembers/dropDownProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.vars"); + +var upns = vars.getString("$param.UpnsOfMembers_param"); +if (upns) + result.object(JSON.parse(upns)); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/upnsofowners/dropDownProcess.js b/entity/MSTTeam_entity/entityfields/upnsofowners/dropDownProcess.js new file mode 100644 index 00000000000..92332745d43 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/upnsofowners/dropDownProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.vars"); + +var upns = vars.getString("$param.UpnsOfOwners_param"); +if (upns) + result.object(JSON.parse(upns)); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/upnsofownersoriginal/dropDownProcess.js b/entity/MSTTeam_entity/entityfields/upnsofownersoriginal/dropDownProcess.js new file mode 100644 index 00000000000..1c0f1126dbe --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/upnsofownersoriginal/dropDownProcess.js @@ -0,0 +1,17 @@ +//import("system.entities"); +//import("system.result"); +//import("system.logging"); +//import("system.vars"); +// +//var memberEntries = entities.createConfigForLoadingRows().entity("Member_entity").provider("TeamMemberProvider").addParameter("ObjectRowId_param", vars.get("$param.RowId_param")).addParameter("ObjectType_param", "Salesproject").fields(["CONTACT_ID", "PERSON_FULL_NAME"]); +// +//var members = entities.getRows(memberEntries); +// +//logging.log(members); +// +//members = members.map(function (member) +//{ +// return [member["CONTACT_ID"], member["PERSON_FULL_NAME"]]; +//}) +// +//result.object(members); diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 00000000000..6eb83082a7e --- /dev/null +++ b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.vars"); + +//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 +var rows = []; +if (vars.get("$local.idvalues")) + rows = vars.get("$local.idvalues").map(function (id) {return [id, "", "", "", "", "", "", ""];}); + +result.object(rows); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 00000000000..a98341bbe4c --- /dev/null +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1,91 @@ +import("system.logging"); +import("Sql_lib"); +import("system.vars"); +import("system.teams"); +import("system.text"); +import("system.util"); +import("system.neon"); + +var rowData = vars.get("$local.rowdata"); +var teamName = rowData["TEAMNAME.value"]; +var mailNickname = vars.get("$param.Mailnickname_param"); + +var description = rowData["DESCRIPTION.value"]; +var upnsOfOwners = text.decodeMS(rowData["UPNSOFOWNERS.value"]); +var upnsOfMembers = text.decodeMS(rowData["UPNSOFMEMBERS.value"]); +var mailsOfExtern = text.decodeMS(rowData["MAILSOFEXTERN.value"]); +var sendInvitation = rowData["EXTERN.value"]; + +var users = []; + +for(var i = 0; i<upnsOfMembers.length(); i++) + { + var user = createInternalUserConfig(upnsOfMembers[i]) + if(isOwner) + { + user.setOwner(isOwner); + } + + users.push(user); + } + + teams.addMembers(users); + +var teamData; +if(upnsOfOwners) +{ + teamData = teams.createTeam(teamName, description, mailNickname, true, false, upnsOfOwners); +} +if(teamData) +{ + var failedUsers; + var failedExternUsers; + + if(upnsOfMembers != "") + { + failedUsers = teams.addMembers(teamData["teamId"], upnsOfMembers, false); + if(failedUsers != null) + { + question.showMessage(failedUsers, "FailedUsers"); + } + } + + if(mailsOfExtern != "") + { + if(sendInvitation == 1) + { + failedExternUsers = teams.addExternMembers(teamData["teamId"], mailsOfExtern, true); + if(failedExternUsers != null) + { + question.showMessage(failedExternUsers, "FailedExternUsers"); + } + + } + else + { + failedExternUsers = teams.addExternMembers(teamData["teamId"], mailsOfExtern, false); + if(failedExternUsers != null) + { + question.showMessage(failedExternUsers, "FailedExternUsers"); + } + + } + } + + var teamId = teamData["teamId"]; + teamName = teamData["teamName"]; + var channelId = teamData["generalChannelId"]; + var webUrl = teamData["webUrl"] + + + new SqlBuilder().insertFields({ + "MST_ID" : util.getNewUUID(), + "MST_TEAMID" : teamId, + "TEAMNAME" : teamName, + "GENERAL_CHANNELID" : channelId, + "OBJECT_ROWID" : vars.get("$param.RowId_param"), + "IS_ARCHIVED" : 0 + }, "MST_TEAM"); +} + +neon.refreshAll(); diff --git a/entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod b/entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod new file mode 100644 index 00000000000..cbfb921ec8c --- /dev/null +++ b/entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> + <name>MSTTeamsMessage_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>FROM</name> + <title>Author</title> + </entityField> + <entityField> + <name>MESSAGE</name> + <title>Nachricht</title> + </entityField> + <entityField> + <name>CREATED_DATE_TIME</name> + <title>Erstelldatum</title> + </entityField> + <entityProvider> + <name>Messages</name> + <recordContainer>jdito</recordContainer> + <dependencies> + <entityDependency> + <name>89048e4d-32bc-4531-9b45-b0c0d9de82b1</name> + <entityName>MSTTeamChat_entity</entityName> + <fieldName>Consumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityField> + <name>UID</name> + </entityField> + <entityActionGroup> + <name>MSTeam</name> + <children> + <entityActionField> + <name>LoadNewMessages</name> + <title>Lade neue Nachrichten</title> + <onActionProcess>%aditoprj%/entity/MSTTeamsMessage_entity/entityfields/msteam/children/loadnewmessages/onActionProcess.js</onActionProcess> + </entityActionField> + </children> + </entityActionGroup> + <entityParameter> + <name>Messages_param</name> + <expose v="true" /> + </entityParameter> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <title>Nachrichten</title> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>FROM.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>MESSAGE.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CREATED_DATE_TIME.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTTeamsMessage_entity/entityfields/msteam/children/loadnewmessages/onActionProcess.js b/entity/MSTTeamsMessage_entity/entityfields/msteam/children/loadnewmessages/onActionProcess.js new file mode 100644 index 00000000000..c7682a930da --- /dev/null +++ b/entity/MSTTeamsMessage_entity/entityfields/msteam/children/loadnewmessages/onActionProcess.js @@ -0,0 +1,26 @@ +import("system.teams"); +import("system.vars"); +import("system.logging"); + +if(vars.get("$global.nextLink")) +{ + var messages = teams.getNextChannelMessages(vars.get("$global.nextLink")); + var jsonMessages = JSON.parse(messages); + + if(jsonMessages.nextLink) + { + vars.set("$global.nextLink", jsonMessages.nextLink) + } + + for(var i = 0; i<jsonMessages.messages.length; i++) + { + logging.log(jsonMessages.messages[i].author.userName + "; " + jsonMessages.messages[i].message.message + "; " + jsonMessages.messages[i].createdDateTime); + } + +} + + + + + + diff --git a/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 00000000000..1bae78e0753 --- /dev/null +++ b/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,30 @@ +import("system.result"); +import("system.util"); +import("system.vars"); +import("system.neon"); + +if(vars.get("$param.Messages_param")) +{ + var jsonMessages = JSON.parse(vars.get("$param.Messages_param")); + + if(jsonMessages.nextLink != null) + { + vars.set("$global.nextLink", jsonMessages.nextLink); + } + else + { + vars.set("$global.nextLink", ""); + } + + var myDataArray = []; + + for(var i = 0; i<jsonMessages.messages.length; i++) + { + myDataArray.push([util.getNewUUID(), jsonMessages.messages[i].author.userName, jsonMessages.messages[i].message.message, jsonMessages.messages[i].createdDateTime]) + } + + neon.refreshAll(); + + result.object(myDataArray); +} + diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index 8dbfb116d09..104bb57c838 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -199,6 +199,90 @@ <contentType>IMAGE</contentType> <valueProcess>%aditoprj%/entity/Member_entity/entityfields/image/valueProcess.js</valueProcess> </entityField> + <entityActionGroup> + <name>MSTeamsActionGroup</name> + <title>MSTeamsActionGroup</title> + <children> + <entityActionField> + <name>createTeam</name> + <title>Team erstellen</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js</onActionProcess> + <isSelectionAction v="false" /> + <iconId>NEON:PLUS</iconId> + <state>EDITABLE</state> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js</stateProcess> + <tooltip>Erstelle ein neues MicrosoftTeams Team</tooltip> + </entityActionField> + <entityActionField> + <name>chooseTeam</name> + <title>Team auswählen</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js</onActionProcess> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js</stateProcess> + <tooltip>Wähle ein bereits hinterlegtes Team</tooltip> + </entityActionField> + <entityActionField> + <name>deleteTeam</name> + <title>Team löschen</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js</onActionProcess> + <iconId>NEON:TRASH</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js</stateProcess> + <tooltip>Lösche das verknüpfte MSTeams Team</tooltip> + </entityActionField> + <entityActionField> + <name>createChannel</name> + <title>Channel erstellen</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/onActionProcess.js</onActionProcess> + <iconId>VAADIN:PLUS</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/stateProcess.js</stateProcess> + <tooltip>Erstelle einen neuen Channel</tooltip> + </entityActionField> + <entityActionField> + <name>restoreTeam</name> + <title>Team wiederherstellen</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js</onActionProcess> + <iconId>VAADIN:ARROW_BACKWARD</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js</stateProcess> + <tooltip>Stelle das Team wieder her</tooltip> + </entityActionField> + <entityActionField> + <name>addApp</name> + <title>App hinzufügen</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js</onActionProcess> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js</stateProcess> + <tooltip>Fügt eine App zum Team hinzu</tooltip> + </entityActionField> + <entityActionField> + <name>addNewMember</name> + <title>Member hinzufügen</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js</onActionProcess> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js</stateProcess> + <tooltip>Fügt neue Member zum Team hinzu</tooltip> + </entityActionField> + <entityActionField> + <name>changeToMSTeam</name> + <title>Zum Team wechseln</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js</onActionProcess> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js</stateProcess> + </entityActionField> + </children> + </entityActionGroup> + <entityField> + <name>ASSIGNEDTEAM</name> + <title>Hinterlegtes Team</title> + <valueProcess>%aditoprj%/entity/Member_entity/entityfields/assignedteam/valueProcess.js</valueProcess> + </entityField> + <entityProvider> + <name>TeamMemberProvider</name> + <lookupIdfield>CONTACT_ID</lookupIdfield> + <dependencies> + <entityDependency> + <name>80ac002b-2d74-4cfb-a504-347f8abfd7eb</name> + <entityName>MSTTeam_entity</entityName> + <fieldName>MemberComsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Member_entity/entityfields/assignedteam/valueProcess.js b/entity/Member_entity/entityfields/assignedteam/valueProcess.js new file mode 100644 index 00000000000..def1352e692 --- /dev/null +++ b/entity/Member_entity/entityfields/assignedteam/valueProcess.js @@ -0,0 +1,38 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var saleprojectId = newSelect("OBJECT_ROWID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +var isArchived = newSelect("IS_ARCHIVED") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +if(saleprojectId && isArchived == 0) +{ + var teamName = newSelect("TEAMNAME") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + + result.string(teamName); +} +else if(saleprojectId && isArchived == 1) +{ + var teamName = newSelect("TEAMNAME") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + + result.string("Es existiert ein archiviertes Team (" + teamName + ") zu diesem Projekt. Falls Sie dieses nochmal benötigen: Wählen Sie \"Team wiederherstellen\""); +} +else +{ + result.string("Es wurde noch kein Team zu diesem Projekt hinterlegt"); +} + diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js new file mode 100644 index 00000000000..a7b5766ffee --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js @@ -0,0 +1,17 @@ +import("system.teams"); +import("Sql_lib"); +import("system.neon"); + + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +//DAFÜR MUSS ES EIN DESIGNER FELD GEBEN +var appId = "27888276-ddc1-4e24-a07c-1023996fd892" + + +teams.addAppToTeam(teamId, appId); + +neon.refreshAll(); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js new file mode 100644 index 00000000000..4e1e6159f83 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js @@ -0,0 +1,29 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +var isArchived = newSelect("IS_ARCHIVED") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +var serviceUrl = newSelect("SERVICE_URL") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + + +if (teamId == "" || isArchived == 1 || serviceUrl) +{ + result.string(neon.COMPONENTSTATE_INVISIBLE); +} +else +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js new file mode 100644 index 00000000000..fef435a8321 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js @@ -0,0 +1,11 @@ +import("system.neon"); +import("system.vars"); + +var upnsOfMembers = [["lisa@mbsolutions2.onmicrosoft.com", "lisa@mbsolutions2.onmicrosoft.com"]]; +var mailsOfExtern = [["m.bilda@adito.de", "m.bilda@adito.de"]]; + +neon.openContext("MSTTeamMember", null, null, neon.OPERATINGSTATE_NEW, { + "UpnsOfMembers_param" : JSON.stringify(upnsOfMembers), + "MailsOfExtern_param" : JSON.stringify(mailsOfExtern), + "ROWID_param" : vars.get("$param.ObjectRowId_param") +}); diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js new file mode 100644 index 00000000000..f821050c044 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js @@ -0,0 +1,23 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +var isArchived = newSelect("IS_ARCHIVED") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +if (teamId == "" || isArchived == 1) +{ + result.string(neon.COMPONENTSTATE_INVISIBLE); +} +else +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js new file mode 100644 index 00000000000..c19bf006698 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js @@ -0,0 +1,3 @@ +import("system.neon"); + +neon.openUrl("https://teams.microsoft.com/l/team/19:0062b1c861df409391eaf0329b99db68%40thread.tacv2/conversations?groupId=c4c6a313-3d12-4941-900e-afc464755188&tenantId=bb59bb5b-90c7-41f9-85aa-f40da5c0c68a", true) diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js new file mode 100644 index 00000000000..f821050c044 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js @@ -0,0 +1,23 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +var isArchived = newSelect("IS_ARCHIVED") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +if (teamId == "" || isArchived == 1) +{ + result.string(neon.COMPONENTSTATE_INVISIBLE); +} +else +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js new file mode 100644 index 00000000000..c48327f1fee --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.neon"); +import("system.teams"); +import("system.logging"); + +neon.openContext("MSTChooseTeam", null, null, neon.OPERATINGSTATE_NEW, { + "RowId_param" : vars.get("$param.ObjectRowId_param") +}); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js new file mode 100644 index 00000000000..29db7d098d9 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js @@ -0,0 +1,11 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +result.string(teamId != "" ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/onActionProcess.js new file mode 100644 index 00000000000..f72ee987fa0 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/onActionProcess.js @@ -0,0 +1,12 @@ +import("system.neon"); +import("system.vars"); + +//Dafür muss es Designer Felder geben +var channelName = "ADITO xRM"; +var channelDesc = "Das ist ein Zweitchannel, um genauer über bestimmte Themen zu diskutieren"; + +neon.openContext("MSTTeamChannel", null, null, neon.OPERATINGSTATE_NEW, { + "CHANNELNAME_param" : channelName, + "CHANNELDESC_param" : channelDesc, + "ROWID_param" : vars.get("$param.ObjectRowId_param") +}); diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/stateProcess.js new file mode 100644 index 00000000000..0c1128cf098 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/stateProcess.js @@ -0,0 +1,23 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +var isArchived = newSelect("IS_ARCHIVED") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +if (teamId == "" || isArchived == 1) +{ + result.string(neon.COMPONENTSTATE_INVISIBLE); +} +else +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js new file mode 100644 index 00000000000..05de2e36656 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js @@ -0,0 +1,32 @@ +import("system.vars"); +import("system.neon"); +import("system.teams"); +import("Sql_lib"); + +var rowId = vars.get("$param.ObjectRowId_param"); + +var teamName = newSelect("PROJECTTITLE") + .from("SALESPROJECT") + .where("SALESPROJECT.SALESPROJECTID", rowId) + .cell(); + +var description = newSelect("INFO") + .from("SALESPROJECT") + .where("SALESPROJECT.SALESPROJECTID", rowId) + .cell(); + +var mailNickname = teamName.replace(/ /g, ""); + +var upnsOfOwners = [["marco@mbsolutions2.onmicrosoft.com", "marco@mbsolutions2.onmicrosoft.com"], ["franz@mbsolutions2.onmicrosoft.com", "franz@mbsolutions2.onmicrosoft.com"], ["martin@mbsolutions2.onmicrosoft.com", "martin@mbsolutions2.onmicrosoft.com"]]; +var upnsOfMembers = [["marco@mbsolutions2.onmicrosoft.com", "marco@mbsolutions2.onmicrosoft.com"], ["franz@mbsolutions2.onmicrosoft.com", "franz@mbsolutions2.onmicrosoft.com"], ["martin@mbsolutions2.onmicrosoft.com", "martin@mbsolutions2.onmicrosoft.com"]]; +var mailsOfExtern = [["m.bilda@adito.de", "m.bilda@adito.de"]]; + +neon.openContext("MSTTeam", null, null, neon.OPERATINGSTATE_NEW, { + "RowId_param" : rowId, + "TeamName_param" : teamName, + "Description_param" : description, + "Mailnickname_param" : mailNickname, + "UpnsOfOwners_param" : JSON.stringify(upnsOfOwners), + "UpnsOfMembers_param" : JSON.stringify(upnsOfMembers), + "MailsOfExtern_param" : JSON.stringify(mailsOfExtern) +}); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js new file mode 100644 index 00000000000..c01cdd16766 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js @@ -0,0 +1,11 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +result.string(teamId != "" ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js new file mode 100644 index 00000000000..84ac82f4f89 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js @@ -0,0 +1,30 @@ +import("system.teams"); +import("Sql_lib"); +import("system.datetime") + + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + + +//Hat dieses Team mehrere Projekte?? +var teamIds = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.MST_TEAMID", teamId).arrayRow(); + +teams.archiveTeamAndDeleteGroup(teamId); + +for(var i = 0; i<teamIds.length; i++) + { + var finalDeleteDate = datetime.date() + (datetime.ONE_DAY * 30); + + newWhere("MST_TEAM.MST_TEAMID", teamIds[i]) + .updateFields({ + "IS_ARCHIVED" : "1", + "FINAL_DELETE_DATE" : finalDeleteDate + }); + } + + diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js new file mode 100644 index 00000000000..b17a7492239 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js @@ -0,0 +1,25 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +var isArchived = newSelect("IS_ARCHIVED") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +if (teamId == "" || isArchived == 1) +{ + result.string(neon.COMPONENTSTATE_INVISIBLE); +} +else +{ +result.string(neon.COMPONENTSTATE_EDITABLE); +} + +neon.refreshAll(); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js new file mode 100644 index 00000000000..dc58a876d04 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js @@ -0,0 +1,28 @@ +import("system.teams"); +import("Sql_lib"); +import("system.neon"); + + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +//Hat dieses Team mehrere Projekte?? +var teamIds = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.MST_TEAMID", teamId).arrayRow(); + +teams.unarchiveTeamAndRestoreGroup(teamId); + +for(var i = 0; i<teamIds.length; i++) + { + newWhere("MST_TEAM.MST_TEAMID", teamIds[i]) + .updateFields({ + "IS_ARCHIVED" : "0", + "FINAL_DELETE_DATE" : "" + }); + } + + +neon.refreshAll(); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js new file mode 100644 index 00000000000..05f5e33fb61 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js @@ -0,0 +1,23 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +var isArchived = newSelect("IS_ARCHIVED") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .cell(); + +if (teamId == "" || isArchived == 0) +{ + result.string(neon.COMPONENTSTATE_INVISIBLE); +} +else +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 33c8be5fa86..ff47a2cfb20 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -749,6 +749,64 @@ <iconId>VAADIN:PLAY</iconId> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/startworkflow/stateProcess.js</stateProcess> </entityActionField> + <entityActionField> + <name>createTeam</name> + <title>Team erstellen</title> + <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/createteam/onActionProcess.js</onActionProcess> + <iconId>NEON:PLUS</iconId> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/createteam/stateProcess.js</stateProcess> + <tooltip>Erstelle ein neues MicrosoftTeams Team</tooltip> + </entityActionField> + <entityActionField> + <name>deleteTeam</name> + <title>Team löschen</title> + <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/deleteteam/onActionProcess.js</onActionProcess> + <iconId>NEON:TRASH</iconId> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/deleteteam/stateProcess.js</stateProcess> + <tooltip>Lösche das verknüpfte MSTeams Team</tooltip> + </entityActionField> + <entityActionField> + <name>createChannel</name> + <title>Channel erstellen</title> + <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/createchannel/onActionProcess.js</onActionProcess> + <iconId>VAADIN:PLUS</iconId> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/createchannel/stateProcess.js</stateProcess> + <tooltip>Erstelle einen neuen Channel</tooltip> + </entityActionField> + <entityActionField> + <name>addMember</name> + <title>Member hinzufügen</title> + <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/addmember/onActionProcess.js</onActionProcess> + <iconId>NEON:GROUP_APPOINTMENT</iconId> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/addmember/stateProcess.js</stateProcess> + <tooltip>Füge neue Member hinzu</tooltip> + </entityActionField> + <entityActionField> + <name>addApp</name> + <title>App hinzufügen</title> + <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/addapp/onActionProcess.js</onActionProcess> + <iconId>NEON:PUZZLE</iconId> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/addapp/stateProcess.js</stateProcess> + <tooltip>Fügt eine App zu einem Team hinzu</tooltip> + </entityActionField> + <entityActionField> + <name>restoreTeam</name> + <title>Team wiederherstellen</title> + <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/restoreteam/onActionProcess.js</onActionProcess> + <iconId>VAADIN:ARROW_BACKWARD</iconId> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/restoreteam/stateProcess.js</stateProcess> + <tooltip>Stellt das Team wieder her</tooltip> + </entityActionField> + <entityField> + <name>ALLTEAMS</name> + <title>allTeams</title> + <selectionMode>MULTI</selectionMode> + </entityField> + <entityActionField> + <name>chooseTeam</name> + <title>chooseTeam</title> + <tooltip>Wähle ein bereits vorhandenes Team aus</tooltip> + </entityActionField> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Salesproject_entity/entityfields/addapp/onActionProcess.js b/entity/Salesproject_entity/entityfields/addapp/onActionProcess.js new file mode 100644 index 00000000000..aa485d9bd79 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/addapp/onActionProcess.js @@ -0,0 +1,12 @@ +import("system.teams"); +import("Sql_lib"); + + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") + .cell(); + +var appId = "768e1918-bc98-4646-8517-f77225feaa78" + +teams.addAppToTeam(teamId, appId) \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/addapp/stateProcess.js b/entity/Salesproject_entity/entityfields/addapp/stateProcess.js new file mode 100644 index 00000000000..08b41286f0a --- /dev/null +++ b/entity/Salesproject_entity/entityfields/addapp/stateProcess.js @@ -0,0 +1,10 @@ +//import("system.vars"); +//import("system.neon"); +//import("system.result"); +//import("Sql_lib"); +// +//var teamId = newSelect("MST_TEAMID") +// .from("MST_TEAM") +// .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") +// .cell(); +//result.string(teamId == "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/addmember/onActionProcess.js b/entity/Salesproject_entity/entityfields/addmember/onActionProcess.js new file mode 100644 index 00000000000..8ee059c24b8 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/addmember/onActionProcess.js @@ -0,0 +1,11 @@ +import("system.teams"); +import("Sql_lib") + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") + .cell(); + +var mailsOfMembers = ["m.bilda@adito.de", "sebastian@mbsolutions2.onmicrosoft.com"]; + +teams.addNewMembers(teamId, mailsOfMembers) \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/addmember/stateProcess.js b/entity/Salesproject_entity/entityfields/addmember/stateProcess.js new file mode 100644 index 00000000000..08b41286f0a --- /dev/null +++ b/entity/Salesproject_entity/entityfields/addmember/stateProcess.js @@ -0,0 +1,10 @@ +//import("system.vars"); +//import("system.neon"); +//import("system.result"); +//import("Sql_lib"); +// +//var teamId = newSelect("MST_TEAMID") +// .from("MST_TEAM") +// .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") +// .cell(); +//result.string(teamId == "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/createchannel/onActionProcess.js b/entity/Salesproject_entity/entityfields/createchannel/onActionProcess.js new file mode 100644 index 00000000000..4cf0d82b0fa --- /dev/null +++ b/entity/Salesproject_entity/entityfields/createchannel/onActionProcess.js @@ -0,0 +1,10 @@ +import("system.teams"); +import("Sql_lib"); + + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") + .cell(); + +teams.createNewChannel(teamId, "ADITO-xRM", "Ein Zweitchannel, um genauer über xRM zu diskutieren") \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/createchannel/stateProcess.js b/entity/Salesproject_entity/entityfields/createchannel/stateProcess.js new file mode 100644 index 00000000000..08b41286f0a --- /dev/null +++ b/entity/Salesproject_entity/entityfields/createchannel/stateProcess.js @@ -0,0 +1,10 @@ +//import("system.vars"); +//import("system.neon"); +//import("system.result"); +//import("Sql_lib"); +// +//var teamId = newSelect("MST_TEAMID") +// .from("MST_TEAM") +// .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") +// .cell(); +//result.string(teamId == "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/createteam/onActionProcess.js b/entity/Salesproject_entity/entityfields/createteam/onActionProcess.js new file mode 100644 index 00000000000..caf03e2eda1 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/createteam/onActionProcess.js @@ -0,0 +1,20 @@ +import("system.vars"); +import("system.neon"); +import("system.teams"); +import("system.logging"); + +var rowId = vars.get("$field.OBJECT_ROWID"); +logging.log(rowId) +var teamName = "Buchner Neuprojekt"; +var description = "Das Buchner Neuprojekt ist das erste Projekt, dass mit der Anbindung an MSTeams arbeitet um diese zu perfektionieren"; +var mailNickname = "buchnerNeuprojekt"; +var mailsOfOwners = [["marco@mbsolutions2.onmicrosoft.com", "marco@mbsolutions2.onmicrosoft.com"]]; +var mailsOfMembers = [["franz@mbsolutions2.onmicrosoft.com", "franz@mbsolutions2.onmicrosoft.com"], ["martin@mbsolutions2.onmicrosoft.com", "martin@mbsolutions2.onmicrosoft.com"]]; + +neon.openContext("MSTTeam", null, null, neon.OPERATINGSTATE_NEW, { + "TeamName_param" : teamName, + "Description_param" : description, + "MailsOfOwners_param" : JSON.stringify(mailsOfOwners), + "MailsOfMembers_param" : JSON.stringify(mailsOfMembers), + "RowId_param" : rowId +}); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/createteam/stateProcess.js b/entity/Salesproject_entity/entityfields/createteam/stateProcess.js new file mode 100644 index 00000000000..769332ea05d --- /dev/null +++ b/entity/Salesproject_entity/entityfields/createteam/stateProcess.js @@ -0,0 +1,11 @@ +//import("system.vars"); +//import("system.neon"); +//import("system.result"); +//import("Sql_lib"); +// +//var teamId = newSelect("MST_TEAMID") +// .from("MST_TEAM") +// .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") +// .cell(); +// +//result.string(teamId != "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/deleteteam/onActionProcess.js b/entity/Salesproject_entity/entityfields/deleteteam/onActionProcess.js new file mode 100644 index 00000000000..811af52a53f --- /dev/null +++ b/entity/Salesproject_entity/entityfields/deleteteam/onActionProcess.js @@ -0,0 +1,10 @@ +import("system.teams"); +import("Sql_lib"); + + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") + .cell(); + +teams.archiveTeamAndDeleteGroup(teamId); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/deleteteam/stateProcess.js b/entity/Salesproject_entity/entityfields/deleteteam/stateProcess.js new file mode 100644 index 00000000000..1ffcd6ff42b --- /dev/null +++ b/entity/Salesproject_entity/entityfields/deleteteam/stateProcess.js @@ -0,0 +1,11 @@ +//import("system.vars"); +//import("system.neon"); +//import("system.result"); +//import("Sql_lib"); +// +//var teamId = newSelect("MST_TEAMID") +// .from("MST_TEAM") +// .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") +// .cell(); +// +//result.string(teamId == "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/restoreteam/onActionProcess.js b/entity/Salesproject_entity/entityfields/restoreteam/onActionProcess.js new file mode 100644 index 00000000000..06870ce60f2 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/restoreteam/onActionProcess.js @@ -0,0 +1,10 @@ +import("system.teams"); +import("Sql_lib"); + + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") + .cell(); + +teams.unarchiveTeamAndRestoreGroup(teamId); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/restoreteam/stateProcess.js b/entity/Salesproject_entity/entityfields/restoreteam/stateProcess.js new file mode 100644 index 00000000000..08b41286f0a --- /dev/null +++ b/entity/Salesproject_entity/entityfields/restoreteam/stateProcess.js @@ -0,0 +1,10 @@ +//import("system.vars"); +//import("system.neon"); +//import("system.result"); +//import("Sql_lib"); +// +//var teamId = newSelect("MST_TEAMID") +// .from("MST_TEAM") +// .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") +// .cell(); +//result.string(teamId == "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js index 351ca78b95f..d11c2d44208 100644 --- a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js @@ -9,6 +9,7 @@ import("system.db"); import("system.question"); import("KeywordRegistry_basic"); import("Keyword_lib"); +import("system.teams"); var needToUpdateForecast = null; var rowdata = vars.get("$local.rowdata"); @@ -97,6 +98,21 @@ vars.get("$local.changed").forEach(function(fieldName) { } }); +var serviceUrl = newSelect("SERVICE_URL") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$field.SALESPROJECTID") + .cell(); + + var channelId = newSelect("GENERAL_CHANNELID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$field.SALESPROJECTID") + .cell(); + + if(serviceUrl) + { + teams.sendNotification(serviceUrl, channelId, "Etwas hat sich im Projekt "+ vars.get("$field.PROJECTTITLE") +" geaendert") + } + if (needToUpdateForecast) Salesproject.notifyToUpdateForecast(); diff --git a/entity/SingleObject_entity/SingleObject_entity.aod b/entity/SingleObject_entity/SingleObject_entity.aod new file mode 100644 index 00000000000..f471932a1d6 --- /dev/null +++ b/entity/SingleObject_entity/SingleObject_entity.aod @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> + <name>SingleObject_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>TARGET_CONTEXT</name> + <valueProcess>%aditoprj%/entity/SingleObject_entity/entityfields/target_context/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>UID</name> + <valueProcess>%aditoprj%/entity/SingleObject_entity/entityfields/uid/valueProcess.js</valueProcess> + </entityField> + <entityParameter> + <name>TargetContext_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityParameter> + <name>TargetId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityProvider> + <name>OneObject</name> + <targetContextField>TARGET_CONTEXT</targetContextField> + <targetIdField>UID</targetIdField> + </entityProvider> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/neonContext/MSTChooseTeam/MSTChooseTeam.aod b/neonContext/MSTChooseTeam/MSTChooseTeam.aod new file mode 100644 index 00000000000..c28f7a58024 --- /dev/null +++ b/neonContext/MSTChooseTeam/MSTChooseTeam.aod @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>MSTChooseTeam</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>MSTChooseTeamEdit_view</editView> + <entity>MSTChooseTeam_entity</entity> + <references> + <neonViewReference> + <name>0c4e977f-1ce1-4782-9a7f-7cabd557c9fc</name> + <view>MSTChooseTeamEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTTeam/MSTTeam.aod b/neonContext/MSTTeam/MSTTeam.aod new file mode 100644 index 00000000000..532d9326d4d --- /dev/null +++ b/neonContext/MSTTeam/MSTTeam.aod @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>MSTTeam</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>MSTTeamEdit_view</editView> + <entity>MSTTeam_entity</entity> + <references> + <neonViewReference> + <name>357c290b-bf6a-4628-a6d9-f81a97ea843e</name> + <view>MSTTeamEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTTeamChannel/MSTTeamChannel.aod b/neonContext/MSTTeamChannel/MSTTeamChannel.aod new file mode 100644 index 00000000000..504bccc581a --- /dev/null +++ b/neonContext/MSTTeamChannel/MSTTeamChannel.aod @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>MSTTeamChannel</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>MSTTeamChannelEdit_view2</editView> + <entity>MSTTeamChannel_entity</entity> + <references> + <neonViewReference> + <name>754bf641-381f-4b16-adf6-19960eb7b8d2</name> + <view>MSTTeamChannelEdit_view2</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTTeamChat/MSTTeamChat.aod b/neonContext/MSTTeamChat/MSTTeamChat.aod new file mode 100644 index 00000000000..3d99ac8581d --- /dev/null +++ b/neonContext/MSTTeamChat/MSTTeamChat.aod @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>MSTTeamChat</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>MSTTeamChatEdit_view</editView> + <entity>MSTTeamChat_entity</entity> + <references> + <neonViewReference> + <name>1a157c6c-7db9-4a2a-9e62-7d149b146bde</name> + <view>MSTTeamChatEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTTeamDocument/MSTTeamDocument.aod b/neonContext/MSTTeamDocument/MSTTeamDocument.aod new file mode 100644 index 00000000000..4f372aaa930 --- /dev/null +++ b/neonContext/MSTTeamDocument/MSTTeamDocument.aod @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>MSTTeamDocument</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>MSTTeamDocumentEdit_view</editView> + <entity>MSTTeamDocument_entity</entity> + <references> + <neonViewReference> + <name>167cee11-55bd-4988-838b-d9c784da01e2</name> + <view>MSTTeamDocumentEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTTeamMember/MSTTeamMember.aod b/neonContext/MSTTeamMember/MSTTeamMember.aod new file mode 100644 index 00000000000..a482314b45d --- /dev/null +++ b/neonContext/MSTTeamMember/MSTTeamMember.aod @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>MSTTeamMember</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>MSTTeamMemberEdit_view</editView> + <entity>MSTTeamMember_entity</entity> + <references> + <neonViewReference> + <name>5e760ac4-fea0-4283-a0bf-d6d5f0f1c003</name> + <view>MSTTeamMemberEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTTeamsMessage/MSTTeamsMessage.aod b/neonContext/MSTTeamsMessage/MSTTeamsMessage.aod new file mode 100644 index 00000000000..51c8b4d1581 --- /dev/null +++ b/neonContext/MSTTeamsMessage/MSTTeamsMessage.aod @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>MSTTeamsMessage</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterView>MSTTeamsMessageFilter_view</filterView> + <entity>MSTTeamsMessage_entity</entity> + <references> + <neonViewReference> + <name>db5e4380-458f-438a-8945-b8b8463e81d4</name> + <view>MSTTeamsMessageFilter_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/Salesproject/Salesproject.aod b/neonContext/Salesproject/Salesproject.aod index 70d024650c8..8f8820b5fc4 100644 --- a/neonContext/Salesproject/Salesproject.aod +++ b/neonContext/Salesproject/Salesproject.aod @@ -87,5 +87,9 @@ <name>50993084-896d-4d90-9f5e-cd84d3a4dce5</name> <view>SalesprojectMultiEdit_view</view> </neonViewReference> + <neonViewReference> + <name>a3ed00af-e0cc-4c1b-9c49-5d411e129a93</name> + <view>SalesprojectMSTeams_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonView/ActivityFilter_view/ActivityFilter_view.aod b/neonView/ActivityFilter_view/ActivityFilter_view.aod index 09f94a720fa..742325d49db 100644 --- a/neonView/ActivityFilter_view/ActivityFilter_view.aod +++ b/neonView/ActivityFilter_view/ActivityFilter_view.aod @@ -50,6 +50,7 @@ <children> <timelineViewTemplate> <name>ActivitiesTimeline</name> + <favoriteActionGroup1>MSTeams</favoriteActionGroup1> <dateField>entryDateDateFormat</dateField> <titleField>SUBJECT_DETAILS</titleField> <descriptionField>INFO</descriptionField> diff --git a/neonView/DocumentFilter_view/DocumentFilter_view.aod b/neonView/DocumentFilter_view/DocumentFilter_view.aod index 3da41e270af..c1287b68b4c 100644 --- a/neonView/DocumentFilter_view/DocumentFilter_view.aod +++ b/neonView/DocumentFilter_view/DocumentFilter_view.aod @@ -24,6 +24,7 @@ <tableViewTemplate> <name>Documents</name> <favoriteActionGroup1>Document_actions</favoriteActionGroup1> + <favoriteActionGroup2>MSTeam</favoriteActionGroup2> <iconField>PREVIEW_IMAGE</iconField> <titleField>NAME</titleField> <subtitleField>TYPE</subtitleField> diff --git a/neonView/MSTChooseTeamEdit_view/MSTChooseTeamEdit_view.aod b/neonView/MSTChooseTeamEdit_view/MSTChooseTeamEdit_view.aod new file mode 100644 index 00000000000..f7d1e012d76 --- /dev/null +++ b/neonView/MSTChooseTeamEdit_view/MSTChooseTeamEdit_view.aod @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTChooseTeamEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>SearchValue</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <title>Suchbegriff</title> + <fields> + <entityFieldLink> + <name>8adb648c-4485-4803-a922-67bee5922ec0</name> + <entityField>SEARCHVALUE</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <genericViewTemplate> + <name>allTeams</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <title>Alle Teams</title> + <fields> + <entityFieldLink> + <name>6a7121eb-ed35-4a4e-a26b-899233ea0b15</name> + <entityField>ALLTEAMS</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <genericViewTemplate> + <name>allArchivedTeams</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <title>Alle archivierten Teams</title> + <fields> + <entityFieldLink> + <name>e17470f5-f8a7-42ce-ab2c-048015784740</name> + <entityField>ALLARCHIVEDTEAMS</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod b/neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod new file mode 100644 index 00000000000..360a058b7da --- /dev/null +++ b/neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTTeamChannelEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> +</neonView> diff --git a/neonView/MSTTeamChannelEdit_view2/MSTTeamChannelEdit_view2.aod b/neonView/MSTTeamChannelEdit_view2/MSTTeamChannelEdit_view2.aod new file mode 100644 index 00000000000..6ffd2def37d --- /dev/null +++ b/neonView/MSTTeamChannelEdit_view2/MSTTeamChannelEdit_view2.aod @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTTeamChannelEdit_view2</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericViewTemplate> + <name>Generic</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <title>Neuer Channel</title> + <fields> + <entityFieldLink> + <name>2b7a105d-ecc0-48e9-9e67-c6d5e84417b7</name> + <entityField>CHANNELNAME</entityField> + </entityFieldLink> + <entityFieldLink> + <name>93c89d65-776d-42d4-822f-30d87225b725</name> + <entityField>DESCRIPTION</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTTeamChatEdit_view/MSTTeamChatEdit_view.aod b/neonView/MSTTeamChatEdit_view/MSTTeamChatEdit_view.aod new file mode 100644 index 00000000000..bdc013d2ee0 --- /dev/null +++ b/neonView/MSTTeamChatEdit_view/MSTTeamChatEdit_view.aod @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTTeamChatEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>NORMAL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>AllChannel</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <title>Alle Channel</title> + <fields> + <entityFieldLink> + <name>d3cc6ea3-00b5-4da5-9a58-a0e18aaff8da</name> + <entityField>SEARCHVALUE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>9e188c23-3060-4f5c-bb67-8dce3ef5f93f</name> + <entityField>ALLCHANNELS</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>6c47a973-ef7c-4165-addb-427c1cce9540</name> + <entityField>Consumer</entityField> + <view>MSTTeamsMessageFilter_view</view> + </neonViewReference> + <actionsViewTemplate> + <name>LoadNewMessages</name> + <actions> + <element>LoadNewMessages</element> + </actions> + <entityField>#ENTITY</entityField> + </actionsViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTTeamDocumentEdit_view/MSTTeamDocumentEdit_view.aod b/neonView/MSTTeamDocumentEdit_view/MSTTeamDocumentEdit_view.aod new file mode 100644 index 00000000000..85e283d46c4 --- /dev/null +++ b/neonView/MSTTeamDocumentEdit_view/MSTTeamDocumentEdit_view.aod @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTTeamDocumentEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <isOverlay v="false" /> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericViewTemplate> + <name>Documents</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <title>Dokumente</title> + <fields> + <entityFieldLink> + <name>2c2c923f-0e45-417f-950e-14826bc8fcbe</name> + <entityField>SEARCHVALUE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>c42b1c0b-de04-400e-9068-1be2568a0d5f</name> + <entityField>ALLCHANNELS</entityField> + </entityFieldLink> + <entityFieldLink> + <name>9a0986dd-68b2-422e-b9b3-27d35640b44b</name> + <entityField>DOCUMENTS</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod new file mode 100644 index 00000000000..ee182311b99 --- /dev/null +++ b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTTeamEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericViewTemplate> + <name>Generic</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>b69c563c-6230-4bb5-b543-236e0fdc791c</name> + <entityField>TEAMNAME</entityField> + </entityFieldLink> + <entityFieldLink> + <name>31897309-cbb5-421b-a96b-bada6c95b72f</name> + <entityField>DESCRIPTION</entityField> + </entityFieldLink> + <entityFieldLink> + <name>a35da883-d23e-4afc-a0a5-ce7e90ec3b2d</name> + <entityField>UPNSOFOWNERS</entityField> + </entityFieldLink> + <entityFieldLink> + <name>001a17e9-1bb9-418d-a3ad-284fa95463ad</name> + <entityField>UPNSOFMEMBERS</entityField> + </entityFieldLink> + <entityFieldLink> + <name>8cf04e8d-6424-4de4-bfc1-d524de11ecb2</name> + <entityField>MAILSOFEXTERN</entityField> + </entityFieldLink> + <entityFieldLink> + <name>19803dfd-60fa-4981-ac86-9565e0ff6eea</name> + <entityField>EXTERN</entityField> + </entityFieldLink> + <entityFieldLink> + <name>356e3124-065f-4872-a23e-31c069a4ce8c</name> + <entityField>UPNSOFOWNERSORIGINAL</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTTeamMemberEdit_view/MSTTeamMemberEdit_view.aod b/neonView/MSTTeamMemberEdit_view/MSTTeamMemberEdit_view.aod new file mode 100644 index 00000000000..b225944fe7c --- /dev/null +++ b/neonView/MSTTeamMemberEdit_view/MSTTeamMemberEdit_view.aod @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTTeamMemberEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericViewTemplate> + <name>Generic</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>0c013cb6-6a74-47c1-9e5c-8e23f1ce917a</name> + <entityField>UPNSOFMEMBERS</entityField> + </entityFieldLink> + <entityFieldLink> + <name>54cf4c2d-6c18-4c0f-ae52-32c1f7337cd7</name> + <entityField>ARETHESEOWNERS</entityField> + </entityFieldLink> + <entityFieldLink> + <name>75b97952-da9a-4a5c-9bbf-6cec3774541b</name> + <entityField>MAILSOFEXTERN</entityField> + </entityFieldLink> + <entityFieldLink> + <name>ab1ed6fe-5a68-4728-9d90-698636c93ce8</name> + <entityField>EXTERN</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod b/neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod new file mode 100644 index 00000000000..fbcca9d1e67 --- /dev/null +++ b/neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTTeamsMessageFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <tableViewTemplate> + <name>Table</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>5db624ad-16d0-4374-be55-1a423fcddefc</name> + <entityField>FROM</entityField> + </neonTableColumn> + <neonTableColumn> + <name>bc343936-a59c-4eb0-b056-c8dc35303385</name> + <entityField>MESSAGE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>89e753a1-4917-4493-b1c3-3c9d7884b217</name> + <entityField>CREATED_DATE_TIME</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/MemberFilter_view/MemberFilter_view.aod b/neonView/MemberFilter_view/MemberFilter_view.aod index c432d26441e..6aa71af982f 100644 --- a/neonView/MemberFilter_view/MemberFilter_view.aod +++ b/neonView/MemberFilter_view/MemberFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <groupLayout> + <boxLayout> <name>layout</name> - </groupLayout> + </boxLayout> </layout> <children> <tableViewTemplate> @@ -47,39 +47,5 @@ </neonTableColumn> </columns> </tableViewTemplate> - <treeTableViewTemplate> - <name>Treetable</name> - <entityField>#ENTITY</entityField> - <columns> - <neonTreeTableColumn> - <name>88973b9d-09af-4d67-8b25-ea6b456314a2</name> - <entityField>IMAGE</entityField> - </neonTreeTableColumn> - <neonTreeTableColumn> - <name>d84b10a1-593a-4c2f-ba35-4fb80c362850</name> - <entityField>PERSON_FULL_NAME</entityField> - </neonTreeTableColumn> - <neonTreeTableColumn> - <name>22eb0efc-61b3-48fe-989d-2dd4e70ea780</name> - <entityField>ORGANISATION_NAME</entityField> - </neonTreeTableColumn> - <neonTreeTableColumn> - <name>7d5b671c-af93-416c-b774-bd2bc671f048</name> - <entityField>DEPARTMENT</entityField> - </neonTreeTableColumn> - <neonTreeTableColumn> - <name>06451ab6-4d94-40eb-8ac1-466259ad35fb</name> - <entityField>CONTACTROLE</entityField> - </neonTreeTableColumn> - <neonTreeTableColumn> - <name>87770e60-967b-4411-9eb3-0397fda4663e</name> - <entityField>POSITION</entityField> - </neonTreeTableColumn> - <neonTreeTableColumn> - <name>2dc17972-2e5a-424a-b069-2b8f04b35f6c</name> - <entityField>MEMBERROLE</entityField> - </neonTreeTableColumn> - </columns> - </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/SalesprojectMSTeams_view/SalesprojectMSTeams_view.aod b/neonView/SalesprojectMSTeams_view/SalesprojectMSTeams_view.aod new file mode 100644 index 00000000000..e24067db06a --- /dev/null +++ b/neonView/SalesprojectMSTeams_view/SalesprojectMSTeams_view.aod @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>SalesprojectMSTeams_view</name> + <title>MSTeams</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <drawerLayout> + <name>layout</name> + <fixedDrawer v="false" /> + </drawerLayout> + </layout> + <children> + <dynamicFormViewTemplate> + <name>actuallTeam</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + </dynamicFormViewTemplate> + <actionsViewTemplate> + <name>MSTeamsActions</name> + <actions> + <element>createTeam</element> + <element>deleteTeam</element> + <element>createChannel</element> + <element>addMember</element> + <element>addApp</element> + <element>restoreTeam</element> + </actions> + <entityField>#ENTITY</entityField> + <title>MSTeamsActions</title> + </actionsViewTemplate> + <tableViewTemplate> + <name>TeamsTable</name> + <entityField>#ENTITY</entityField> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod index 51150b360d3..f122e6f32e2 100644 --- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod +++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod @@ -5,7 +5,7 @@ <layout> <masterSlaveLayout> <name>layout</name> - <master>04b5a305-b2a6-481a-83a5-1d94bee08143</master> + <master>eaee3a77-a3d8-4f0c-969a-da232b0c9537</master> </masterSlaveLayout> </layout> <children> @@ -29,6 +29,11 @@ <entityField>#ENTITY</entityField> <view>SalesprojectMemberActivity_view</view> </neonViewReference> + <neonViewReference> + <name>b04b60a7-4296-4dd7-ae94-3c68b4def6a4</name> + <entityField>#ENTITY</entityField> + <view>SalesprojectMSTeams_view</view> + </neonViewReference> <neonViewReference> <name>67659a20-068f-4522-ad33-2c35e29f929a</name> <entityField>#ENTITY</entityField> @@ -64,5 +69,10 @@ <entityField>LogHistories</entityField> <view>LogHistoryFilter_view</view> </neonViewReference> + <neonViewReference> + <name>eaee3a77-a3d8-4f0c-969a-da232b0c9537</name> + <entityField>#ENTITY</entityField> + <view>SalesprojectPreview_view</view> + </neonViewReference> </children> </neonView> diff --git a/process/_test_clientProcess/_test_clientProcess.aod b/process/_test_clientProcess/_test_clientProcess.aod index 65d4b557987..d003fb54e12 100644 --- a/process/_test_clientProcess/_test_clientProcess.aod +++ b/process/_test_clientProcess/_test_clientProcess.aod @@ -5,6 +5,8 @@ <documentation>%aditoprj%/process/_test_clientProcess/documentation.adoc</documentation> <process>%aditoprj%/process/_test_clientProcess/process.js</process> <publishAsWebservice v="true" /> + <wsdl>%aditoprj%/process/_test_clientProcess/wsdl.wsdl</wsdl> + <loginTypeId>internal.none</loginTypeId> <alias>Data_alias</alias> <variants> <element>EXECUTABLE</element> diff --git a/process/_test_clientProcess/wsdl.wsdl b/process/_test_clientProcess/wsdl.wsdl new file mode 100644 index 00000000000..e69de29bb2d diff --git a/process/mstws/mstws.aod b/process/mstws/mstws.aod new file mode 100644 index 00000000000..0c7c1773bc8 --- /dev/null +++ b/process/mstws/mstws.aod @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>mstws</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/mstws/process.js</process> + <publishAsWebservice v="true" /> + <style>REST</style> + <restAcceptedMimeType>application/json</restAcceptedMimeType> + <restDeliveredMimeType>application/json</restDeliveredMimeType> + <loginTypeId>internal.none</loginTypeId> + <publishAsClientWebservice v="true" /> + <alias>Data_alias</alias> +</process> diff --git a/process/mstws/process.js b/process/mstws/process.js new file mode 100644 index 00000000000..8057882a27f --- /dev/null +++ b/process/mstws/process.js @@ -0,0 +1,53 @@ +import("system.teams"); +import("system.logging"); +import("system.util"); +import("Sql_lib"); + +function restpost(pRequestAsJson) +{ + //Umformen, dass man den Body des Requests als JsonFormat Base64 decodiert hat + var jsonRequest = JSON.parse(pRequestAsJson); + logging.log(jsonRequest); + var body = jsonRequest.body; + var decodedBody = util.decodeBase64String(body); + var jsonBody = JSON.parse(decodedBody); + + //Nötig, falls dies der InitialRequest ist + var eventType = jsonBody.channelData.eventType; + var teamId = jsonBody.channelData.team.aadGroupId; + var who = jsonBody.recipient.name; + var serviceUrl = jsonBody.serviceUrl; + + //Wenn dies der InitalRequest ist (dieser erfolgt, wenn die APP hinzugefügt wird), speichere die ServiceUrl in die DB + if(eventType == "teamMemberAdded" && who == "AditoBot") + { + newWhere("MST_TEAM.MST_TEAMID", teamId) + .updateFields({"SERVICE_URL" : serviceUrl}); + } + //Sollte jemand die APP manuell wieder entfernen, gibt es einen "AbschiedsRequest", lösche die ServiceUrl aus der DB + if(eventType == "teamMemberRemoved" && who == "AditoBot") + { + newWhere("MST_TEAM.MST_TEAMID", teamId) + .updateFields({"SERVICE_URL" : ""}); + } + + //_____________________________________________________________ + //Hier gelandet: Request ist eine Nachricht + + var type = jsonBody.type; + if(type != "message") //Wenn Request keine Message war dann ignorieren + return pRequestAsJson; + + var text = jsonBody.text; + var from = jsonBody.from.name; + + //Testzwecke (nachträglich entfernen) + logging.log(text); + logging.log(from); + + //Da alle Aufgaben, wie zum Beispiel: Ticket erstellen, Aufgabe erstellen usw. in JDiTO erledigt werden können, + // wird hier keine teams.Funktion benötigt + //Weitere Schritte: text aufsplittet anhand der Syntax und die einzelnen Kommandos umsetzen + + return pRequestAsJson; +} \ No newline at end of file -- GitLab From 4b38b4976ce84f16c10f17c52a67898d47c43e51 Mon Sep 17 00:00:00 2001 From: "M.Bilda" <m.bilda@adito.de> Date: Thu, 9 Jul 2020 09:37:55 +0200 Subject: [PATCH 004/184] MSTeams Anbindung Prototyp --- entity/Person_entity/Person_entity.aod | 10 ++++++++++ .../addrecordaction/onActionProcess.js | 7 +++++++ .../MSTTeamEdit_view/MSTTeamEdit_view.aod | 18 ++++++++++++++++++ .../MemberFilter_view/MemberFilter_view.aod | 1 + neonView/PersonEdit_view/PersonEdit_view.aod | 19 +++++++++++++++++++ .../_____PREFERENCES_PROJECT.aod | 1 + 6 files changed, 56 insertions(+) create mode 100644 entity/Person_entity/entityfields/testgroup/children/addrecordaction/onActionProcess.js diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index 446f310d7bc..f92fb6a6a71 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -1266,6 +1266,16 @@ </entityParameter> </children> </entityProvider> + <entityActionGroup> + <name>TestGroup</name> + <children> + <entityActionField> + <name>addRecordAction</name> + <title>addRecord</title> + <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/testgroup/children/addrecordaction/onActionProcess.js</onActionProcess> + </entityActionField> + </children> + </entityActionGroup> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Person_entity/entityfields/testgroup/children/addrecordaction/onActionProcess.js b/entity/Person_entity/entityfields/testgroup/children/addrecordaction/onActionProcess.js new file mode 100644 index 00000000000..2161e0ef8cc --- /dev/null +++ b/entity/Person_entity/entityfields/testgroup/children/addrecordaction/onActionProcess.js @@ -0,0 +1,7 @@ +import("system.neon"); + +var test = { + "AddressSearch" : "response.address" + }; + +neon.addRecord("Documents", test) \ No newline at end of file diff --git a/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod index ee182311b99..fa7fb240fe7 100644 --- a/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod +++ b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod @@ -44,5 +44,23 @@ </entityFieldLink> </fields> </genericViewTemplate> + <titledListViewTemplate> + <name>asdf</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTitledListTableColumn> + <name>e6ac0add-846d-47e9-be74-478848406bb9</name> + <entityField>MAILSOFEXTERN</entityField> + </neonTitledListTableColumn> + <neonTitledListTableColumn> + <name>a9b05950-bed2-4a5d-a608-ae58bc0b23ac</name> + <entityField>UPNSOFMEMBERS</entityField> + </neonTitledListTableColumn> + <neonTitledListTableColumn> + <name>e3081201-52ee-4d09-9039-8228769d189c</name> + <entityField>DESCRIPTION</entityField> + </neonTitledListTableColumn> + </columns> + </titledListViewTemplate> </children> </neonView> diff --git a/neonView/MemberFilter_view/MemberFilter_view.aod b/neonView/MemberFilter_view/MemberFilter_view.aod index 6aa71af982f..2018c671b14 100644 --- a/neonView/MemberFilter_view/MemberFilter_view.aod +++ b/neonView/MemberFilter_view/MemberFilter_view.aod @@ -11,6 +11,7 @@ <children> <tableViewTemplate> <name>Members</name> + <favoriteActionGroup1>MSTeamsActionGroup</favoriteActionGroup1> <iconField>IMAGE</iconField> <titleField>PERSON_FULL_NAME</titleField> <subtitleField>CONTACTROLE</subtitleField> diff --git a/neonView/PersonEdit_view/PersonEdit_view.aod b/neonView/PersonEdit_view/PersonEdit_view.aod index c31dd51b7ff..a89480fa864 100644 --- a/neonView/PersonEdit_view/PersonEdit_view.aod +++ b/neonView/PersonEdit_view/PersonEdit_view.aod @@ -91,5 +91,24 @@ <entityField>Attributes</entityField> <view>AttributeRelationMultiEdit_view</view> </neonViewReference> + <actionsViewTemplate> + <name>asdf</name> + <actions> + <element>TestGroup</element> + </actions> + <entityField>#ENTITY</entityField> + </actionsViewTemplate> + <genericViewTemplate> + <name>ihu</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <title>hui</title> + <fields> + <entityFieldLink> + <name>e6d21257-2eef-4de2-8d5f-a8a0fd3188a9</name> + <entityField>FIRSTNAME</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> </children> </neonView> diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod index cb973daa809..7f1ff585157 100644 --- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod +++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod @@ -40,6 +40,7 @@ <indexsearchIncrementingIndexerEnabled v="true" /> <indexsearchIncrementingIndexerInterval v="1000" /> <indexsearchIncrementingIndexerBunchSize v="250" /> + <userdirectoryAlias>_____SYSTEMALIAS</userdirectoryAlias> <mailBridgeMailserver> <mailbridgeMailserver> <name>abfa63d1-a47e-41f6-a87d-138bf04adc1e</name> -- GitLab From aa3c9284c8909ea876a58249451bb560c52cb027 Mon Sep 17 00:00:00 2001 From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local> Date: Thu, 9 Jul 2020 15:24:35 +0200 Subject: [PATCH 005/184] 1060809 MS Teams --- .liquibase/Data_alias/changelog.xml | 2 +- aliasDefinition/Data_alias/Data_alias.aod | 132 ++++++++++++++++++ .../BulkMailAddRecipients_entity.aod | 28 +++- .../BulkMailTesting_entity.aod | 28 +++- .../CampaignAddParticipants_entity.aod | 4 - entity/Email_entity/Email_entity.aod | 28 +++- .../ExportTemplateSelection_entity.aod | 29 +++- entity/Letter_entity/Letter_entity.aod | 28 +++- .../MSTChooseTeam_entity.aod | 37 ++--- .../allarchivedteams/dropDownProcess.js | 9 -- .../entityfields/allteams/dropDownProcess.js | 18 --- .../recordcontainers/jdito/contentProcess.js | 2 +- .../recordcontainers/jdito/onInsert.js | 66 ++------- .../MSTTeamAddMembers_entity.aod | 44 ++++++ .../salesprojectid_param/valueProcess.js | 4 + .../recordcontainers/jdito/contentProcess.js | 9 ++ .../MSTTeamMember_entity.aod | 85 +++++++---- .../entityfields/isextern/valueProcess.js | 7 + .../mailsofextern/dropDownProcess.js | 6 - .../objectrowid_param/valueProcess.js | 4 + .../role_or_invite/dropDownProcess.js | 21 +++ .../upnsofmembers/dropDownProcess.js | 6 - .../recordcontainers/jdito/contentProcess.js | 22 ++- entity/MSTTeam_entity/MSTTeam_entity.aod | 97 +++++-------- entity/MSTTeam_entity/contentTitleProcess.js | 4 + .../mailsofextern/dropDownProcess.js | 6 - .../entityfields/obect_rowid/valueProcess.js | 6 - .../children/mstteamid_param/valueProcess.js | 4 + .../salesprojectid_param/valueProcess.js | 4 + .../upnsofmembers/dropDownProcess.js | 6 - .../upnsofowners/dropDownProcess.js | 6 - .../upnsofownersoriginal/dropDownProcess.js | 17 --- .../recordcontainers/jdito/contentProcess.js | 34 ++++- .../recordcontainers/jdito/onInsert.js | 3 - entity/Member_entity/Member_entity.aod | 89 ++++++------ entity/Member_entity/contentTitleProcess.js | 4 + .../entityfields/assignedteam/valueProcess.js | 38 ----- .../children/addapp/stateProcess.js | 2 +- .../children/addnewmember/onActionProcess.js | 9 +- .../children/addnewmember/stateProcess.js | 2 +- .../changetomsteam/onActionProcess.js | 4 +- .../children/changetomsteam/stateProcess.js | 2 +- .../children/chooseteam/onActionProcess.js | 2 +- .../children/chooseteam/stateProcess.js | 2 +- .../children/createchannel/onActionProcess.js | 12 -- .../children/createchannel/stateProcess.js | 23 --- .../children/createteam/onActionProcess.js | 24 +--- .../children/createteam/stateProcess.js | 2 +- .../children/deleteteam/onActionProcess.js | 25 ++-- .../children/deleteteam/stateProcess.js | 2 +- .../children/restoreteam/stateProcess.js | 2 +- .../Salesproject_entity.aod | 68 ++------- .../entityfields/addapp/onActionProcess.js | 12 -- .../entityfields/addapp/stateProcess.js | 10 -- .../entityfields/addmember/onActionProcess.js | 11 -- .../entityfields/addmember/stateProcess.js | 10 -- .../createchannel/onActionProcess.js | 10 -- .../createchannel/stateProcess.js | 10 -- .../createteam/onActionProcess.js | 20 --- .../entityfields/createteam/stateProcess.js | 11 -- .../deleteteam/onActionProcess.js | 10 -- .../entityfields/deleteteam/stateProcess.js | 11 -- .../restoreteam/onActionProcess.js | 10 -- .../entityfields/restoreteam/stateProcess.js | 10 -- .../mst_team_id.displayvalue/expression.js | 3 + .../SerialLetterAddRecipients_entity.aod | 28 +++- neonContext/MSTTeam/MSTTeam.aod | 5 + .../MSTTeamAddMembers/MSTTeamAddMembers.aod | 14 ++ neonContext/MSTTeamMember/MSTTeamMember.aod | 4 + neonContext/Member/Member.aod | 5 + neonContext/Salesproject/Salesproject.aod | 4 - .../MSTChooseTeamEdit_view.aod | 30 +--- .../MSTTeamAddMembersEdit_view.aod | 18 +++ .../MSTTeamEdit_view/MSTTeamEdit_view.aod | 54 ++----- .../MSTTeamMemberMultiEdit_view.aod | 26 ++++ .../MSTTeamPreview_view.aod | 20 +++ .../MemberFilter_view/MemberFilter_view.aod | 3 +- .../MemberLookup_view/MemberLookup_view.aod | 30 ++++ .../SalesprojectMSTeams_view.aod | 36 ----- .../SalesprojectMain_view.aod | 5 - .../SalesprojectPreview_view.aod | 4 + 81 files changed, 791 insertions(+), 751 deletions(-) delete mode 100644 entity/MSTChooseTeam_entity/entityfields/allarchivedteams/dropDownProcess.js delete mode 100644 entity/MSTChooseTeam_entity/entityfields/allteams/dropDownProcess.js create mode 100644 entity/MSTTeamAddMembers_entity/MSTTeamAddMembers_entity.aod create mode 100644 entity/MSTTeamAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js create mode 100644 entity/MSTTeamAddMembers_entity/recordcontainers/jdito/contentProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js delete mode 100644 entity/MSTTeamMember_entity/entityfields/mailsofextern/dropDownProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/role_or_invite/dropDownProcess.js delete mode 100644 entity/MSTTeamMember_entity/entityfields/upnsofmembers/dropDownProcess.js create mode 100644 entity/MSTTeam_entity/contentTitleProcess.js delete mode 100644 entity/MSTTeam_entity/entityfields/mailsofextern/dropDownProcess.js delete mode 100644 entity/MSTTeam_entity/entityfields/obect_rowid/valueProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/teammembers/children/salesprojectid_param/valueProcess.js delete mode 100644 entity/MSTTeam_entity/entityfields/upnsofmembers/dropDownProcess.js delete mode 100644 entity/MSTTeam_entity/entityfields/upnsofowners/dropDownProcess.js delete mode 100644 entity/MSTTeam_entity/entityfields/upnsofownersoriginal/dropDownProcess.js create mode 100644 entity/Member_entity/contentTitleProcess.js delete mode 100644 entity/Member_entity/entityfields/assignedteam/valueProcess.js delete mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/onActionProcess.js delete mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/stateProcess.js delete mode 100644 entity/Salesproject_entity/entityfields/addapp/onActionProcess.js delete mode 100644 entity/Salesproject_entity/entityfields/addapp/stateProcess.js delete mode 100644 entity/Salesproject_entity/entityfields/addmember/onActionProcess.js delete mode 100644 entity/Salesproject_entity/entityfields/addmember/stateProcess.js delete mode 100644 entity/Salesproject_entity/entityfields/createchannel/onActionProcess.js delete mode 100644 entity/Salesproject_entity/entityfields/createchannel/stateProcess.js delete mode 100644 entity/Salesproject_entity/entityfields/createteam/onActionProcess.js delete mode 100644 entity/Salesproject_entity/entityfields/createteam/stateProcess.js delete mode 100644 entity/Salesproject_entity/entityfields/deleteteam/onActionProcess.js delete mode 100644 entity/Salesproject_entity/entityfields/deleteteam/stateProcess.js delete mode 100644 entity/Salesproject_entity/entityfields/restoreteam/onActionProcess.js delete mode 100644 entity/Salesproject_entity/entityfields/restoreteam/stateProcess.js create mode 100644 entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js create mode 100644 neonContext/MSTTeamAddMembers/MSTTeamAddMembers.aod create mode 100644 neonView/MSTTeamAddMembersEdit_view/MSTTeamAddMembersEdit_view.aod create mode 100644 neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod create mode 100644 neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod create mode 100644 neonView/MemberLookup_view/MemberLookup_view.aod delete mode 100644 neonView/SalesprojectMSTeams_view/SalesprojectMSTeams_view.aod diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index 50c63b65a63..9f811a4e282 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -15,5 +15,5 @@ <include relativeToChangelogFile="true" file="basic/2020.1.1/changelog.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> - <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>--> + <include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/> </databaseChangeLog> \ No newline at end of file diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 9f5df436ed9..427ce28a0ce 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -3647,6 +3647,20 @@ </customStringProperty> </customProperties> </entityFieldDb> + <entityFieldDb> + <name>MST_TEAM_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -14150,6 +14164,124 @@ </entityFieldDb> </entityFields> </entityDb> + <entityDb> + <name>MST_TEAM</name> + <dbName></dbName> + <idColumn>MST_TEAMID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>OBJECT_ROWID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>MST_TEAMID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>IS_ARCHIVED</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="5" /> + <size v="5" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>SERVICE_URL</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="255" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>TEAMNAME</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="255" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>GENERAL_CHANNELID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="48" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>WEB_URL</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="255" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> </entities> </entityGroup> </aliasDefDb> diff --git a/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod b/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod index e75ed952327..ff7e67f3d3d 100644 --- a/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod +++ b/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod @@ -60,9 +60,29 @@ </entityField> </entityFields> <recordContainers> - <datalessRecordContainer> - <name>datalessConfig</name> - <alias>Data_alias</alias> - </datalessRecordContainer> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isPageable v="true" /> + <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> </recordContainers> </entity> diff --git a/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod b/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod index 70e8a0f2629..d67a06830c8 100644 --- a/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod +++ b/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod @@ -58,9 +58,29 @@ </entityActionField> </entityFields> <recordContainers> - <datalessRecordContainer> - <name>datalessRecordContainer</name> - <alias>Data_alias</alias> - </datalessRecordContainer> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isPageable v="true" /> + <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> </recordContainers> </entity> diff --git a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod index 427c1e2626f..fcaefe8fd53 100644 --- a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod +++ b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod @@ -151,9 +151,5 @@ </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> - <datalessRecordContainer> - <name>datalessConfig</name> - <alias>Data_alias</alias> - </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/Email_entity/Email_entity.aod b/entity/Email_entity/Email_entity.aod index 670910b8441..b552eda49fa 100644 --- a/entity/Email_entity/Email_entity.aod +++ b/entity/Email_entity/Email_entity.aod @@ -126,9 +126,29 @@ </entityActionField> </entityFields> <recordContainers> - <datalessRecordContainer> - <name>datalessRecordContainer</name> - <alias>Data_alias</alias> - </datalessRecordContainer> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isPageable v="true" /> + <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> </recordContainers> </entity> diff --git a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod index de7cb9ab35c..ff6e122d10b 100644 --- a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod +++ b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod @@ -77,10 +77,31 @@ <stateProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/safeandexport/stateProcess.js</stateProcess> </entityActionField> </entityFields> + <recordContainers> - <datalessRecordContainer> - <name>datalessRecordContainer</name> - <alias>Data_alias</alias> - </datalessRecordContainer> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isPageable v="true" /> + <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> </recordContainers> </entity> diff --git a/entity/Letter_entity/Letter_entity.aod b/entity/Letter_entity/Letter_entity.aod index 8bab19f92a2..2d818196d6e 100644 --- a/entity/Letter_entity/Letter_entity.aod +++ b/entity/Letter_entity/Letter_entity.aod @@ -74,9 +74,29 @@ </entityActionField> </entityFields> <recordContainers> - <datalessRecordContainer> - <name>datalessConfig</name> - <alias>Data_alias</alias> - </datalessRecordContainer> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isPageable v="true" /> + <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> </recordContainers> </entity> diff --git a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod index fc249eca704..6079bbe7b73 100644 --- a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod +++ b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod @@ -8,28 +8,26 @@ <name>#PROVIDER</name> </entityProvider> <entityField> - <name>ALLTEAMS</name> - <title>All Teams</title> - <dropDownProcess>%aditoprj%/entity/MSTChooseTeam_entity/entityfields/allteams/dropDownProcess.js</dropDownProcess> + <name>MST_TEAM</name> + <title>Team</title> + <consumer>Teams</consumer> <selectionMode>SINGLE</selectionMode> </entityField> <entityField> <name>UID</name> </entityField> <entityParameter> - <name>RowId_param</name> + <name>SalesprojectId_param</name> <expose v="true" /> </entityParameter> - <entityField> - <name>ALLARCHIVEDTEAMS</name> - <title>allArchivedTeams</title> - <dropDownProcess>%aditoprj%/entity/MSTChooseTeam_entity/entityfields/allarchivedteams/dropDownProcess.js</dropDownProcess> - </entityField> - <entityField> - <name>SEARCHVALUE</name> - <title>Surchbegriff</title> - <tooltip>Inhalt dieses Feldes wird als Suche verwendet</tooltip> - </entityField> + <entityConsumer> + <name>Teams</name> + <dependency> + <name>dependency</name> + <entityName>MSTTeam_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> + </entityConsumer> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -39,20 +37,11 @@ <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.displayValue</name> - </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>UID.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.value</name> + <name>MST_TEAM.value</name> </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> diff --git a/entity/MSTChooseTeam_entity/entityfields/allarchivedteams/dropDownProcess.js b/entity/MSTChooseTeam_entity/entityfields/allarchivedteams/dropDownProcess.js deleted file mode 100644 index 2320b0c176b..00000000000 --- a/entity/MSTChooseTeam_entity/entityfields/allarchivedteams/dropDownProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.result"); -import("system.teams"); - - -var allArchivedTeams = teams.getAllArchivedTeams(null); - - -if (allArchivedTeams) - result.object(allArchivedTeams); \ No newline at end of file diff --git a/entity/MSTChooseTeam_entity/entityfields/allteams/dropDownProcess.js b/entity/MSTChooseTeam_entity/entityfields/allteams/dropDownProcess.js deleted file mode 100644 index c32b84a9577..00000000000 --- a/entity/MSTChooseTeam_entity/entityfields/allteams/dropDownProcess.js +++ /dev/null @@ -1,18 +0,0 @@ -import("system.result"); -import("system.teams"); -import("system.vars"); -import("system.logging"); - -var searchValue = vars.get("$field.SEARCHVALUE"); -var allTeams; -if(searchValue) -{ - allTeams = teams.getAllTeams(searchValue); -} -else -{ - allTeams = teams.getAllTeams(null) -} - -if (allTeams) - result.object(allTeams); \ No newline at end of file diff --git a/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js index 488d22d4b38..af9ece7caa7 100644 --- a/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js @@ -4,6 +4,6 @@ import("system.vars"); //TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 var rows = []; if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id, "", "", "", ""];}); + rows = vars.get("$local.idvalues").map(function (id) {return [id, ""];}); result.object(rows); \ No newline at end of file diff --git a/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js index 041a32b69ab..47e89f66de5 100644 --- a/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js @@ -8,70 +8,32 @@ import("system.neon"); var rowData = vars.get("$local.rowdata"); -var teamId = rowData["ALLTEAMS.value"]; -var teamName = rowData["ALLTEAMS.displayValue"] +var teamIdAndName = rowData["MST_TEAM.value"]; -var archivedTeamId = rowData["ALLARCHIVEDTEAMS.value"]; -var archivedTeamName = rowData["ALLARCHIVEDTEAMS.displayValue"]; - -if(teamId) +if(teamIdAndName) { + var [teamId, teamName] = JSON.parse(teamIdAndName); var channelId = teams.getGeneralChannelId(teamId); - var serviceUrl = newSelect("SERVICE_URL") + var mstTeamId = newSelect("MST_TEAMID") .from("MST_TEAM") .where("MST_TEAM.MST_TEAMID", teamId) .cell(); - if(serviceUrl == null) + if (!mstTeamId) { - serviceUrl = ""; + new SqlBuilder().insertFields({ + "MST_TEAMID" : teamId, + "TEAMNAME" : teamName, + "GENERAL_CHANNELID" : channelId, + "IS_ARCHIVED" : 0 + }, "MST_TEAM"); } - - new SqlBuilder().insertFields({ - "MST_ID" : util.getNewUUID(), - "MST_TEAMID" : teamId, - "TEAMNAME" : teamName, - "GENERAL_CHANNELID" : channelId, - "OBJECT_ROWID" : vars.get("$param.RowId_param"), - "IS_ARCHIVED" : 0, - "SERVICE_URL" : serviceUrl -}, "MST_TEAM"); + newWhere("SALESPROJECT.SALESPROJECTID", "$param.SalesprojectId_param").updateFields({ + "MST_TEAM_ID" : teamId + }); } -else if(archivedTeamId) -{ - - teams.unarchiveTeamAndRestoreGroup(archivedTeamId) - - var channelId = teams.getGeneralChannelId(archivedTeamId); - - var serviceUrl = newSelect("SERVICE_URL") - .from("MST_TEAM") - .where("MST_TEAM.MST_TEAMID", archivedTeamId) - .cell(); - - if(serviceUrl == null) - { - serviceUrl = ""; - } - - newWhere("MST_TEAM.MST_TEAMID", archivedTeamId) - .updateFields({ - "IS_ARCHIVED" : "0", - "FINAL_DELETE_DATE" : "" - }); - - new SqlBuilder().insertFields({ - "MST_ID" : util.getNewUUID(), - "MST_TEAMID" : archivedTeamId, - "TEAMNAME" : archivedTeamName, - "GENERAL_CHANNELID" : channelId, - "OBJECT_ROWID" : vars.get("$param.RowId_param"), - "IS_ARCHIVED" : 0, - "SERVICE_URL" : serviceUrl -}, "MST_TEAM"); -} neon.refreshAll(); diff --git a/entity/MSTTeamAddMembers_entity/MSTTeamAddMembers_entity.aod b/entity/MSTTeamAddMembers_entity/MSTTeamAddMembers_entity.aod new file mode 100644 index 00000000000..1a1c93f66ca --- /dev/null +++ b/entity/MSTTeamAddMembers_entity/MSTTeamAddMembers_entity.aod @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> + <name>MSTTeamAddMembers_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <title>Add members</title> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>UID</name> + </entityField> + <entityConsumer> + <name>Members</name> + <dependency> + <name>dependency</name> + <entityName>MSTTeamMember_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> + <children> + <entityParameter> + <name>SalesprojectId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeamAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityParameter> + <name>SalesprojectId_param</name> + <expose v="true" /> + </entityParameter> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <contentProcess>%aditoprj%/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTTeamAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js b/entity/MSTTeamAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js new file mode 100644 index 00000000000..86e1d8c1c0f --- /dev/null +++ b/entity/MSTTeamAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$param.SalesprojectId_param")); \ No newline at end of file diff --git a/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 00000000000..e197aca8b77 --- /dev/null +++ b/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.vars"); + +//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 +var rows = []; +if (vars.get("$local.idvalues")) + rows = vars.get("$local.idvalues").map(function (id) {return [id];}); + +result.object(rows); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod index 65caeb26918..40379d111b5 100644 --- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -6,36 +6,27 @@ <entityFields> <entityProvider> <name>#PROVIDER</name> + <dependencies> + <entityDependency> + <name>335d30c4-7beb-4dcb-8a0f-de85108530a9</name> + <entityName>MSTTeamAddMembers_entity</entityName> + <fieldName>Members</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> - <name>UPNSOFMEMBERS</name> + <name>MEMBER</name> <title>Members</title> - <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/upnsofmembers/dropDownProcess.js</dropDownProcess> - <selectionMode>MULTI</selectionMode> + <consumer>ProjectMembers</consumer> </entityField> <entityField> <name>UID</name> </entityField> - <entityField> - <name>ARETHESEOWNERS</name> - <title>Handelt es sich bei den Benutzer(n) um "Besitzer"?</title> - <contentType>BOOLEAN</contentType> - </entityField> <entityParameter> <name>ROWID_param</name> <expose v="true" /> </entityParameter> - <entityField> - <name>MAILSOFEXTERN</name> - <title>Externe Benutzer</title> - <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/mailsofextern/dropDownProcess.js</dropDownProcess> - <selectionMode>MULTI</selectionMode> - </entityField> - <entityField> - <name>EXTERN</name> - <title>Nicht vorhandene externe Benutzer einladen?</title> - <contentType>BOOLEAN</contentType> - </entityField> <entityParameter> <name>UpnsOfMembers_param</name> <expose v="true" /> @@ -44,6 +35,51 @@ <name>MailsOfExtern_param</name> <expose v="true" /> </entityParameter> + <entityParameter> + <name>SalesprojectId_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>ProjectMembers</name> + <dependency> + <name>dependency</name> + <entityName>Member_entity</entityName> + <fieldName>TeamMemberProvider</fieldName> + </dependency> + <children> + <entityParameter> + <name>ObjectRowId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>ROLE_OR_INVITE</name> + <mandatory v="true" /> + <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role_or_invite/dropDownProcess.js</dropDownProcess> + </entityField> + <entityField> + <name>ISEXTERN</name> + <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>MEMBERNAME</name> + </entityField> + <entityParameter> + <name>MSTTeamId_param</name> + <expose v="true" /> + </entityParameter> + <entityProvider> + <name>MembersOfTeam</name> + <dependencies> + <entityDependency> + <name>37854fde-c4ae-4f56-82df-14385717f82e</name> + <entityName>MSTTeam_entity</entityName> + <fieldName>TeamMembers</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -57,16 +93,7 @@ <name>UID.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> - <name>UPNSOFMEMBERS.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ARETHESEOWNERS.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>MAILSOFEXTERN.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>EXTERN.value</name> + <name>MEMBERNAME.value</name> </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> diff --git a/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js new file mode 100644 index 00000000000..f83ff5382e6 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js @@ -0,0 +1,7 @@ +import("Employee_lib"); +import("system.vars"); +import("system.result"); + +var member = vars.get("$field.MEMBER"); +if (member) + result.string(!EmployeeUtils.isUser(member)); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/mailsofextern/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/mailsofextern/dropDownProcess.js deleted file mode 100644 index 9aa7e9e18d0..00000000000 --- a/entity/MSTTeamMember_entity/entityfields/mailsofextern/dropDownProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); - -var mails = vars.getString("$param.MailsOfExtern_param"); -if (mails) - result.object(JSON.parse(mails)); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js new file mode 100644 index 00000000000..86e1d8c1c0f --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$param.SalesprojectId_param")); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role_or_invite/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/role_or_invite/dropDownProcess.js new file mode 100644 index 00000000000..8f7cbef15d5 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/role_or_invite/dropDownProcess.js @@ -0,0 +1,21 @@ +import("system.translate"); +import("system.vars"); +import("system.result"); + +var isExtern = vars.get("$field.ISEXTERN"); +var res = []; +if (isExtern == "true") +{ + res = [ + ["invite", translate.text("Invite")], + ["notInvite", translate.text("Don't invite")] + ]; +} +else if (isExtern == "false") +{ + res = [ + ["isOwner", translate.text("Owner")], + ["isMember", translate.text("Member")] + ] +} +result.object(res); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/upnsofmembers/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/upnsofmembers/dropDownProcess.js deleted file mode 100644 index 4f6ddbb607f..00000000000 --- a/entity/MSTTeamMember_entity/entityfields/upnsofmembers/dropDownProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); - -var upns = vars.getString("$param.UpnsOfMembers_param"); -if (upns) - result.object(JSON.parse(upns)); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js index 488d22d4b38..e053d9286a0 100644 --- a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js @@ -1,9 +1,23 @@ import("system.result"); import("system.vars"); -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; +var teamId = vars.get("$param.MSTTeamId_param"); +var allMembers = teams.getAllMembers(teamId); +var memberArray = []; + if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id, "", "", "", ""];}); +{ + memberArray = vars.get("$local.idvalues").map(function (memberId) + { + return [memberId, allMembers[memberId]]; + }); +} +else +{ + for (let memberId in allMembers) + { + memberArray.push([memberId, allMembers[memberId]]); + } +} -result.object(rows); \ No newline at end of file +result.object(memberArray); \ No newline at end of file diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod index 7481608126b..ef6acef77cd 100644 --- a/entity/MSTTeam_entity/MSTTeam_entity.aod +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -2,10 +2,20 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> <name>MSTTeam_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <contentTitleProcess>%aditoprj%/entity/MSTTeam_entity/contentTitleProcess.js</contentTitleProcess> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> + <lookupIdfield>TEAMID_AND_NAME</lookupIdfield> + <dependencies> + <entityDependency> + <name>31745153-bc31-4529-a6dc-0cddfd2c5b7c</name> + <entityName>MSTChooseTeam_entity</entityName> + <fieldName>Teams</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>UID</name> @@ -18,6 +28,7 @@ <entityField> <name>DESCRIPTION</name> <title>Description</title> + <contentType>LONG_TEXT</contentType> <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/description/valueProcess.js</valueProcess> </entityField> <entityParameter> @@ -29,35 +40,7 @@ <expose v="true" /> </entityParameter> <entityParameter> - <name>UpnsOfOwners_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>UpnsOfMembers_param</name> - <expose v="true" /> - </entityParameter> - <entityField> - <name>UPNSOFMEMBERS</name> - <title>Members</title> - <dropDownProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/upnsofmembers/dropDownProcess.js</dropDownProcess> - <selectionMode>MULTI</selectionMode> - </entityField> - <entityField> - <name>UPNSOFOWNERS</name> - <title>Owners</title> - <dropDownProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/upnsofowners/dropDownProcess.js</dropDownProcess> - <selectionMode>MULTI</selectionMode> - </entityField> - <entityParameter> - <name>RowId_param</name> - <expose v="true" /> - </entityParameter> - <entityField> - <name>OBECT_ROWID</name> - <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/obect_rowid/valueProcess.js</valueProcess> - </entityField> - <entityParameter> - <name>ChannelName_param</name> + <name>SalesprojectId_param</name> <expose v="true" /> </entityParameter> <entityParameter> @@ -82,32 +65,34 @@ </entityParameter> </children> </entityConsumer> + <entityConsumer> + <name>TeamMembers</name> + <dependency> + <name>dependency</name> + <entityName>MSTTeamMember_entity</entityName> + <fieldName>MembersOfTeam</fieldName> + </dependency> + <children> + <entityParameter> + <name>SalesprojectId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/salesprojectid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>MSTTeamId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> <entityField> - <name>EXTERN</name> - <title>Nicht vorhandene externe Benutzer einladen?</title> - <contentType>BOOLEAN</contentType> - </entityField> - <entityField> - <name>MAILSOFEXTERN</name> - <title>Externe Benutzer</title> - <dropDownProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/mailsofextern/dropDownProcess.js</dropDownProcess> - <selectionMode>MULTI</selectionMode> - </entityField> - <entityParameter> - <name>MailsOfExtern_param</name> - <expose v="true" /> - </entityParameter> - <entityField> - <name>UPNSOFOWNERSORIGINAL</name> - <dropDownProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/upnsofownersoriginal/dropDownProcess.js</dropDownProcess> - <selectionMode>MULTI</selectionMode> + <name>TEAMID_AND_NAME</name> </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <isPageable v="true" /> + <isFilterable v="true" /> + <isRequireContainerFiltering v="true" /> <contentProcess>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <onInsert>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> <recordFieldMappings> @@ -118,22 +103,10 @@ <name>TEAMNAME.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> - <name>DESCRIPTION.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>OBECT_ROWID.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>UPNSOFMEMBERS.value</name> + <name>TEAMID_AND_NAME.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> - <name>UPNSOFOWNERS.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>MAILSOFEXTERN.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>EXTERN.value</name> + <name>DESCRIPTION.value</name> </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> diff --git a/entity/MSTTeam_entity/contentTitleProcess.js b/entity/MSTTeam_entity/contentTitleProcess.js new file mode 100644 index 00000000000..ada1bccad1d --- /dev/null +++ b/entity/MSTTeam_entity/contentTitleProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.TEAMNAME")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/mailsofextern/dropDownProcess.js b/entity/MSTTeam_entity/entityfields/mailsofextern/dropDownProcess.js deleted file mode 100644 index 9aa7e9e18d0..00000000000 --- a/entity/MSTTeam_entity/entityfields/mailsofextern/dropDownProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); - -var mails = vars.getString("$param.MailsOfExtern_param"); -if (mails) - result.object(JSON.parse(mails)); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/obect_rowid/valueProcess.js b/entity/MSTTeam_entity/entityfields/obect_rowid/valueProcess.js deleted file mode 100644 index cf5cb63c330..00000000000 --- a/entity/MSTTeam_entity/entityfields/obect_rowid/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.neon"); -import("system.vars"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.RowId_param")) - result.string(vars.get("$param.RowId_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js new file mode 100644 index 00000000000..16c85500b53 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.UID")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/salesprojectid_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/salesprojectid_param/valueProcess.js new file mode 100644 index 00000000000..86e1d8c1c0f --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teammembers/children/salesprojectid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$param.SalesprojectId_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/upnsofmembers/dropDownProcess.js b/entity/MSTTeam_entity/entityfields/upnsofmembers/dropDownProcess.js deleted file mode 100644 index 4f6ddbb607f..00000000000 --- a/entity/MSTTeam_entity/entityfields/upnsofmembers/dropDownProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); - -var upns = vars.getString("$param.UpnsOfMembers_param"); -if (upns) - result.object(JSON.parse(upns)); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/upnsofowners/dropDownProcess.js b/entity/MSTTeam_entity/entityfields/upnsofowners/dropDownProcess.js deleted file mode 100644 index 92332745d43..00000000000 --- a/entity/MSTTeam_entity/entityfields/upnsofowners/dropDownProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); - -var upns = vars.getString("$param.UpnsOfOwners_param"); -if (upns) - result.object(JSON.parse(upns)); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/upnsofownersoriginal/dropDownProcess.js b/entity/MSTTeam_entity/entityfields/upnsofownersoriginal/dropDownProcess.js deleted file mode 100644 index 1c0f1126dbe..00000000000 --- a/entity/MSTTeam_entity/entityfields/upnsofownersoriginal/dropDownProcess.js +++ /dev/null @@ -1,17 +0,0 @@ -//import("system.entities"); -//import("system.result"); -//import("system.logging"); -//import("system.vars"); -// -//var memberEntries = entities.createConfigForLoadingRows().entity("Member_entity").provider("TeamMemberProvider").addParameter("ObjectRowId_param", vars.get("$param.RowId_param")).addParameter("ObjectType_param", "Salesproject").fields(["CONTACT_ID", "PERSON_FULL_NAME"]); -// -//var members = entities.getRows(memberEntries); -// -//logging.log(members); -// -//members = members.map(function (member) -//{ -// return [member["CONTACT_ID"], member["PERSON_FULL_NAME"]]; -//}) -// -//result.object(members); diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js index 6eb83082a7e..9a7d5c85c9e 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js @@ -1,9 +1,35 @@ +import("system.teams"); import("system.result"); import("system.vars"); +import("JditoFilter_lib"); + +var searchValue = null; +JditoFilterUtils.filterRecords(["$$$LOOKUPFIELD$$$"], [["dummy"]], vars.get("$local.filter").filter, { + "$$$LOOKUPFIELD$$$" : function (recordValue, filterValue) + { + searchValue = filterValue; + return true; + } +}); + +var allTeams = teams.getAllTeams(searchValue || null); +var teamsArray = []; -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id, "", "", "", "", "", "", ""];}); +{ + teamsArray = vars.get("$local.idvalues").map(function (teamId) + { + var idAndName = JSON.stringify([teamId, allTeams[teamId]]); + return [teamId, allTeams[teamId], idAndName, ""]; + }); +} +else +{ + for (let teamId in allTeams) + { + var idAndName = JSON.stringify([teamId, allTeams[teamId]]); + teamsArray.push([teamId, allTeams[teamId], idAndName, ""]); + } +} -result.object(rows); \ No newline at end of file +result.object(teamsArray); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js index a98341bbe4c..3e9acef9832 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -12,9 +12,6 @@ var mailNickname = vars.get("$param.Mailnickname_param"); var description = rowData["DESCRIPTION.value"]; var upnsOfOwners = text.decodeMS(rowData["UPNSOFOWNERS.value"]); -var upnsOfMembers = text.decodeMS(rowData["UPNSOFMEMBERS.value"]); -var mailsOfExtern = text.decodeMS(rowData["MAILSOFEXTERN.value"]); -var sendInvitation = rowData["EXTERN.value"]; var users = []; diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index 104bb57c838..ba4cb276acc 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -4,6 +4,7 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Member_entity/documentation.adoc</documentation> <title>${SALESPROJECT_MEMBER}</title> + <contentTitleProcess>%aditoprj%/entity/Member_entity/contentTitleProcess.js</contentTitleProcess> <iconId>VAADIN:FILE_SOUND</iconId> <titlePlural>${SALESPROJECT_MEMBER}</titlePlural> <recordContainer>db</recordContainer> @@ -201,11 +202,11 @@ </entityField> <entityActionGroup> <name>MSTeamsActionGroup</name> - <title>MSTeamsActionGroup</title> + <title>MS Teams</title> <children> <entityActionField> <name>createTeam</name> - <title>Team erstellen</title> + <title>Create Teams group</title> <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js</onActionProcess> <isSelectionAction v="false" /> <iconId>NEON:PLUS</iconId> @@ -214,63 +215,59 @@ <tooltip>Erstelle ein neues MicrosoftTeams Team</tooltip> </entityActionField> <entityActionField> - <name>chooseTeam</name> - <title>Team auswählen</title> - <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js</onActionProcess> - <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js</stateProcess> - <tooltip>Wähle ein bereits hinterlegtes Team</tooltip> + <name>addNewMember</name> + <title>Add members</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js</onActionProcess> + <iconId>VAADIN:USER</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js</stateProcess> + <tooltip>Fügt neue Member zum Team hinzu</tooltip> </entityActionField> <entityActionField> - <name>deleteTeam</name> - <title>Team löschen</title> - <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js</onActionProcess> - <iconId>NEON:TRASH</iconId> - <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js</stateProcess> - <tooltip>Lösche das verknüpfte MSTeams Team</tooltip> + <name>deleteMember</name> + <title>Delete members</title> + <iconId>VAADIN:USER</iconId> </entityActionField> <entityActionField> - <name>createChannel</name> - <title>Channel erstellen</title> - <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/onActionProcess.js</onActionProcess> - <iconId>VAADIN:PLUS</iconId> - <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/stateProcess.js</stateProcess> - <tooltip>Erstelle einen neuen Channel</tooltip> + <name>addApp</name> + <title>Add app</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js</onActionProcess> + <iconId>VAADIN:MOBILE</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js</stateProcess> + <tooltip>Fügt eine App zum Team hinzu</tooltip> + </entityActionField> + <entityActionField> + <name>chooseTeam</name> + <title>Choose Teams group</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js</onActionProcess> + <iconId>NEON:GROUP_APPOINTMENT</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js</stateProcess> + <tooltip>Wähle ein bereits hinterlegtes Team</tooltip> </entityActionField> <entityActionField> <name>restoreTeam</name> - <title>Team wiederherstellen</title> + <title>Restore Teams group</title> <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js</onActionProcess> <iconId>VAADIN:ARROW_BACKWARD</iconId> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js</stateProcess> <tooltip>Stelle das Team wieder her</tooltip> </entityActionField> - <entityActionField> - <name>addApp</name> - <title>App hinzufügen</title> - <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js</onActionProcess> - <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js</stateProcess> - <tooltip>Fügt eine App zum Team hinzu</tooltip> - </entityActionField> - <entityActionField> - <name>addNewMember</name> - <title>Member hinzufügen</title> - <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js</onActionProcess> - <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js</stateProcess> - <tooltip>Fügt neue Member zum Team hinzu</tooltip> - </entityActionField> <entityActionField> <name>changeToMSTeam</name> - <title>Zum Team wechseln</title> + <title>Open Teams</title> <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js</onActionProcess> + <iconId>VAADIN:EXTERNAL_LINK</iconId> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js</stateProcess> </entityActionField> + <entityActionField> + <name>deleteTeam</name> + <title>Delete Teams group</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js</onActionProcess> + <iconId>NEON:TRASH</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js</stateProcess> + <tooltip>Lösche das verknüpfte MSTeams Team</tooltip> + </entityActionField> </children> </entityActionGroup> - <entityField> - <name>ASSIGNEDTEAM</name> - <title>Hinterlegtes Team</title> - <valueProcess>%aditoprj%/entity/Member_entity/entityfields/assignedteam/valueProcess.js</valueProcess> - </entityField> <entityProvider> <name>TeamMemberProvider</name> <lookupIdfield>CONTACT_ID</lookupIdfield> @@ -281,6 +278,12 @@ <fieldName>MemberComsumer</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>373a0c5c-dff5-4a6d-9a1f-68d7b73804ce</name> + <entityName>MSTTeamMember_entity</entityName> + <fieldName>ProjectMembers</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> </entityFields> @@ -324,6 +327,8 @@ <dbRecordFieldMapping> <name>ORGANISATION_NAME.value</name> <recordfield>ORGANISATION.NAME</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>ORG_ORGID.value</name> @@ -332,10 +337,14 @@ <dbRecordFieldMapping> <name>PERSON_FIRSTNAME.value</name> <recordfield>PERSON.FIRSTNAME</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>PERSON_LASTNAME.value</name> <recordfield>PERSON.LASTNAME</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>PERSON_PERSID.value</name> diff --git a/entity/Member_entity/contentTitleProcess.js b/entity/Member_entity/contentTitleProcess.js new file mode 100644 index 00000000000..e2e9200a479 --- /dev/null +++ b/entity/Member_entity/contentTitleProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.PERSON_FULL_NAME")); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/assignedteam/valueProcess.js b/entity/Member_entity/entityfields/assignedteam/valueProcess.js deleted file mode 100644 index def1352e692..00000000000 --- a/entity/Member_entity/entityfields/assignedteam/valueProcess.js +++ /dev/null @@ -1,38 +0,0 @@ -import("system.vars"); -import("system.neon"); -import("system.result"); -import("Sql_lib"); - -var saleprojectId = newSelect("OBJECT_ROWID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); - -var isArchived = newSelect("IS_ARCHIVED") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); - -if(saleprojectId && isArchived == 0) -{ - var teamName = newSelect("TEAMNAME") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); - - result.string(teamName); -} -else if(saleprojectId && isArchived == 1) -{ - var teamName = newSelect("TEAMNAME") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); - - result.string("Es existiert ein archiviertes Team (" + teamName + ") zu diesem Projekt. Falls Sie dieses nochmal benötigen: Wählen Sie \"Team wiederherstellen\""); -} -else -{ - result.string("Es wurde noch kein Team zu diesem Projekt hinterlegt"); -} - diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js index 4e1e6159f83..63fdd66eafb 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js @@ -21,7 +21,7 @@ var serviceUrl = newSelect("SERVICE_URL") if (teamId == "" || isArchived == 1 || serviceUrl) { - result.string(neon.COMPONENTSTATE_INVISIBLE); + result.string(neon.COMPONENTSTATE_DISABLED); } else { diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js index fef435a8321..80a2305605c 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js @@ -1,11 +1,6 @@ import("system.neon"); import("system.vars"); -var upnsOfMembers = [["lisa@mbsolutions2.onmicrosoft.com", "lisa@mbsolutions2.onmicrosoft.com"]]; -var mailsOfExtern = [["m.bilda@adito.de", "m.bilda@adito.de"]]; - -neon.openContext("MSTTeamMember", null, null, neon.OPERATINGSTATE_NEW, { - "UpnsOfMembers_param" : JSON.stringify(upnsOfMembers), - "MailsOfExtern_param" : JSON.stringify(mailsOfExtern), - "ROWID_param" : vars.get("$param.ObjectRowId_param") +neon.openContext("MSTTeamAddMembers", null, null, neon.OPERATINGSTATE_NEW, { + "SalesprojectId_param" : vars.get("$field.OBJECT_ROWID") }); diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js index f821050c044..caeb254eb7d 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js @@ -15,7 +15,7 @@ var isArchived = newSelect("IS_ARCHIVED") if (teamId == "" || isArchived == 1) { - result.string(neon.COMPONENTSTATE_INVISIBLE); + result.string(neon.COMPONENTSTATE_DISABLED); } else { diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js index c19bf006698..144584dfb46 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js @@ -1,3 +1,5 @@ import("system.neon"); -neon.openUrl("https://teams.microsoft.com/l/team/19:0062b1c861df409391eaf0329b99db68%40thread.tacv2/conversations?groupId=c4c6a313-3d12-4941-900e-afc464755188&tenantId=bb59bb5b-90c7-41f9-85aa-f40da5c0c68a", true) +var url = "https://teams.microsoft.com/l/team/19:0062b1c861df409391eaf0329b99db68%40thread.tacv2/conversations?groupId=c4c6a313-3d12-4941-900e-afc464755188&tenantId=bb59bb5b-90c7-41f9-85aa-f40da5c0c68a"; + +neon.openUrl(url, true) diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js index f821050c044..caeb254eb7d 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js @@ -15,7 +15,7 @@ var isArchived = newSelect("IS_ARCHIVED") if (teamId == "" || isArchived == 1) { - result.string(neon.COMPONENTSTATE_INVISIBLE); + result.string(neon.COMPONENTSTATE_DISABLED); } else { diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js index c48327f1fee..0583cd17a0e 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js @@ -4,5 +4,5 @@ import("system.teams"); import("system.logging"); neon.openContext("MSTChooseTeam", null, null, neon.OPERATINGSTATE_NEW, { - "RowId_param" : vars.get("$param.ObjectRowId_param") + "SalesprojectId_param" : vars.get("$field.OBJECT_ROWID") }); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js index 29db7d098d9..5b3ec6b0fb2 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js @@ -8,4 +8,4 @@ var teamId = newSelect("MST_TEAMID") .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") .cell(); -result.string(teamId != "" ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file +result.string(teamId != "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/onActionProcess.js deleted file mode 100644 index f72ee987fa0..00000000000 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/onActionProcess.js +++ /dev/null @@ -1,12 +0,0 @@ -import("system.neon"); -import("system.vars"); - -//Dafür muss es Designer Felder geben -var channelName = "ADITO xRM"; -var channelDesc = "Das ist ein Zweitchannel, um genauer über bestimmte Themen zu diskutieren"; - -neon.openContext("MSTTeamChannel", null, null, neon.OPERATINGSTATE_NEW, { - "CHANNELNAME_param" : channelName, - "CHANNELDESC_param" : channelDesc, - "ROWID_param" : vars.get("$param.ObjectRowId_param") -}); diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/stateProcess.js deleted file mode 100644 index 0c1128cf098..00000000000 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/createchannel/stateProcess.js +++ /dev/null @@ -1,23 +0,0 @@ -import("system.vars"); -import("system.neon"); -import("system.result"); -import("Sql_lib"); - -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); - -var isArchived = newSelect("IS_ARCHIVED") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); - -if (teamId == "" || isArchived == 1) -{ - result.string(neon.COMPONENTSTATE_INVISIBLE); -} -else -{ - result.string(neon.COMPONENTSTATE_EDITABLE); -} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js index 05de2e36656..8798621d425 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js @@ -5,28 +5,16 @@ import("Sql_lib"); var rowId = vars.get("$param.ObjectRowId_param"); -var teamName = newSelect("PROJECTTITLE") +var [teamName, description] = newSelect("PROJECTTITLE, INFO") .from("SALESPROJECT") .where("SALESPROJECT.SALESPROJECTID", rowId) - .cell(); - -var description = newSelect("INFO") - .from("SALESPROJECT") - .where("SALESPROJECT.SALESPROJECTID", rowId) - .cell(); - -var mailNickname = teamName.replace(/ /g, ""); - -var upnsOfOwners = [["marco@mbsolutions2.onmicrosoft.com", "marco@mbsolutions2.onmicrosoft.com"], ["franz@mbsolutions2.onmicrosoft.com", "franz@mbsolutions2.onmicrosoft.com"], ["martin@mbsolutions2.onmicrosoft.com", "martin@mbsolutions2.onmicrosoft.com"]]; -var upnsOfMembers = [["marco@mbsolutions2.onmicrosoft.com", "marco@mbsolutions2.onmicrosoft.com"], ["franz@mbsolutions2.onmicrosoft.com", "franz@mbsolutions2.onmicrosoft.com"], ["martin@mbsolutions2.onmicrosoft.com", "martin@mbsolutions2.onmicrosoft.com"]]; -var mailsOfExtern = [["m.bilda@adito.de", "m.bilda@adito.de"]]; + .arrayRow(); + +var mailNickname = teamName.replace(/\s/g, ""); neon.openContext("MSTTeam", null, null, neon.OPERATINGSTATE_NEW, { - "RowId_param" : rowId, + "SalesprojectId_param" : rowId, "TeamName_param" : teamName, "Description_param" : description, - "Mailnickname_param" : mailNickname, - "UpnsOfOwners_param" : JSON.stringify(upnsOfOwners), - "UpnsOfMembers_param" : JSON.stringify(upnsOfMembers), - "MailsOfExtern_param" : JSON.stringify(mailsOfExtern) + "Mailnickname_param" : mailNickname }); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js index c01cdd16766..12b3c6edaaa 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js @@ -8,4 +8,4 @@ var teamId = newSelect("MST_TEAMID") .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") .cell(); -result.string(teamId != "" ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file +result.string(teamId != "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js index 84ac82f4f89..7e196630c9a 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js @@ -12,19 +12,20 @@ var teamId = newSelect("MST_TEAMID") //Hat dieses Team mehrere Projekte?? var teamIds = newSelect("MST_TEAMID") .from("MST_TEAM") - .where("MST_TEAM.MST_TEAMID", teamId).arrayRow(); + .where("MST_TEAM.MST_TEAMID", teamId) + .arrayColumn(); -teams.archiveTeamAndDeleteGroup(teamId); +teams.archiveTeam(teamId); -for(var i = 0; i<teamIds.length; i++) - { - var finalDeleteDate = datetime.date() + (datetime.ONE_DAY * 30); - - newWhere("MST_TEAM.MST_TEAMID", teamIds[i]) - .updateFields({ - "IS_ARCHIVED" : "1", - "FINAL_DELETE_DATE" : finalDeleteDate - }); - } +for (var i = 0; i<teamIds.length; i++) +{ + var finalDeleteDate = datetime.date() + (datetime.ONE_DAY * 30); + + newWhere("MST_TEAM.MST_TEAMID", teamIds[i]) + .updateFields({ + "IS_ARCHIVED" : "1", + "FINAL_DELETE_DATE" : finalDeleteDate + }); +} diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js index b17a7492239..da3e32752f3 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js @@ -15,7 +15,7 @@ var isArchived = newSelect("IS_ARCHIVED") if (teamId == "" || isArchived == 1) { - result.string(neon.COMPONENTSTATE_INVISIBLE); + result.string(neon.COMPONENTSTATE_DISABLED); } else { diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js index 05f5e33fb61..a677c8bdded 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js @@ -15,7 +15,7 @@ var isArchived = newSelect("IS_ARCHIVED") if (teamId == "" || isArchived == 0) { - result.string(neon.COMPONENTSTATE_INVISIBLE); + result.string(neon.COMPONENTSTATE_DISABLED); } else { diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index ff47a2cfb20..962583325a4 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -749,64 +749,12 @@ <iconId>VAADIN:PLAY</iconId> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/startworkflow/stateProcess.js</stateProcess> </entityActionField> - <entityActionField> - <name>createTeam</name> - <title>Team erstellen</title> - <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/createteam/onActionProcess.js</onActionProcess> - <iconId>NEON:PLUS</iconId> - <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/createteam/stateProcess.js</stateProcess> - <tooltip>Erstelle ein neues MicrosoftTeams Team</tooltip> - </entityActionField> - <entityActionField> - <name>deleteTeam</name> - <title>Team löschen</title> - <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/deleteteam/onActionProcess.js</onActionProcess> - <iconId>NEON:TRASH</iconId> - <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/deleteteam/stateProcess.js</stateProcess> - <tooltip>Lösche das verknüpfte MSTeams Team</tooltip> - </entityActionField> - <entityActionField> - <name>createChannel</name> - <title>Channel erstellen</title> - <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/createchannel/onActionProcess.js</onActionProcess> - <iconId>VAADIN:PLUS</iconId> - <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/createchannel/stateProcess.js</stateProcess> - <tooltip>Erstelle einen neuen Channel</tooltip> - </entityActionField> - <entityActionField> - <name>addMember</name> - <title>Member hinzufügen</title> - <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/addmember/onActionProcess.js</onActionProcess> - <iconId>NEON:GROUP_APPOINTMENT</iconId> - <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/addmember/stateProcess.js</stateProcess> - <tooltip>Füge neue Member hinzu</tooltip> - </entityActionField> - <entityActionField> - <name>addApp</name> - <title>App hinzufügen</title> - <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/addapp/onActionProcess.js</onActionProcess> - <iconId>NEON:PUZZLE</iconId> - <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/addapp/stateProcess.js</stateProcess> - <tooltip>Fügt eine App zu einem Team hinzu</tooltip> - </entityActionField> - <entityActionField> - <name>restoreTeam</name> - <title>Team wiederherstellen</title> - <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/restoreteam/onActionProcess.js</onActionProcess> - <iconId>VAADIN:ARROW_BACKWARD</iconId> - <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/restoreteam/stateProcess.js</stateProcess> - <tooltip>Stellt das Team wieder her</tooltip> - </entityActionField> <entityField> - <name>ALLTEAMS</name> - <title>allTeams</title> - <selectionMode>MULTI</selectionMode> + <name>MST_TEAM_ID</name> + <title>Teams group</title> + <linkedContext>MSTTeam</linkedContext> + <state>READONLY</state> </entityField> - <entityActionField> - <name>chooseTeam</name> - <title>chooseTeam</title> - <tooltip>Wähle ein bereits vorhandenes Team aus</tooltip> - </entityActionField> </entityFields> <recordContainers> <dbRecordContainer> @@ -934,6 +882,14 @@ <isFilterable v="true" /> <isLookupFilter v="true" /> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>MST_TEAM_ID.value</name> + <recordfield>SALESPROJECT.MST_TEAM_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>MST_TEAM_ID.displayValue</name> + <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/Salesproject_entity/entityfields/addapp/onActionProcess.js b/entity/Salesproject_entity/entityfields/addapp/onActionProcess.js deleted file mode 100644 index aa485d9bd79..00000000000 --- a/entity/Salesproject_entity/entityfields/addapp/onActionProcess.js +++ /dev/null @@ -1,12 +0,0 @@ -import("system.teams"); -import("Sql_lib"); - - -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") - .cell(); - -var appId = "768e1918-bc98-4646-8517-f77225feaa78" - -teams.addAppToTeam(teamId, appId) \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/addapp/stateProcess.js b/entity/Salesproject_entity/entityfields/addapp/stateProcess.js deleted file mode 100644 index 08b41286f0a..00000000000 --- a/entity/Salesproject_entity/entityfields/addapp/stateProcess.js +++ /dev/null @@ -1,10 +0,0 @@ -//import("system.vars"); -//import("system.neon"); -//import("system.result"); -//import("Sql_lib"); -// -//var teamId = newSelect("MST_TEAMID") -// .from("MST_TEAM") -// .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") -// .cell(); -//result.string(teamId == "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/addmember/onActionProcess.js b/entity/Salesproject_entity/entityfields/addmember/onActionProcess.js deleted file mode 100644 index 8ee059c24b8..00000000000 --- a/entity/Salesproject_entity/entityfields/addmember/onActionProcess.js +++ /dev/null @@ -1,11 +0,0 @@ -import("system.teams"); -import("Sql_lib") - -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") - .cell(); - -var mailsOfMembers = ["m.bilda@adito.de", "sebastian@mbsolutions2.onmicrosoft.com"]; - -teams.addNewMembers(teamId, mailsOfMembers) \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/addmember/stateProcess.js b/entity/Salesproject_entity/entityfields/addmember/stateProcess.js deleted file mode 100644 index 08b41286f0a..00000000000 --- a/entity/Salesproject_entity/entityfields/addmember/stateProcess.js +++ /dev/null @@ -1,10 +0,0 @@ -//import("system.vars"); -//import("system.neon"); -//import("system.result"); -//import("Sql_lib"); -// -//var teamId = newSelect("MST_TEAMID") -// .from("MST_TEAM") -// .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") -// .cell(); -//result.string(teamId == "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/createchannel/onActionProcess.js b/entity/Salesproject_entity/entityfields/createchannel/onActionProcess.js deleted file mode 100644 index 4cf0d82b0fa..00000000000 --- a/entity/Salesproject_entity/entityfields/createchannel/onActionProcess.js +++ /dev/null @@ -1,10 +0,0 @@ -import("system.teams"); -import("Sql_lib"); - - -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") - .cell(); - -teams.createNewChannel(teamId, "ADITO-xRM", "Ein Zweitchannel, um genauer über xRM zu diskutieren") \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/createchannel/stateProcess.js b/entity/Salesproject_entity/entityfields/createchannel/stateProcess.js deleted file mode 100644 index 08b41286f0a..00000000000 --- a/entity/Salesproject_entity/entityfields/createchannel/stateProcess.js +++ /dev/null @@ -1,10 +0,0 @@ -//import("system.vars"); -//import("system.neon"); -//import("system.result"); -//import("Sql_lib"); -// -//var teamId = newSelect("MST_TEAMID") -// .from("MST_TEAM") -// .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") -// .cell(); -//result.string(teamId == "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/createteam/onActionProcess.js b/entity/Salesproject_entity/entityfields/createteam/onActionProcess.js deleted file mode 100644 index caf03e2eda1..00000000000 --- a/entity/Salesproject_entity/entityfields/createteam/onActionProcess.js +++ /dev/null @@ -1,20 +0,0 @@ -import("system.vars"); -import("system.neon"); -import("system.teams"); -import("system.logging"); - -var rowId = vars.get("$field.OBJECT_ROWID"); -logging.log(rowId) -var teamName = "Buchner Neuprojekt"; -var description = "Das Buchner Neuprojekt ist das erste Projekt, dass mit der Anbindung an MSTeams arbeitet um diese zu perfektionieren"; -var mailNickname = "buchnerNeuprojekt"; -var mailsOfOwners = [["marco@mbsolutions2.onmicrosoft.com", "marco@mbsolutions2.onmicrosoft.com"]]; -var mailsOfMembers = [["franz@mbsolutions2.onmicrosoft.com", "franz@mbsolutions2.onmicrosoft.com"], ["martin@mbsolutions2.onmicrosoft.com", "martin@mbsolutions2.onmicrosoft.com"]]; - -neon.openContext("MSTTeam", null, null, neon.OPERATINGSTATE_NEW, { - "TeamName_param" : teamName, - "Description_param" : description, - "MailsOfOwners_param" : JSON.stringify(mailsOfOwners), - "MailsOfMembers_param" : JSON.stringify(mailsOfMembers), - "RowId_param" : rowId -}); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/createteam/stateProcess.js b/entity/Salesproject_entity/entityfields/createteam/stateProcess.js deleted file mode 100644 index 769332ea05d..00000000000 --- a/entity/Salesproject_entity/entityfields/createteam/stateProcess.js +++ /dev/null @@ -1,11 +0,0 @@ -//import("system.vars"); -//import("system.neon"); -//import("system.result"); -//import("Sql_lib"); -// -//var teamId = newSelect("MST_TEAMID") -// .from("MST_TEAM") -// .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") -// .cell(); -// -//result.string(teamId != "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/deleteteam/onActionProcess.js b/entity/Salesproject_entity/entityfields/deleteteam/onActionProcess.js deleted file mode 100644 index 811af52a53f..00000000000 --- a/entity/Salesproject_entity/entityfields/deleteteam/onActionProcess.js +++ /dev/null @@ -1,10 +0,0 @@ -import("system.teams"); -import("Sql_lib"); - - -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") - .cell(); - -teams.archiveTeamAndDeleteGroup(teamId); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/deleteteam/stateProcess.js b/entity/Salesproject_entity/entityfields/deleteteam/stateProcess.js deleted file mode 100644 index 1ffcd6ff42b..00000000000 --- a/entity/Salesproject_entity/entityfields/deleteteam/stateProcess.js +++ /dev/null @@ -1,11 +0,0 @@ -//import("system.vars"); -//import("system.neon"); -//import("system.result"); -//import("Sql_lib"); -// -//var teamId = newSelect("MST_TEAMID") -// .from("MST_TEAM") -// .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") -// .cell(); -// -//result.string(teamId == "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/restoreteam/onActionProcess.js b/entity/Salesproject_entity/entityfields/restoreteam/onActionProcess.js deleted file mode 100644 index 06870ce60f2..00000000000 --- a/entity/Salesproject_entity/entityfields/restoreteam/onActionProcess.js +++ /dev/null @@ -1,10 +0,0 @@ -import("system.teams"); -import("Sql_lib"); - - -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") - .cell(); - -teams.unarchiveTeamAndRestoreGroup(teamId); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/restoreteam/stateProcess.js b/entity/Salesproject_entity/entityfields/restoreteam/stateProcess.js deleted file mode 100644 index 08b41286f0a..00000000000 --- a/entity/Salesproject_entity/entityfields/restoreteam/stateProcess.js +++ /dev/null @@ -1,10 +0,0 @@ -//import("system.vars"); -//import("system.neon"); -//import("system.result"); -//import("Sql_lib"); -// -//var teamId = newSelect("MST_TEAMID") -// .from("MST_TEAM") -// .where("MST_TEAM.OBJECT_ROWID", "$field.OBJECT_ROWID") -// .cell(); -//result.string(teamId == "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js new file mode 100644 index 00000000000..adc9b83fdd0 --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("select TEAMNAME from MST_TEAM where MST_TEAM.MST_TEAMID = SALESPROJECT.MST_TEAM_ID"); \ No newline at end of file diff --git a/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod b/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod index cfcb2ee7353..b4a130f61cf 100644 --- a/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod +++ b/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod @@ -56,9 +56,29 @@ </entityField> </entityFields> <recordContainers> - <datalessRecordContainer> - <name>datalessRecordContainer</name> - <alias>Data_alias</alias> - </datalessRecordContainer> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isPageable v="true" /> + <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ALLARCHIVEDTEAMS.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> </recordContainers> </entity> diff --git a/neonContext/MSTTeam/MSTTeam.aod b/neonContext/MSTTeam/MSTTeam.aod index 532d9326d4d..dfbc6c73f30 100644 --- a/neonContext/MSTTeam/MSTTeam.aod +++ b/neonContext/MSTTeam/MSTTeam.aod @@ -3,11 +3,16 @@ <name>MSTTeam</name> <majorModelMode>DISTRIBUTED</majorModelMode> <editView>MSTTeamEdit_view</editView> + <previewView>MSTTeamPreview_view</previewView> <entity>MSTTeam_entity</entity> <references> <neonViewReference> <name>357c290b-bf6a-4628-a6d9-f81a97ea843e</name> <view>MSTTeamEdit_view</view> </neonViewReference> + <neonViewReference> + <name>c13c234d-ee98-4a26-b7b1-8ee3a3829284</name> + <view>MSTTeamPreview_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonContext/MSTTeamAddMembers/MSTTeamAddMembers.aod b/neonContext/MSTTeamAddMembers/MSTTeamAddMembers.aod new file mode 100644 index 00000000000..f065c15a8f9 --- /dev/null +++ b/neonContext/MSTTeamAddMembers/MSTTeamAddMembers.aod @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>MSTTeamAddMembers</name> + <title>Add members</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>MSTTeamAddMembersEdit_view</editView> + <entity>MSTTeamAddMembers_entity</entity> + <references> + <neonViewReference> + <name>9974f15a-7f2a-41fb-afbe-9e946c857f60</name> + <view>MSTTeamAddMembersEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTTeamMember/MSTTeamMember.aod b/neonContext/MSTTeamMember/MSTTeamMember.aod index a482314b45d..776c9d9bfab 100644 --- a/neonContext/MSTTeamMember/MSTTeamMember.aod +++ b/neonContext/MSTTeamMember/MSTTeamMember.aod @@ -9,5 +9,9 @@ <name>5e760ac4-fea0-4283-a0bf-d6d5f0f1c003</name> <view>MSTTeamMemberEdit_view</view> </neonViewReference> + <neonViewReference> + <name>61588d12-3c0d-4181-93ae-90d7ad50ed6b</name> + <view>MSTTeamMemberMultiEdit_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonContext/Member/Member.aod b/neonContext/Member/Member.aod index f1747c11e2e..664965d770c 100644 --- a/neonContext/Member/Member.aod +++ b/neonContext/Member/Member.aod @@ -4,6 +4,7 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterView>MemberFilter_view</filterView> <editView>MemberEdit_view</editView> + <lookupView>MemberLookup_view</lookupView> <entity>Member_entity</entity> <references> <neonViewReference> @@ -18,5 +19,9 @@ <name>61eb4778-61aa-4419-8c8b-5ad69d86a4bb</name> <view>MemberDrawer_view</view> </neonViewReference> + <neonViewReference> + <name>9a36b4d9-5861-442b-84f3-8662e8069740</name> + <view>MemberLookup_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonContext/Salesproject/Salesproject.aod b/neonContext/Salesproject/Salesproject.aod index 8f8820b5fc4..70d024650c8 100644 --- a/neonContext/Salesproject/Salesproject.aod +++ b/neonContext/Salesproject/Salesproject.aod @@ -87,9 +87,5 @@ <name>50993084-896d-4d90-9f5e-cd84d3a4dce5</name> <view>SalesprojectMultiEdit_view</view> </neonViewReference> - <neonViewReference> - <name>a3ed00af-e0cc-4c1b-9c49-5d411e129a93</name> - <view>SalesprojectMSTeams_view</view> - </neonViewReference> </references> </neonContext> diff --git a/neonView/MSTChooseTeamEdit_view/MSTChooseTeamEdit_view.aod b/neonView/MSTChooseTeamEdit_view/MSTChooseTeamEdit_view.aod index f7d1e012d76..bae0a1ab12f 100644 --- a/neonView/MSTChooseTeamEdit_view/MSTChooseTeamEdit_view.aod +++ b/neonView/MSTChooseTeamEdit_view/MSTChooseTeamEdit_view.aod @@ -10,38 +10,14 @@ </layout> <children> <genericViewTemplate> - <name>SearchValue</name> - <editMode v="true" /> - <entityField>#ENTITY</entityField> - <title>Suchbegriff</title> - <fields> - <entityFieldLink> - <name>8adb648c-4485-4803-a922-67bee5922ec0</name> - <entityField>SEARCHVALUE</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - <genericViewTemplate> - <name>allTeams</name> + <name>Team</name> <editMode v="true" /> <entityField>#ENTITY</entityField> <title>Alle Teams</title> <fields> <entityFieldLink> - <name>6a7121eb-ed35-4a4e-a26b-899233ea0b15</name> - <entityField>ALLTEAMS</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - <genericViewTemplate> - <name>allArchivedTeams</name> - <editMode v="true" /> - <entityField>#ENTITY</entityField> - <title>Alle archivierten Teams</title> - <fields> - <entityFieldLink> - <name>e17470f5-f8a7-42ce-ab2c-048015784740</name> - <entityField>ALLARCHIVEDTEAMS</entityField> + <name>ec6b987e-4f7a-405b-8248-56625c92d3a5</name> + <entityField>MST_TEAM</entityField> </entityFieldLink> </fields> </genericViewTemplate> diff --git a/neonView/MSTTeamAddMembersEdit_view/MSTTeamAddMembersEdit_view.aod b/neonView/MSTTeamAddMembersEdit_view/MSTTeamAddMembersEdit_view.aod new file mode 100644 index 00000000000..90b0562af47 --- /dev/null +++ b/neonView/MSTTeamAddMembersEdit_view/MSTTeamAddMembersEdit_view.aod @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTTeamAddMembersEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <neonViewReference> + <name>8de10b28-e1aa-46d9-9ac3-73cff46619fb</name> + <entityField>Members</entityField> + <view>MSTTeamMemberMultiEdit_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod index fa7fb240fe7..7c20b7f45bf 100644 --- a/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod +++ b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod @@ -10,7 +10,7 @@ </layout> <children> <genericViewTemplate> - <name>Generic</name> + <name>Teamname</name> <editMode v="true" /> <entityField>#ENTITY</entityField> <fields> @@ -18,49 +18,23 @@ <name>b69c563c-6230-4bb5-b543-236e0fdc791c</name> <entityField>TEAMNAME</entityField> </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>702fea38-849e-43c3-82e5-06e7c1251c7f</name> + <entityField>TeamMembers</entityField> + <view>MSTTeamMemberMultiEdit_view</view> + </neonViewReference> + <genericViewTemplate> + <name>Description</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> <entityFieldLink> - <name>31897309-cbb5-421b-a96b-bada6c95b72f</name> + <name>0490e1b0-59e9-410d-9da7-c1f50abaa15f</name> <entityField>DESCRIPTION</entityField> </entityFieldLink> - <entityFieldLink> - <name>a35da883-d23e-4afc-a0a5-ce7e90ec3b2d</name> - <entityField>UPNSOFOWNERS</entityField> - </entityFieldLink> - <entityFieldLink> - <name>001a17e9-1bb9-418d-a3ad-284fa95463ad</name> - <entityField>UPNSOFMEMBERS</entityField> - </entityFieldLink> - <entityFieldLink> - <name>8cf04e8d-6424-4de4-bfc1-d524de11ecb2</name> - <entityField>MAILSOFEXTERN</entityField> - </entityFieldLink> - <entityFieldLink> - <name>19803dfd-60fa-4981-ac86-9565e0ff6eea</name> - <entityField>EXTERN</entityField> - </entityFieldLink> - <entityFieldLink> - <name>356e3124-065f-4872-a23e-31c069a4ce8c</name> - <entityField>UPNSOFOWNERSORIGINAL</entityField> - </entityFieldLink> </fields> </genericViewTemplate> - <titledListViewTemplate> - <name>asdf</name> - <entityField>#ENTITY</entityField> - <columns> - <neonTitledListTableColumn> - <name>e6ac0add-846d-47e9-be74-478848406bb9</name> - <entityField>MAILSOFEXTERN</entityField> - </neonTitledListTableColumn> - <neonTitledListTableColumn> - <name>a9b05950-bed2-4a5d-a608-ae58bc0b23ac</name> - <entityField>UPNSOFMEMBERS</entityField> - </neonTitledListTableColumn> - <neonTitledListTableColumn> - <name>e3081201-52ee-4d09-9039-8228769d189c</name> - <entityField>DESCRIPTION</entityField> - </neonTitledListTableColumn> - </columns> - </titledListViewTemplate> </children> </neonView> diff --git a/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod new file mode 100644 index 00000000000..a47c1df5f30 --- /dev/null +++ b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTTeamMemberMultiEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericMultipleViewTemplate> + <name>GenericMultiple</name> + <entityField>#ENTITY</entityField> + <columns> + <neonGenericMultipleTableColumn> + <name>a01d6a4e-1ac4-426c-a891-890bd3e9a4d0</name> + <entityField>MEMBER</entityField> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>dade9a5b-2398-4303-8cae-6c7d0077e43d</name> + <entityField>ROLE_OR_INVITE</entityField> + </neonGenericMultipleTableColumn> + </columns> + </genericMultipleViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod b/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod new file mode 100644 index 00000000000..e6877ceb903 --- /dev/null +++ b/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTTeamPreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <headerFooterLayout> + <name>layout</name> + <header>Card</header> + </headerFooterLayout> + </layout> + <children> + <cardViewTemplate> + <name>Card</name> + <titleField>TEAMNAME</titleField> + <descriptionField>DESCRIPTION</descriptionField> + <entityField>#ENTITY</entityField> + <isEditable v="false" /> + </cardViewTemplate> + </children> +</neonView> diff --git a/neonView/MemberFilter_view/MemberFilter_view.aod b/neonView/MemberFilter_view/MemberFilter_view.aod index 2018c671b14..d9e51a55383 100644 --- a/neonView/MemberFilter_view/MemberFilter_view.aod +++ b/neonView/MemberFilter_view/MemberFilter_view.aod @@ -11,7 +11,8 @@ <children> <tableViewTemplate> <name>Members</name> - <favoriteActionGroup1>MSTeamsActionGroup</favoriteActionGroup1> + <favoriteActionGroup1></favoriteActionGroup1> + <favoriteActionGroup2>MSTeamsActionGroup</favoriteActionGroup2> <iconField>IMAGE</iconField> <titleField>PERSON_FULL_NAME</titleField> <subtitleField>CONTACTROLE</subtitleField> diff --git a/neonView/MemberLookup_view/MemberLookup_view.aod b/neonView/MemberLookup_view/MemberLookup_view.aod new file mode 100644 index 00000000000..f3b89eca1f3 --- /dev/null +++ b/neonView/MemberLookup_view/MemberLookup_view.aod @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MemberLookup_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>Table</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>e3a82f5d-2eee-43bc-8140-e995b23481df</name> + <entityField>IMAGE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>1ecfa8b4-05a7-43c8-ac1d-ba4afe8acde0</name> + <entityField>PERSON_FULL_NAME</entityField> + </neonTableColumn> + <neonTableColumn> + <name>5819e0e0-cd6d-4259-b64d-b0ce016f7892</name> + <entityField>ORGANISATION_NAME</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/SalesprojectMSTeams_view/SalesprojectMSTeams_view.aod b/neonView/SalesprojectMSTeams_view/SalesprojectMSTeams_view.aod deleted file mode 100644 index e24067db06a..00000000000 --- a/neonView/SalesprojectMSTeams_view/SalesprojectMSTeams_view.aod +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> - <name>SalesprojectMSTeams_view</name> - <title>MSTeams</title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <drawerLayout> - <name>layout</name> - <fixedDrawer v="false" /> - </drawerLayout> - </layout> - <children> - <dynamicFormViewTemplate> - <name>actuallTeam</name> - <editMode v="true" /> - <entityField>#ENTITY</entityField> - </dynamicFormViewTemplate> - <actionsViewTemplate> - <name>MSTeamsActions</name> - <actions> - <element>createTeam</element> - <element>deleteTeam</element> - <element>createChannel</element> - <element>addMember</element> - <element>addApp</element> - <element>restoreTeam</element> - </actions> - <entityField>#ENTITY</entityField> - <title>MSTeamsActions</title> - </actionsViewTemplate> - <tableViewTemplate> - <name>TeamsTable</name> - <entityField>#ENTITY</entityField> - </tableViewTemplate> - </children> -</neonView> diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod index f122e6f32e2..57d0c606e3e 100644 --- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod +++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod @@ -29,11 +29,6 @@ <entityField>#ENTITY</entityField> <view>SalesprojectMemberActivity_view</view> </neonViewReference> - <neonViewReference> - <name>b04b60a7-4296-4dd7-ae94-3c68b4def6a4</name> - <entityField>#ENTITY</entityField> - <view>SalesprojectMSTeams_view</view> - </neonViewReference> <neonViewReference> <name>67659a20-068f-4522-ad33-2c35e29f929a</name> <entityField>#ENTITY</entityField> diff --git a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod index 393660ef8a3..f60df349937 100644 --- a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod +++ b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod @@ -61,6 +61,10 @@ <name>bf7ecf7a-3d7f-4ec8-867a-c10ced346343</name> <entityField>TIMETRACKINGSUM</entityField> </entityFieldLink> + <entityFieldLink> + <name>9379bf8c-32a3-4255-92db-5336e9b2c948</name> + <entityField>MST_TEAM_ID</entityField> + </entityFieldLink> </fields> </genericViewTemplate> <genericViewTemplate> -- GitLab From cf8f128dfcfeb12d1ab5735c913f816ae7a5baae Mon Sep 17 00:00:00 2001 From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local> Date: Tue, 14 Jul 2020 16:01:49 +0200 Subject: [PATCH 006/184] 1060809 Teams import messages as Activity --- entity/Activity_entity/Activity_entity.aod | 10 +++ .../importfromteams/onActionProcess.js | 6 ++ .../recordcontainers/jdito/onInsert.js | 2 - .../MSTTeamActivityImport_entity.aod | 71 +++++++++++++++++++ .../children/teamid_param/valueProcess.js | 5 ++ .../children/channel_param/valueProcess.js | 4 ++ .../children/teamid_param/valueProcess.js | 5 ++ .../entityfields/team_id/valueProcess.js | 9 +++ .../recordcontainers/jdito/contentProcess.js | 9 +++ .../MSTTeamChannel_entity.aod | 40 +++++------ .../contentTitleProcess.js | 4 ++ .../entityfields/channelname/valueProcess.js | 6 -- .../entityfields/description/valueProcess.js | 6 -- .../recordcontainers/jdito/contentProcess.js | 32 +++++++-- .../recordcontainers/jdito/onInsert.js | 18 ----- .../recordcontainers/jdito/onInsert.js | 3 +- .../recordcontainers/jdito/onInsert.js | 2 - .../MSTTeamsMessage_entity.aod | 28 +++++--- .../loadoldermessages/onActionProcess.js | 6 ++ .../loadnewmessages/onActionProcess.js | 26 ------- .../recordcontainers/jdito/contentProcess.js | 51 ++++++++----- .../children/deleteteam/stateProcess.js | 2 - .../MSTTeamActivityImport.aod | 13 ++++ neonContext/MSTTeamChannel/MSTTeamChannel.aod | 7 -- .../ActivityFilter_view.aod | 1 + .../MSTTeamActivityImportEdit_view.aod} | 24 +++---- .../MSTTeamsMessageFilter_view.aod | 16 +++-- 27 files changed, 261 insertions(+), 145 deletions(-) create mode 100644 entity/Activity_entity/entityfields/mst_teamactions/children/importfromteams/onActionProcess.js create mode 100644 entity/MSTTeamActivityImport_entity/MSTTeamActivityImport_entity.aod create mode 100644 entity/MSTTeamActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js create mode 100644 entity/MSTTeamActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js create mode 100644 entity/MSTTeamActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js create mode 100644 entity/MSTTeamActivityImport_entity/entityfields/team_id/valueProcess.js create mode 100644 entity/MSTTeamActivityImport_entity/recordcontainers/jdito/contentProcess.js create mode 100644 entity/MSTTeamChannel_entity/contentTitleProcess.js delete mode 100644 entity/MSTTeamChannel_entity/entityfields/channelname/valueProcess.js delete mode 100644 entity/MSTTeamChannel_entity/entityfields/description/valueProcess.js delete mode 100644 entity/MSTTeamChannel_entity/recordcontainers/jdito/onInsert.js create mode 100644 entity/MSTTeamsMessage_entity/entityfields/loadoldermessages/onActionProcess.js delete mode 100644 entity/MSTTeamsMessage_entity/entityfields/msteam/children/loadnewmessages/onActionProcess.js create mode 100644 neonContext/MSTTeamActivityImport/MSTTeamActivityImport.aod rename neonView/{MSTTeamChannelEdit_view2/MSTTeamChannelEdit_view2.aod => MSTTeamActivityImportEdit_view/MSTTeamActivityImportEdit_view.aod} (57%) diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index 97ca6191f20..2d7ba6ac6f4 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -582,6 +582,16 @@ </entityParameter> </children> </entityConsumer> + <entityActionGroup> + <name>MST_TeamActions</name> + <children> + <entityActionField> + <name>importFromTeams</name> + <title>Import from Teams</title> + <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/mst_teamactions/children/importfromteams/onActionProcess.js</onActionProcess> + </entityActionField> + </children> + </entityActionGroup> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Activity_entity/entityfields/mst_teamactions/children/importfromteams/onActionProcess.js b/entity/Activity_entity/entityfields/mst_teamactions/children/importfromteams/onActionProcess.js new file mode 100644 index 00000000000..3610fc446b7 --- /dev/null +++ b/entity/Activity_entity/entityfields/mst_teamactions/children/importfromteams/onActionProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.neon"); + +neon.openContext("MSTTeamActivityImport", null, null, neon.OPERATINGSTATE_NEW, { + "RowId_param" : vars.get("$param.RowId_param") +}); \ No newline at end of file diff --git a/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js index 47e89f66de5..21cd422946c 100644 --- a/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js @@ -35,6 +35,4 @@ if(teamIdAndName) } -neon.refreshAll(); - diff --git a/entity/MSTTeamActivityImport_entity/MSTTeamActivityImport_entity.aod b/entity/MSTTeamActivityImport_entity/MSTTeamActivityImport_entity.aod new file mode 100644 index 00000000000..a952bdad14e --- /dev/null +++ b/entity/MSTTeamActivityImport_entity/MSTTeamActivityImport_entity.aod @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> + <name>MSTTeamActivityImport_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>UID</name> + </entityField> + <entityConsumer> + <name>Messages</name> + <dependency> + <name>dependency</name> + <entityName>MSTTeamsMessage_entity</entityName> + <fieldName>Messages</fieldName> + </dependency> + <children> + <entityParameter> + <name>Channel_param</name> + <valueProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>TeamId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>CHANNEL_ID</name> + <title>Channel</title> + <consumer>Channels</consumer> + </entityField> + <entityParameter> + <name>RowId_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>TEAM_ID</name> + <valueProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/entityfields/team_id/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>Channels</name> + <dependency> + <name>dependency</name> + <entityName>MSTTeamChannel_entity</entityName> + <fieldName>ChannelsForTeam</fieldName> + </dependency> + <children> + <entityParameter> + <name>TeamId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTTeamActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js b/entity/MSTTeamActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js new file mode 100644 index 00000000000..9b96bab31a3 --- /dev/null +++ b/entity/MSTTeamActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); + +result.string("9290a0c1-fab2-4fcc-8a7a-37f3154f67a1"); +//result.string(vars.get("$field.TEAM_ID")); \ No newline at end of file diff --git a/entity/MSTTeamActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js b/entity/MSTTeamActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js new file mode 100644 index 00000000000..2385cda828f --- /dev/null +++ b/entity/MSTTeamActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.CHANNEL_ID")); \ No newline at end of file diff --git a/entity/MSTTeamActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js b/entity/MSTTeamActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js new file mode 100644 index 00000000000..bdaa415f859 --- /dev/null +++ b/entity/MSTTeamActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); + +result.string("9290a0c1-fab2-4fcc-8a7a-37f3154f67a1"); +//result.string(vars.get("$field.TEAM_ID")); \ No newline at end of file diff --git a/entity/MSTTeamActivityImport_entity/entityfields/team_id/valueProcess.js b/entity/MSTTeamActivityImport_entity/entityfields/team_id/valueProcess.js new file mode 100644 index 00000000000..87cf4c45576 --- /dev/null +++ b/entity/MSTTeamActivityImport_entity/entityfields/team_id/valueProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("Sql_lib"); + +var teamId = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", "$param.RowId_param") + .cell(); + +result.string(teamId); \ No newline at end of file diff --git a/entity/MSTTeamActivityImport_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamActivityImport_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 00000000000..e197aca8b77 --- /dev/null +++ b/entity/MSTTeamActivityImport_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.vars"); + +//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 +var rows = []; +if (vars.get("$local.idvalues")) + rows = vars.get("$local.idvalues").map(function (id) {return [id];}); + +result.object(rows); \ No newline at end of file diff --git a/entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod b/entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod index 924b711c221..b2f7ff1993c 100644 --- a/entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod +++ b/entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod @@ -2,38 +2,34 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> <name>MSTTeamChannel_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <contentTitleProcess>%aditoprj%/entity/MSTTeamChannel_entity/contentTitleProcess.js</contentTitleProcess> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> </entityProvider> - <entityField> - <name>DESCRIPTION</name> - <title>Channel Beschreibung</title> - <valueProcess>%aditoprj%/entity/MSTTeamChannel_entity/entityfields/description/valueProcess.js</valueProcess> - </entityField> <entityField> <name>CHANNELNAME</name> <title>Channel Name</title> - <valueProcess>%aditoprj%/entity/MSTTeamChannel_entity/entityfields/channelname/valueProcess.js</valueProcess> </entityField> <entityField> <name>UID</name> </entityField> + <entityProvider> + <name>ChannelsForTeam</name> + <dependencies> + <entityDependency> + <name>a784ee43-b2ef-4d55-a092-9c7f822905fa</name> + <entityName>MSTTeamActivityImport_entity</entityName> + <fieldName>Channels</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> <entityParameter> - <name>CHANNELNAME_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>CHANNELDESC_param</name> - <expose v="true" /> - </entityParameter> - <entityField> - <name>ROWID</name> - </entityField> - <entityParameter> - <name>ROWID_param</name> + <name>TeamId_param</name> <expose v="true" /> + <mandatory v="true" /> </entityParameter> </entityFields> <recordContainers> @@ -41,16 +37,12 @@ <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> <contentProcess>%aditoprj%/entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTTeamChannel_entity/recordcontainers/jdito/onInsert.js</onInsert> <recordFieldMappings> <jDitoRecordFieldMapping> - <name>CHANNELNAME.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>DESCRIPTION.value</name> + <name>UID.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> - <name>UID.value</name> + <name>CHANNELNAME.value</name> </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> diff --git a/entity/MSTTeamChannel_entity/contentTitleProcess.js b/entity/MSTTeamChannel_entity/contentTitleProcess.js new file mode 100644 index 00000000000..678b5f5e997 --- /dev/null +++ b/entity/MSTTeamChannel_entity/contentTitleProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.CHANNELNAME")); \ No newline at end of file diff --git a/entity/MSTTeamChannel_entity/entityfields/channelname/valueProcess.js b/entity/MSTTeamChannel_entity/entityfields/channelname/valueProcess.js deleted file mode 100644 index 487d909b0d9..00000000000 --- a/entity/MSTTeamChannel_entity/entityfields/channelname/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.neon"); -import("system.vars"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.CHANNELNAME_param") && vars.get("$this.value") == null) - result.string(vars.get("$param.CHANNELNAME_param")); \ No newline at end of file diff --git a/entity/MSTTeamChannel_entity/entityfields/description/valueProcess.js b/entity/MSTTeamChannel_entity/entityfields/description/valueProcess.js deleted file mode 100644 index ea6333027ca..00000000000 --- a/entity/MSTTeamChannel_entity/entityfields/description/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.neon"); -import("system.vars"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.CHANNELDESC_param") && vars.get("$this.value") == null) - result.string(vars.get("$param.CHANNELDESC_param")); \ No newline at end of file diff --git a/entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js index a0ca9709897..e687b04b480 100644 --- a/entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js @@ -1,9 +1,33 @@ +import("system.teams"); import("system.result"); import("system.vars"); +import("JditoFilter_lib"); + +var searchValue = null; +JditoFilterUtils.filterRecords(["$$$LOOKUPFIELD$$$"], [["dummy"]], vars.get("$local.filter").filter, { + "$$$LOOKUPFIELD$$$" : function (recordValue, filterValue) + { + searchValue = filterValue; + return true; + } +}); + +var allChannels = teams.getAllChannels(vars.get("$param.TeamId_param"), searchValue || null); +var channels = []; -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id, "", ""];}); +{ + channels = vars.get("$local.idvalues").map(function (channelId) + { + return [channelId, allChannels[channelId]]; + }); +} +else +{ + for (let channelId in allChannels) + { + channels.push([channelId, allChannels[channelId]]); + } +} -result.object(rows); \ No newline at end of file +result.object(channels); \ No newline at end of file diff --git a/entity/MSTTeamChannel_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeamChannel_entity/recordcontainers/jdito/onInsert.js deleted file mode 100644 index b43e3fa9728..00000000000 --- a/entity/MSTTeamChannel_entity/recordcontainers/jdito/onInsert.js +++ /dev/null @@ -1,18 +0,0 @@ -import("system.teams"); -import("Sql_lib"); -import("system.vars"); - - -var rowData = vars.get("$local.rowdata"); - - -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", vars.get("$param.ROWID_param")) - .cell(); - -var channelName = rowData["CHANNELNAME.value"]; -var channelDescription = rowData["CHANNELDESC.value"]; - - -teams.createNewChannel(teamId, channelName, channelDescription); diff --git a/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js index 52a04a021ef..6bd9ad9deff 100644 --- a/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js @@ -1,3 +1,4 @@ +import("system.text"); import("system.teams"); import("system.vars"); import("system.db"); @@ -33,6 +34,4 @@ for(var i=0; i<documents.length; i++) file, docName, "Hier können Sie nachträglich ihre Description ändern", "", alias, util.getNewUUID()); } -neon.refreshAll(); - diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js index 3e9acef9832..1c888474dd6 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -84,5 +84,3 @@ if(teamData) "IS_ARCHIVED" : 0 }, "MST_TEAM"); } - -neon.refreshAll(); diff --git a/entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod b/entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod index cbfb921ec8c..4e720cc38ed 100644 --- a/entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod +++ b/entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod @@ -18,6 +18,7 @@ <entityField> <name>CREATED_DATE_TIME</name> <title>Erstelldatum</title> + <contentType>DATE</contentType> </entityField> <entityProvider> <name>Messages</name> @@ -29,25 +30,30 @@ <fieldName>Consumer</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>c79dc4f8-df40-47ba-9baa-b6a64c00f46c</name> + <entityName>MSTTeamActivityImport_entity</entityName> + <fieldName>Messages</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityField> <name>UID</name> </entityField> - <entityActionGroup> - <name>MSTeam</name> - <children> - <entityActionField> - <name>LoadNewMessages</name> - <title>Lade neue Nachrichten</title> - <onActionProcess>%aditoprj%/entity/MSTTeamsMessage_entity/entityfields/msteam/children/loadnewmessages/onActionProcess.js</onActionProcess> - </entityActionField> - </children> - </entityActionGroup> <entityParameter> - <name>Messages_param</name> + <name>Channel_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>TeamId_param</name> <expose v="true" /> </entityParameter> + <entityActionField> + <name>LoadOlderMessages</name> + <title>Lade neue Nachrichten</title> + <onActionProcess>%aditoprj%/entity/MSTTeamsMessage_entity/entityfields/loadoldermessages/onActionProcess.js</onActionProcess> + </entityActionField> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTTeamsMessage_entity/entityfields/loadoldermessages/onActionProcess.js b/entity/MSTTeamsMessage_entity/entityfields/loadoldermessages/onActionProcess.js new file mode 100644 index 00000000000..c7eb3376dab --- /dev/null +++ b/entity/MSTTeamsMessage_entity/entityfields/loadoldermessages/onActionProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); + +vars.set("$context.loadNextMessages", true); + +neon.refreshAll(); \ No newline at end of file diff --git a/entity/MSTTeamsMessage_entity/entityfields/msteam/children/loadnewmessages/onActionProcess.js b/entity/MSTTeamsMessage_entity/entityfields/msteam/children/loadnewmessages/onActionProcess.js deleted file mode 100644 index c7682a930da..00000000000 --- a/entity/MSTTeamsMessage_entity/entityfields/msteam/children/loadnewmessages/onActionProcess.js +++ /dev/null @@ -1,26 +0,0 @@ -import("system.teams"); -import("system.vars"); -import("system.logging"); - -if(vars.get("$global.nextLink")) -{ - var messages = teams.getNextChannelMessages(vars.get("$global.nextLink")); - var jsonMessages = JSON.parse(messages); - - if(jsonMessages.nextLink) - { - vars.set("$global.nextLink", jsonMessages.nextLink) - } - - for(var i = 0; i<jsonMessages.messages.length; i++) - { - logging.log(jsonMessages.messages[i].author.userName + "; " + jsonMessages.messages[i].message.message + "; " + jsonMessages.messages[i].createdDateTime); - } - -} - - - - - - diff --git a/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js index 1bae78e0753..aceecd801c8 100644 --- a/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js @@ -1,30 +1,43 @@ +import("Sql_lib"); +import("system.teams"); import("system.result"); import("system.util"); import("system.vars"); import("system.neon"); -if(vars.get("$param.Messages_param")) -{ - var jsonMessages = JSON.parse(vars.get("$param.Messages_param")); +var loadNextMessages = vars.exists("$context.loadNextMessages") && vars.get("$context.loadNextMessages"); +var channelMessages; +var messages = []; - if(jsonMessages.nextLink != null) +if (loadNextMessages) +{ + var nextLink = vars.exists("$context.nextLink") ? vars.get("$context.nextLink") : null; + if(nextLink) { - vars.set("$global.nextLink", jsonMessages.nextLink); + channelMessages = teams.getNextChannelMessages(nextLink); + channelMessages = JSON.parse(channelMessages); + messages = channelMessages.messages; + vars.set("$context.nextLink", channelMessages.nextLink || null); } - else - { - vars.set("$global.nextLink", ""); - } - - var myDataArray = []; - - for(var i = 0; i<jsonMessages.messages.length; i++) - { - myDataArray.push([util.getNewUUID(), jsonMessages.messages[i].author.userName, jsonMessages.messages[i].message.message, jsonMessages.messages[i].createdDateTime]) - } - - neon.refreshAll(); + vars.set("$context.loadNextMessages", false); +} +else if (vars.get("$param.TeamId_param") && vars.get("$param.Channel_param")) +{ + channelMessages = teams.getChannelMessages(vars.get("$param.TeamId_param"), vars.get("$param.Channel_param"), 10); + channelMessages = JSON.parse(channelMessages); + messages = channelMessages.messages; - result.object(myDataArray); + vars.set("$context.nextLink", channelMessages.nextLink || null); } +messages = messages.map(function (message) +{ + return [ + util.getNewUUID(), + message.author.userName, + message.message.message, + Date.parse(message.createdDateTime).toString() + ]; +}); + +result.object(messages); diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js index da3e32752f3..9bc72a1c164 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js @@ -21,5 +21,3 @@ else { result.string(neon.COMPONENTSTATE_EDITABLE); } - -neon.refreshAll(); \ No newline at end of file diff --git a/neonContext/MSTTeamActivityImport/MSTTeamActivityImport.aod b/neonContext/MSTTeamActivityImport/MSTTeamActivityImport.aod new file mode 100644 index 00000000000..98fc89b31df --- /dev/null +++ b/neonContext/MSTTeamActivityImport/MSTTeamActivityImport.aod @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>MSTTeamActivityImport</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>MSTTeamActivityImportEdit_view</editView> + <entity>MSTTeamActivityImport_entity</entity> + <references> + <neonViewReference> + <name>05e9f542-dd4f-4895-9d0d-d38d57c62735</name> + <view>MSTTeamActivityImportEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTTeamChannel/MSTTeamChannel.aod b/neonContext/MSTTeamChannel/MSTTeamChannel.aod index 504bccc581a..7c2dceb7f03 100644 --- a/neonContext/MSTTeamChannel/MSTTeamChannel.aod +++ b/neonContext/MSTTeamChannel/MSTTeamChannel.aod @@ -2,12 +2,5 @@ <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>MSTTeamChannel</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <editView>MSTTeamChannelEdit_view2</editView> <entity>MSTTeamChannel_entity</entity> - <references> - <neonViewReference> - <name>754bf641-381f-4b16-adf6-19960eb7b8d2</name> - <view>MSTTeamChannelEdit_view2</view> - </neonViewReference> - </references> </neonContext> diff --git a/neonView/ActivityFilter_view/ActivityFilter_view.aod b/neonView/ActivityFilter_view/ActivityFilter_view.aod index 742325d49db..abe9f6833d9 100644 --- a/neonView/ActivityFilter_view/ActivityFilter_view.aod +++ b/neonView/ActivityFilter_view/ActivityFilter_view.aod @@ -60,6 +60,7 @@ </timelineViewTemplate> <tableViewTemplate> <name>ActivitiesTable</name> + <favoriteActionGroup2>MST_TeamActions</favoriteActionGroup2> <iconField>#IMAGE</iconField> <titleField>SUBJECT</titleField> <subtitleField>ENTRYDATE</subtitleField> diff --git a/neonView/MSTTeamChannelEdit_view2/MSTTeamChannelEdit_view2.aod b/neonView/MSTTeamActivityImportEdit_view/MSTTeamActivityImportEdit_view.aod similarity index 57% rename from neonView/MSTTeamChannelEdit_view2/MSTTeamChannelEdit_view2.aod rename to neonView/MSTTeamActivityImportEdit_view/MSTTeamActivityImportEdit_view.aod index 6ffd2def37d..076d6f1ebf4 100644 --- a/neonView/MSTTeamChannelEdit_view2/MSTTeamChannelEdit_view2.aod +++ b/neonView/MSTTeamActivityImportEdit_view/MSTTeamActivityImportEdit_view.aod @@ -1,29 +1,29 @@ <?xml version="1.0" encoding="UTF-8"?> <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> - <name>MSTTeamChannelEdit_view2</name> + <name>MSTTeamActivityImportEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <size>SMALL</size> + <isOverlay v="true" /> <layout> - <noneLayout> + <boxLayout> <name>layout</name> - </noneLayout> + </boxLayout> </layout> <children> <genericViewTemplate> - <name>Generic</name> + <name>ChannelSelection</name> <editMode v="true" /> <entityField>#ENTITY</entityField> - <title>Neuer Channel</title> <fields> <entityFieldLink> - <name>2b7a105d-ecc0-48e9-9e67-c6d5e84417b7</name> - <entityField>CHANNELNAME</entityField> - </entityFieldLink> - <entityFieldLink> - <name>93c89d65-776d-42d4-822f-30d87225b725</name> - <entityField>DESCRIPTION</entityField> + <name>099e61f6-6cb8-4390-8b79-8943640bce9f</name> + <entityField>CHANNEL_ID</entityField> </entityFieldLink> </fields> </genericViewTemplate> + <neonViewReference> + <name>e486a1bb-5deb-432a-aa28-c3872f0f88fc</name> + <entityField>Messages</entityField> + <view>MSTTeamsMessageFilter_view</view> + </neonViewReference> </children> </neonView> diff --git a/neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod b/neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod index fbcca9d1e67..54a5bd52208 100644 --- a/neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod +++ b/neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod @@ -10,21 +10,29 @@ <children> <tableViewTemplate> <name>Table</name> + <hideActions v="true" /> <entityField>#ENTITY</entityField> <columns> <neonTableColumn> <name>5db624ad-16d0-4374-be55-1a423fcddefc</name> <entityField>FROM</entityField> </neonTableColumn> - <neonTableColumn> - <name>bc343936-a59c-4eb0-b056-c8dc35303385</name> - <entityField>MESSAGE</entityField> - </neonTableColumn> <neonTableColumn> <name>89e753a1-4917-4493-b1c3-3c9d7884b217</name> <entityField>CREATED_DATE_TIME</entityField> </neonTableColumn> + <neonTableColumn> + <name>bc343936-a59c-4eb0-b056-c8dc35303385</name> + <entityField>MESSAGE</entityField> + </neonTableColumn> </columns> </tableViewTemplate> + <actionsViewTemplate> + <name>LoadNextAction</name> + <actions> + <element>LoadOlderMessages</element> + </actions> + <entityField>#ENTITY</entityField> + </actionsViewTemplate> </children> </neonView> -- GitLab From 60bc7417431e344b4243fdc4cb5873b0a1e00013 Mon Sep 17 00:00:00 2001 From: "M.Bilda" <m.bilda@adito.de> Date: Fri, 17 Jul 2020 11:43:42 +0200 Subject: [PATCH 007/184] 1060809 - state Process added; addApp-Process added --- aliasDefinition/Data_alias/Data_alias.aod | 30 ++++++++++++++----- entity/Activity_entity/Activity_entity.aod | 1 + .../mst_teamactions/stateProcess.js | 14 +++++++++ entity/Member_entity/Member_entity.aod | 3 +- .../children/addapp/onActionProcess.js | 18 +++++------ .../changetomsteam/onActionProcess.js | 7 ++++- .../children/restoreteam/onActionProcess.js | 22 +++++++------- .../msteamsactiongroup/stateProcess.js | 14 +++++++++ 8 files changed, 76 insertions(+), 33 deletions(-) create mode 100644 entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 427ce28a0ce..8aa42253a1f 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -14199,13 +14199,13 @@ <entityFieldDb> <name>MST_TEAMID</name> <dbName></dbName> - <primaryKey v="true" /> + <primaryKey v="false" /> <columnType v="1" /> <size v="36" /> <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="true" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> <documentation></documentation> <title></title> <description></description> @@ -14267,12 +14267,12 @@ <description></description> </entityFieldDb> <entityFieldDb> - <name>WEB_URL</name> + <name>FINAL_DELETE_DATE</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -14280,6 +14280,20 @@ <title></title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>MST_ID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> </entities> diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index 2d7ba6ac6f4..374162a2f44 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -584,6 +584,7 @@ </entityConsumer> <entityActionGroup> <name>MST_TeamActions</name> + <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js</stateProcess> <children> <entityActionField> <name>importFromTeams</name> diff --git a/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js b/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js new file mode 100644 index 00000000000..15e4ead9122 --- /dev/null +++ b/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js @@ -0,0 +1,14 @@ +import("system.neon"); +import("system.result"); +import("system.project"); + +var isTeamsEnabled = project.getInstanceConfigValue(teamsIsEnabled, null); + +if(isTeamsEnabled) +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} +else +{ + result.string(neon.COMPONENTSTATE_DISABLED); +} \ No newline at end of file diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index ba4cb276acc..b09487acaec 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -203,6 +203,7 @@ <entityActionGroup> <name>MSTeamsActionGroup</name> <title>MS Teams</title> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js</stateProcess> <children> <entityActionField> <name>createTeam</name> @@ -233,7 +234,7 @@ <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js</onActionProcess> <iconId>VAADIN:MOBILE</iconId> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js</stateProcess> - <tooltip>Fügt eine App zum Team hinzu</tooltip> + <tooltip>Adds the MST ADITO App to the MSTTeam</tooltip> </entityActionField> <entityActionField> <name>chooseTeam</name> diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js index a7b5766ffee..3fd67199f22 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js @@ -1,17 +1,13 @@ import("system.teams"); import("Sql_lib"); -import("system.neon"); +import("system.project"); +import("system.logging"); -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") +var teamId = newSelect("MST_TEAM_ID") + .from("SALEPROJECT") + .where("SALESPORJECT.SALESPROJECTID", "$param.ObjectRowId_param") .cell(); -//DAFÜR MUSS ES EIN DESIGNER FELD GEBEN -var appId = "27888276-ddc1-4e24-a07c-1023996fd892" - - -teams.addAppToTeam(teamId, appId); - -neon.refreshAll(); \ No newline at end of file +var appId = project.getInstanceConfigValue("teamsAppId", null); +teams.addApp(teamId, appId) \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js index 144584dfb46..d58faeca5c3 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js @@ -1,5 +1,10 @@ +import("Sql_lib"); +import("system.vars"); import("system.neon"); -var url = "https://teams.microsoft.com/l/team/19:0062b1c861df409391eaf0329b99db68%40thread.tacv2/conversations?groupId=c4c6a313-3d12-4941-900e-afc464755188&tenantId=bb59bb5b-90c7-41f9-85aa-f40da5c0c68a"; +var webUrl = newSelect("WEB_URL") + .from("MST_TEAM") + .where("MST_TEAM.OBJECT_ROWID", vars.get("$field.OBJECT_ROWID")) + .cell(); neon.openUrl(url, true) diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js index dc58a876d04..b67caa38262 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js @@ -1,3 +1,4 @@ +import("system.vars"); import("system.teams"); import("Sql_lib"); import("system.neon"); @@ -5,7 +6,7 @@ import("system.neon"); var teamId = newSelect("MST_TEAMID") .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") + .where("MST_TEAM.OBJECT_ROWID", vars.get("$field.OBJECT_ROWID")) .cell(); //Hat dieses Team mehrere Projekte?? @@ -13,16 +14,13 @@ var teamIds = newSelect("MST_TEAMID") .from("MST_TEAM") .where("MST_TEAM.MST_TEAMID", teamId).arrayRow(); -teams.unarchiveTeamAndRestoreGroup(teamId); +teams.unarchiveTeam(teamId); for(var i = 0; i<teamIds.length; i++) - { - newWhere("MST_TEAM.MST_TEAMID", teamIds[i]) - .updateFields({ - "IS_ARCHIVED" : "0", - "FINAL_DELETE_DATE" : "" - }); - } - - -neon.refreshAll(); \ No newline at end of file +{ + newWhere("MST_TEAM.MST_TEAMID", teamIds[i]) + .updateFields({ + "IS_ARCHIVED" : "0", + "FINAL_DELETE_DATE" : "" + }); +} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js new file mode 100644 index 00000000000..15e4ead9122 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js @@ -0,0 +1,14 @@ +import("system.neon"); +import("system.result"); +import("system.project"); + +var isTeamsEnabled = project.getInstanceConfigValue(teamsIsEnabled, null); + +if(isTeamsEnabled) +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} +else +{ + result.string(neon.COMPONENTSTATE_DISABLED); +} \ No newline at end of file -- GitLab From b14085465978c6ee3734c2f614f74fdc849ea927 Mon Sep 17 00:00:00 2001 From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local> Date: Wed, 22 Jul 2020 16:27:38 +0200 Subject: [PATCH 008/184] #1060809 MS Teams integration --- .../2020.2.1/add_salesproject_MST_TEAM_ID.xml | 9 ++ .../Data_alias/basic/2020.2.1/changelog.xml | 1 + .../basic/2020.2.1/create_MST_TEAM.xml | 7 +- .liquibase/Data_alias/changelog.xml | 3 +- aliasDefinition/Data_alias/Data_alias.aod | 146 ------------------ .../mst_teamactions/stateProcess.js | 4 +- .../MSTTeamAddMembers_entity.aod | 14 ++ .../entityfields/mst_team_id/valueProcess.js | 7 + .../entityfields/mst_teamname/valueProcess.js | 7 + .../recordcontainers/jdito/contentProcess.js | 2 +- .../recordcontainers/jdito/onInsert.js | 43 ++++++ .../MSTTeamMember_entity.aod | 10 +- .../member/displayValueProcess.js | 5 + .../entityfields/member/stateProcess.js | 5 + .../role_or_invite/mandatoryProcess.js | 4 + .../role_or_invite/stateProcess.js | 5 + .../recordcontainers/jdito/contentProcess.js | 7 +- .../recordcontainers/jdito/onDelete.js | 1 + .../recordcontainers/jdito/onInsert.js | 59 +------ entity/MSTTeam_entity/MSTTeam_entity.aod | 23 +-- .../entityfields/description/stateProcess.js | 5 + .../children/objecttype_param/valueProcess.js | 3 - .../children/mstteamid_param/valueProcess.js | 4 +- .../entityfields/teamname/stateProcess.js | 5 + .../recordcontainers/jdito/onInsert.js | 120 +++++++------- .../recordcontainers/jdito/onUpdate.js | 54 +++++++ entity/Member_entity/Member_entity.aod | 18 ++- .../children/addapp/stateProcess.js | 20 +-- .../children/addnewmember/stateProcess.js | 9 +- .../changetomsteam/onActionProcess.js | 7 +- .../children/changetomsteam/stateProcess.js | 9 +- .../children/chooseteam/stateProcess.js | 11 +- .../children/createteam/stateProcess.js | 11 +- .../children/deletemember/stateProcess.js | 20 +++ .../children/deleteteam/stateProcess.js | 15 +- .../children/editteam/onActionProcess.js | 9 ++ .../children/restoreteam/stateProcess.js | 9 +- .../msteamsactiongroup/stateProcess.js | 4 +- .../Salesproject_entity.aod | 4 + .../mst_teamid_param}/valueProcess.js | 2 +- neonContext/MSTTeam/MSTTeam.aod | 4 + neonContext/MSTTeamMember/MSTTeamMember.aod | 4 + .../MSTTeamAddMembersEdit_view.aod | 10 ++ .../MSTTeamEditMembers_view.aod | 28 ++++ .../MSTTeamMemberList_view.aod | 25 +++ .../MSTTeamPreview_view.aod | 5 + process/Employee_lib/process.js | 8 +- 47 files changed, 414 insertions(+), 371 deletions(-) create mode 100644 .liquibase/Data_alias/basic/2020.2.1/add_salesproject_MST_TEAM_ID.xml create mode 100644 entity/MSTTeamAddMembers_entity/entityfields/mst_team_id/valueProcess.js create mode 100644 entity/MSTTeamAddMembers_entity/entityfields/mst_teamname/valueProcess.js create mode 100644 entity/MSTTeamAddMembers_entity/recordcontainers/jdito/onInsert.js create mode 100644 entity/MSTTeamMember_entity/entityfields/member/displayValueProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/member/stateProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/role_or_invite/mandatoryProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/role_or_invite/stateProcess.js create mode 100644 entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js create mode 100644 entity/MSTTeam_entity/entityfields/description/stateProcess.js delete mode 100644 entity/MSTTeam_entity/entityfields/membercomsumer/children/objecttype_param/valueProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/teamname/stateProcess.js create mode 100644 entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js rename entity/{MSTTeam_entity/entityfields/membercomsumer/children/objectrowid_param => Salesproject_entity/entityfields/members/children/mst_teamid_param}/valueProcess.js (51%) create mode 100644 neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod create mode 100644 neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod diff --git a/.liquibase/Data_alias/basic/2020.2.1/add_salesproject_MST_TEAM_ID.xml b/.liquibase/Data_alias/basic/2020.2.1/add_salesproject_MST_TEAM_ID.xml new file mode 100644 index 00000000000..58cc0adab61 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.1/add_salesproject_MST_TEAM_ID.xml @@ -0,0 +1,9 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="s.listl" id="b1fc1530-37c8-46b2-a96f-21e3a6deeed1"> + <addColumn tableName="SALESPROJECT"> + <column name="MST_TEAM_ID" type="CHAR(36)"/> + </addColumn> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.1/changelog.xml b/.liquibase/Data_alias/basic/2020.2.1/changelog.xml index 7a6f495d3a7..3b995a276a0 100644 --- a/.liquibase/Data_alias/basic/2020.2.1/changelog.xml +++ b/.liquibase/Data_alias/basic/2020.2.1/changelog.xml @@ -2,4 +2,5 @@ <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <include file="create_MST_TEAM.xml" relativeToChangelogFile="true"/> + <include file="add_salesproject_MST_TEAM_ID.xml" relativeToChangelogFile="true"/> </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.1/create_MST_TEAM.xml b/.liquibase/Data_alias/basic/2020.2.1/create_MST_TEAM.xml index 1181ee7b3a2..48a4387dde9 100644 --- a/.liquibase/Data_alias/basic/2020.2.1/create_MST_TEAM.xml +++ b/.liquibase/Data_alias/basic/2020.2.1/create_MST_TEAM.xml @@ -3,16 +3,15 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <changeSet author="m.bilda" id="3d4f843d-9c5d-46b1-9475-9527d45a65b6"> <createTable tableName="MST_TEAM"> - <column name="MST_ID" type="CHAR(36)"> - <constraints primaryKey="true" primaryKeyName="PK_MST_TEAM_MST_ID"/> + <column name="MST_TEAMID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_MST_TEAM_MST_TEAMID"/> </column> - <column name="MST_TEAMID" type="CHAR(36)"/> <column name="TEAMNAME" type="NVARCHAR(255)"/> <column name="GENERAL_CHANNELID" type="CHAR(48)"/> <column name="OBJECT_ROWID" type="CHAR(36)"/> <column name="IS_ARCHIVED" type="TINYINT"/> <column name="SERVICE_URL" type="NVARCHAR(255)"/> - <column name="FINAL_DELETE_DATE" type="TIMESTAMP"/> + <column name="WEB_URL" type="NVARCHAR(500)"/> </createTable> </changeSet> </databaseChangeLog> diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index 925dfaab9bf..0c689b4cb33 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -13,7 +13,8 @@ <include relativeToChangelogFile="true" file="basic/2020.0.3/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.1.0/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.1.1/changelog.xml"/> - <include relativeToChangelogFile="true" file="basic/2020.1.2/changelog.xml"/> + <!--<include relativeToChangelogFile="true" file="basic/2020.1.2/changelog.xml"/>--> + <include relativeToChangelogFile="true" file="basic/2020.2.1/changelog.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> <include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/> diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 9d086537bef..c7037b6dddf 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -3647,20 +3647,6 @@ </customStringProperty> </customProperties> </entityFieldDb> - <entityFieldDb> - <name>MST_TEAM_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -14164,138 +14150,6 @@ </entityFieldDb> </entityFields> </entityDb> - <entityDb> - <name>MST_TEAM</name> - <dbName></dbName> - <idColumn>MST_TEAMID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <documentation></documentation> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="0" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>OBJECT_ROWID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>MST_TEAMID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>IS_ARCHIVED</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SERVICE_URL</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>TEAMNAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>GENERAL_CHANNELID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="48" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>FINAL_DELETE_DATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>MST_ID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="true" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> </entities> </entityGroup> </aliasDefDb> diff --git a/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js b/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js index 15e4ead9122..44ae892f222 100644 --- a/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js +++ b/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js @@ -2,9 +2,9 @@ import("system.neon"); import("system.result"); import("system.project"); -var isTeamsEnabled = project.getInstanceConfigValue(teamsIsEnabled, null); +var isTeamsEnabled = project.getInstanceConfigValue("teamsEnabled", null); -if(isTeamsEnabled) +if (isTeamsEnabled == "true") { result.string(neon.COMPONENTSTATE_EDITABLE); } diff --git a/entity/MSTTeamAddMembers_entity/MSTTeamAddMembers_entity.aod b/entity/MSTTeamAddMembers_entity/MSTTeamAddMembers_entity.aod index 1a1c93f66ca..791fc678cf4 100644 --- a/entity/MSTTeamAddMembers_entity/MSTTeamAddMembers_entity.aod +++ b/entity/MSTTeamAddMembers_entity/MSTTeamAddMembers_entity.aod @@ -29,15 +29,29 @@ <name>SalesprojectId_param</name> <expose v="true" /> </entityParameter> + <entityField> + <name>MST_TEAMNAME</name> + <title>Team name</title> + <valueProcess>%aditoprj%/entity/MSTTeamAddMembers_entity/entityfields/mst_teamname/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>MST_TEAM_ID</name> + <valueProcess>%aditoprj%/entity/MSTTeamAddMembers_entity/entityfields/mst_team_id/valueProcess.js</valueProcess> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> <contentProcess>%aditoprj%/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/onInsert.js</onInsert> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>MST_TEAM_ID.value</name> + </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> </recordContainers> diff --git a/entity/MSTTeamAddMembers_entity/entityfields/mst_team_id/valueProcess.js b/entity/MSTTeamAddMembers_entity/entityfields/mst_team_id/valueProcess.js new file mode 100644 index 00000000000..3db681dd8d2 --- /dev/null +++ b/entity/MSTTeamAddMembers_entity/entityfields/mst_team_id/valueProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("Sql_lib"); + +result.string(newSelect("MST_TEAM_ID") + .from("SALESPROJECT") + .where("SALESPROJECT.SALESPROJECTID", "$param.SalesprojectId_param") + .cell()); \ No newline at end of file diff --git a/entity/MSTTeamAddMembers_entity/entityfields/mst_teamname/valueProcess.js b/entity/MSTTeamAddMembers_entity/entityfields/mst_teamname/valueProcess.js new file mode 100644 index 00000000000..7945448b1d2 --- /dev/null +++ b/entity/MSTTeamAddMembers_entity/entityfields/mst_teamname/valueProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("Sql_lib"); + +result.string(newSelect("TEAMNAME") + .from("MST_TEAM") + .where("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID") + .cell()); \ No newline at end of file diff --git a/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/contentProcess.js index e197aca8b77..af9ece7caa7 100644 --- a/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/contentProcess.js @@ -4,6 +4,6 @@ import("system.vars"); //TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 var rows = []; if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id];}); + rows = vars.get("$local.idvalues").map(function (id) {return [id, ""];}); result.object(rows); \ No newline at end of file diff --git a/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 00000000000..584fbcf9708 --- /dev/null +++ b/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1,43 @@ +import("Communication_lib"); +import("Sql_lib"); +import("system.vars"); +import("system.teams"); +import("system.tools"); +import("Employee_lib"); + +var rowdata = vars.get("$local.rowdata"); +var teamId = rowdata["MST_TEAM_ID.value"]; +var teamMembers = vars.get("$field.Members.insertedRows"); + +var internalMembers = []; +var externalMembers = []; +teamMembers.forEach(function (teamMember) +{ + var memberUser = EmployeeUtils.getUserByContactId(teamMember.MEMBER); + if (!memberUser) + { + var memberEmail = CommUtil.getStandardMail(teamMember.MEMBER); + if (memberEmail) + { + externalMembers.push( + teams.createExternalUserConfig(memberEmail) + .sendInvitation(teamMember.ROLE_OR_INVITE == "invite") + ); + } + return; + } + var memberAzureId = memberUser[tools.PARAMS][tools.TEAMS_AZUREID]; + var memberUpn = memberUser[tools.PARAMS][tools.TEAMS_AZUREUPN]; + if (!memberAzureId && memberUpn) + memberAzureId = teams.getInternalAzureId(memberUpn); + if (memberAzureId) + { + internalMembers.push(teams.createInternalUserConfig(memberAzureId).setOwner(teamMember.ROLE_OR_INVITE == "isOwner")); + } +}); + +if (internalMembers.length !== 0) + teams.addInternalMembers(teamId, internalMembers); + +if (externalMembers.length !== 0) + teams.addExternalMembers(teamId, externalMembers); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod index 40379d111b5..7981f828883 100644 --- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -19,6 +19,8 @@ <name>MEMBER</name> <title>Members</title> <consumer>ProjectMembers</consumer> + <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/member/stateProcess.js</stateProcess> + <displayValueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/member/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>UID</name> @@ -55,8 +57,9 @@ </entityConsumer> <entityField> <name>ROLE_OR_INVITE</name> - <mandatory v="true" /> + <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role_or_invite/mandatoryProcess.js</mandatoryProcess> <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role_or_invite/dropDownProcess.js</dropDownProcess> + <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role_or_invite/stateProcess.js</stateProcess> </entityField> <entityField> <name>ISEXTERN</name> @@ -71,6 +74,7 @@ </entityParameter> <entityProvider> <name>MembersOfTeam</name> + <titlePlural>Team members</titlePlural> <dependencies> <entityDependency> <name>37854fde-c4ae-4f56-82df-14385717f82e</name> @@ -88,6 +92,7 @@ <contentProcess>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <hasDependentRecords v="true" /> <onInsert>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js</onInsert> + <onDelete>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js</onDelete> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> @@ -95,6 +100,9 @@ <jDitoRecordFieldMapping> <name>MEMBERNAME.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>MEMBER.displayValue</name> + </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> </recordContainers> diff --git a/entity/MSTTeamMember_entity/entityfields/member/displayValueProcess.js b/entity/MSTTeamMember_entity/entityfields/member/displayValueProcess.js new file mode 100644 index 00000000000..7100366cb2e --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/member/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); + +if (vars.get("$field.MEMBERNAME")) + result.string(vars.get("$field.MEMBERNAME")); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/member/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/member/stateProcess.js new file mode 100644 index 00000000000..53c48b1aa60 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/member/stateProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +result.string(vars.get("$field.MEMBERNAME") ? neon.COMPONENTSTATE_READONLY : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role_or_invite/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/role_or_invite/mandatoryProcess.js new file mode 100644 index 00000000000..8be1684334b --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/role_or_invite/mandatoryProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(!vars.get("$field.MEMBERNAME")); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role_or_invite/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/role_or_invite/stateProcess.js new file mode 100644 index 00000000000..8d5def7b923 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/role_or_invite/stateProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +result.string(vars.get("$field.MEMBERNAME") ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js index e053d9286a0..421591be234 100644 --- a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js @@ -1,22 +1,23 @@ +import("system.teams"); import("system.result"); import("system.vars"); var teamId = vars.get("$param.MSTTeamId_param"); -var allMembers = teams.getAllMembers(teamId); +var allMembers = teamId ? teams.getAllMembers(teamId) : {}; var memberArray = []; if (vars.get("$local.idvalues")) { memberArray = vars.get("$local.idvalues").map(function (memberId) { - return [memberId, allMembers[memberId]]; + return [memberId, allMembers[memberId], allMembers[memberId]]; }); } else { for (let memberId in allMembers) { - memberArray.push([memberId, allMembers[memberId]]); + memberArray.push([memberId, allMembers[memberId], allMembers[memberId]]); } } diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js new file mode 100644 index 00000000000..d2ca20dd991 --- /dev/null +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js @@ -0,0 +1 @@ +var e = "e"; \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js index 0ffe832f7cd..c776217e340 100644 --- a/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js @@ -1,57 +1,2 @@ -import("system.teams"); -import("Sql_lib"); -import("system.vars"); -import("system.question"); - -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", vars.get("$param.ROWID_param")) - .cell(); - -var rowData = vars.get("$local.rowdata"); - -var upnsOfMembers = text.decodeMS(rowData["UPNSOFMEMBERS.value"]); -var areTheseOwners = rowData["ARETHESEOWNERS.value"]; -var mailsOfExtern = text.decodeMS(rowData["MAILSOFEXTERN.value"]); -var sendInvitation = rowData["EXTERN.value"]; -var failedInternUsers; -var failedExternUsers; - -if(upnsOfMembers != "") -{ - if(areTheseOwners == 1) - { - failedUsers = teams.addMembers(teamId, upnsOfMembers, true); - if(failedUsers != null) - { - question.showMessage(failedUsers, "FailedUsers"); - } - } - else - { - failedUsers = teams.addMembers(teamId, upnsOfMembers, false); - if(failedUsers != null) - { - question.showMessage(failedUsers, "FailedUsers"); - } - } -} -if(mailsOfExtern != "") -{ - if(sendInvitation == 1) - { - failedExternUsers = teams.addExternMembers(teamId, mailsOfExtern, true); - if(failedExternUsers != null) - { - question.showMessage(failedExternUsers, "FailedExternUsers"); - } - } - else - { - failedExternUsers = teams.addExternMembers(teamId, mailsOfExtern, false); - if(failedExternUsers != null) - { - question.showMessage(failedExternUsers, "FailedExternUsers"); - } - } -} +//inserting is done in the MSTTeam_entity +var dummy = "dummy"; \ No newline at end of file diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod index ef6acef77cd..07657f65968 100644 --- a/entity/MSTTeam_entity/MSTTeam_entity.aod +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -2,6 +2,9 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> <name>MSTTeam_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <siblings> + <element>Salesproject_entity</element> + </siblings> <contentTitleProcess>%aditoprj%/entity/MSTTeam_entity/contentTitleProcess.js</contentTitleProcess> <recordContainer>jdito</recordContainer> <entityFields> @@ -23,6 +26,7 @@ <entityField> <name>TEAMNAME</name> <title>Name</title> + <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teamname/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js</valueProcess> </entityField> <entityField> @@ -47,24 +51,6 @@ <name>Mailnickname_param</name> <expose v="true" /> </entityParameter> - <entityConsumer> - <name>MemberComsumer</name> - <dependency> - <name>dependency</name> - <entityName>Member_entity</entityName> - <fieldName>TeamMemberProvider</fieldName> - </dependency> - <children> - <entityParameter> - <name>ObjectRowId_param</name> - <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/membercomsumer/children/objectrowid_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>ObjectType_param</name> - <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/membercomsumer/children/objecttype_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> <entityConsumer> <name>TeamMembers</name> <dependency> @@ -95,6 +81,7 @@ <isRequireContainerFiltering v="true" /> <contentProcess>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <onInsert>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> + <onUpdate>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js</onUpdate> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> diff --git a/entity/MSTTeam_entity/entityfields/description/stateProcess.js b/entity/MSTTeam_entity/entityfields/description/stateProcess.js new file mode 100644 index 00000000000..18f779e6910 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/description/stateProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +result.string(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_READONLY); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/membercomsumer/children/objecttype_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/membercomsumer/children/objecttype_param/valueProcess.js deleted file mode 100644 index 32bdd9f268d..00000000000 --- a/entity/MSTTeam_entity/entityfields/membercomsumer/children/objecttype_param/valueProcess.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string("Salesproject"); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js index 16c85500b53..7b7daa293fe 100644 --- a/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js +++ b/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js @@ -1,4 +1,6 @@ import("system.vars"); import("system.result"); +import("system.neon"); -result.string(vars.get("$field.UID")); \ No newline at end of file +if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$field.TEAMID_AND_NAME")) + result.string(vars.get("$field.UID")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teamname/stateProcess.js b/entity/MSTTeam_entity/entityfields/teamname/stateProcess.js new file mode 100644 index 00000000000..18f779e6910 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teamname/stateProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +result.string(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_READONLY); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js index 1c888474dd6..9e9c547d317 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -1,86 +1,72 @@ -import("system.logging"); +import("Communication_lib"); import("Sql_lib"); import("system.vars"); import("system.teams"); -import("system.text"); -import("system.util"); -import("system.neon"); +import("system.tools"); +import("Employee_lib"); var rowData = vars.get("$local.rowdata"); var teamName = rowData["TEAMNAME.value"]; -var mailNickname = vars.get("$param.Mailnickname_param"); - var description = rowData["DESCRIPTION.value"]; -var upnsOfOwners = text.decodeMS(rowData["UPNSOFOWNERS.value"]); - -var users = []; +var teamMembers = vars.get("$field.TeamMembers.insertedRows"); -for(var i = 0; i<upnsOfMembers.length(); i++) +var ownerIds = []; +var internalMembers = []; +var externalMembers = []; +teamMembers.forEach(function (teamMember) +{ + var memberUser = EmployeeUtils.getUserByContactId(teamMember.MEMBER); + if (!memberUser) { - var user = createInternalUserConfig(upnsOfMembers[i]) - if(isOwner) + var memberEmail = CommUtil.getStandardMail(teamMember.MEMBER); + if (memberEmail) { - user.setOwner(isOwner); + externalMembers.push( + teams.createExternalUserConfig(memberEmail) + .sendInvitation(teamMember.ROLE_OR_INVITE == "invite") + ); } - - users.push(user); + return; } - - teams.addMembers(users); - -var teamData; -if(upnsOfOwners) -{ - teamData = teams.createTeam(teamName, description, mailNickname, true, false, upnsOfOwners); -} -if(teamData) -{ - var failedUsers; - var failedExternUsers; - - if(upnsOfMembers != "") + var memberAzureId = memberUser[tools.PARAMS][tools.TEAMS_AZUREID]; + var memberUpn = memberUser[tools.PARAMS][tools.TEAMS_AZUREUPN]; + if (!memberAzureId && memberUpn) + memberAzureId = teams.getInternalAzureId(memberUpn); + if (memberAzureId) { - failedUsers = teams.addMembers(teamData["teamId"], upnsOfMembers, false); - if(failedUsers != null) - { - question.showMessage(failedUsers, "FailedUsers"); - } + if (teamMember.ROLE_OR_INVITE == "isOwner") + ownerIds.push(memberAzureId); + else + internalMembers.push(teams.createInternalUserConfig(memberAzureId)); } - - if(mailsOfExtern != "") - { - if(sendInvitation == 1) - { - failedExternUsers = teams.addExternMembers(teamData["teamId"], mailsOfExtern, true); - if(failedExternUsers != null) - { - question.showMessage(failedExternUsers, "FailedExternUsers"); - } +}); - } - else - { - failedExternUsers = teams.addExternMembers(teamData["teamId"], mailsOfExtern, false); - if(failedExternUsers != null) - { - question.showMessage(failedExternUsers, "FailedExternUsers"); - } +//mailNickName = teamName in camel case +var mailNickName = teamName.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function(match, index) +{ + if (+match === 0) return ""; // or if (/\s+/.test(match)) for white spaces + return index === 0 ? match.toLowerCase() : match.toUpperCase(); +}); - } - } +var groupConfig = teams.createGroupConfig(teamName, mailNickName, ownerIds); +if (description) + groupConfig.setDescription(description); +var teamConfig = teams.createTeamConfig(); + +var mstTeam = teams.createTeam(groupConfig, teamConfig); + +if (internalMembers.length !== 0) + teams.addInternalMembers(mstTeam.teamId, internalMembers); - var teamId = teamData["teamId"]; - teamName = teamData["teamName"]; - var channelId = teamData["generalChannelId"]; - var webUrl = teamData["webUrl"] +if (externalMembers.length !== 0) + teams.addExternalMembers(mstTeam.teamId, externalMembers); +new SqlBuilder().insertFields({ + "MST_TEAMID" : mstTeam.teamId, + "TEAMNAME" : mstTeam.teamName, + "GENERAL_CHANNELID" : mstTeam.generalChannelId, + "IS_ARCHIVED" : 0 +}, "MST_TEAM"); - new SqlBuilder().insertFields({ - "MST_ID" : util.getNewUUID(), - "MST_TEAMID" : teamId, - "TEAMNAME" : teamName, - "GENERAL_CHANNELID" : channelId, - "OBJECT_ROWID" : vars.get("$param.RowId_param"), - "IS_ARCHIVED" : 0 - }, "MST_TEAM"); -} +newWhere("SALESPROJECT.SALESPROJECTID", "$param.SalesprojectId_param") + .updateFields({"MST_TEAM_ID" : mstTeam.teamId}); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js new file mode 100644 index 00000000000..f00f1817d78 --- /dev/null +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js @@ -0,0 +1,54 @@ +import("Communication_lib"); +import("Sql_lib"); +import("system.vars"); +import("system.teams"); +import("system.tools"); +import("Employee_lib"); + +var rowData = vars.get("$local.rowdata"); +var teamId = rowData["UID.value"]; +var teamName = rowData["TEAMNAME.value"]; +var description = rowData["DESCRIPTION.value"]; +var insertedTeamMembers = vars.get("$field.TeamMembers.insertedRows"); +var deletedTeamMembers = vars.get("$field.TeamMembers.deletedRows"); + +var internalMembers = []; +var externalMembers = []; +insertedTeamMembers.forEach(function (teamMember) +{ + var memberUser = EmployeeUtils.getUserByContactId(teamMember.MEMBER); + if (!memberUser) + { + var memberEmail = CommUtil.getStandardMail(teamMember.MEMBER); + if (memberEmail) + { + externalMembers.push( + teams.createExternalUserConfig(memberEmail) + .sendInvitation(teamMember.ROLE_OR_INVITE == "invite") + ); + } + return; + } + var memberAzureId = memberUser[tools.PARAMS][tools.TEAMS_AZUREID]; + var memberUpn = memberUser[tools.PARAMS][tools.TEAMS_AZUREUPN]; + if (!memberAzureId && memberUpn) + memberAzureId = teams.getInternalAzureId(memberUpn); + if (memberAzureId) + { + internalMembers.push(teams.createInternalUserConfig(memberAzureId).setOwner(teamMember.ROLE_OR_INVITE == "isOwner")); + } +}); + +if (internalMembers.length !== 0) + teams.addInternalMembers(teamId, internalMembers); + +if (externalMembers.length !== 0) + teams.addExternalMembers(teamId, externalMembers); + +var removeMembers = deletedTeamMembers.map(function (member) +{ + return teams.createInternalUserConfig(member["#UID"]); +}); + +if (removeMembers.length !== 0) + teams.removeInternalMembers(teamId, removeMembers); \ No newline at end of file diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index b09487acaec..f3d8bec1a1e 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -4,6 +4,7 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Member_entity/documentation.adoc</documentation> <title>${SALESPROJECT_MEMBER}</title> + <siblings /> <contentTitleProcess>%aditoprj%/entity/Member_entity/contentTitleProcess.js</contentTitleProcess> <iconId>VAADIN:FILE_SOUND</iconId> <titlePlural>${SALESPROJECT_MEMBER}</titlePlural> @@ -215,6 +216,12 @@ <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js</stateProcess> <tooltip>Erstelle ein neues MicrosoftTeams Team</tooltip> </entityActionField> + <entityActionField> + <name>editTeam</name> + <title>Edit Teams Group</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js</onActionProcess> + <iconId>NEON:PENCIL</iconId> + </entityActionField> <entityActionField> <name>addNewMember</name> <title>Add members</title> @@ -227,6 +234,7 @@ <name>deleteMember</name> <title>Delete members</title> <iconId>VAADIN:USER</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js</stateProcess> </entityActionField> <entityActionField> <name>addApp</name> @@ -273,12 +281,6 @@ <name>TeamMemberProvider</name> <lookupIdfield>CONTACT_ID</lookupIdfield> <dependencies> - <entityDependency> - <name>80ac002b-2d74-4cfb-a504-347f8abfd7eb</name> - <entityName>MSTTeam_entity</entityName> - <fieldName>MemberComsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> <entityDependency> <name>373a0c5c-dff5-4a6d-9a1f-68d7b73804ce</name> <entityName>MSTTeamMember_entity</entityName> @@ -287,6 +289,10 @@ </entityDependency> </dependencies> </entityProvider> + <entityParameter> + <name>MST_TeamId_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js index 63fdd66eafb..0bcfd015460 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js @@ -3,20 +3,16 @@ import("system.neon"); import("system.result"); import("Sql_lib"); -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); +var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; -var isArchived = newSelect("IS_ARCHIVED") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); - -var serviceUrl = newSelect("SERVICE_URL") +var isArchived, serviceUrl; +var teamData = newSelect("IS_ARCHIVED, SERVICE_URL") .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); + .whereIfSet("MST_TEAM.MST_TEAMID", teamId) + .arrayRow(true); + +if (teamData) + [isArchived, serviceUrl] = teamData; if (teamId == "" || isArchived == 1 || serviceUrl) diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js index caeb254eb7d..90deb206fd1 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js @@ -3,15 +3,12 @@ import("system.neon"); import("system.result"); import("Sql_lib"); -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); +var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; var isArchived = newSelect("IS_ARCHIVED") .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); + .whereIfSet("MST_TEAM.MST_TEAMID", teamId) + .cell(true); if (teamId == "" || isArchived == 1) { diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js index d58faeca5c3..8359835837a 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js @@ -4,7 +4,8 @@ import("system.neon"); var webUrl = newSelect("WEB_URL") .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", vars.get("$field.OBJECT_ROWID")) - .cell(); + .whereIfSet("MST_TEAM.MST_TEAMID", "$param.MST_TeamId_param") + .cell(true); -neon.openUrl(url, true) +if (webUrl) + neon.openUrl(webUrl, true); diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js index caeb254eb7d..90deb206fd1 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js @@ -3,15 +3,12 @@ import("system.neon"); import("system.result"); import("Sql_lib"); -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); +var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; var isArchived = newSelect("IS_ARCHIVED") .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); + .whereIfSet("MST_TEAM.MST_TEAMID", teamId) + .cell(true); if (teamId == "" || isArchived == 1) { diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js index 5b3ec6b0fb2..c2d3d1fee36 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js @@ -1,11 +1,8 @@ import("system.vars"); import("system.neon"); import("system.result"); -import("Sql_lib"); -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); - -result.string(teamId != "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file +result.string(vars.exists("$param.MST_TeamId_param") && vars.get("$param.MST_TeamId_param") + ? neon.COMPONENTSTATE_DISABLED + : neon.COMPONENTSTATE_EDITABLE +); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js index 12b3c6edaaa..c2d3d1fee36 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js @@ -1,11 +1,8 @@ import("system.vars"); import("system.neon"); import("system.result"); -import("Sql_lib"); -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); - -result.string(teamId != "" ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file +result.string(vars.exists("$param.MST_TeamId_param") && vars.get("$param.MST_TeamId_param") + ? neon.COMPONENTSTATE_DISABLED + : neon.COMPONENTSTATE_EDITABLE +); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js new file mode 100644 index 00000000000..90deb206fd1 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js @@ -0,0 +1,20 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; + +var isArchived = newSelect("IS_ARCHIVED") + .from("MST_TEAM") + .whereIfSet("MST_TEAM.MST_TEAMID", teamId) + .cell(true); + +if (teamId == "" || isArchived == 1) +{ + result.string(neon.COMPONENTSTATE_DISABLED); +} +else +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js index 9bc72a1c164..90deb206fd1 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js @@ -3,15 +3,12 @@ import("system.neon"); import("system.result"); import("Sql_lib"); -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); - +var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; + var isArchived = newSelect("IS_ARCHIVED") .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); + .whereIfSet("MST_TEAM.MST_TEAMID", teamId) + .cell(true); if (teamId == "" || isArchived == 1) { @@ -19,5 +16,5 @@ if (teamId == "" || isArchived == 1) } else { -result.string(neon.COMPONENTSTATE_EDITABLE); -} + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js new file mode 100644 index 00000000000..7e7282b01af --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("system.neon"); + +var rowId = vars.get("$param.ObjectRowId_param"); +var teamId = vars.get("$param.MST_TeamId_param"); + +neon.openContext("MSTTeam", "MSTTeamEditMembers_view", [teamId], neon.OPERATINGSTATE_EDIT, { + "SalesprojectId_param" : rowId +}); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js index a677c8bdded..724a77951db 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js @@ -3,15 +3,12 @@ import("system.neon"); import("system.result"); import("Sql_lib"); -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); +var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; var isArchived = newSelect("IS_ARCHIVED") .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); + .whereIfSet("MST_TEAM.MST_TEAMID", teamId) + .cell(true); if (teamId == "" || isArchived == 0) { diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js index 15e4ead9122..44ae892f222 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js @@ -2,9 +2,9 @@ import("system.neon"); import("system.result"); import("system.project"); -var isTeamsEnabled = project.getInstanceConfigValue(teamsIsEnabled, null); +var isTeamsEnabled = project.getInstanceConfigValue("teamsEnabled", null); -if(isTeamsEnabled) +if (isTeamsEnabled == "true") { result.string(neon.COMPONENTSTATE_EDITABLE); } diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 9eb593cb398..8dbbbb12297 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -269,6 +269,10 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/objecttype_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> + <entityParameter> + <name>MST_TeamId_param</name> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/mst_teamid_param/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> <entityActionField> diff --git a/entity/MSTTeam_entity/entityfields/membercomsumer/children/objectrowid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/members/children/mst_teamid_param/valueProcess.js similarity index 51% rename from entity/MSTTeam_entity/entityfields/membercomsumer/children/objectrowid_param/valueProcess.js rename to entity/Salesproject_entity/entityfields/members/children/mst_teamid_param/valueProcess.js index 90824419458..5abe4091396 100644 --- a/entity/MSTTeam_entity/entityfields/membercomsumer/children/objectrowid_param/valueProcess.js +++ b/entity/Salesproject_entity/entityfields/members/children/mst_teamid_param/valueProcess.js @@ -1,4 +1,4 @@ import("system.result"); import("system.vars"); -result.string(vars.get("$param.RowId_param")); \ No newline at end of file +result.string(vars.get("$field.MST_TEAM_ID")); \ No newline at end of file diff --git a/neonContext/MSTTeam/MSTTeam.aod b/neonContext/MSTTeam/MSTTeam.aod index dfbc6c73f30..7f715ccd447 100644 --- a/neonContext/MSTTeam/MSTTeam.aod +++ b/neonContext/MSTTeam/MSTTeam.aod @@ -14,5 +14,9 @@ <name>c13c234d-ee98-4a26-b7b1-8ee3a3829284</name> <view>MSTTeamPreview_view</view> </neonViewReference> + <neonViewReference> + <name>b1e14c73-f48f-43a7-a459-2aa0172d015b</name> + <view>MSTTeamEditMembers_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonContext/MSTTeamMember/MSTTeamMember.aod b/neonContext/MSTTeamMember/MSTTeamMember.aod index 776c9d9bfab..66b94ef39e0 100644 --- a/neonContext/MSTTeamMember/MSTTeamMember.aod +++ b/neonContext/MSTTeamMember/MSTTeamMember.aod @@ -13,5 +13,9 @@ <name>61588d12-3c0d-4181-93ae-90d7ad50ed6b</name> <view>MSTTeamMemberMultiEdit_view</view> </neonViewReference> + <neonViewReference> + <name>b740066a-2d33-4bc4-ba5f-3e4a68418575</name> + <view>MSTTeamMemberList_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonView/MSTTeamAddMembersEdit_view/MSTTeamAddMembersEdit_view.aod b/neonView/MSTTeamAddMembersEdit_view/MSTTeamAddMembersEdit_view.aod index 90b0562af47..265bfecca82 100644 --- a/neonView/MSTTeamAddMembersEdit_view/MSTTeamAddMembersEdit_view.aod +++ b/neonView/MSTTeamAddMembersEdit_view/MSTTeamAddMembersEdit_view.aod @@ -9,6 +9,16 @@ </boxLayout> </layout> <children> + <genericViewTemplate> + <name>TeamName</name> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>4d4e4438-63d7-463b-ba87-1b07c8fb046c</name> + <entityField>MST_TEAMNAME</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> <neonViewReference> <name>8de10b28-e1aa-46d9-9ac3-73cff46619fb</name> <entityField>Members</entityField> diff --git a/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod b/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod new file mode 100644 index 00000000000..37d7d19c886 --- /dev/null +++ b/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTTeamEditMembers_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Teamname</name> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>b17446e0-ad87-4098-8bd2-de716a8e12ae</name> + <entityField>TEAMNAME</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>189bbef9-e646-416a-835f-6348199dbd24</name> + <entityField>TeamMembers</entityField> + <view>MSTTeamMemberMultiEdit_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod b/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod new file mode 100644 index 00000000000..c6b2cf1b3eb --- /dev/null +++ b/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTTeamMemberList_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <titledListViewTemplate> + <name>List</name> + <entityField>#ENTITY</entityField> + <isDeletable v="false" /> + <isEditable v="false" /> + <isCreatable v="false" /> + <columns> + <neonTitledListTableColumn> + <name>20efb592-e94f-4f2c-87b5-fea410c4c28a</name> + <entityField>MEMBERNAME</entityField> + </neonTitledListTableColumn> + </columns> + </titledListViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod b/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod index e6877ceb903..11a12506b15 100644 --- a/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod +++ b/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod @@ -16,5 +16,10 @@ <entityField>#ENTITY</entityField> <isEditable v="false" /> </cardViewTemplate> + <neonViewReference> + <name>b8eda051-1e6f-4c8f-8ef2-2b14d95d90c8</name> + <entityField>TeamMembers</entityField> + <view>MSTTeamMemberList_view</view> + </neonViewReference> </children> </neonView> diff --git a/process/Employee_lib/process.js b/process/Employee_lib/process.js index 5a89f59926f..ee52c6b5765 100644 --- a/process/Employee_lib/process.js +++ b/process/Employee_lib/process.js @@ -143,6 +143,10 @@ EmployeeUtils.hasRelations = function (pContactId) */ EmployeeUtils.isUser = function (pContactId) { - var user = tools.getUserByAttribute(tools.CONTACTID, pContactId); - return user != null; + return EmployeeUtils.getUserByContactId(pContactId) != null; +} + +EmployeeUtils.getUserByContactId = function (pContactId) +{ + return tools.getUserByAttribute(tools.CONTACTID, pContactId); } \ No newline at end of file -- GitLab From 4e7a711ec2ccf22813e4bfc2a14bd0b1f68755c4 Mon Sep 17 00:00:00 2001 From: "M.Bilda" <m.bilda@adito.de> Date: Fri, 17 Jul 2020 12:51:17 +0200 Subject: [PATCH 009/184] 1060809 - changed stateProcess to invisable --- .../entityfields/mst_teamactions/stateProcess.js | 2 +- .../entityfields/msteamsactiongroup/stateProcess.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js b/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js index 44ae892f222..dcb3c04ef9b 100644 --- a/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js +++ b/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js @@ -10,5 +10,5 @@ if (isTeamsEnabled == "true") } else { - result.string(neon.COMPONENTSTATE_DISABLED); + result.string(neon.COMPONENTSTATE_INVISIBLE); } \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js index 44ae892f222..dcb3c04ef9b 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js @@ -10,5 +10,5 @@ if (isTeamsEnabled == "true") } else { - result.string(neon.COMPONENTSTATE_DISABLED); + result.string(neon.COMPONENTSTATE_INVISIBLE); } \ No newline at end of file -- GitLab From 453fdfbe8f5fd1817462eff47c860d6721ae37bb Mon Sep 17 00:00:00 2001 From: "M.Bilda" <m.bilda@adito.de> Date: Fri, 17 Jul 2020 12:58:18 +0200 Subject: [PATCH 010/184] 1060809 - changed StateProcess --- .../Activity_entity/entityfields/mst_teamactions/stateProcess.js | 1 + 1 file changed, 1 insertion(+) diff --git a/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js b/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js index dcb3c04ef9b..5442a044cca 100644 --- a/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js +++ b/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js @@ -11,4 +11,5 @@ if (isTeamsEnabled == "true") else { result.string(neon.COMPONENTSTATE_INVISIBLE); + result.string(neon.COMPONENTSTATE_INVISIBLE); } \ No newline at end of file -- GitLab From d628a762c254ff7e84b6b9a7e054e9c515face24 Mon Sep 17 00:00:00 2001 From: "M.Bilda" <m.bilda@adito.de> Date: Thu, 23 Jul 2020 08:09:21 +0200 Subject: [PATCH 011/184] 1060809 - added WebUrl to Database --- aliasDefinition/Data_alias/Data_alias.aod | 132 ++++++++++++++++++ .../recordcontainers/jdito/onInsert.js | 3 +- 2 files changed, 134 insertions(+), 1 deletion(-) diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index c7037b6dddf..48617b00935 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -3647,6 +3647,20 @@ </customStringProperty> </customProperties> </entityFieldDb> + <entityFieldDb> + <name>MST_TEAM_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -14150,6 +14164,124 @@ </entityFieldDb> </entityFields> </entityDb> + <entityDb> + <name>MST_TEAM</name> + <dbName></dbName> + <idColumn>MST_TEAMID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>OBJECT_ROWID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>MST_TEAMID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>IS_ARCHIVED</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="5" /> + <size v="5" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>SERVICE_URL</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="255" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>TEAMNAME</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="255" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>GENERAL_CHANNELID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="48" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>WEB_URL</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="500" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> </entities> </entityGroup> </aliasDefDb> diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js index 9e9c547d317..ed2b033b329 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -65,7 +65,8 @@ new SqlBuilder().insertFields({ "MST_TEAMID" : mstTeam.teamId, "TEAMNAME" : mstTeam.teamName, "GENERAL_CHANNELID" : mstTeam.generalChannelId, - "IS_ARCHIVED" : 0 + "IS_ARCHIVED" : 0, + "WEB_URL" : mstTeam.webUrl }, "MST_TEAM"); newWhere("SALESPROJECT.SALESPROJECTID", "$param.SalesprojectId_param") -- GitLab From 39971d02d510c9912dbd4c75cf9f7fa0701b0add Mon Sep 17 00:00:00 2001 From: "M.Bilda" <m.bilda@adito.de> Date: Thu, 23 Jul 2020 09:04:06 +0200 Subject: [PATCH 012/184] 1060809 - addApp onActionProcess; changed Saleproject onUpdate Process --- entity/Member_entity/Member_entity.aod | 1 + .../children/addapp/onActionProcess.js | 9 ++++----- .../children/editteam/stateProcess.js | 20 +++++++++++++++++++ .../recordcontainers/db/onDBUpdate.js | 4 ++-- process/mstws/process.js | 8 ++++---- 5 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index f3d8bec1a1e..a89ad712faa 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -221,6 +221,7 @@ <title>Edit Teams Group</title> <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js</onActionProcess> <iconId>NEON:PENCIL</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js</stateProcess> </entityActionField> <entityActionField> <name>addNewMember</name> diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js index 3fd67199f22..3d6b006adc0 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js @@ -1,13 +1,12 @@ import("system.teams"); import("Sql_lib"); import("system.project"); -import("system.logging"); - var teamId = newSelect("MST_TEAM_ID") - .from("SALEPROJECT") - .where("SALESPORJECT.SALESPROJECTID", "$param.ObjectRowId_param") + .from("SALESPROJECT") + .where("SALESPROJECT.SALESPROJECTID", "$param.ObjectRowId_param") .cell(); var appId = project.getInstanceConfigValue("teamsAppId", null); -teams.addApp(teamId, appId) \ No newline at end of file +if(appId != null) + teams.addApp(teamId, appId) \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js new file mode 100644 index 00000000000..90deb206fd1 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js @@ -0,0 +1,20 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; + +var isArchived = newSelect("IS_ARCHIVED") + .from("MST_TEAM") + .whereIfSet("MST_TEAM.MST_TEAMID", teamId) + .cell(true); + +if (teamId == "" || isArchived == 1) +{ + result.string(neon.COMPONENTSTATE_DISABLED); +} +else +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js index d11c2d44208..ccbc8268c32 100644 --- a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js @@ -100,12 +100,12 @@ vars.get("$local.changed").forEach(function(fieldName) { var serviceUrl = newSelect("SERVICE_URL") .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$field.SALESPROJECTID") + .where("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID") .cell(); var channelId = newSelect("GENERAL_CHANNELID") .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$field.SALESPROJECTID") + .where("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID") .cell(); if(serviceUrl) diff --git a/process/mstws/process.js b/process/mstws/process.js index 8057882a27f..09a50633a5b 100644 --- a/process/mstws/process.js +++ b/process/mstws/process.js @@ -19,13 +19,13 @@ function restpost(pRequestAsJson) var serviceUrl = jsonBody.serviceUrl; //Wenn dies der InitalRequest ist (dieser erfolgt, wenn die APP hinzugefügt wird), speichere die ServiceUrl in die DB - if(eventType == "teamMemberAdded" && who == "AditoBot") + if(eventType == "teamMemberAdded" && who == "ADITO Bot") { newWhere("MST_TEAM.MST_TEAMID", teamId) .updateFields({"SERVICE_URL" : serviceUrl}); } //Sollte jemand die APP manuell wieder entfernen, gibt es einen "AbschiedsRequest", lösche die ServiceUrl aus der DB - if(eventType == "teamMemberRemoved" && who == "AditoBot") + if(eventType == "teamMemberRemoved" && who == "ADITO Bot") { newWhere("MST_TEAM.MST_TEAMID", teamId) .updateFields({"SERVICE_URL" : ""}); @@ -38,11 +38,11 @@ function restpost(pRequestAsJson) if(type != "message") //Wenn Request keine Message war dann ignorieren return pRequestAsJson; - var text = jsonBody.text; + var message = jsonBody.text; var from = jsonBody.from.name; //Testzwecke (nachträglich entfernen) - logging.log(text); + logging.log(message); logging.log(from); //Da alle Aufgaben, wie zum Beispiel: Ticket erstellen, Aufgabe erstellen usw. in JDiTO erledigt werden können, -- GitLab From 70e425c69f96a9fa3d34719ec76d4ff836bedea5 Mon Sep 17 00:00:00 2001 From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local> Date: Thu, 23 Jul 2020 12:03:13 +0200 Subject: [PATCH 013/184] #1060809 MS Teams actions --- .../MSTChooseTeam_entity.aod | 1 - .../recordcontainers/jdito/onInsert.js | 6 +-- entity/MSTTeam2_entity/MSTTeam2_entity.aod | 43 ------------------- .../recordcontainers/jdito/contentProcess.js | 12 ------ .../member/displayValueProcess.js | 7 ++- .../recordcontainers/jdito/onDelete.js | 1 + entity/MSTTeam_entity/MSTTeam_entity.aod | 14 ++++++ .../isarchived/dropDownProcess.js | 7 +++ .../entityfields/teammembers/stateProcess.js | 5 +++ entity/MSTTeam_entity/grantDeleteProcess.js | 4 ++ entity/MSTTeam_entity/grantUpdateProcess.js | 4 ++ .../recordcontainers/jdito/contentProcess.js | 42 ++++++++++++++++-- .../recordcontainers/jdito/onDelete.js | 8 ++++ entity/Member_entity/Member_entity.aod | 2 + .../children/addapp/onActionProcess.js | 11 ++--- .../children/addnewmember/stateProcess.js | 40 ++++++++--------- .../children/chooseteam/onActionProcess.js | 2 +- .../children/deletemember/stateProcess.js | 40 ++++++++--------- .../children/deleteteam/onActionProcess.js | 36 ++++------------ .../children/restoreteam/onActionProcess.js | 29 ++++--------- .../Salesproject_entity.aod | 3 ++ .../mst_team_id/displayValueProcess.js | 7 +++ .../entityfields/mst_team_id/stateProcess.js | 5 +++ .../MSTTeamPreview_view.aod | 13 ++++++ 24 files changed, 182 insertions(+), 160 deletions(-) delete mode 100644 entity/MSTTeam2_entity/MSTTeam2_entity.aod delete mode 100644 entity/MSTTeam2_entity/recordcontainers/jdito/contentProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js create mode 100644 entity/MSTTeam_entity/grantDeleteProcess.js create mode 100644 entity/MSTTeam_entity/grantUpdateProcess.js create mode 100644 entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js create mode 100644 entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js create mode 100644 entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js diff --git a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod index 6079bbe7b73..0857d6c94d4 100644 --- a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod +++ b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod @@ -33,7 +33,6 @@ <jDitoRecordContainer> <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <isPageable v="true" /> <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> <recordFieldMappings> diff --git a/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js index 21cd422946c..2d238645284 100644 --- a/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js @@ -16,9 +16,9 @@ if(teamIdAndName) var channelId = teams.getGeneralChannelId(teamId); var mstTeamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.MST_TEAMID", teamId) - .cell(); + .from("MST_TEAM") + .where("MST_TEAM.MST_TEAMID", teamId) + .cell(); if (!mstTeamId) { diff --git a/entity/MSTTeam2_entity/MSTTeam2_entity.aod b/entity/MSTTeam2_entity/MSTTeam2_entity.aod deleted file mode 100644 index 5267111150c..00000000000 --- a/entity/MSTTeam2_entity/MSTTeam2_entity.aod +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> - <name>MSTTeam2_entity</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <recordContainer>jdito</recordContainer> - <entityFields> - <entityProvider> - <name>#PROVIDER</name> - </entityProvider> - <entityField> - <name>MEMBERS</name> - </entityField> - <entityField> - <name>OWNER</name> - <selectionMode>MULTI</selectionMode> - </entityField> - <entityProvider> - <name>Members2</name> - <recordContainer>jdito</recordContainer> - </entityProvider> - <entityField> - <name>UID</name> - </entityField> - </entityFields> - <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/MSTTeam2_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>OWNER.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>MEMBERS.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> - </recordContainers> -</entity> diff --git a/entity/MSTTeam2_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeam2_entity/recordcontainers/jdito/contentProcess.js deleted file mode 100644 index 06d65a53088..00000000000 --- a/entity/MSTTeam2_entity/recordcontainers/jdito/contentProcess.js +++ /dev/null @@ -1,12 +0,0 @@ -import("system.result"); -import("system.teams"); -import("system.util"); -import("system.vars"); - -var myDataArray = []; - -myDataArray.push([util.getNewUUID(), false, "mbilda@adito.de"]); -myDataArray.push([util.getNewUUID(), false, "marco@mbsolution2.onmicrosoft.com"]); - -result.object(myDataArray); - diff --git a/entity/MSTTeamMember_entity/entityfields/member/displayValueProcess.js b/entity/MSTTeamMember_entity/entityfields/member/displayValueProcess.js index 7100366cb2e..524ecbbf750 100644 --- a/entity/MSTTeamMember_entity/entityfields/member/displayValueProcess.js +++ b/entity/MSTTeamMember_entity/entityfields/member/displayValueProcess.js @@ -1,5 +1,10 @@ import("system.result"); import("system.vars"); +import("Contact_lib"); if (vars.get("$field.MEMBERNAME")) - result.string(vars.get("$field.MEMBERNAME")); \ No newline at end of file + result.string(vars.get("$field.MEMBERNAME")); +else +{ + result.string(ContactUtils.getTitleByContactId(vars.get("$field.MEMBER"))); +} \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js index d2ca20dd991..03dee90e18e 100644 --- a/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js @@ -1 +1,2 @@ +//deletion is done in the MSTTeam_entity var e = "e"; \ No newline at end of file diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod index 07657f65968..20de4a24fd9 100644 --- a/entity/MSTTeam_entity/MSTTeam_entity.aod +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -4,7 +4,10 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <siblings> <element>Salesproject_entity</element> + <element>Member_entity</element> </siblings> + <grantUpdateProcess>%aditoprj%/entity/MSTTeam_entity/grantUpdateProcess.js</grantUpdateProcess> + <grantDeleteProcess>%aditoprj%/entity/MSTTeam_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/MSTTeam_entity/contentTitleProcess.js</contentTitleProcess> <recordContainer>jdito</recordContainer> <entityFields> @@ -26,6 +29,7 @@ <entityField> <name>TEAMNAME</name> <title>Name</title> + <mandatory v="true" /> <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teamname/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js</valueProcess> </entityField> @@ -53,6 +57,7 @@ </entityParameter> <entityConsumer> <name>TeamMembers</name> + <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>MSTTeamMember_entity</entityName> @@ -72,6 +77,11 @@ <entityField> <name>TEAMID_AND_NAME</name> </entityField> + <entityField> + <name>ISARCHIVED</name> + <title>Archived</title> + <dropDownProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js</dropDownProcess> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -82,6 +92,7 @@ <contentProcess>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <onInsert>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> <onUpdate>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js</onUpdate> + <onDelete>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js</onDelete> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> @@ -95,6 +106,9 @@ <jDitoRecordFieldMapping> <name>DESCRIPTION.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ISARCHIVED.value</name> + </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> </recordContainers> diff --git a/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js b/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js new file mode 100644 index 00000000000..f77d640ef1d --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.translate"); + +result.object([ + ["true", translate.text("Yes")], + ["false", translate.text("No")] +]); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js new file mode 100644 index 00000000000..9f48c47fee7 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +result.string(vars.get("$field.ISARCHIVED") == "true" ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/MSTTeam_entity/grantDeleteProcess.js b/entity/MSTTeam_entity/grantDeleteProcess.js new file mode 100644 index 00000000000..5ecf6e451e5 --- /dev/null +++ b/entity/MSTTeam_entity/grantDeleteProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(vars.get("$field.ISARCHIVED") != "true"); \ No newline at end of file diff --git a/entity/MSTTeam_entity/grantUpdateProcess.js b/entity/MSTTeam_entity/grantUpdateProcess.js new file mode 100644 index 00000000000..5ecf6e451e5 --- /dev/null +++ b/entity/MSTTeam_entity/grantUpdateProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(vars.get("$field.ISARCHIVED") != "true"); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js index 9a7d5c85c9e..8bfa01a4579 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js @@ -17,10 +17,40 @@ var teamsArray = []; if (vars.get("$local.idvalues")) { + var teamInfoLoader = { + normalTeams : allTeams, + archivedTeams : null, + getTeamInfo : function (pTeamId) + { + if (pTeamId in this.normalTeams) + { + return { + name : this.normalTeams[pTeamId], + isArchived : false + }; + } + + if (this.archivedTeams == null) + this.archivedTeams = teams.getAllArchivedTeams(null); + + return { + name : this.archivedTeams[pTeamId] || "", + isArchived : pTeamId in this.archivedTeams + }; + } + }; + teamsArray = vars.get("$local.idvalues").map(function (teamId) { - var idAndName = JSON.stringify([teamId, allTeams[teamId]]); - return [teamId, allTeams[teamId], idAndName, ""]; + var teamInfo = teamInfoLoader.getTeamInfo(teamId); + var idAndName = JSON.stringify([teamId, teamInfo.name]); + return [ + teamId, + teamInfo.name, + idAndName, + "", + teamInfo.isArchived + ]; }); } else @@ -28,7 +58,13 @@ else for (let teamId in allTeams) { var idAndName = JSON.stringify([teamId, allTeams[teamId]]); - teamsArray.push([teamId, allTeams[teamId], idAndName, ""]); + teamsArray.push([ + teamId, + allTeams[teamId], + idAndName, + "", + false + ]); } } diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js b/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js new file mode 100644 index 00000000000..ed8e457d4a8 --- /dev/null +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.teams"); +import("Sql_lib"); + +var teamId = vars.get("$field.UID"); +teams.archiveTeam(teamId); +newWhere("MST_TEAM.MST_TEAMID", teamId) + .updateFields({"IS_ARCHIVED" : "1"}); \ No newline at end of file diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index a89ad712faa..f7e8a3c0a24 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -228,6 +228,7 @@ <title>Add members</title> <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js</onActionProcess> <iconId>VAADIN:USER</iconId> + <state>INVISIBLE</state> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js</stateProcess> <tooltip>Fügt neue Member zum Team hinzu</tooltip> </entityActionField> @@ -235,6 +236,7 @@ <name>deleteMember</name> <title>Delete members</title> <iconId>VAADIN:USER</iconId> + <state>INVISIBLE</state> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js</stateProcess> </entityActionField> <entityActionField> diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js index 3d6b006adc0..9ec4d7bd685 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js @@ -1,12 +1,7 @@ import("system.teams"); -import("Sql_lib"); import("system.project"); +import("system.vars"); -var teamId = newSelect("MST_TEAM_ID") - .from("SALESPROJECT") - .where("SALESPROJECT.SALESPROJECTID", "$param.ObjectRowId_param") - .cell(); - var appId = project.getInstanceConfigValue("teamsAppId", null); -if(appId != null) - teams.addApp(teamId, appId) \ No newline at end of file +if (appId != null) + teams.addApp(vars.get("$param.MST_TeamId_param"), appId); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js index 90deb206fd1..3927f9c0557 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js @@ -1,20 +1,20 @@ -import("system.vars"); -import("system.neon"); -import("system.result"); -import("Sql_lib"); - -var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; - -var isArchived = newSelect("IS_ARCHIVED") - .from("MST_TEAM") - .whereIfSet("MST_TEAM.MST_TEAMID", teamId) - .cell(true); - -if (teamId == "" || isArchived == 1) -{ - result.string(neon.COMPONENTSTATE_DISABLED); -} -else -{ - result.string(neon.COMPONENTSTATE_EDITABLE); -} \ No newline at end of file +//import("system.vars"); +//import("system.neon"); +//import("system.result"); +//import("Sql_lib"); +// +//var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; +// +//var isArchived = newSelect("IS_ARCHIVED") +// .from("MST_TEAM") +// .whereIfSet("MST_TEAM.MST_TEAMID", teamId) +// .cell(true); +// +//if (teamId == "" || isArchived == 1) +//{ +// result.string(neon.COMPONENTSTATE_DISABLED); +//} +//else +//{ +// result.string(neon.COMPONENTSTATE_EDITABLE); +//} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js index 0583cd17a0e..2f2ae94d38c 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js @@ -4,5 +4,5 @@ import("system.teams"); import("system.logging"); neon.openContext("MSTChooseTeam", null, null, neon.OPERATINGSTATE_NEW, { - "SalesprojectId_param" : vars.get("$field.OBJECT_ROWID") + "SalesprojectId_param" : vars.get("$param.ObjectRowId_param") }); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js index 90deb206fd1..3927f9c0557 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js @@ -1,20 +1,20 @@ -import("system.vars"); -import("system.neon"); -import("system.result"); -import("Sql_lib"); - -var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; - -var isArchived = newSelect("IS_ARCHIVED") - .from("MST_TEAM") - .whereIfSet("MST_TEAM.MST_TEAMID", teamId) - .cell(true); - -if (teamId == "" || isArchived == 1) -{ - result.string(neon.COMPONENTSTATE_DISABLED); -} -else -{ - result.string(neon.COMPONENTSTATE_EDITABLE); -} \ No newline at end of file +//import("system.vars"); +//import("system.neon"); +//import("system.result"); +//import("Sql_lib"); +// +//var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; +// +//var isArchived = newSelect("IS_ARCHIVED") +// .from("MST_TEAM") +// .whereIfSet("MST_TEAM.MST_TEAMID", teamId) +// .cell(true); +// +//if (teamId == "" || isArchived == 1) +//{ +// result.string(neon.COMPONENTSTATE_DISABLED); +//} +//else +//{ +// result.string(neon.COMPONENTSTATE_EDITABLE); +//} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js index 7e196630c9a..d4fd1f58184 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js @@ -1,31 +1,13 @@ import("system.teams"); import("Sql_lib"); -import("system.datetime") +import("system.vars"); +import("system.neon"); - -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ObjectRowId_param") - .cell(); - - -//Hat dieses Team mehrere Projekte?? -var teamIds = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.MST_TEAMID", teamId) - .arrayColumn(); - -teams.archiveTeam(teamId); - -for (var i = 0; i<teamIds.length; i++) +var teamId = vars.get("$param.MST_TeamId_param"); +if (teamId) { - var finalDeleteDate = datetime.date() + (datetime.ONE_DAY * 30); - - newWhere("MST_TEAM.MST_TEAMID", teamIds[i]) - .updateFields({ - "IS_ARCHIVED" : "1", - "FINAL_DELETE_DATE" : finalDeleteDate - }); -} - - + teams.archiveTeam(teamId); + newWhere("MST_TEAM.MST_TEAMID", teamId) + .updateFields({"IS_ARCHIVED" : "1"}); + neon.refreshAll(); +} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js index b67caa38262..0333cfcd2cc 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js @@ -1,26 +1,13 @@ -import("system.vars"); import("system.teams"); import("Sql_lib"); +import("system.vars"); import("system.neon"); - -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", vars.get("$field.OBJECT_ROWID")) - .cell(); - -//Hat dieses Team mehrere Projekte?? -var teamIds = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.MST_TEAMID", teamId).arrayRow(); - -teams.unarchiveTeam(teamId); - -for(var i = 0; i<teamIds.length; i++) -{ - newWhere("MST_TEAM.MST_TEAMID", teamIds[i]) - .updateFields({ - "IS_ARCHIVED" : "0", - "FINAL_DELETE_DATE" : "" - }); +var teamId = vars.get("$param.MST_TeamId_param"); +if (teamId) +{ + teams.unarchiveTeam(teamId); + newWhere("MST_TEAM.MST_TEAMID", teamId) + .updateFields({"IS_ARCHIVED" : "0"}); + neon.refreshAll(); } \ No newline at end of file diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 8dbbbb12297..a185c389fad 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -6,6 +6,7 @@ <title>Sales Project</title> <siblings> <element>SalesprojectMilestone_entity</element> + <element>Member_entity</element> </siblings> <grantDeleteProcess>%aditoprj%/entity/Salesproject_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Salesproject_entity/contentTitleProcess.js</contentTitleProcess> @@ -758,6 +759,8 @@ <title>Teams group</title> <linkedContext>MSTTeam</linkedContext> <state>READONLY</state> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js</stateProcess> + <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>COUNT</name> diff --git a/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js b/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js new file mode 100644 index 00000000000..daf9387bb01 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("Sql_lib"); + +result.string(newSelect("TEAMNAME") + .from("MST_TEAM") + .whereIfSet("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID") + .cell(true)); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js b/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js new file mode 100644 index 00000000000..ddf69aa437e --- /dev/null +++ b/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +result.string(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_READONLY); \ No newline at end of file diff --git a/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod b/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod index 11a12506b15..5932326dc88 100644 --- a/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod +++ b/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod @@ -16,6 +16,19 @@ <entityField>#ENTITY</entityField> <isEditable v="false" /> </cardViewTemplate> + <genericViewTemplate> + <name>Info</name> + <showDrawer v="true" /> + <drawerCaption>Details</drawerCaption> + <entityField>#ENTITY</entityField> + <isEditable v="false" /> + <fields> + <entityFieldLink> + <name>2a40804f-ea89-4345-b075-a6eef5fe9961</name> + <entityField>ISARCHIVED</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> <neonViewReference> <name>b8eda051-1e6f-4c8f-8ef2-2b14d95d90c8</name> <entityField>TeamMembers</entityField> -- GitLab From fc6a2b82f3f22c5898609acc56081fa613acea01 Mon Sep 17 00:00:00 2001 From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local> Date: Wed, 29 Jul 2020 11:55:23 +0200 Subject: [PATCH 014/184] 1060809 MS Teams document and message import --- entity/Activity_entity/Activity_entity.aod | 1 + entity/Document_entity/Document_entity.aod | 18 ++++++++-- .../synchronizedocuments/onActionProcess.js | 11 ++---- .../synchronizedocuments/stateProcess.js | 21 +++--------- .../entityfields/msteam/stateProcess.js | 7 ++++ .../MSTTeamActivityImport_entity.aod | 15 ++++++++ .../children/teamid_param/valueProcess.js | 3 +- .../loadnextmessages/onActionProcess.js | 5 +++ .../children/loadnext_param/valueProcess.js | 4 +++ .../children/teamid_param/valueProcess.js | 3 +- .../entityfields/team_id/valueProcess.js | 8 ++--- .../recordcontainers/jdito/onInsert.js | 0 .../MSTTeamChannel_entity.aod | 12 +++++++ .../MSTTeamDocument_entity.aod | 31 ++++++++++++----- .../allchannels/dropDownProcess.js | 26 -------------- .../children/teamid_param/valueProcess.js | 4 +++ .../entityfields/documents/dropDownProcess.js | 34 +++++++------------ .../recordcontainers/jdito/onInsert.js | 20 +++-------- .../MSTTeamsMessage_entity.aod | 10 +++--- .../loadnext_param/documentation.adoc | 3 ++ .../loadoldermessages/onActionProcess.js | 6 ---- .../recordcontainers/jdito/contentProcess.js | 10 +++--- .../Salesproject_entity.aod | 4 +++ .../children/mstteamid_param/valueProcess.js | 4 +++ .../MSTTeamActivityImportEdit_view.aod | 12 +++++-- .../MSTTeamDocumentEdit_view.aod | 8 ++--- .../MSTTeamsMessageFilter_view.aod | 7 ---- 27 files changed, 149 insertions(+), 138 deletions(-) create mode 100644 entity/Document_entity/entityfields/msteam/stateProcess.js create mode 100644 entity/MSTTeamActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js create mode 100644 entity/MSTTeamActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js create mode 100644 entity/MSTTeamActivityImport_entity/recordcontainers/jdito/onInsert.js delete mode 100644 entity/MSTTeamDocument_entity/entityfields/allchannels/dropDownProcess.js create mode 100644 entity/MSTTeamDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js create mode 100644 entity/MSTTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc delete mode 100644 entity/MSTTeamsMessage_entity/entityfields/loadoldermessages/onActionProcess.js create mode 100644 entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index dfa81e67e6a..7f288315562 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -592,6 +592,7 @@ </entityConsumer> <entityActionGroup> <name>MST_TeamActions</name> + <title>MS Teams</title> <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js</stateProcess> <children> <entityActionField> diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod index 15883a25940..ece972eadd5 100644 --- a/entity/Document_entity/Document_entity.aod +++ b/entity/Document_entity/Document_entity.aod @@ -314,6 +314,10 @@ <name>DisallowCreate_param</name> <expose v="false" /> </entityParameter> + <entityParameter> + <name>MSTTeamId_param</name> + <expose v="false" /> + </entityParameter> </children> </entityProvider> <entityParameter> @@ -341,20 +345,30 @@ <valueProcess>%aditoprj%/entity/Document_entity/entityfields/singledocument/children/disallowcreate_param/valueProcess.js</valueProcess> <expose v="false" /> </entityParameter> + <entityParameter> + <name>MSTTeamId_param</name> + <expose v="false" /> + </entityParameter> </children> </entityProvider> <entityActionGroup> <name>MSTeam</name> + <title>MS Teams</title> + <stateProcess>%aditoprj%/entity/Document_entity/entityfields/msteam/stateProcess.js</stateProcess> <children> <entityActionField> <name>synchronizeDocuments</name> - <title>Dateien synchronisieren</title> + <title>Synchronize documents</title> <onActionProcess>%aditoprj%/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js</onActionProcess> + <iconId>VAADIN:REFRESH</iconId> <stateProcess>%aditoprj%/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js</stateProcess> - <tooltip>Synchronisiert die Dokumente der Datenbank mit den Dokumenten von MSTeams</tooltip> </entityActionField> </children> </entityActionGroup> + <entityParameter> + <name>MSTTeamId_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js index e9608493005..97975318752 100644 --- a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js +++ b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js @@ -1,14 +1,9 @@ -import("system.teams"); +import("system.neon"); import("system.vars"); -import("system.db"); -import("system.util") -import("Sql_lib"); -import("system.net") - -var rowId = vars.get("$param.AssignmentRowId_param"); neon.openContext("MSTTeamDocument", null, null, neon.OPERATINGSTATE_NEW, { - "ObjectRowId_param" : rowId, + "MSTTeamId_param" : vars.get("$param.MSTTeamId_param"), + "ObjectRowId_param" : vars.get("$param.AssignmentRowId_param"), "AssignmentName_param" : vars.get("$param.AssignmentName_param"), "AssignmentTable_param" : vars.get("$param.AssignmentTable_param") }); diff --git a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js index 7350dbf89fd..38e484f314e 100644 --- a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js +++ b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js @@ -2,23 +2,10 @@ import("system.vars"); import("system.neon"); import("system.result"); import("Sql_lib"); -import("system.logging"); -var teamId = newSelect("MST_TEAMID", "Data_alias") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.AssignmentRowId_param") - .cell(); - var isArchived = newSelect("IS_ARCHIVED", "Data_alias") .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.AssignmentRowId_param") - .cell(); - -if (teamId == "" || isArchived == 1) -{ - result.string(neon.COMPONENTSTATE_INVISIBLE); -} -else -{ - result.string(neon.COMPONENTSTATE_EDITABLE); -} \ No newline at end of file + .where("MST_TEAM.MST_TEAMID", "$param.MSTTeamId_param") + .cell() == "1"; + +result.string(isArchived ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Document_entity/entityfields/msteam/stateProcess.js b/entity/Document_entity/entityfields/msteam/stateProcess.js new file mode 100644 index 00000000000..cd16b069466 --- /dev/null +++ b/entity/Document_entity/entityfields/msteam/stateProcess.js @@ -0,0 +1,7 @@ +import("system.neon"); +import("system.result"); +import("system.vars"); + +result.string(vars.exists("$param.MSTTeamId_param") && vars.get("$param.MSTTeamId_param") + ? neon.COMPONENTSTATE_EDITABLE + : neon.COMPONENTSTATE_INVISIBLE); \ No newline at end of file diff --git a/entity/MSTTeamActivityImport_entity/MSTTeamActivityImport_entity.aod b/entity/MSTTeamActivityImport_entity/MSTTeamActivityImport_entity.aod index a952bdad14e..4cc35c57b22 100644 --- a/entity/MSTTeamActivityImport_entity/MSTTeamActivityImport_entity.aod +++ b/entity/MSTTeamActivityImport_entity/MSTTeamActivityImport_entity.aod @@ -12,6 +12,7 @@ </entityField> <entityConsumer> <name>Messages</name> + <selectionMode>MULTI</selectionMode> <dependency> <name>dependency</name> <entityName>MSTTeamsMessage_entity</entityName> @@ -26,6 +27,10 @@ <name>TeamId_param</name> <valueProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>LoadNext_param</name> + <valueProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> <entityField> @@ -55,12 +60,22 @@ </entityParameter> </children> </entityConsumer> + <entityActionField> + <name>loadNextMessages</name> + <title>Load older messages</title> + <onActionProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CLOCK</iconId> + </entityActionField> + <entityField> + <name>LOAD_ID</name> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> <contentProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTTeamActivityImport_entity/recordcontainers/jdito/onInsert.js</onInsert> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> diff --git a/entity/MSTTeamActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js b/entity/MSTTeamActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js index 9b96bab31a3..e6f0ee80bb8 100644 --- a/entity/MSTTeamActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js +++ b/entity/MSTTeamActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js @@ -1,5 +1,4 @@ import("system.result"); import("system.vars"); -result.string("9290a0c1-fab2-4fcc-8a7a-37f3154f67a1"); -//result.string(vars.get("$field.TEAM_ID")); \ No newline at end of file +result.string(vars.get("$field.TEAM_ID")); \ No newline at end of file diff --git a/entity/MSTTeamActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js b/entity/MSTTeamActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js new file mode 100644 index 00000000000..05f69f965eb --- /dev/null +++ b/entity/MSTTeamActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js @@ -0,0 +1,5 @@ +import("system.neon"); +import("system.util"); + +//set a new random ID to reload the messages consumer +neon.setFieldValue("$field.LOAD_ID", util.getNewUUID()); \ No newline at end of file diff --git a/entity/MSTTeamActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js b/entity/MSTTeamActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js new file mode 100644 index 00000000000..f83604cf167 --- /dev/null +++ b/entity/MSTTeamActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(vars.get("$field.LOAD_ID")); \ No newline at end of file diff --git a/entity/MSTTeamActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js b/entity/MSTTeamActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js index bdaa415f859..9eed4861845 100644 --- a/entity/MSTTeamActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js +++ b/entity/MSTTeamActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js @@ -1,5 +1,4 @@ import("system.vars"); import("system.result"); -result.string("9290a0c1-fab2-4fcc-8a7a-37f3154f67a1"); -//result.string(vars.get("$field.TEAM_ID")); \ No newline at end of file +result.string(vars.get("$field.TEAM_ID")); \ No newline at end of file diff --git a/entity/MSTTeamActivityImport_entity/entityfields/team_id/valueProcess.js b/entity/MSTTeamActivityImport_entity/entityfields/team_id/valueProcess.js index 87cf4c45576..6fa5f68e8e8 100644 --- a/entity/MSTTeamActivityImport_entity/entityfields/team_id/valueProcess.js +++ b/entity/MSTTeamActivityImport_entity/entityfields/team_id/valueProcess.js @@ -1,9 +1,9 @@ import("system.result"); import("Sql_lib"); -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.RowId_param") +var teamId = newSelect("MST_TEAM_ID") + .from("SALESPROJECT") + .where("SALESPROJECT.SALESPROJECTID", "$param.RowId_param") .cell(); - + result.string(teamId); \ No newline at end of file diff --git a/entity/MSTTeamActivityImport_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeamActivityImport_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod b/entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod index b2f7ff1993c..eea930f8279 100644 --- a/entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod +++ b/entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod @@ -31,6 +31,18 @@ <expose v="true" /> <mandatory v="true" /> </entityParameter> + <entityProvider> + <name>ChannelsByName</name> + <lookupIdfield>CHANNELNAME</lookupIdfield> + <dependencies> + <entityDependency> + <name>3dfb5be2-d956-4e8a-9aec-4c80b81e0527</name> + <entityName>MSTTeamDocument_entity</entityName> + <fieldName>Channels</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTTeamDocument_entity/MSTTeamDocument_entity.aod b/entity/MSTTeamDocument_entity/MSTTeamDocument_entity.aod index 5b396445a13..3d91cecf1cf 100644 --- a/entity/MSTTeamDocument_entity/MSTTeamDocument_entity.aod +++ b/entity/MSTTeamDocument_entity/MSTTeamDocument_entity.aod @@ -9,24 +9,20 @@ </entityProvider> <entityField> <name>DOCUMENTS</name> - <title>Dokumente</title> + <title>Documents</title> <dropDownProcess>%aditoprj%/entity/MSTTeamDocument_entity/entityfields/documents/dropDownProcess.js</dropDownProcess> <selectionMode>MULTI</selectionMode> </entityField> <entityField> - <name>ALLCHANNELS</name> - <title>Alle Channel</title> + <name>CHANNEL</name> + <title>Channel</title> + <consumer>Channels</consumer> <mandatory v="true" /> - <dropDownProcess>%aditoprj%/entity/MSTTeamDocument_entity/entityfields/allchannels/dropDownProcess.js</dropDownProcess> </entityField> <entityParameter> <name>ObjectRowId_param</name> <expose v="true" /> </entityParameter> - <entityField> - <name>SEARCHVALUE</name> - <title>Suchbegriff (Case Sensitive)</title> - </entityField> <entityField> <name>UID</name> </entityField> @@ -38,6 +34,25 @@ <name>AssignmentName_param</name> <expose v="true" /> </entityParameter> + <entityConsumer> + <name>Channels</name> + <dependency> + <name>dependency</name> + <entityName>MSTTeamChannel_entity</entityName> + <fieldName>ChannelsByName</fieldName> + </dependency> + <children> + <entityParameter> + <name>TeamId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeamDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityParameter> + <name>MSTTeamId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTTeamDocument_entity/entityfields/allchannels/dropDownProcess.js b/entity/MSTTeamDocument_entity/entityfields/allchannels/dropDownProcess.js deleted file mode 100644 index 297dc97e992..00000000000 --- a/entity/MSTTeamDocument_entity/entityfields/allchannels/dropDownProcess.js +++ /dev/null @@ -1,26 +0,0 @@ -import("system.result"); -import("system.teams"); -import("system.vars"); -import("system.logging"); -import("Sql_lib"); - -var allChannels; - -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", vars.get("$param.ObjectRowId_param")) - .cell(); - -var searchValue = vars.get("$field.SEARCHVALUE"); - -if(searchValue) -{ - allChannels = teams.getAllChannelsInTeam(teamId, searchValue); -} -else -{ - allChannels = teams.getAllChannelsInTeam(teamId, null) -} - -if (allChannels) - result.object(allChannels); \ No newline at end of file diff --git a/entity/MSTTeamDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js b/entity/MSTTeamDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js new file mode 100644 index 00000000000..9036fa97785 --- /dev/null +++ b/entity/MSTTeamDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(vars.get("$param.MSTTeamId_param")); \ No newline at end of file diff --git a/entity/MSTTeamDocument_entity/entityfields/documents/dropDownProcess.js b/entity/MSTTeamDocument_entity/entityfields/documents/dropDownProcess.js index 5fa658ec1ea..d46e42f287a 100644 --- a/entity/MSTTeamDocument_entity/entityfields/documents/dropDownProcess.js +++ b/entity/MSTTeamDocument_entity/entityfields/documents/dropDownProcess.js @@ -4,27 +4,17 @@ import("system.vars"); import("system.logging"); import("Sql_lib"); -if(vars.get("$field.ALLCHANNELS")) +var channelName = vars.get("$field.CHANNEL"); +if (channelName) { - var channelId = vars.get("$field.ALLCHANNELS"); - - var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", vars.get("$param.ObjectRowId_param")) - .cell(); - - var allChannels = teams.getAllChannelsInTeam(teamId, null); - - var documents = teams.getAllDocumentsOfChannel(teamId, allChannels[channelId]) - var jsonDocuments = JSON.parse(documents); + var teamId = vars.get("$param.MSTTeamId_param"); - var resultString = [[jsonDocuments[0].downloadUrl, jsonDocuments[0].name]]; -// for (var i = 0; i < jsonDocuments.length; i++) -// { -// resultString = resultString + "[" + jsonDocuments[i].downloadUrl + ", " + jsonDocuments[i].name + "]"; -// } -// var upnsOfOwners = [["marco@mbsolutions2.onmicrosoft.com", "marco@mbsolutions2.onmicrosoft.com"], ["franz@mbsolutions2.onmicrosoft.com", "franz@mbsolutions2.onmicrosoft.com"], ["martin@mbsolutions2.onmicrosoft.com", "martin@mbsolutions2.onmicrosoft.com"]]; - -// resultString = resultString + "]"; - result.object(resultString); -} \ No newline at end of file + var documents = teams.getAllDocuments(teamId, channelName); + documents = documents.map(function (document) + { + return [JSON.stringify([document.downloadUrl, document.name]), document.name]; + }); + result.object(documents); +} +else + result.object([]); \ No newline at end of file diff --git a/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js index 6bd9ad9deff..d97ac448ef7 100644 --- a/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js @@ -8,30 +8,20 @@ import("system.net") import("system.logging"); import("system.neon"); - var rowData = vars.get("$local.rowdata"); - var documents = text.decodeMS(rowData["DOCUMENTS.value"]); -for(var i=0; i<documents.length; i++) +documents.forEach(function (document) { - //hier muss überprüft werden ob es dieses Dokument schon in der Datenbank gibt! -// if(documents[i].alreadyExistInDB) -// break; - //Wenn es dieses noch nicht gibt, wird es in die DB gespeichert - var docName = "Präsentation 1.pptx"; - var downloadUrl = documents; - + var [downloadUrl, documentName] = JSON.parse(document); var file = net.getURLContent(downloadUrl, false, null, null, null, false); var assignmentTable = vars.get("$param.AssignmentTable_param"); var assignmentName = vars.get("$param.AssignmentName_param"); var assignmentRowId = vars.get("$param.ObjectRowId_param"); - var alias = "_____SYSTEMALIAS"; - + var alias = SqlUtils.getBinariesAlias(); var uid = db.insertBinary(assignmentTable, assignmentName, assignmentRowId, null, - file, docName, "Hier können Sie nachträglich ihre Description ändern", "", alias, util.getNewUUID()); -} - + file, documentName, "", "", alias, util.getNewUUID()); +}); diff --git a/entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod b/entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod index 4e720cc38ed..0b3fde18fc1 100644 --- a/entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod +++ b/entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod @@ -49,11 +49,11 @@ <name>TeamId_param</name> <expose v="true" /> </entityParameter> - <entityActionField> - <name>LoadOlderMessages</name> - <title>Lade neue Nachrichten</title> - <onActionProcess>%aditoprj%/entity/MSTTeamsMessage_entity/entityfields/loadoldermessages/onActionProcess.js</onActionProcess> - </entityActionField> + <entityParameter> + <name>LoadNext_param</name> + <expose v="true" /> + <documentation>%aditoprj%/entity/MSTTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc</documentation> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc b/entity/MSTTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc new file mode 100644 index 00000000000..c5debf74124 --- /dev/null +++ b/entity/MSTTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc @@ -0,0 +1,3 @@ += LoadNext_param + +A random UID to trigger a refresh \ No newline at end of file diff --git a/entity/MSTTeamsMessage_entity/entityfields/loadoldermessages/onActionProcess.js b/entity/MSTTeamsMessage_entity/entityfields/loadoldermessages/onActionProcess.js deleted file mode 100644 index c7eb3376dab..00000000000 --- a/entity/MSTTeamsMessage_entity/entityfields/loadoldermessages/onActionProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.neon"); -import("system.vars"); - -vars.set("$context.loadNextMessages", true); - -neon.refreshAll(); \ No newline at end of file diff --git a/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js index aceecd801c8..d8c0bad8a65 100644 --- a/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js @@ -5,7 +5,8 @@ import("system.util"); import("system.vars"); import("system.neon"); -var loadNextMessages = vars.exists("$context.loadNextMessages") && vars.get("$context.loadNextMessages"); +var loadNextMessages = vars.exists("$param.LoadNext_param") && vars.get("$param.LoadNext_param"); +var messageAmount = 10; var channelMessages; var messages = []; @@ -14,17 +15,14 @@ if (loadNextMessages) var nextLink = vars.exists("$context.nextLink") ? vars.get("$context.nextLink") : null; if(nextLink) { - channelMessages = teams.getNextChannelMessages(nextLink); - channelMessages = JSON.parse(channelMessages); + channelMessages = teams.getNextChannelMessages(nextLink, messageAmount); messages = channelMessages.messages; vars.set("$context.nextLink", channelMessages.nextLink || null); } - vars.set("$context.loadNextMessages", false); } else if (vars.get("$param.TeamId_param") && vars.get("$param.Channel_param")) { - channelMessages = teams.getChannelMessages(vars.get("$param.TeamId_param"), vars.get("$param.Channel_param"), 10); - channelMessages = JSON.parse(channelMessages); + channelMessages = teams.getChannelMessages(vars.get("$param.TeamId_param"), vars.get("$param.Channel_param"), messageAmount); messages = channelMessages.messages; vars.set("$context.nextLink", channelMessages.nextLink || null); diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index a185c389fad..30cccf06899 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -339,6 +339,10 @@ <name>AssignmentTable_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>MSTTeamId_param</name> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> <entityConsumer> diff --git a/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js new file mode 100644 index 00000000000..8be21737ac0 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.MST_TEAM_ID")); \ No newline at end of file diff --git a/neonView/MSTTeamActivityImportEdit_view/MSTTeamActivityImportEdit_view.aod b/neonView/MSTTeamActivityImportEdit_view/MSTTeamActivityImportEdit_view.aod index 076d6f1ebf4..6f2f174e004 100644 --- a/neonView/MSTTeamActivityImportEdit_view/MSTTeamActivityImportEdit_view.aod +++ b/neonView/MSTTeamActivityImportEdit_view/MSTTeamActivityImportEdit_view.aod @@ -2,11 +2,12 @@ <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> <name>MSTTeamActivityImportEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <size>NORMAL</size> <isOverlay v="true" /> <layout> - <boxLayout> + <noneLayout> <name>layout</name> - </boxLayout> + </noneLayout> </layout> <children> <genericViewTemplate> @@ -25,5 +26,12 @@ <entityField>Messages</entityField> <view>MSTTeamsMessageFilter_view</view> </neonViewReference> + <actionsViewTemplate> + <name>Actions</name> + <actions> + <element>loadNextMessages</element> + </actions> + <entityField>#ENTITY</entityField> + </actionsViewTemplate> </children> </neonView> diff --git a/neonView/MSTTeamDocumentEdit_view/MSTTeamDocumentEdit_view.aod b/neonView/MSTTeamDocumentEdit_view/MSTTeamDocumentEdit_view.aod index 85e283d46c4..9ebd3c2e3de 100644 --- a/neonView/MSTTeamDocumentEdit_view/MSTTeamDocumentEdit_view.aod +++ b/neonView/MSTTeamDocumentEdit_view/MSTTeamDocumentEdit_view.aod @@ -17,12 +17,8 @@ <title>Dokumente</title> <fields> <entityFieldLink> - <name>2c2c923f-0e45-417f-950e-14826bc8fcbe</name> - <entityField>SEARCHVALUE</entityField> - </entityFieldLink> - <entityFieldLink> - <name>c42b1c0b-de04-400e-9068-1be2568a0d5f</name> - <entityField>ALLCHANNELS</entityField> + <name>6b122227-6e23-4f25-b66c-05f90e991005</name> + <entityField>CHANNEL</entityField> </entityFieldLink> <entityFieldLink> <name>9a0986dd-68b2-422e-b9b3-27d35640b44b</name> diff --git a/neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod b/neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod index 54a5bd52208..eb7a7c33ae5 100644 --- a/neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod +++ b/neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod @@ -27,12 +27,5 @@ </neonTableColumn> </columns> </tableViewTemplate> - <actionsViewTemplate> - <name>LoadNextAction</name> - <actions> - <element>LoadOlderMessages</element> - </actions> - <entityField>#ENTITY</entityField> - </actionsViewTemplate> </children> </neonView> -- GitLab From ce70c11567cc8c263769ea2ec920c9dee410ce47 Mon Sep 17 00:00:00 2001 From: "M.Bilda" <m.bilda@adito.de> Date: Mon, 17 Aug 2020 09:26:35 +0200 Subject: [PATCH 015/184] 1060809 - added function getWebUrl for choosen Teams --- .../MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js index 2d238645284..f119fef1e7a 100644 --- a/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js @@ -14,6 +14,7 @@ if(teamIdAndName) { var [teamId, teamName] = JSON.parse(teamIdAndName); var channelId = teams.getGeneralChannelId(teamId); + var webUrl = teams.getWebUrl(teamId); var mstTeamId = newSelect("MST_TEAMID") .from("MST_TEAM") @@ -26,7 +27,8 @@ if(teamIdAndName) "MST_TEAMID" : teamId, "TEAMNAME" : teamName, "GENERAL_CHANNELID" : channelId, - "IS_ARCHIVED" : 0 + "IS_ARCHIVED" : 0, + "WEB_URL" : webUrl }, "MST_TEAM"); } newWhere("SALESPROJECT.SALESPROJECTID", "$param.SalesprojectId_param").updateFields({ -- GitLab From 11227a0d81a5353da668831667f43852388dd3a7 Mon Sep 17 00:00:00 2001 From: "S.Listl" <s.listl@adito.de> Date: Mon, 17 Aug 2020 11:47:53 +0200 Subject: [PATCH 016/184] #1060809 MST remove deleted teams serverProcess, bot webservice --- .../recordcontainers/jdito/onUpdate.js | 4 ++- .../mstws.aod => mstBot_rest/mstBot_rest.aod} | 4 +-- process/{mstws => mstBot_rest}/process.js | 30 +++++++++++++++++++ .../removeMSTTeams_serverProcess/process.js | 21 +++++++++++++ .../removeMSTTeams_serverProcess.aod | 10 +++++++ 5 files changed, 66 insertions(+), 3 deletions(-) rename process/{mstws/mstws.aod => mstBot_rest/mstBot_rest.aod} (87%) rename process/{mstws => mstBot_rest}/process.js (73%) create mode 100644 process/removeMSTTeams_serverProcess/process.js create mode 100644 process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js index f00f1817d78..2554384b37e 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js @@ -45,9 +45,11 @@ if (internalMembers.length !== 0) if (externalMembers.length !== 0) teams.addExternalMembers(teamId, externalMembers); +var owners = teams.getAllOwners(teamId); var removeMembers = deletedTeamMembers.map(function (member) { - return teams.createInternalUserConfig(member["#UID"]); + var isOwner = member["#UID"] in owners; + return teams.createInternalUserConfig(member["#UID"]).setOwner(isOwner); }); if (removeMembers.length !== 0) diff --git a/process/mstws/mstws.aod b/process/mstBot_rest/mstBot_rest.aod similarity index 87% rename from process/mstws/mstws.aod rename to process/mstBot_rest/mstBot_rest.aod index 0c7c1773bc8..dd88fc1a4c1 100644 --- a/process/mstws/mstws.aod +++ b/process/mstBot_rest/mstBot_rest.aod @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> - <name>mstws</name> + <name>mstBot_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <process>%aditoprj%/process/mstws/process.js</process> + <process>%aditoprj%/process/mstBot_rest/process.js</process> <publishAsWebservice v="true" /> <style>REST</style> <restAcceptedMimeType>application/json</restAcceptedMimeType> diff --git a/process/mstws/process.js b/process/mstBot_rest/process.js similarity index 73% rename from process/mstws/process.js rename to process/mstBot_rest/process.js index 09a50633a5b..b6156a72377 100644 --- a/process/mstws/process.js +++ b/process/mstBot_rest/process.js @@ -1,5 +1,6 @@ import("system.teams"); import("system.logging"); +import("system.text"); import("system.util"); import("Sql_lib"); @@ -23,12 +24,14 @@ function restpost(pRequestAsJson) { newWhere("MST_TEAM.MST_TEAMID", teamId) .updateFields({"SERVICE_URL" : serviceUrl}); + return pRequestAsJson; } //Sollte jemand die APP manuell wieder entfernen, gibt es einen "AbschiedsRequest", lösche die ServiceUrl aus der DB if(eventType == "teamMemberRemoved" && who == "ADITO Bot") { newWhere("MST_TEAM.MST_TEAMID", teamId) .updateFields({"SERVICE_URL" : ""}); + return pRequestAsJson; } //_____________________________________________________________ @@ -49,5 +52,32 @@ function restpost(pRequestAsJson) // wird hier keine teams.Funktion benötigt //Weitere Schritte: text aufsplittet anhand der Syntax und die einzelnen Kommandos umsetzen + var plainMessage = text.html2text(pHTML); + + var splitMessage = plainMessage.split("/"); + if (splitMessage.length !== 2) + return pRequestAsJson; + + var command = splitMessage[1].split(/\s+?/); + var parameters = {}; + command.slice(1).forEach(function (param) + { + param = param.split("="); + if (param.length !== 2) + return; + parameters[param[0]] = param[1]; + }); + command = command[0]; + + + switch (command) + { + case "addTask": + var fieldValues = {}; + if ("editor" in parameters) + //TODO: insert task + + } + return pRequestAsJson; } \ No newline at end of file diff --git a/process/removeMSTTeams_serverProcess/process.js b/process/removeMSTTeams_serverProcess/process.js new file mode 100644 index 00000000000..83b19e678d4 --- /dev/null +++ b/process/removeMSTTeams_serverProcess/process.js @@ -0,0 +1,21 @@ +import("system.teams"); +import("Sql_lib"); + +var archivedTeams = teams.getAllArchivedTeams(null); +var dbArchivedTeams = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.IS_ARCHIVED", "1") + .arrayColumn(); + +var teamIdsToDelete = dbArchivedTeams.filter(function (teamId) +{ + return !(teamId in archivedTeams); +}); + +if (teamIdsToDelete.length > 0) +{ + newWhere("MST_TEAM.MST_TEAMID", teamIdsToDelete, SqlBuilder.IN()) + .deleteData(); + newWhere("SALESPROJECT.MST_TEAM_ID", teamIdsToDelete, SqlBuilder.IN()) + .updateFields({"MST_TEAM_ID": ""}); +} \ No newline at end of file diff --git a/process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod b/process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod new file mode 100644 index 00000000000..f8b67e0fdd0 --- /dev/null +++ b/process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>removeMSTTeams_serverProcess</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/removeMSTTeams_serverProcess/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> -- GitLab From bcd877953ffaac50144c2e1a7b52d52f13ee3ced Mon Sep 17 00:00:00 2001 From: Tobias Feldmann <t.feldmann@adito.de> Date: Wed, 19 Aug 2020 16:38:49 +0200 Subject: [PATCH 017/184] ORGANISATION_REPORT_DATA Field in Organisation_entity was calculated unnecessarily --- .../entityfields/organisation_report_data/valueProcess.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/entity/Organisation_entity/entityfields/organisation_report_data/valueProcess.js b/entity/Organisation_entity/entityfields/organisation_report_data/valueProcess.js index 873ef5f7989..0088b85da11 100644 --- a/entity/Organisation_entity/entityfields/organisation_report_data/valueProcess.js +++ b/entity/Organisation_entity/entityfields/organisation_report_data/valueProcess.js @@ -1,13 +1,13 @@ -import("system.logging"); import("system.vars"); import("system.result"); import("system.neon"); import("Organisation_lib"); var presentationMode = vars.get("$sys.presentationmode"); -if (presentationMode != neon.CONTEXT_PRESENTATIONMODE_EDIT) { - var reportData = OrgUtils.buildOrgReport(vars.get("$field.ORGANISATIONID"), vars.get("$field.CONTACTID")) - +var opState = vars.get("$sys.operatingstate"); +if (opState == neon.OPERATINGSTATE_VIEW && presentationMode == neon.CONTEXT_PRESENTATIONMODE_FULL ) +{ + var reportData = OrgUtils.buildOrgReport(vars.get("$field.ORGANISATIONID"), vars.get("$field.CONTACTID")); if (reportData != null) { result.string(reportData[1]); } -- GitLab From eaee30a5d935d4cb042c25f678a33ac443a44523 Mon Sep 17 00:00:00 2001 From: "S.Listl" <s.listl@adito.de> Date: Thu, 20 Aug 2020 14:12:22 +0200 Subject: [PATCH 018/184] mstBot_rest webservice --- process/mstBot_rest/process.js | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/process/mstBot_rest/process.js b/process/mstBot_rest/process.js index b6156a72377..1b362801118 100644 --- a/process/mstBot_rest/process.js +++ b/process/mstBot_rest/process.js @@ -1,8 +1,11 @@ +import("system.datetime"); import("system.teams"); import("system.logging"); import("system.text"); import("system.util"); import("Sql_lib"); +import("KeywordRegistry_basic"); +import("Date_lib"); function restpost(pRequestAsJson) { @@ -54,11 +57,11 @@ function restpost(pRequestAsJson) var plainMessage = text.html2text(pHTML); - var splitMessage = plainMessage.split("/"); - if (splitMessage.length !== 2) + var messageParts = plainMessage.split("/"); + if (messageParts.length !== 2) return pRequestAsJson; - var command = splitMessage[1].split(/\s+?/); + var command = messageParts[1].split(/\s+?/); var parameters = {}; command.slice(1).forEach(function (param) { @@ -69,14 +72,23 @@ function restpost(pRequestAsJson) }); command = command[0]; - - switch (command) + if (command == "addTask" && parameters.editor && parameters.subject) { - case "addTask": - var fieldValues = {}; - if ("editor" in parameters) - //TODO: insert task - + var currentDate = datetime.date(); + var fieldValues = { + "KIND": $KeywordRegistry.taskType$task(), + "START_DATE": currentDate, + "MATURITY_DATE": Duration.ofDays(7).getDateWithDurationAdded(currentDate).getTime(), + "PRIORITY": $KeywordRegistry.taskPriority$low(), + "STATUS": $KeywordRegistry.taskStatus$new(), + "SUBJECT": parameters.subject, + "REQUESTOR_CONTACT_ID": "", + "PROGRESS": $KeywordRegistry.taskProgress$0() + }; + if ("editor" in parameters) + fieldValues["EDITOR_CONTACT_ID"] = ""; //TODO: find out contactid + + new SqlBuilder.insertFields(fieldValues, "TASK", "TASKID"); } return pRequestAsJson; -- GitLab From b398231ea6c3ddf9b5ca13e86eca61ffce7106a4 Mon Sep 17 00:00:00 2001 From: "S.Listl" <s.listl@adito.de> Date: Tue, 25 Aug 2020 12:37:48 +0000 Subject: [PATCH 019/184] AnyContact_entity missing provider re-added (cherry picked from commit 23b680404c70c3368b9a1350b5fd806f4794c185) --- .../AnyContact_entity/AnyContact_entity.aod | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod index 1fa8e83a7e7..65c0aee1508 100644 --- a/entity/AnyContact_entity/AnyContact_entity.aod +++ b/entity/AnyContact_entity/AnyContact_entity.aod @@ -80,6 +80,28 @@ </entityDependency> </dependencies> </entityProvider> + <entityProvider> + <name>ContactsByIds</name> + <documentation>%aditoprj%/entity/AnyContact_entity/entityfields/contactsbyids/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>0206f7a8-fd58-47e8-8b7a-5ff4531e56fb</name> + <entityName>QuickEntry_entity</entityName> + <fieldName>OrgAndPersDuplicates</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> + </entityProvider> + <entityParameter> + <name>ContactIds_param</name> + <expose v="true" /> + </entityParameter> <entityField> <name>ADDRESS_ID</name> <title>standard address</title> -- GitLab From 527ac66584077c3bb34250d1d117e7cdb8588d66 Mon Sep 17 00:00:00 2001 From: "s.pongratz" <s.pongratz@adito.de> Date: Thu, 9 Jul 2020 11:35:52 +0000 Subject: [PATCH 020/184] =?UTF-8?q?#1061243-Bugfix=5FL=C3=B6schenAllerDate?= =?UTF-8?q?ns=C3=A4tze=20Verwendung=20des=20Alias?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 2e142812a5e95755ab31ef586f89dcb8bbfca7f5) --- .../entityfields/leadimportreset/onActionProcess.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entity/Leadimport_entity/entityfields/leadimportreset/onActionProcess.js b/entity/Leadimport_entity/entityfields/leadimportreset/onActionProcess.js index c7b4f0fdf76..e3ab27e0a12 100644 --- a/entity/Leadimport_entity/entityfields/leadimportreset/onActionProcess.js +++ b/entity/Leadimport_entity/entityfields/leadimportreset/onActionProcess.js @@ -46,7 +46,7 @@ function _deleteData (pTableName, pleadimportId, pdateADayBefor) { let uTableName = pTableName.charAt(0); newWhere(pTableName + "." + pTableName + "ID", - newSelect(pTableName + "." + pTableName + "ID") + newSelect(uTableName + "." + pTableName + "ID") .from(pTableName, uTableName) .join("LEADLOG", "LEADLOG.DATE_NEW = " + uTableName + ".DATE_NEW") .where(uTableName + ".USER_NEW = LEADLOG.USER_NEW") -- GitLab From 78f69353a38aa579a0f3c23939119071b6427075 Mon Sep 17 00:00:00 2001 From: Johannes Goderbauer <j.goderbauer@adito.de> Date: Tue, 1 Sep 2020 05:59:28 +0000 Subject: [PATCH 021/184] =?UTF-8?q?Merge=20branch=20'#1056853-Unverkn?= =?UTF-8?q?=C3=BCpfteMails=5FAktivit=C3=A4tenFilter'=20into=20'2020.1.3'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #1056853-UnverknüpfteMails_AktivitätenFilter Fehlender Import See merge request xrm/basic!343 (cherry picked from commit 778d579e331cc15fe67aabb8767e678cb1b4796b) cfed9679 #1056853-UnverknüpfteMails_AktivitätenFilter Fehlender Import --- .../db/filterextensions/isunlinked/filterValuesProcess.js | 1 + 1 file changed, 1 insertion(+) diff --git a/entity/Activity_entity/recordcontainers/db/filterextensions/isunlinked/filterValuesProcess.js b/entity/Activity_entity/recordcontainers/db/filterextensions/isunlinked/filterValuesProcess.js index 056eacc69de..2c7036f92c8 100644 --- a/entity/Activity_entity/recordcontainers/db/filterextensions/isunlinked/filterValuesProcess.js +++ b/entity/Activity_entity/recordcontainers/db/filterextensions/isunlinked/filterValuesProcess.js @@ -1,3 +1,4 @@ import("system.result"); +import("system.translate"); result.object([["true", translate.text("Yes")], ["false", translate.text("No")]]); \ No newline at end of file -- GitLab From e97a1c55d8ed53f8e555878cb5aa79ab87c00cb7 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 1 Sep 2020 16:05:36 +0200 Subject: [PATCH 022/184] #1064484 MSTeams entities renamed --- .../MSTChooseTeam_entity.aod | 1 + .../MSTTeamMember_entity.aod | 7 ++----- .../MSTeamsActivityImport_entity.aod} | 21 ++++++++++--------- .../children/teamid_param/valueProcess.js | 0 .../loadnextmessages/onActionProcess.js | 0 .../children/channel_param/valueProcess.js | 0 .../children/loadnext_param/valueProcess.js | 0 .../children/teamid_param/valueProcess.js | 0 .../entityfields/team_id/valueProcess.js | 0 .../recordcontainers/jdito/contentProcess.js | 0 .../recordcontainers/jdito/onInsert.js | 0 .../MSTeamsAddMembers_entity.aod} | 13 ++++++------ .../salesprojectid_param/valueProcess.js | 0 .../entityfields/mst_team_id/valueProcess.js | 0 .../entityfields/mst_teamname/valueProcess.js | 0 .../recordcontainers/jdito/contentProcess.js | 0 .../recordcontainers/jdito/onInsert.js | 0 .../MSTeamsChannel_entity.aod} | 11 +++++----- .../contentTitleProcess.js | 0 .../recordcontainers/jdito/contentProcess.js | 0 .../MSTeamsChat_entity.aod} | 17 ++++++++------- .../allchannels/dropDownProcess.js | 0 .../entityfields/allchannels/valueProcess.js | 0 .../children/messages_param/valueProcess.js | 0 .../loadnewmessages/onActionProcess.js | 0 .../loadnewmessages/stateProcess.js | 0 .../recordcontainers/jdito/contentProcess.js | 0 .../recordcontainers/jdito/onInsert.js | 0 .../MSTeamsDocument_entity.aod} | 13 ++++++------ .../children/teamid_param/valueProcess.js | 0 .../entityfields/documents/dropDownProcess.js | 0 .../recordcontainers/jdito/contentProcess.js | 0 .../recordcontainers/jdito/onInsert.js | 0 .../MSTeamsMessage_entity.aod} | 5 +++-- .../loadnext_param/documentation.adoc | 0 .../recordcontainers/jdito/contentProcess.js | 0 .../Salesproject_entity.aod | 1 + .../MSTeamsActivityImport.aod} | 8 +++---- .../MSTeamsAddMembers.aod} | 8 +++---- .../MSTeamsChannel.aod} | 4 ++-- .../MSTeamsChat.aod} | 8 +++---- .../MSTeamsDocument.aod} | 8 +++---- .../MSTeamsMessage.aod} | 8 +++---- .../MSTeamsActivityImportEdit_view.aod} | 4 ++-- .../MSTeamsAddMembersEdit_view.aod} | 2 +- .../MSTeamsChatEdit_view.aod} | 4 ++-- .../MSTeamsDocumentEdit_view.aod} | 2 +- .../MSTeamsMessageFilter_view.aod} | 2 +- process/MSTeams_lib/MSTeams_lib.aod | 9 ++++++++ process/MSTeams_lib/process.js | 3 +++ 50 files changed, 88 insertions(+), 71 deletions(-) rename entity/{MSTTeamActivityImport_entity/MSTTeamActivityImport_entity.aod => MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod} (81%) rename entity/{MSTTeamActivityImport_entity => MSTeamsActivityImport_entity}/entityfields/channels/children/teamid_param/valueProcess.js (100%) rename entity/{MSTTeamActivityImport_entity => MSTeamsActivityImport_entity}/entityfields/loadnextmessages/onActionProcess.js (100%) rename entity/{MSTTeamActivityImport_entity => MSTeamsActivityImport_entity}/entityfields/messages/children/channel_param/valueProcess.js (100%) rename entity/{MSTTeamActivityImport_entity => MSTeamsActivityImport_entity}/entityfields/messages/children/loadnext_param/valueProcess.js (100%) rename entity/{MSTTeamActivityImport_entity => MSTeamsActivityImport_entity}/entityfields/messages/children/teamid_param/valueProcess.js (100%) rename entity/{MSTTeamActivityImport_entity => MSTeamsActivityImport_entity}/entityfields/team_id/valueProcess.js (100%) rename entity/{MSTTeamActivityImport_entity => MSTeamsActivityImport_entity}/recordcontainers/jdito/contentProcess.js (100%) rename entity/{MSTTeamActivityImport_entity => MSTeamsActivityImport_entity}/recordcontainers/jdito/onInsert.js (100%) rename entity/{MSTTeamAddMembers_entity/MSTTeamAddMembers_entity.aod => MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod} (83%) rename entity/{MSTTeamAddMembers_entity => MSTeamsAddMembers_entity}/entityfields/members/children/salesprojectid_param/valueProcess.js (100%) rename entity/{MSTTeamAddMembers_entity => MSTeamsAddMembers_entity}/entityfields/mst_team_id/valueProcess.js (100%) rename entity/{MSTTeamAddMembers_entity => MSTeamsAddMembers_entity}/entityfields/mst_teamname/valueProcess.js (100%) rename entity/{MSTTeamAddMembers_entity => MSTeamsAddMembers_entity}/recordcontainers/jdito/contentProcess.js (100%) rename entity/{MSTTeamAddMembers_entity => MSTeamsAddMembers_entity}/recordcontainers/jdito/onInsert.js (100%) rename entity/{MSTTeamChannel_entity/MSTTeamChannel_entity.aod => MSTeamsChannel_entity/MSTeamsChannel_entity.aod} (86%) rename entity/{MSTTeamChannel_entity => MSTeamsChannel_entity}/contentTitleProcess.js (100%) rename entity/{MSTTeamChannel_entity => MSTeamsChannel_entity}/recordcontainers/jdito/contentProcess.js (100%) rename entity/{MSTTeamChat_entity/MSTTeamChat_entity.aod => MSTeamsChat_entity/MSTeamsChat_entity.aod} (84%) rename entity/{MSTTeamChat_entity => MSTeamsChat_entity}/entityfields/allchannels/dropDownProcess.js (100%) rename entity/{MSTTeamChat_entity => MSTeamsChat_entity}/entityfields/allchannels/valueProcess.js (100%) rename entity/{MSTTeamChat_entity => MSTeamsChat_entity}/entityfields/consumer/children/messages_param/valueProcess.js (100%) rename entity/{MSTTeamChat_entity => MSTeamsChat_entity}/entityfields/loadnewmessages/onActionProcess.js (100%) rename entity/{MSTTeamChat_entity => MSTeamsChat_entity}/entityfields/loadnewmessages/stateProcess.js (100%) rename entity/{MSTTeamChat_entity => MSTeamsChat_entity}/recordcontainers/jdito/contentProcess.js (100%) rename entity/{MSTTeamChat_entity => MSTeamsChat_entity}/recordcontainers/jdito/onInsert.js (100%) rename entity/{MSTTeamDocument_entity/MSTTeamDocument_entity.aod => MSTeamsDocument_entity/MSTeamsDocument_entity.aod} (86%) rename entity/{MSTTeamDocument_entity => MSTeamsDocument_entity}/entityfields/channels/children/teamid_param/valueProcess.js (100%) rename entity/{MSTTeamDocument_entity => MSTeamsDocument_entity}/entityfields/documents/dropDownProcess.js (100%) rename entity/{MSTTeamDocument_entity => MSTeamsDocument_entity}/recordcontainers/jdito/contentProcess.js (100%) rename entity/{MSTTeamDocument_entity => MSTeamsDocument_entity}/recordcontainers/jdito/onInsert.js (100%) rename entity/{MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod => MSTeamsMessage_entity/MSTeamsMessage_entity.aod} (95%) rename entity/{MSTTeamsMessage_entity => MSTeamsMessage_entity}/entityfields/loadnext_param/documentation.adoc (100%) rename entity/{MSTTeamsMessage_entity => MSTeamsMessage_entity}/recordcontainers/jdito/contentProcess.js (100%) rename neonContext/{MSTTeamActivityImport/MSTTeamActivityImport.aod => MSTeamsActivityImport/MSTeamsActivityImport.aod} (70%) rename neonContext/{MSTTeamAddMembers/MSTTeamAddMembers.aod => MSTeamsAddMembers/MSTeamsAddMembers.aod} (73%) rename neonContext/{MSTTeamChannel/MSTTeamChannel.aod => MSTeamsChannel/MSTeamsChannel.aod} (81%) rename neonContext/{MSTTeamChat/MSTTeamChat.aod => MSTeamsChat/MSTeamsChat.aod} (75%) rename neonContext/{MSTTeamDocument/MSTTeamDocument.aod => MSTeamsDocument/MSTeamsDocument.aod} (73%) rename neonContext/{MSTTeamsMessage/MSTTeamsMessage.aod => MSTeamsMessage/MSTeamsMessage.aod} (72%) rename neonView/{MSTTeamActivityImportEdit_view/MSTTeamActivityImportEdit_view.aod => MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod} (92%) rename neonView/{MSTTeamAddMembersEdit_view/MSTTeamAddMembersEdit_view.aod => MSTeamsAddMembersEdit_view/MSTeamsAddMembersEdit_view.aod} (95%) rename neonView/{MSTTeamChatEdit_view/MSTTeamChatEdit_view.aod => MSTeamsChatEdit_view/MSTeamsChatEdit_view.aod} (94%) rename neonView/{MSTTeamDocumentEdit_view/MSTTeamDocumentEdit_view.aod => MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod} (96%) rename neonView/{MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod => MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod} (96%) create mode 100644 process/MSTeams_lib/MSTeams_lib.aod create mode 100644 process/MSTeams_lib/process.js diff --git a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod index 0857d6c94d4..cdad103f047 100644 --- a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod +++ b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> <name>MSTChooseTeam_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <siblings /> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod index 7981f828883..a70f06da972 100644 --- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> <name>MSTTeamMember_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <siblings /> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -9,7 +10,7 @@ <dependencies> <entityDependency> <name>335d30c4-7beb-4dcb-8a0f-de85108530a9</name> - <entityName>MSTTeamAddMembers_entity</entityName> + <entityName>MSTeamsAddMembers_entity</entityName> <fieldName>Members</fieldName> <isConsumer v="false" /> </entityDependency> @@ -25,10 +26,6 @@ <entityField> <name>UID</name> </entityField> - <entityParameter> - <name>ROWID_param</name> - <expose v="true" /> - </entityParameter> <entityParameter> <name>UpnsOfMembers_param</name> <expose v="true" /> diff --git a/entity/MSTTeamActivityImport_entity/MSTTeamActivityImport_entity.aod b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod similarity index 81% rename from entity/MSTTeamActivityImport_entity/MSTTeamActivityImport_entity.aod rename to entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod index 4cc35c57b22..cc1786851fb 100644 --- a/entity/MSTTeamActivityImport_entity/MSTTeamActivityImport_entity.aod +++ b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> - <name>MSTTeamActivityImport_entity</name> + <name>MSTeamsActivityImport_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <siblings /> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -21,15 +22,15 @@ <children> <entityParameter> <name>Channel_param</name> - <valueProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js</valueProcess> </entityParameter> <entityParameter> <name>TeamId_param</name> - <valueProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js</valueProcess> </entityParameter> <entityParameter> <name>LoadNext_param</name> - <valueProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js</valueProcess> </entityParameter> </children> </entityConsumer> @@ -44,26 +45,26 @@ </entityParameter> <entityField> <name>TEAM_ID</name> - <valueProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/entityfields/team_id/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js</valueProcess> </entityField> <entityConsumer> <name>Channels</name> <dependency> <name>dependency</name> - <entityName>MSTTeamChannel_entity</entityName> + <entityName>MSTeamsChannel_entity</entityName> <fieldName>ChannelsForTeam</fieldName> </dependency> <children> <entityParameter> <name>TeamId_param</name> - <valueProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess> </entityParameter> </children> </entityConsumer> <entityActionField> <name>loadNextMessages</name> <title>Load older messages</title> - <onActionProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js</onActionProcess> + <onActionProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js</onActionProcess> <iconId>VAADIN:CLOCK</iconId> </entityActionField> <entityField> @@ -74,8 +75,8 @@ <jDitoRecordContainer> <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/MSTTeamActivityImport_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTTeamActivityImport_entity/recordcontainers/jdito/onInsert.js</onInsert> + <contentProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTeamsActivityImport_entity/recordcontainers/jdito/onInsert.js</onInsert> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> diff --git a/entity/MSTTeamActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js similarity index 100% rename from entity/MSTTeamActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js rename to entity/MSTeamsActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js diff --git a/entity/MSTTeamActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js similarity index 100% rename from entity/MSTTeamActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js rename to entity/MSTeamsActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js diff --git a/entity/MSTTeamActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js similarity index 100% rename from entity/MSTTeamActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js rename to entity/MSTeamsActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js diff --git a/entity/MSTTeamActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js similarity index 100% rename from entity/MSTTeamActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js rename to entity/MSTeamsActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js diff --git a/entity/MSTTeamActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js similarity index 100% rename from entity/MSTTeamActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js rename to entity/MSTeamsActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js diff --git a/entity/MSTTeamActivityImport_entity/entityfields/team_id/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js similarity index 100% rename from entity/MSTTeamActivityImport_entity/entityfields/team_id/valueProcess.js rename to entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js diff --git a/entity/MSTTeamActivityImport_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsActivityImport_entity/recordcontainers/jdito/contentProcess.js similarity index 100% rename from entity/MSTTeamActivityImport_entity/recordcontainers/jdito/contentProcess.js rename to entity/MSTeamsActivityImport_entity/recordcontainers/jdito/contentProcess.js diff --git a/entity/MSTTeamActivityImport_entity/recordcontainers/jdito/onInsert.js b/entity/MSTeamsActivityImport_entity/recordcontainers/jdito/onInsert.js similarity index 100% rename from entity/MSTTeamActivityImport_entity/recordcontainers/jdito/onInsert.js rename to entity/MSTeamsActivityImport_entity/recordcontainers/jdito/onInsert.js diff --git a/entity/MSTTeamAddMembers_entity/MSTTeamAddMembers_entity.aod b/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod similarity index 83% rename from entity/MSTTeamAddMembers_entity/MSTTeamAddMembers_entity.aod rename to entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod index 791fc678cf4..93e9c9f9fc0 100644 --- a/entity/MSTTeamAddMembers_entity/MSTTeamAddMembers_entity.aod +++ b/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> - <name>MSTTeamAddMembers_entity</name> + <name>MSTeamsAddMembers_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Add members</title> + <siblings /> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -21,7 +22,7 @@ <children> <entityParameter> <name>SalesprojectId_param</name> - <valueProcess>%aditoprj%/entity/MSTTeamAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/MSTeamsAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js</valueProcess> </entityParameter> </children> </entityConsumer> @@ -32,19 +33,19 @@ <entityField> <name>MST_TEAMNAME</name> <title>Team name</title> - <valueProcess>%aditoprj%/entity/MSTTeamAddMembers_entity/entityfields/mst_teamname/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/MSTeamsAddMembers_entity/entityfields/mst_teamname/valueProcess.js</valueProcess> </entityField> <entityField> <name>MST_TEAM_ID</name> - <valueProcess>%aditoprj%/entity/MSTTeamAddMembers_entity/entityfields/mst_team_id/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/MSTeamsAddMembers_entity/entityfields/mst_team_id/valueProcess.js</valueProcess> </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/onInsert.js</onInsert> + <contentProcess>%aditoprj%/entity/MSTeamsAddMembers_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTeamsAddMembers_entity/recordcontainers/jdito/onInsert.js</onInsert> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> diff --git a/entity/MSTTeamAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js b/entity/MSTeamsAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js similarity index 100% rename from entity/MSTTeamAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js rename to entity/MSTeamsAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js diff --git a/entity/MSTTeamAddMembers_entity/entityfields/mst_team_id/valueProcess.js b/entity/MSTeamsAddMembers_entity/entityfields/mst_team_id/valueProcess.js similarity index 100% rename from entity/MSTTeamAddMembers_entity/entityfields/mst_team_id/valueProcess.js rename to entity/MSTeamsAddMembers_entity/entityfields/mst_team_id/valueProcess.js diff --git a/entity/MSTTeamAddMembers_entity/entityfields/mst_teamname/valueProcess.js b/entity/MSTeamsAddMembers_entity/entityfields/mst_teamname/valueProcess.js similarity index 100% rename from entity/MSTTeamAddMembers_entity/entityfields/mst_teamname/valueProcess.js rename to entity/MSTeamsAddMembers_entity/entityfields/mst_teamname/valueProcess.js diff --git a/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsAddMembers_entity/recordcontainers/jdito/contentProcess.js similarity index 100% rename from entity/MSTTeamAddMembers_entity/recordcontainers/jdito/contentProcess.js rename to entity/MSTeamsAddMembers_entity/recordcontainers/jdito/contentProcess.js diff --git a/entity/MSTTeamAddMembers_entity/recordcontainers/jdito/onInsert.js b/entity/MSTeamsAddMembers_entity/recordcontainers/jdito/onInsert.js similarity index 100% rename from entity/MSTTeamAddMembers_entity/recordcontainers/jdito/onInsert.js rename to entity/MSTeamsAddMembers_entity/recordcontainers/jdito/onInsert.js diff --git a/entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod similarity index 86% rename from entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod rename to entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod index eea930f8279..9094b5680a4 100644 --- a/entity/MSTTeamChannel_entity/MSTTeamChannel_entity.aod +++ b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> - <name>MSTTeamChannel_entity</name> + <name>MSTeamsChannel_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <contentTitleProcess>%aditoprj%/entity/MSTTeamChannel_entity/contentTitleProcess.js</contentTitleProcess> + <siblings /> + <contentTitleProcess>%aditoprj%/entity/MSTeamsChannel_entity/contentTitleProcess.js</contentTitleProcess> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -20,7 +21,7 @@ <dependencies> <entityDependency> <name>a784ee43-b2ef-4d55-a092-9c7f822905fa</name> - <entityName>MSTTeamActivityImport_entity</entityName> + <entityName>MSTeamsActivityImport_entity</entityName> <fieldName>Channels</fieldName> <isConsumer v="false" /> </entityDependency> @@ -37,7 +38,7 @@ <dependencies> <entityDependency> <name>3dfb5be2-d956-4e8a-9aec-4c80b81e0527</name> - <entityName>MSTTeamDocument_entity</entityName> + <entityName>MSTeamsDocument_entity</entityName> <fieldName>Channels</fieldName> <isConsumer v="false" /> </entityDependency> @@ -48,7 +49,7 @@ <jDitoRecordContainer> <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <contentProcess>%aditoprj%/entity/MSTeamsChannel_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> diff --git a/entity/MSTTeamChannel_entity/contentTitleProcess.js b/entity/MSTeamsChannel_entity/contentTitleProcess.js similarity index 100% rename from entity/MSTTeamChannel_entity/contentTitleProcess.js rename to entity/MSTeamsChannel_entity/contentTitleProcess.js diff --git a/entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsChannel_entity/recordcontainers/jdito/contentProcess.js similarity index 100% rename from entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js rename to entity/MSTeamsChannel_entity/recordcontainers/jdito/contentProcess.js diff --git a/entity/MSTTeamChat_entity/MSTTeamChat_entity.aod b/entity/MSTeamsChat_entity/MSTeamsChat_entity.aod similarity index 84% rename from entity/MSTTeamChat_entity/MSTTeamChat_entity.aod rename to entity/MSTeamsChat_entity/MSTeamsChat_entity.aod index f09ac0a9ade..55e602c74a3 100644 --- a/entity/MSTTeamChat_entity/MSTTeamChat_entity.aod +++ b/entity/MSTeamsChat_entity/MSTeamsChat_entity.aod @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> - <name>MSTTeamChat_entity</name> + <name>MSTeamsChat_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <siblings /> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -34,7 +35,7 @@ <children> <entityParameter> <name>Messages_param</name> - <valueProcess>%aditoprj%/entity/MSTTeamChat_entity/entityfields/consumer/children/messages_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/MSTeamsChat_entity/entityfields/consumer/children/messages_param/valueProcess.js</valueProcess> </entityParameter> </children> </entityConsumer> @@ -42,8 +43,8 @@ <name>ALLCHANNELS</name> <title>Alle Channel</title> <mandatory v="true" /> - <dropDownProcess>%aditoprj%/entity/MSTTeamChat_entity/entityfields/allchannels/dropDownProcess.js</dropDownProcess> - <valueProcess>%aditoprj%/entity/MSTTeamChat_entity/entityfields/allchannels/valueProcess.js</valueProcess> + <dropDownProcess>%aditoprj%/entity/MSTeamsChat_entity/entityfields/allchannels/dropDownProcess.js</dropDownProcess> + <valueProcess>%aditoprj%/entity/MSTeamsChat_entity/entityfields/allchannels/valueProcess.js</valueProcess> </entityField> <entityField> <name>SEARCHVALUE</name> @@ -52,8 +53,8 @@ <entityActionField> <name>LoadNewMessages</name> <title>Lade neue Nachrichten</title> - <onActionProcess>%aditoprj%/entity/MSTTeamChat_entity/entityfields/loadnewmessages/onActionProcess.js</onActionProcess> - <stateProcess>%aditoprj%/entity/MSTTeamChat_entity/entityfields/loadnewmessages/stateProcess.js</stateProcess> + <onActionProcess>%aditoprj%/entity/MSTeamsChat_entity/entityfields/loadnewmessages/onActionProcess.js</onActionProcess> + <stateProcess>%aditoprj%/entity/MSTeamsChat_entity/entityfields/loadnewmessages/stateProcess.js</stateProcess> </entityActionField> <entityField> <name>NEWMESSAGES</name> @@ -63,8 +64,8 @@ <jDitoRecordContainer> <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/MSTTeamChat_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTTeamChat_entity/recordcontainers/jdito/onInsert.js</onInsert> + <contentProcess>%aditoprj%/entity/MSTeamsChat_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTeamsChat_entity/recordcontainers/jdito/onInsert.js</onInsert> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> diff --git a/entity/MSTTeamChat_entity/entityfields/allchannels/dropDownProcess.js b/entity/MSTeamsChat_entity/entityfields/allchannels/dropDownProcess.js similarity index 100% rename from entity/MSTTeamChat_entity/entityfields/allchannels/dropDownProcess.js rename to entity/MSTeamsChat_entity/entityfields/allchannels/dropDownProcess.js diff --git a/entity/MSTTeamChat_entity/entityfields/allchannels/valueProcess.js b/entity/MSTeamsChat_entity/entityfields/allchannels/valueProcess.js similarity index 100% rename from entity/MSTTeamChat_entity/entityfields/allchannels/valueProcess.js rename to entity/MSTeamsChat_entity/entityfields/allchannels/valueProcess.js diff --git a/entity/MSTTeamChat_entity/entityfields/consumer/children/messages_param/valueProcess.js b/entity/MSTeamsChat_entity/entityfields/consumer/children/messages_param/valueProcess.js similarity index 100% rename from entity/MSTTeamChat_entity/entityfields/consumer/children/messages_param/valueProcess.js rename to entity/MSTeamsChat_entity/entityfields/consumer/children/messages_param/valueProcess.js diff --git a/entity/MSTTeamChat_entity/entityfields/loadnewmessages/onActionProcess.js b/entity/MSTeamsChat_entity/entityfields/loadnewmessages/onActionProcess.js similarity index 100% rename from entity/MSTTeamChat_entity/entityfields/loadnewmessages/onActionProcess.js rename to entity/MSTeamsChat_entity/entityfields/loadnewmessages/onActionProcess.js diff --git a/entity/MSTTeamChat_entity/entityfields/loadnewmessages/stateProcess.js b/entity/MSTeamsChat_entity/entityfields/loadnewmessages/stateProcess.js similarity index 100% rename from entity/MSTTeamChat_entity/entityfields/loadnewmessages/stateProcess.js rename to entity/MSTeamsChat_entity/entityfields/loadnewmessages/stateProcess.js diff --git a/entity/MSTTeamChat_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsChat_entity/recordcontainers/jdito/contentProcess.js similarity index 100% rename from entity/MSTTeamChat_entity/recordcontainers/jdito/contentProcess.js rename to entity/MSTeamsChat_entity/recordcontainers/jdito/contentProcess.js diff --git a/entity/MSTTeamChat_entity/recordcontainers/jdito/onInsert.js b/entity/MSTeamsChat_entity/recordcontainers/jdito/onInsert.js similarity index 100% rename from entity/MSTTeamChat_entity/recordcontainers/jdito/onInsert.js rename to entity/MSTeamsChat_entity/recordcontainers/jdito/onInsert.js diff --git a/entity/MSTTeamDocument_entity/MSTTeamDocument_entity.aod b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod similarity index 86% rename from entity/MSTTeamDocument_entity/MSTTeamDocument_entity.aod rename to entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod index 3d91cecf1cf..b43879c6c71 100644 --- a/entity/MSTTeamDocument_entity/MSTTeamDocument_entity.aod +++ b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> - <name>MSTTeamDocument_entity</name> + <name>MSTeamsDocument_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <siblings /> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -10,7 +11,7 @@ <entityField> <name>DOCUMENTS</name> <title>Documents</title> - <dropDownProcess>%aditoprj%/entity/MSTTeamDocument_entity/entityfields/documents/dropDownProcess.js</dropDownProcess> + <dropDownProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/documents/dropDownProcess.js</dropDownProcess> <selectionMode>MULTI</selectionMode> </entityField> <entityField> @@ -38,13 +39,13 @@ <name>Channels</name> <dependency> <name>dependency</name> - <entityName>MSTTeamChannel_entity</entityName> + <entityName>MSTeamsChannel_entity</entityName> <fieldName>ChannelsByName</fieldName> </dependency> <children> <entityParameter> <name>TeamId_param</name> - <valueProcess>%aditoprj%/entity/MSTTeamDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess> </entityParameter> </children> </entityConsumer> @@ -58,8 +59,8 @@ <jDitoRecordContainer> <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/MSTTeamDocument_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js</onInsert> + <contentProcess>%aditoprj%/entity/MSTeamsDocument_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTeamsDocument_entity/recordcontainers/jdito/onInsert.js</onInsert> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> diff --git a/entity/MSTTeamDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js b/entity/MSTeamsDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js similarity index 100% rename from entity/MSTTeamDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js rename to entity/MSTeamsDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js diff --git a/entity/MSTTeamDocument_entity/entityfields/documents/dropDownProcess.js b/entity/MSTeamsDocument_entity/entityfields/documents/dropDownProcess.js similarity index 100% rename from entity/MSTTeamDocument_entity/entityfields/documents/dropDownProcess.js rename to entity/MSTeamsDocument_entity/entityfields/documents/dropDownProcess.js diff --git a/entity/MSTTeamDocument_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsDocument_entity/recordcontainers/jdito/contentProcess.js similarity index 100% rename from entity/MSTTeamDocument_entity/recordcontainers/jdito/contentProcess.js rename to entity/MSTeamsDocument_entity/recordcontainers/jdito/contentProcess.js diff --git a/entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js b/entity/MSTeamsDocument_entity/recordcontainers/jdito/onInsert.js similarity index 100% rename from entity/MSTTeamDocument_entity/recordcontainers/jdito/onInsert.js rename to entity/MSTeamsDocument_entity/recordcontainers/jdito/onInsert.js diff --git a/entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod similarity index 95% rename from entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod rename to entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod index 0b3fde18fc1..89751eb2b28 100644 --- a/entity/MSTTeamsMessage_entity/MSTTeamsMessage_entity.aod +++ b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> - <name>MSTTeamsMessage_entity</name> + <name>MSTeamsMessage_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <siblings /> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -32,7 +33,7 @@ </entityDependency> <entityDependency> <name>c79dc4f8-df40-47ba-9baa-b6a64c00f46c</name> - <entityName>MSTTeamActivityImport_entity</entityName> + <entityName>MSTeamsActivityImport_entity</entityName> <fieldName>Messages</fieldName> <isConsumer v="false" /> </entityDependency> diff --git a/entity/MSTTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc b/entity/MSTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc similarity index 100% rename from entity/MSTTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc rename to entity/MSTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc diff --git a/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js similarity index 100% rename from entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js rename to entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 30cccf06899..50f493b5f76 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -948,6 +948,7 @@ <indexRecordContainer> <name>index</name> <configMode>INDEXGROUP_DEFINITION</configMode> + <searchIndexGroups /> <indexRecordAlias>Data_alias</indexRecordAlias> <query>%aditoprj%/entity/Salesproject_entity/recordcontainers/index/query.js</query> <affectedTables> diff --git a/neonContext/MSTTeamActivityImport/MSTTeamActivityImport.aod b/neonContext/MSTeamsActivityImport/MSTeamsActivityImport.aod similarity index 70% rename from neonContext/MSTTeamActivityImport/MSTTeamActivityImport.aod rename to neonContext/MSTeamsActivityImport/MSTeamsActivityImport.aod index 98fc89b31df..847aef4a0cd 100644 --- a/neonContext/MSTTeamActivityImport/MSTTeamActivityImport.aod +++ b/neonContext/MSTeamsActivityImport/MSTeamsActivityImport.aod @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> - <name>MSTTeamActivityImport</name> + <name>MSTeamsActivityImport</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <editView>MSTTeamActivityImportEdit_view</editView> - <entity>MSTTeamActivityImport_entity</entity> + <editView>MSTeamsActivityImportEdit_view</editView> + <entity>MSTeamsActivityImport_entity</entity> <references> <neonViewReference> <name>05e9f542-dd4f-4895-9d0d-d38d57c62735</name> - <view>MSTTeamActivityImportEdit_view</view> + <view>MSTeamsActivityImportEdit_view</view> </neonViewReference> </references> </neonContext> diff --git a/neonContext/MSTTeamAddMembers/MSTTeamAddMembers.aod b/neonContext/MSTeamsAddMembers/MSTeamsAddMembers.aod similarity index 73% rename from neonContext/MSTTeamAddMembers/MSTTeamAddMembers.aod rename to neonContext/MSTeamsAddMembers/MSTeamsAddMembers.aod index f065c15a8f9..8ba520c3890 100644 --- a/neonContext/MSTTeamAddMembers/MSTTeamAddMembers.aod +++ b/neonContext/MSTeamsAddMembers/MSTeamsAddMembers.aod @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> - <name>MSTTeamAddMembers</name> + <name>MSTeamsAddMembers</name> <title>Add members</title> <majorModelMode>DISTRIBUTED</majorModelMode> - <editView>MSTTeamAddMembersEdit_view</editView> - <entity>MSTTeamAddMembers_entity</entity> + <editView>MSTeamsAddMembersEdit_view</editView> + <entity>MSTeamsAddMembers_entity</entity> <references> <neonViewReference> <name>9974f15a-7f2a-41fb-afbe-9e946c857f60</name> - <view>MSTTeamAddMembersEdit_view</view> + <view>MSTeamsAddMembersEdit_view</view> </neonViewReference> </references> </neonContext> diff --git a/neonContext/MSTTeamChannel/MSTTeamChannel.aod b/neonContext/MSTeamsChannel/MSTeamsChannel.aod similarity index 81% rename from neonContext/MSTTeamChannel/MSTTeamChannel.aod rename to neonContext/MSTeamsChannel/MSTeamsChannel.aod index 7c2dceb7f03..de18e7088f2 100644 --- a/neonContext/MSTTeamChannel/MSTTeamChannel.aod +++ b/neonContext/MSTeamsChannel/MSTeamsChannel.aod @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> - <name>MSTTeamChannel</name> + <name>MSTeamsChannel</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <entity>MSTTeamChannel_entity</entity> + <entity>MSTeamsChannel_entity</entity> </neonContext> diff --git a/neonContext/MSTTeamChat/MSTTeamChat.aod b/neonContext/MSTeamsChat/MSTeamsChat.aod similarity index 75% rename from neonContext/MSTTeamChat/MSTTeamChat.aod rename to neonContext/MSTeamsChat/MSTeamsChat.aod index 3d99ac8581d..144d3138459 100644 --- a/neonContext/MSTTeamChat/MSTTeamChat.aod +++ b/neonContext/MSTeamsChat/MSTeamsChat.aod @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> - <name>MSTTeamChat</name> + <name>MSTeamsChat</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <editView>MSTTeamChatEdit_view</editView> - <entity>MSTTeamChat_entity</entity> + <editView>MSTeamsChatEdit_view</editView> + <entity>MSTeamsChat_entity</entity> <references> <neonViewReference> <name>1a157c6c-7db9-4a2a-9e62-7d149b146bde</name> - <view>MSTTeamChatEdit_view</view> + <view>MSTeamsChatEdit_view</view> </neonViewReference> </references> </neonContext> diff --git a/neonContext/MSTTeamDocument/MSTTeamDocument.aod b/neonContext/MSTeamsDocument/MSTeamsDocument.aod similarity index 73% rename from neonContext/MSTTeamDocument/MSTTeamDocument.aod rename to neonContext/MSTeamsDocument/MSTeamsDocument.aod index 4f372aaa930..a7125b105f4 100644 --- a/neonContext/MSTTeamDocument/MSTTeamDocument.aod +++ b/neonContext/MSTeamsDocument/MSTeamsDocument.aod @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> - <name>MSTTeamDocument</name> + <name>MSTeamsDocument</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <editView>MSTTeamDocumentEdit_view</editView> - <entity>MSTTeamDocument_entity</entity> + <editView>MSTeamsDocumentEdit_view</editView> + <entity>MSTeamsDocument_entity</entity> <references> <neonViewReference> <name>167cee11-55bd-4988-838b-d9c784da01e2</name> - <view>MSTTeamDocumentEdit_view</view> + <view>MSTeamsDocumentEdit_view</view> </neonViewReference> </references> </neonContext> diff --git a/neonContext/MSTTeamsMessage/MSTTeamsMessage.aod b/neonContext/MSTeamsMessage/MSTeamsMessage.aod similarity index 72% rename from neonContext/MSTTeamsMessage/MSTTeamsMessage.aod rename to neonContext/MSTeamsMessage/MSTeamsMessage.aod index 51c8b4d1581..ecf21a7e768 100644 --- a/neonContext/MSTTeamsMessage/MSTTeamsMessage.aod +++ b/neonContext/MSTeamsMessage/MSTeamsMessage.aod @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> - <name>MSTTeamsMessage</name> + <name>MSTeamsMessage</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <filterView>MSTTeamsMessageFilter_view</filterView> - <entity>MSTTeamsMessage_entity</entity> + <filterView>MSTeamsMessageFilter_view</filterView> + <entity>MSTeamsMessage_entity</entity> <references> <neonViewReference> <name>db5e4380-458f-438a-8945-b8b8463e81d4</name> - <view>MSTTeamsMessageFilter_view</view> + <view>MSTeamsMessageFilter_view</view> </neonViewReference> </references> </neonContext> diff --git a/neonView/MSTTeamActivityImportEdit_view/MSTTeamActivityImportEdit_view.aod b/neonView/MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod similarity index 92% rename from neonView/MSTTeamActivityImportEdit_view/MSTTeamActivityImportEdit_view.aod rename to neonView/MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod index 6f2f174e004..a2f72666621 100644 --- a/neonView/MSTTeamActivityImportEdit_view/MSTTeamActivityImportEdit_view.aod +++ b/neonView/MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> - <name>MSTTeamActivityImportEdit_view</name> + <name>MSTeamsActivityImportEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>NORMAL</size> <isOverlay v="true" /> @@ -24,7 +24,7 @@ <neonViewReference> <name>e486a1bb-5deb-432a-aa28-c3872f0f88fc</name> <entityField>Messages</entityField> - <view>MSTTeamsMessageFilter_view</view> + <view>MSTeamsMessageFilter_view</view> </neonViewReference> <actionsViewTemplate> <name>Actions</name> diff --git a/neonView/MSTTeamAddMembersEdit_view/MSTTeamAddMembersEdit_view.aod b/neonView/MSTeamsAddMembersEdit_view/MSTeamsAddMembersEdit_view.aod similarity index 95% rename from neonView/MSTTeamAddMembersEdit_view/MSTTeamAddMembersEdit_view.aod rename to neonView/MSTeamsAddMembersEdit_view/MSTeamsAddMembersEdit_view.aod index 265bfecca82..378bc712922 100644 --- a/neonView/MSTTeamAddMembersEdit_view/MSTTeamAddMembersEdit_view.aod +++ b/neonView/MSTeamsAddMembersEdit_view/MSTeamsAddMembersEdit_view.aod @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> - <name>MSTTeamAddMembersEdit_view</name> + <name>MSTeamsAddMembersEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> <layout> diff --git a/neonView/MSTTeamChatEdit_view/MSTTeamChatEdit_view.aod b/neonView/MSTeamsChatEdit_view/MSTeamsChatEdit_view.aod similarity index 94% rename from neonView/MSTTeamChatEdit_view/MSTTeamChatEdit_view.aod rename to neonView/MSTeamsChatEdit_view/MSTeamsChatEdit_view.aod index bdc013d2ee0..9c48b08a6a9 100644 --- a/neonView/MSTTeamChatEdit_view/MSTTeamChatEdit_view.aod +++ b/neonView/MSTeamsChatEdit_view/MSTeamsChatEdit_view.aod @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> - <name>MSTTeamChatEdit_view</name> + <name>MSTeamsChatEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>NORMAL</size> <layout> @@ -28,7 +28,7 @@ <neonViewReference> <name>6c47a973-ef7c-4165-addb-427c1cce9540</name> <entityField>Consumer</entityField> - <view>MSTTeamsMessageFilter_view</view> + <view>MSTeamsMessageFilter_view</view> </neonViewReference> <actionsViewTemplate> <name>LoadNewMessages</name> diff --git a/neonView/MSTTeamDocumentEdit_view/MSTTeamDocumentEdit_view.aod b/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod similarity index 96% rename from neonView/MSTTeamDocumentEdit_view/MSTTeamDocumentEdit_view.aod rename to neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod index 9ebd3c2e3de..058045a091b 100644 --- a/neonView/MSTTeamDocumentEdit_view/MSTTeamDocumentEdit_view.aod +++ b/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> - <name>MSTTeamDocumentEdit_view</name> + <name>MSTeamsDocumentEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> <isOverlay v="false" /> diff --git a/neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod b/neonView/MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod similarity index 96% rename from neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod rename to neonView/MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod index eb7a7c33ae5..c9cae5e66e2 100644 --- a/neonView/MSTTeamsMessageFilter_view/MSTTeamsMessageFilter_view.aod +++ b/neonView/MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> - <name>MSTTeamsMessageFilter_view</name> + <name>MSTeamsMessageFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> <noneLayout> diff --git a/process/MSTeams_lib/MSTeams_lib.aod b/process/MSTeams_lib/MSTeams_lib.aod new file mode 100644 index 00000000000..b414a9e8a83 --- /dev/null +++ b/process/MSTeams_lib/MSTeams_lib.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>MSTeams_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/MSTeams_lib/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js new file mode 100644 index 00000000000..bdb360e1231 --- /dev/null +++ b/process/MSTeams_lib/process.js @@ -0,0 +1,3 @@ +import("system.teams"); + +function MSTeamsUtils () {} \ No newline at end of file -- GitLab From 3e8ae3ad5c34c758136d4486f3ffa1d31ca92248 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 2 Sep 2020 15:43:48 +0200 Subject: [PATCH 023/184] #1064484 MS Teams changes --- .aditoprj/UUIDNameMap.txt | 102 ++++ .../2019.1.4/Salesorder/update_Salesorder.xml | 2 +- .../2020.2.1/{ => MSTeams}/changelog.xml | 2 +- .../{ => MSTeams}/create_MST_TEAM.xml | 0 .../2020.2.1/MSTeams/create_MST_TEAMLINK.xml | 26 + .../2020.2.1/add_salesproject_MST_TEAM_ID.xml | 9 - .liquibase/Data_alias/changelog.xml | 2 +- aliasDefinition/Data_alias/Data_alias.aod | 528 ++++++++++++++++-- .../MSTChooseTeam_entity.aod | 6 +- .../recordcontainers/jdito/onInsert.js | 11 +- .../MSTTeamMember_entity.aod | 16 +- .../objectrowid_param/valueProcess.js | 2 +- .../children/objecttype_param/valueProcess.js | 4 + entity/MSTTeam_entity/MSTTeam_entity.aod | 28 +- .../objectrowid_param/valueProcess.js | 4 + .../children/objecttype_param/valueProcess.js | 4 + .../salesprojectid_param/valueProcess.js | 4 - .../recordcontainers/jdito/onInsert.js | 4 +- .../MSTeamsAddMembers_entity.aod | 20 +- .../objectrowid_param/valueProcess.js | 4 + .../children/objecttype_param/valueProcess.js | 4 + .../salesprojectid_param/valueProcess.js | 4 - .../MSTeamsChat_entity/MSTeamsChat_entity.aod | 85 --- .../allchannels/dropDownProcess.js | 24 - .../entityfields/allchannels/valueProcess.js | 0 .../children/messages_param/valueProcess.js | 24 - .../loadnewmessages/onActionProcess.js | 9 - .../loadnewmessages/stateProcess.js | 19 - .../recordcontainers/jdito/contentProcess.js | 9 - .../recordcontainers/jdito/onInsert.js | 3 - entity/Member_entity/Member_entity.aod | 19 +- .../children/addapp/onActionProcess.js | 2 +- .../children/addapp/stateProcess.js | 2 +- .../children/addnewmember/onActionProcess.js | 6 - .../children/addnewmember/stateProcess.js | 20 - .../changetomsteam/onActionProcess.js | 2 +- .../children/changetomsteam/stateProcess.js | 2 +- .../children/chooseteam/stateProcess.js | 2 +- .../children/createteam/onActionProcess.js | 27 +- .../children/createteam/stateProcess.js | 2 +- .../children/deletemember/stateProcess.js | 20 - .../children/deleteteam/onActionProcess.js | 2 +- .../children/deleteteam/stateProcess.js | 2 +- .../children/editteam/onActionProcess.js | 8 +- .../children/editteam/stateProcess.js | 2 +- .../children/restoreteam/onActionProcess.js | 2 +- .../children/restoreteam/stateProcess.js | 2 +- .../msteamsactiongroup/stateProcess.js | 15 +- .../mstteamid_param/valueProcess.js | 15 + .../SalesprojectMilestone_entity.aod | 2 +- .../SalesprojectSource_entity.aod | 2 +- .../Salesproject_entity.aod | 25 +- .../valueProcess.js | 2 +- .../recordcontainers/db/fromClauseProcess.js | 4 +- .../mst_team_id.displayvalue/expression.js | 3 - .../MSTeamsAddMembers/MSTeamsAddMembers.aod | 14 - neonContext/MSTeamsChat/MSTeamsChat.aod | 13 - .../MSTeamsAddMembersEdit_view.aod | 28 - .../MSTeamsChatEdit_view.aod | 41 -- .../MemberFilter_view/MemberFilter_view.aod | 2 + .../MemberLookup_view/MemberLookup_view.aod | 2 + .../SalesprojectFilter_view.aod | 3 + .../SalesprojectMain_view.aod | 5 - process/MSTeams_lib/process.js | 44 +- 64 files changed, 819 insertions(+), 482 deletions(-) create mode 100644 .aditoprj/UUIDNameMap.txt rename .liquibase/Data_alias/basic/2020.2.1/{ => MSTeams}/changelog.xml (83%) rename .liquibase/Data_alias/basic/2020.2.1/{ => MSTeams}/create_MST_TEAM.xml (100%) create mode 100644 .liquibase/Data_alias/basic/2020.2.1/MSTeams/create_MST_TEAMLINK.xml delete mode 100644 .liquibase/Data_alias/basic/2020.2.1/add_salesproject_MST_TEAM_ID.xml create mode 100644 entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/teammembers/children/objectrowid_param/valueProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js delete mode 100644 entity/MSTTeam_entity/entityfields/teammembers/children/salesprojectid_param/valueProcess.js create mode 100644 entity/MSTeamsAddMembers_entity/entityfields/members/children/objectrowid_param/valueProcess.js create mode 100644 entity/MSTeamsAddMembers_entity/entityfields/members/children/objecttype_param/valueProcess.js delete mode 100644 entity/MSTeamsAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js delete mode 100644 entity/MSTeamsChat_entity/MSTeamsChat_entity.aod delete mode 100644 entity/MSTeamsChat_entity/entityfields/allchannels/dropDownProcess.js delete mode 100644 entity/MSTeamsChat_entity/entityfields/allchannels/valueProcess.js delete mode 100644 entity/MSTeamsChat_entity/entityfields/consumer/children/messages_param/valueProcess.js delete mode 100644 entity/MSTeamsChat_entity/entityfields/loadnewmessages/onActionProcess.js delete mode 100644 entity/MSTeamsChat_entity/entityfields/loadnewmessages/stateProcess.js delete mode 100644 entity/MSTeamsChat_entity/recordcontainers/jdito/contentProcess.js delete mode 100644 entity/MSTeamsChat_entity/recordcontainers/jdito/onInsert.js delete mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js delete mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js delete mode 100644 entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js create mode 100644 entity/Member_entity/entityfields/mstteamid_param/valueProcess.js rename entity/Salesproject_entity/entityfields/members/children/{mst_teamid_param => mstteamid_param}/valueProcess.js (100%) delete mode 100644 entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js delete mode 100644 neonContext/MSTeamsAddMembers/MSTeamsAddMembers.aod delete mode 100644 neonContext/MSTeamsChat/MSTeamsChat.aod delete mode 100644 neonView/MSTeamsAddMembersEdit_view/MSTeamsAddMembersEdit_view.aod delete mode 100644 neonView/MSTeamsChatEdit_view/MSTeamsChatEdit_view.aod diff --git a/.aditoprj/UUIDNameMap.txt b/.aditoprj/UUIDNameMap.txt new file mode 100644 index 00000000000..002f9103477 --- /dev/null +++ b/.aditoprj/UUIDNameMap.txt @@ -0,0 +1,102 @@ +************************************************* +* * +* This is a generated file, please do not edit! * +* * +************************************************* + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 +1.0.0 +1598969268500 +#ENTITY +#ENTITY +#PROVIDER_FIELD +#PROVIDER_FIELD +#CONTENTTITLE +#CONTENTTITLE +#TITLE +#TITLE +#INDEX_GROUP +#INDEX_GROUP +#TARGETCONTEXT +#TARGETCONTEXT +INTERNAL_ADMINISTRATOR +INTERNAL_ADMINISTRATOR +INTERNAL_WEBSERVICE +INTERNAL_WEBSERVICE +#DESCRIPTION +#DESCRIPTION +INTERNAL_GROUPWARE +INTERNAL_GROUPWARE +INTERNAL_TECHNICAL +INTERNAL_TECHNICAL +#MAPPING +#MAPPING +#LOCATION +#LOCATION +#PROVIDER +#PROVIDER +INTERNAL_DESIGNER +INTERNAL_DESIGNER +#USERHELP +#USERHELP +#NONE +#NONE +#TARGETID +#TARGETID +#CONTENTDESCRIPTION +#CONTENTDESCRIPTION +#SORTING +#SORTING +#LOOKUPID +#LOOKUPID +#GROUPING +#GROUPING +#ICON +#ICON +INTERNAL_DASHBOARDSTOREADMIN +INTERNAL_DASHBOARDSTOREADMIN +#IMAGE +#IMAGE +#UID +#UID +INTERNAL_SNMP +INTERNAL_SNMP +#TARGETCONSUMER +#TARGETCONSUMER +INTERNAL_EVERYONE +INTERNAL_EVERYONE \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2019.1.4/Salesorder/update_Salesorder.xml b/.liquibase/Data_alias/basic/2019.1.4/Salesorder/update_Salesorder.xml index 61f8dee92bd..3a824531f8a 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/Salesorder/update_Salesorder.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/Salesorder/update_Salesorder.xml @@ -4,7 +4,7 @@ <addColumn tableName="SALESORDER"> <column name="OBJECT_TYPE" type="NVARCHAR(63)"/> - <column name="CANCELLATION " type="TINYINT"/> + <column name="CANCELLATION" type="TINYINT"/> <column name="UNPAID" type="INTEGER"/> <column name="PAID" type="INTEGER"/> <column name="PAYDUEDATE" type="DATETIME"/> diff --git a/.liquibase/Data_alias/basic/2020.2.1/changelog.xml b/.liquibase/Data_alias/basic/2020.2.1/MSTeams/changelog.xml similarity index 83% rename from .liquibase/Data_alias/basic/2020.2.1/changelog.xml rename to .liquibase/Data_alias/basic/2020.2.1/MSTeams/changelog.xml index 3b995a276a0..d4e6ad9f3d5 100644 --- a/.liquibase/Data_alias/basic/2020.2.1/changelog.xml +++ b/.liquibase/Data_alias/basic/2020.2.1/MSTeams/changelog.xml @@ -2,5 +2,5 @@ <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <include file="create_MST_TEAM.xml" relativeToChangelogFile="true"/> - <include file="add_salesproject_MST_TEAM_ID.xml" relativeToChangelogFile="true"/> + <include file="create_MST_TEAMLINK.xml" relativeToChangelogFile="true"/> </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.1/create_MST_TEAM.xml b/.liquibase/Data_alias/basic/2020.2.1/MSTeams/create_MST_TEAM.xml similarity index 100% rename from .liquibase/Data_alias/basic/2020.2.1/create_MST_TEAM.xml rename to .liquibase/Data_alias/basic/2020.2.1/MSTeams/create_MST_TEAM.xml diff --git a/.liquibase/Data_alias/basic/2020.2.1/MSTeams/create_MST_TEAMLINK.xml b/.liquibase/Data_alias/basic/2020.2.1/MSTeams/create_MST_TEAMLINK.xml new file mode 100644 index 00000000000..be14298d37a --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.1/MSTeams/create_MST_TEAMLINK.xml @@ -0,0 +1,26 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> +<changeSet author="s.listl" id="05c74217-459f-43ec-8e33-daee059cafd8"> + <createTable tableName="MST_TEAMLINK"> + <column name="MST_TEAMLINKID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_MST_TEAMLINKID"/> + </column> + <column name="MST_TEAM_ID" type="CHAR(36)"> + <constraints nullable="false"/> + </column> + <column name="OBJECT_ROWID" type="CHAR(36)"> + <constraints nullable="false"/> + </column> + <column name="OBJECT_TYPE" type="NVARCHAR(63)"> + <constraints nullable="false"/> + </column> + </createTable> + <createIndex tableName="MST_TEAMLINK" indexName="IDX_MST_TEAMLINK_MST_TEAM_ID"> + <column name="MST_TEAM_ID"/> + </createIndex> + <createIndex tableName="MST_TEAMLINK" indexName="IDX_MST_TEAMLINK_OBJECT_ROWID"> + <column name="OBJECT_ROWID"/> + </createIndex> +</changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.1/add_salesproject_MST_TEAM_ID.xml b/.liquibase/Data_alias/basic/2020.2.1/add_salesproject_MST_TEAM_ID.xml deleted file mode 100644 index 58cc0adab61..00000000000 --- a/.liquibase/Data_alias/basic/2020.2.1/add_salesproject_MST_TEAM_ID.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.1" encoding="UTF-8" standalone="no"?> -<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> - <changeSet author="s.listl" id="b1fc1530-37c8-46b2-a96f-21e3a6deeed1"> - <addColumn tableName="SALESPROJECT"> - <column name="MST_TEAM_ID" type="CHAR(36)"/> - </addColumn> - </changeSet> -</databaseChangeLog> diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index 0c689b4cb33..c8252044785 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -14,7 +14,7 @@ <include relativeToChangelogFile="true" file="basic/2020.1.0/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.1.1/changelog.xml"/> <!--<include relativeToChangelogFile="true" file="basic/2020.1.2/changelog.xml"/>--> - <include relativeToChangelogFile="true" file="basic/2020.2.1/changelog.xml"/> + <include relativeToChangelogFile="true" file="basic/2020.2.1/MSTeams/changelog.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> <include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/> diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 48617b00935..4000432b088 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -1672,7 +1672,7 @@ <name>GROUPCODEID</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="1" /> + <columnType v="12" /> <size v="36" /> <scale v="0" /> <notNull v="false" /> @@ -3647,20 +3647,6 @@ </customStringProperty> </customProperties> </entityFieldDb> - <entityFieldDb> - <name>MST_TEAM_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -4523,9 +4509,9 @@ <name>UNPAID</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> + <columnType v="3" /> + <size v="14" /> + <scale v="2" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -4709,9 +4695,9 @@ <name>PAID</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> + <columnType v="3" /> + <size v="14" /> + <scale v="2" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -13580,6 +13566,20 @@ <title></title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>VARIABLES</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="512" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -13773,20 +13773,6 @@ <title></title> <description></description> </entityFieldDb> - <entityFieldDb> - <name>SEPARATOR</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> <entityFieldDb> <name>EXPORTTEMPLATEID</name> <dbName></dbName> @@ -13857,6 +13843,48 @@ <title></title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>FIELDSEPARATOR</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>FIELDDELIMITER</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>SENTENCESEPARATOR</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -14282,6 +14310,436 @@ </entityFieldDb> </entityFields> </entityDb> + <entityDb> + <name>VISITRECOMMENDATION</name> + <dbName></dbName> + <idColumn>VISITRECOMMENDATIONID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>DUE_DATE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>SOURCE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="255" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>VISITRECOMMENDATIONID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>CONTACT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>PRIORITY</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>INFO</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="2005" /> + <size v="2147483647" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>VISITPLANEMPLOYEEWEEK</name> + <dbName></dbName> + <idColumn>VISITPLANEMPLOYEEWEEKID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>VISITPLANEMPLOYEEWEEKID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>CONTACT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>VISITPLAN_WEEK</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="4" /> + <size v="10" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>INFO</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="2005" /> + <size v="2147483647" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>VISITPLAN_YEAR</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="4" /> + <size v="10" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>VISITPLANENTRY</name> + <dbName></dbName> + <idColumn>VISITPLANENTRYID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>STATUS</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>END_TIME</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="92" /> + <size v="8" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>BEGIN_TIME</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="92" /> + <size v="8" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>VISITPLANEMPLOYEEWEEK_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>VISITRECOMMENDATION_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>ORGANISATION_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>VISITPLANENTRYID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>CONTACT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>APPOINTMENT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>ENTRYDATE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>MST_TEAMLINK</name> + <dbName></dbName> + <idColumn>MST_TEAMLINKID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>OBJECT_ROWID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>MST_TEAM_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>MST_TEAMLINKID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>OBJECT_TYPE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="63" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> </entities> </entityGroup> </aliasDefDb> diff --git a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod index cdad103f047..0c9ea22f83a 100644 --- a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod +++ b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod @@ -18,7 +18,7 @@ <name>UID</name> </entityField> <entityParameter> - <name>SalesprojectId_param</name> + <name>ObjectRowId_param</name> <expose v="true" /> </entityParameter> <entityConsumer> @@ -29,6 +29,10 @@ <fieldName>#PROVIDER</fieldName> </dependency> </entityConsumer> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js index f119fef1e7a..66e2ebe9078 100644 --- a/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js @@ -1,10 +1,10 @@ import("system.teams"); import("Sql_lib") -import("system.logging"); import("system.vars") import("system.teams"); import("system.util"); import("system.neon"); +import("MSTeams_lib"); var rowData = vars.get("$local.rowdata"); @@ -31,10 +31,5 @@ if(teamIdAndName) "WEB_URL" : webUrl }, "MST_TEAM"); } - newWhere("SALESPROJECT.SALESPROJECTID", "$param.SalesprojectId_param").updateFields({ - "MST_TEAM_ID" : teamId - }); -} - - - + MSTeamsUtils.createTeamLink(teamId, vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param")); +} \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod index a70f06da972..57390700764 100644 --- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -34,10 +34,6 @@ <name>MailsOfExtern_param</name> <expose v="true" /> </entityParameter> - <entityParameter> - <name>SalesprojectId_param</name> - <expose v="true" /> - </entityParameter> <entityConsumer> <name>ProjectMembers</name> <dependency> @@ -50,6 +46,10 @@ <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> <entityField> @@ -81,6 +81,14 @@ </entityDependency> </dependencies> </entityProvider> + <entityParameter> + <name>ObjectRowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js index 86e1d8c1c0f..dc0d70ccbe7 100644 --- a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js +++ b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$param.SalesprojectId_param")); \ No newline at end of file +result.string(vars.get("$param.ObjectRowId_param")); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js new file mode 100644 index 00000000000..95c8514f3bb --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$param.ObjectType_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod index 20de4a24fd9..510b2585b53 100644 --- a/entity/MSTTeam_entity/MSTTeam_entity.aod +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -47,14 +47,6 @@ <name>Description_param</name> <expose v="true" /> </entityParameter> - <entityParameter> - <name>SalesprojectId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>Mailnickname_param</name> - <expose v="true" /> - </entityParameter> <entityConsumer> <name>TeamMembers</name> <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js</stateProcess> @@ -64,14 +56,18 @@ <fieldName>MembersOfTeam</fieldName> </dependency> <children> - <entityParameter> - <name>SalesprojectId_param</name> - <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/salesprojectid_param/valueProcess.js</valueProcess> - </entityParameter> <entityParameter> <name>MSTTeamId_param</name> <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>ObjectRowId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/objectrowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> <entityField> @@ -82,6 +78,14 @@ <title>Archived</title> <dropDownProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js</dropDownProcess> </entityField> + <entityParameter> + <name>ObjectRowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/objectrowid_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/objectrowid_param/valueProcess.js new file mode 100644 index 00000000000..dc0d70ccbe7 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teammembers/children/objectrowid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$param.ObjectRowId_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js new file mode 100644 index 00000000000..95c8514f3bb --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$param.ObjectType_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/salesprojectid_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/salesprojectid_param/valueProcess.js deleted file mode 100644 index 86e1d8c1c0f..00000000000 --- a/entity/MSTTeam_entity/entityfields/teammembers/children/salesprojectid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$param.SalesprojectId_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js index ed2b033b329..e2f64e547b2 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -4,6 +4,7 @@ import("system.vars"); import("system.teams"); import("system.tools"); import("Employee_lib"); +import("MSTeams_lib"); var rowData = vars.get("$local.rowdata"); var teamName = rowData["TEAMNAME.value"]; @@ -69,5 +70,4 @@ new SqlBuilder().insertFields({ "WEB_URL" : mstTeam.webUrl }, "MST_TEAM"); -newWhere("SALESPROJECT.SALESPROJECTID", "$param.SalesprojectId_param") - .updateFields({"MST_TEAM_ID" : mstTeam.teamId}); \ No newline at end of file +MSTeamsUtils.createTeamLink(mstTeam.teamId, vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param")); \ No newline at end of file diff --git a/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod b/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod index 93e9c9f9fc0..2497bfbb52a 100644 --- a/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod +++ b/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod @@ -21,15 +21,15 @@ </dependency> <children> <entityParameter> - <name>SalesprojectId_param</name> - <valueProcess>%aditoprj%/entity/MSTeamsAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js</valueProcess> + <name>ObjectRowId_param</name> + <valueProcess>%aditoprj%/entity/MSTeamsAddMembers_entity/entityfields/members/children/objectrowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <valueProcess>%aditoprj%/entity/MSTeamsAddMembers_entity/entityfields/members/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> </entityConsumer> - <entityParameter> - <name>SalesprojectId_param</name> - <expose v="true" /> - </entityParameter> <entityField> <name>MST_TEAMNAME</name> <title>Team name</title> @@ -39,6 +39,14 @@ <name>MST_TEAM_ID</name> <valueProcess>%aditoprj%/entity/MSTeamsAddMembers_entity/entityfields/mst_team_id/valueProcess.js</valueProcess> </entityField> + <entityParameter> + <name>ObjectRowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTeamsAddMembers_entity/entityfields/members/children/objectrowid_param/valueProcess.js b/entity/MSTeamsAddMembers_entity/entityfields/members/children/objectrowid_param/valueProcess.js new file mode 100644 index 00000000000..dc0d70ccbe7 --- /dev/null +++ b/entity/MSTeamsAddMembers_entity/entityfields/members/children/objectrowid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$param.ObjectRowId_param")); \ No newline at end of file diff --git a/entity/MSTeamsAddMembers_entity/entityfields/members/children/objecttype_param/valueProcess.js b/entity/MSTeamsAddMembers_entity/entityfields/members/children/objecttype_param/valueProcess.js new file mode 100644 index 00000000000..95c8514f3bb --- /dev/null +++ b/entity/MSTeamsAddMembers_entity/entityfields/members/children/objecttype_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$param.ObjectType_param")); \ No newline at end of file diff --git a/entity/MSTeamsAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js b/entity/MSTeamsAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js deleted file mode 100644 index 86e1d8c1c0f..00000000000 --- a/entity/MSTeamsAddMembers_entity/entityfields/members/children/salesprojectid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$param.SalesprojectId_param")); \ No newline at end of file diff --git a/entity/MSTeamsChat_entity/MSTeamsChat_entity.aod b/entity/MSTeamsChat_entity/MSTeamsChat_entity.aod deleted file mode 100644 index 55e602c74a3..00000000000 --- a/entity/MSTeamsChat_entity/MSTeamsChat_entity.aod +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> - <name>MSTeamsChat_entity</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <siblings /> - <recordContainer>jdito</recordContainer> - <entityFields> - <entityProvider> - <name>#PROVIDER</name> - </entityProvider> - <entityField> - <name>CREATED_DATE_TIME</name> - </entityField> - <entityField> - <name>MESSAGE</name> - <state>READONLY</state> - </entityField> - <entityField> - <name>FROM</name> - </entityField> - <entityField> - <name>UID</name> - </entityField> - <entityParameter> - <name>ROWID_param</name> - <expose v="true" /> - </entityParameter> - <entityConsumer> - <name>Consumer</name> - <dependency> - <name>dependency</name> - <entityName>MSTTeamsMessage_entity</entityName> - <fieldName>Messages</fieldName> - </dependency> - <children> - <entityParameter> - <name>Messages_param</name> - <valueProcess>%aditoprj%/entity/MSTeamsChat_entity/entityfields/consumer/children/messages_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityField> - <name>ALLCHANNELS</name> - <title>Alle Channel</title> - <mandatory v="true" /> - <dropDownProcess>%aditoprj%/entity/MSTeamsChat_entity/entityfields/allchannels/dropDownProcess.js</dropDownProcess> - <valueProcess>%aditoprj%/entity/MSTeamsChat_entity/entityfields/allchannels/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>SEARCHVALUE</name> - <title>Suchbegriff (Case Sensitive)</title> - </entityField> - <entityActionField> - <name>LoadNewMessages</name> - <title>Lade neue Nachrichten</title> - <onActionProcess>%aditoprj%/entity/MSTeamsChat_entity/entityfields/loadnewmessages/onActionProcess.js</onActionProcess> - <stateProcess>%aditoprj%/entity/MSTeamsChat_entity/entityfields/loadnewmessages/stateProcess.js</stateProcess> - </entityActionField> - <entityField> - <name>NEWMESSAGES</name> - </entityField> - </entityFields> - <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/MSTeamsChat_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTeamsChat_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>FROM.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>MESSAGE.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>CREATED_DATE_TIME.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> - </recordContainers> -</entity> diff --git a/entity/MSTeamsChat_entity/entityfields/allchannels/dropDownProcess.js b/entity/MSTeamsChat_entity/entityfields/allchannels/dropDownProcess.js deleted file mode 100644 index bf5fb95d272..00000000000 --- a/entity/MSTeamsChat_entity/entityfields/allchannels/dropDownProcess.js +++ /dev/null @@ -1,24 +0,0 @@ -import("system.result"); -import("system.teams"); -import("system.vars"); -import("Sql_lib"); - -var searchValue = vars.get("$field.SEARCHVALUE"); -var allChannels; - -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ROWID_param") - .cell(); - -if(searchValue) -{ - allChannels = teams.getAllChannelsInTeam(teamId, searchValue); -} -else -{ - allChannels = teams.getAllChannelsInTeam(teamId, null) -} - -if (allChannels) - result.object(allChannels); \ No newline at end of file diff --git a/entity/MSTeamsChat_entity/entityfields/allchannels/valueProcess.js b/entity/MSTeamsChat_entity/entityfields/allchannels/valueProcess.js deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/entity/MSTeamsChat_entity/entityfields/consumer/children/messages_param/valueProcess.js b/entity/MSTeamsChat_entity/entityfields/consumer/children/messages_param/valueProcess.js deleted file mode 100644 index 8e36993e162..00000000000 --- a/entity/MSTeamsChat_entity/entityfields/consumer/children/messages_param/valueProcess.js +++ /dev/null @@ -1,24 +0,0 @@ -import("system.teams"); -import("system.vars"); -import("system.result"); -import("system.util"); -import("Sql_lib"); - -if(vars.get("$field.ALLCHANNELS")) -{ - var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", "$param.ROWID_param") - .cell(); - - var messages = teams.getChannelMessages(teamId, vars.get("$field.ALLCHANNELS"), 10) - - result.string(messages); -} - -if(vars.get("$field.NEWMESSAGES") == "true") -{ - vars.set("$field.NEWMESSAGES", "false"); - var messages = teams.getNextChannelMessages(vars.get("$global.nextLink")); - result.string(messages); -} \ No newline at end of file diff --git a/entity/MSTeamsChat_entity/entityfields/loadnewmessages/onActionProcess.js b/entity/MSTeamsChat_entity/entityfields/loadnewmessages/onActionProcess.js deleted file mode 100644 index 0f2f3a48446..00000000000 --- a/entity/MSTeamsChat_entity/entityfields/loadnewmessages/onActionProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.vars"); - -vars.set("$field.NEWMESSAGES", "true"); - - - - - - diff --git a/entity/MSTeamsChat_entity/entityfields/loadnewmessages/stateProcess.js b/entity/MSTeamsChat_entity/entityfields/loadnewmessages/stateProcess.js deleted file mode 100644 index e92007c6780..00000000000 --- a/entity/MSTeamsChat_entity/entityfields/loadnewmessages/stateProcess.js +++ /dev/null @@ -1,19 +0,0 @@ -import("system.vars"); -import("system.neon"); -import("system.result"); - -if(vars.exists("$global.nextLink")) -{ - if(vars.get("$global.nextLink") != "") - { - result.string(neon.COMPONENTSTATE_EDITABLE); - } - else - { - result.string(neon.COMPONENTSTATE_DISABLED); - } -} -else -{ - result.string(neon.COMPONENTSTATE_DISABLED); -} \ No newline at end of file diff --git a/entity/MSTeamsChat_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsChat_entity/recordcontainers/jdito/contentProcess.js deleted file mode 100644 index d1824307a60..00000000000 --- a/entity/MSTeamsChat_entity/recordcontainers/jdito/contentProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.result"); -import("system.vars"); - -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; -if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id, "", "", ""];}); - -result.object(rows); \ No newline at end of file diff --git a/entity/MSTeamsChat_entity/recordcontainers/jdito/onInsert.js b/entity/MSTeamsChat_entity/recordcontainers/jdito/onInsert.js deleted file mode 100644 index 954340e1c3b..00000000000 --- a/entity/MSTeamsChat_entity/recordcontainers/jdito/onInsert.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.logging"); - -logging.log("Erstelle eine neue Aktivität"); \ No newline at end of file diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index f7e8a3c0a24..5b76c88fab6 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -223,22 +223,6 @@ <iconId>NEON:PENCIL</iconId> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js</stateProcess> </entityActionField> - <entityActionField> - <name>addNewMember</name> - <title>Add members</title> - <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js</onActionProcess> - <iconId>VAADIN:USER</iconId> - <state>INVISIBLE</state> - <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js</stateProcess> - <tooltip>Fügt neue Member zum Team hinzu</tooltip> - </entityActionField> - <entityActionField> - <name>deleteMember</name> - <title>Delete members</title> - <iconId>VAADIN:USER</iconId> - <state>INVISIBLE</state> - <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js</stateProcess> - </entityActionField> <entityActionField> <name>addApp</name> <title>Add app</title> @@ -293,7 +277,8 @@ </dependencies> </entityProvider> <entityParameter> - <name>MST_TeamId_param</name> + <name>MSTTeamId_param</name> + <valueProcess>%aditoprj%/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> </entityFields> diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js index 9ec4d7bd685..826e42316f9 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js @@ -4,4 +4,4 @@ import("system.vars"); var appId = project.getInstanceConfigValue("teamsAppId", null); if (appId != null) - teams.addApp(vars.get("$param.MST_TeamId_param"), appId); \ No newline at end of file + teams.addApp(vars.get("$param.MSTTeamId_param"), appId); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js index 0bcfd015460..2446336fdb5 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js @@ -3,7 +3,7 @@ import("system.neon"); import("system.result"); import("Sql_lib"); -var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; +var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; var isArchived, serviceUrl; var teamData = newSelect("IS_ARCHIVED, SERVICE_URL") diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js deleted file mode 100644 index 80a2305605c..00000000000 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/onActionProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.neon"); -import("system.vars"); - -neon.openContext("MSTTeamAddMembers", null, null, neon.OPERATINGSTATE_NEW, { - "SalesprojectId_param" : vars.get("$field.OBJECT_ROWID") -}); diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js deleted file mode 100644 index 3927f9c0557..00000000000 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addnewmember/stateProcess.js +++ /dev/null @@ -1,20 +0,0 @@ -//import("system.vars"); -//import("system.neon"); -//import("system.result"); -//import("Sql_lib"); -// -//var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; -// -//var isArchived = newSelect("IS_ARCHIVED") -// .from("MST_TEAM") -// .whereIfSet("MST_TEAM.MST_TEAMID", teamId) -// .cell(true); -// -//if (teamId == "" || isArchived == 1) -//{ -// result.string(neon.COMPONENTSTATE_DISABLED); -//} -//else -//{ -// result.string(neon.COMPONENTSTATE_EDITABLE); -//} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js index 8359835837a..19f20d51a62 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js @@ -4,7 +4,7 @@ import("system.neon"); var webUrl = newSelect("WEB_URL") .from("MST_TEAM") - .whereIfSet("MST_TEAM.MST_TEAMID", "$param.MST_TeamId_param") + .whereIfSet("MST_TEAM.MST_TEAMID", "$param.MSTTeamId_param") .cell(true); if (webUrl) diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js index 90deb206fd1..5a91fdde73f 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js @@ -3,7 +3,7 @@ import("system.neon"); import("system.result"); import("Sql_lib"); -var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; +var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; var isArchived = newSelect("IS_ARCHIVED") .from("MST_TEAM") diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js index c2d3d1fee36..82ce3fae3fb 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js @@ -2,7 +2,7 @@ import("system.vars"); import("system.neon"); import("system.result"); -result.string(vars.exists("$param.MST_TeamId_param") && vars.get("$param.MST_TeamId_param") +result.string(vars.exists("$param.MSTTeamId_param") && vars.get("$param.MSTTeamId_param") ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE ); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js index 8798621d425..cb23d1d3c0b 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js @@ -4,17 +4,20 @@ import("system.teams"); import("Sql_lib"); var rowId = vars.get("$param.ObjectRowId_param"); +var objectType = vars.get("$param.ObjectType_param"); +var params = { + "ObjectRowId_param": rowId, + "ObjectType_param": objectType +}; -var [teamName, description] = newSelect("PROJECTTITLE, INFO") - .from("SALESPROJECT") - .where("SALESPROJECT.SALESPROJECTID", rowId) - .arrayRow(); - -var mailNickname = teamName.replace(/\s/g, ""); +if (objectType === "Salesproject") +{ + var [teamName, description] = newSelect("PROJECTTITLE, INFO") + .from("SALESPROJECT") + .where("SALESPROJECT.SALESPROJECTID", rowId) + .arrayRow(); + params["TeamName_param"] = teamName; + params["Description_param"] = description; +} -neon.openContext("MSTTeam", null, null, neon.OPERATINGSTATE_NEW, { - "SalesprojectId_param" : rowId, - "TeamName_param" : teamName, - "Description_param" : description, - "Mailnickname_param" : mailNickname -}); \ No newline at end of file +neon.openContext("MSTTeam", null, null, neon.OPERATINGSTATE_NEW, params); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js index c2d3d1fee36..82ce3fae3fb 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js @@ -2,7 +2,7 @@ import("system.vars"); import("system.neon"); import("system.result"); -result.string(vars.exists("$param.MST_TeamId_param") && vars.get("$param.MST_TeamId_param") +result.string(vars.exists("$param.MSTTeamId_param") && vars.get("$param.MSTTeamId_param") ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE ); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js deleted file mode 100644 index 3927f9c0557..00000000000 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/deletemember/stateProcess.js +++ /dev/null @@ -1,20 +0,0 @@ -//import("system.vars"); -//import("system.neon"); -//import("system.result"); -//import("Sql_lib"); -// -//var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; -// -//var isArchived = newSelect("IS_ARCHIVED") -// .from("MST_TEAM") -// .whereIfSet("MST_TEAM.MST_TEAMID", teamId) -// .cell(true); -// -//if (teamId == "" || isArchived == 1) -//{ -// result.string(neon.COMPONENTSTATE_DISABLED); -//} -//else -//{ -// result.string(neon.COMPONENTSTATE_EDITABLE); -//} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js index d4fd1f58184..02a6be4eecf 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js @@ -3,7 +3,7 @@ import("Sql_lib"); import("system.vars"); import("system.neon"); -var teamId = vars.get("$param.MST_TeamId_param"); +var teamId = vars.get("$param.MSTTeamId_param"); if (teamId) { teams.archiveTeam(teamId); diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js index 90deb206fd1..5a91fdde73f 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js @@ -3,7 +3,7 @@ import("system.neon"); import("system.result"); import("Sql_lib"); -var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; +var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; var isArchived = newSelect("IS_ARCHIVED") .from("MST_TEAM") diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js index 7e7282b01af..8f072bc03d0 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js @@ -1,9 +1,7 @@ import("system.vars"); import("system.neon"); -var rowId = vars.get("$param.ObjectRowId_param"); -var teamId = vars.get("$param.MST_TeamId_param"); - -neon.openContext("MSTTeam", "MSTTeamEditMembers_view", [teamId], neon.OPERATINGSTATE_EDIT, { - "SalesprojectId_param" : rowId +neon.openContext("MSTTeam", "MSTTeamEditMembers_view", [vars.get("$param.MSTTeamId_param")], neon.OPERATINGSTATE_EDIT, { + "ObjectRowId_param": vars.get("$param.ObjectRowId_param"), + "ObjectType_param": vars.get("$param.ObjectType_param") }); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js index 90deb206fd1..5a91fdde73f 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js @@ -3,7 +3,7 @@ import("system.neon"); import("system.result"); import("Sql_lib"); -var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; +var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; var isArchived = newSelect("IS_ARCHIVED") .from("MST_TEAM") diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js index 0333cfcd2cc..6a3f91dd328 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js @@ -3,7 +3,7 @@ import("Sql_lib"); import("system.vars"); import("system.neon"); -var teamId = vars.get("$param.MST_TeamId_param"); +var teamId = vars.get("$param.MSTTeamId_param"); if (teamId) { teams.unarchiveTeam(teamId); diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js index 724a77951db..97ff04f9a94 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js @@ -3,7 +3,7 @@ import("system.neon"); import("system.result"); import("Sql_lib"); -var teamId = vars.exists("$param.MST_TeamId_param") ? vars.get("$param.MST_TeamId_param") : null; +var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; var isArchived = newSelect("IS_ARCHIVED") .from("MST_TEAM") diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js index dcb3c04ef9b..c05618702e3 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js @@ -1,14 +1,7 @@ +import("system.vars"); import("system.neon"); import("system.result"); -import("system.project"); +import("MSTeams_lib"); -var isTeamsEnabled = project.getInstanceConfigValue("teamsEnabled", null); - -if (isTeamsEnabled == "true") -{ - result.string(neon.COMPONENTSTATE_EDITABLE); -} -else -{ - result.string(neon.COMPONENTSTATE_INVISIBLE); -} \ No newline at end of file +var isTeamsEnabled = vars.get("$param.EnableMSTeams_param") == "true" && MSTeamsUtils.isTeamsEnabled(); +result.string(isTeamsEnabled ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_INVISIBLE); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js b/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js new file mode 100644 index 00000000000..d949390036f --- /dev/null +++ b/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js @@ -0,0 +1,15 @@ +import("system.vars"); +import("system.result"); +import("Sql_lib"); +import("MSTeams_lib"); + +var objectType = vars.get("$param.ObjectType_param"); +if (objectType in MSTeamsUtils.getTeamLinkContexts()) +{ + var teamId = newSelect("MST_TEAM_ID") + .from("MST_TEAMLINK") + .where("MST_TEAMLINK.OBJECT_ROWID", "$param.ObjectRowId_param") + .and("MST_TEAMLINK.OBJECT_TYPE", objectType) + .cell(); + result.string(teamId); +} \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod index 9c1a6676b9a..ab8b7b82dbc 100644 --- a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod +++ b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod @@ -61,7 +61,7 @@ <recordContainer>db</recordContainer> <children> <entityParameter> - <name>SalesprojectId_param</name> + <name>ObjectRowId_param</name> <expose v="true" /> </entityParameter> <entityParameter> diff --git a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod index 7480acbbffe..1684133b262 100644 --- a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod +++ b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod @@ -24,7 +24,7 @@ </dependencies> <children> <entityParameter> - <name>SalesprojectId_param</name> + <name>ObjectRowId_param</name> <expose v="true" /> </entityParameter> </children> diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 50f493b5f76..c5167cdac22 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -271,8 +271,8 @@ <expose v="true" /> </entityParameter> <entityParameter> - <name>MST_TeamId_param</name> - <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/mst_teamid_param/valueProcess.js</valueProcess> + <name>MSTTeamId_param</name> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/mstteamid_param/valueProcess.js</valueProcess> </entityParameter> </children> </entityConsumer> @@ -789,19 +789,26 @@ <onDBDelete>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> <linkInformation> - <name>02eb2f4c-3b85-409f-ac13-c8b26804da44</name> + <name>8431afcb-b0f3-4498-9e2c-d343bc6b4dd3</name> <tableName>SALESPROJECT</tableName> <primaryKey>SALESPROJECTID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> <linkInformation> - <name>485af2f8-d91d-442f-89c7-c44915dda990</name> + <name>cf76b9a8-55fc-41e9-918c-f06ce3c86e3c</name> <tableName>ORGANISATION</tableName> <primaryKey>ORGANISATIONID</primaryKey> <isUIDTable v="false" /> <readonly v="true" /> </linkInformation> + <linkInformation> + <name>44fba381-e477-4a92-ba82-fc22c3d98c23</name> + <tableName>MST_TEAM</tableName> + <primaryKey>MST_TEAMID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> </linkInformation> <recordFieldMappings> <dbRecordFieldMapping> @@ -905,11 +912,7 @@ </dbRecordFieldMapping> <dbRecordFieldMapping> <name>MST_TEAM_ID.value</name> - <recordfield>SALESPROJECT.MST_TEAM_ID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>MST_TEAM_ID.displayValue</name> - <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js</expression> + <recordfield>MST_TEAM.MST_TEAMID</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>COUNT.value</name> @@ -920,6 +923,10 @@ <recordfield>SALESPROJECT.SALESPROJECTID</recordfield> <aggregateType>COUNT</aggregateType> </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>MST_TEAM_ID.displayValue</name> + <recordfield>MST_TEAM.TEAMNAME</recordfield> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/Salesproject_entity/entityfields/members/children/mst_teamid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/members/children/mstteamid_param/valueProcess.js similarity index 100% rename from entity/Salesproject_entity/entityfields/members/children/mst_teamid_param/valueProcess.js rename to entity/Salesproject_entity/entityfields/members/children/mstteamid_param/valueProcess.js index 5abe4091396..8be21737ac0 100644 --- a/entity/Salesproject_entity/entityfields/members/children/mst_teamid_param/valueProcess.js +++ b/entity/Salesproject_entity/entityfields/members/children/mstteamid_param/valueProcess.js @@ -1,4 +1,4 @@ -import("system.result"); import("system.vars"); +import("system.result"); result.string(vars.get("$field.MST_TEAM_ID")); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js b/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js index 3537c33492c..4291674d827 100644 --- a/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js @@ -3,4 +3,6 @@ import("system.result"); result.string("SALESPROJECT \n\ left join CONTACT on (SALESPROJECT.CONTACT_ID = CONTACT.CONTACTID) \n\ - left join ORGANISATION on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID)"); \ No newline at end of file + left join ORGANISATION on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID)\n\ + left join MST_TEAMLINK on (SALESPROJECT.SALESPROJECTID = MST_TEAMLINK.OBJECT_ROWID and MST_TEAMLINK.OBJECT_TYPE = 'Salesproject')\n\ + left join MST_TEAM on (MST_TEAM.MST_TEAMID = MST_TEAMLINK.MST_TEAM_ID)"); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js deleted file mode 100644 index adc9b83fdd0..00000000000 --- a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string("select TEAMNAME from MST_TEAM where MST_TEAM.MST_TEAMID = SALESPROJECT.MST_TEAM_ID"); \ No newline at end of file diff --git a/neonContext/MSTeamsAddMembers/MSTeamsAddMembers.aod b/neonContext/MSTeamsAddMembers/MSTeamsAddMembers.aod deleted file mode 100644 index 8ba520c3890..00000000000 --- a/neonContext/MSTeamsAddMembers/MSTeamsAddMembers.aod +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> - <name>MSTeamsAddMembers</name> - <title>Add members</title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <editView>MSTeamsAddMembersEdit_view</editView> - <entity>MSTeamsAddMembers_entity</entity> - <references> - <neonViewReference> - <name>9974f15a-7f2a-41fb-afbe-9e946c857f60</name> - <view>MSTeamsAddMembersEdit_view</view> - </neonViewReference> - </references> -</neonContext> diff --git a/neonContext/MSTeamsChat/MSTeamsChat.aod b/neonContext/MSTeamsChat/MSTeamsChat.aod deleted file mode 100644 index 144d3138459..00000000000 --- a/neonContext/MSTeamsChat/MSTeamsChat.aod +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> - <name>MSTeamsChat</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <editView>MSTeamsChatEdit_view</editView> - <entity>MSTeamsChat_entity</entity> - <references> - <neonViewReference> - <name>1a157c6c-7db9-4a2a-9e62-7d149b146bde</name> - <view>MSTeamsChatEdit_view</view> - </neonViewReference> - </references> -</neonContext> diff --git a/neonView/MSTeamsAddMembersEdit_view/MSTeamsAddMembersEdit_view.aod b/neonView/MSTeamsAddMembersEdit_view/MSTeamsAddMembersEdit_view.aod deleted file mode 100644 index 378bc712922..00000000000 --- a/neonView/MSTeamsAddMembersEdit_view/MSTeamsAddMembersEdit_view.aod +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> - <name>MSTeamsAddMembersEdit_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <size>SMALL</size> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <genericViewTemplate> - <name>TeamName</name> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>4d4e4438-63d7-463b-ba87-1b07c8fb046c</name> - <entityField>MST_TEAMNAME</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - <neonViewReference> - <name>8de10b28-e1aa-46d9-9ac3-73cff46619fb</name> - <entityField>Members</entityField> - <view>MSTTeamMemberMultiEdit_view</view> - </neonViewReference> - </children> -</neonView> diff --git a/neonView/MSTeamsChatEdit_view/MSTeamsChatEdit_view.aod b/neonView/MSTeamsChatEdit_view/MSTeamsChatEdit_view.aod deleted file mode 100644 index 9c48b08a6a9..00000000000 --- a/neonView/MSTeamsChatEdit_view/MSTeamsChatEdit_view.aod +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> - <name>MSTeamsChatEdit_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <size>NORMAL</size> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <genericViewTemplate> - <name>AllChannel</name> - <editMode v="true" /> - <entityField>#ENTITY</entityField> - <title>Alle Channel</title> - <fields> - <entityFieldLink> - <name>d3cc6ea3-00b5-4da5-9a58-a0e18aaff8da</name> - <entityField>SEARCHVALUE</entityField> - </entityFieldLink> - <entityFieldLink> - <name>9e188c23-3060-4f5c-bb67-8dce3ef5f93f</name> - <entityField>ALLCHANNELS</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - <neonViewReference> - <name>6c47a973-ef7c-4165-addb-427c1cce9540</name> - <entityField>Consumer</entityField> - <view>MSTeamsMessageFilter_view</view> - </neonViewReference> - <actionsViewTemplate> - <name>LoadNewMessages</name> - <actions> - <element>LoadNewMessages</element> - </actions> - <entityField>#ENTITY</entityField> - </actionsViewTemplate> - </children> -</neonView> diff --git a/neonView/MemberFilter_view/MemberFilter_view.aod b/neonView/MemberFilter_view/MemberFilter_view.aod index d9e51a55383..35d9b432b67 100644 --- a/neonView/MemberFilter_view/MemberFilter_view.aod +++ b/neonView/MemberFilter_view/MemberFilter_view.aod @@ -18,6 +18,8 @@ <subtitleField>CONTACTROLE</subtitleField> <descriptionField>ORGANISATION_NAME</descriptionField> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <columns> <neonTableColumn> <name>8b6b6eeb-6246-414f-95f6-453b71e4a9db</name> diff --git a/neonView/MemberLookup_view/MemberLookup_view.aod b/neonView/MemberLookup_view/MemberLookup_view.aod index f3b89eca1f3..705d1bde99d 100644 --- a/neonView/MemberLookup_view/MemberLookup_view.aod +++ b/neonView/MemberLookup_view/MemberLookup_view.aod @@ -11,6 +11,8 @@ <tableViewTemplate> <name>Table</name> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <columns> <neonTableColumn> <name>e3a82f5d-2eee-43bc-8140-e995b23481df</name> diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod index 6bfac93548e..e33726ea532 100644 --- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod +++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod @@ -59,6 +59,7 @@ <linkedColumns> <element>PROJECTTITLE</element> </linkedColumns> + <fixedFilterFields /> <title></title> <columns> <neonTableColumn> @@ -101,6 +102,8 @@ <linkedColumns> <element>PROJECTTITLE</element> </linkedColumns> + <defaultGroupFields /> + <fixedFilterFields /> <columns> <neonTreeTableColumn> <name>c3c8cd94-5bb4-46bb-a61b-fec67fcc4841</name> diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod index 57d0c606e3e..d6b9bf5e3aa 100644 --- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod +++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod @@ -9,11 +9,6 @@ </masterSlaveLayout> </layout> <children> - <neonViewReference> - <name>04b5a305-b2a6-481a-83a5-1d94bee08143</name> - <entityField>#ENTITY</entityField> - <view>SalesprojectPreview_view</view> - </neonViewReference> <neonViewReference> <name>673a34c7-5781-4c72-b0c8-944f1e5de9c6</name> <entityField>#ENTITY</entityField> diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js index bdb360e1231..69abf0969b8 100644 --- a/process/MSTeams_lib/process.js +++ b/process/MSTeams_lib/process.js @@ -1,3 +1,45 @@ +import("Sql_lib"); import("system.teams"); +import("system.project"); -function MSTeamsUtils () {} \ No newline at end of file +function MSTeamsUtils () {} + +MSTeamsUtils.isTeamsEnabled = function () +{ + return project.getInstanceConfigValue("teamsEnabled", "false") == "true"; +} + +MSTeamsUtils.getTeamLinkContexts = function () +{ + return { + "Salesproject": {singleLinkPerObject: true} + }; +} + +MSTeamsUtils.createTeamLink = function (pTeamId, pRowId, pObjectType) +{ + var currentTeamLinkId; + //if singleLinkPerObject is true, only one team link can be created for the given objectRowId + if (MSTeamsUtils.getTeamLinkContexts()[pObjectType].singleLinkPerObject) + { + currentTeamLinkId = newSelect("MST_TEAMLINKID") + .from("MST_TEAMLINK") + .where("MST_TEAMLINK.OBJECT_ROWID", pRowId) + .and("MST_TEAMLINK.OBJECT_TYPE", pObjectType) + .cell(); + } + if (currentTeamLinkId) + { + newWhere("MST_TEAMLINK.MST_TEAMLINKID", currentTeamLinkId).updateFields({ + "MST_TEAM_ID": pTeamId + }); + } + else + { + new SqlBuilder().insertFields({ + "MST_TEAM_ID": pTeamId, + "OBJECT_ROWID": pRowId, + "OBJECT_TYPE": pObjectType + }, "MST_TEAMLINK", "MST_TEAMLINKID"); + } +} \ No newline at end of file -- GitLab From d701bed9b953599fa8311195239b08e01a5443e3 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 4 Sep 2020 11:06:02 +0200 Subject: [PATCH 024/184] #1064484 Teams integration optimized --- entity/Activity_entity/Activity_entity.aod | 6 ++-- .../importfromteams/onActionProcess.js | 6 ---- .../mst_teamactions/stateProcess.js | 15 --------- .../importfromteams/onActionProcess.js | 7 +++++ .../msteamsactions/stateProcess.js | 7 +++++ .../MSTTeamMember_entity.aod | 31 +++++++++++++------ .../displayValueProcess.js | 2 +- .../{member => contact_id}/stateProcess.js | 0 .../entityfields/invite/dropDownProcess.js | 7 +++++ .../entityfields/invite/mandatoryProcess.js | 4 +++ .../entityfields/invite/stateProcess.js | 5 +++ .../entityfields/isextern/valueProcess.js | 2 +- .../entityfields/isowner/dropDownProcess.js | 7 +++++ .../entityfields/isowner/mandatoryProcess.js | 4 +++ .../entityfields/isowner/stateProcess.js | 5 +++ .../role_or_invite/dropDownProcess.js | 21 ------------- .../role_or_invite/stateProcess.js | 5 --- .../recordcontainers/jdito/contentProcess.js | 5 +-- entity/MSTTeam_entity/MSTTeam_entity.aod | 16 ++++++++++ entity/MSTTeam_entity/afterUiInit.js | 20 ++++++++++++ .../children/teamid_param/valueProcess.js} | 4 +-- .../entityfields/teammembers/onValidation.js | 11 +++++++ .../recordcontainers/jdito/onInsert.js | 8 ++--- .../recordcontainers/jdito/onUpdate.js | 8 ++--- .../MSTeamsActivityImport_entity.aod | 6 +++- .../entityfields/team_id/valueProcess.js | 7 +---- .../MSTeamsChannel_entity.aod | 8 +++++ entity/Member_entity/Member_entity.aod | 8 +++++ .../mstteamid_param/valueProcess.js | 9 +----- .../Salesproject_entity.aod | 4 +++ .../enablemsteams_param/valueProcess.js | 3 ++ neonContext/MSTeamsChannel/MSTeamsChannel.aod | 6 ++++ .../MSTTeamEdit_view/MSTTeamEdit_view.aod | 15 +++------ .../MSTTeamMemberMultiEdit_view.aod | 14 ++++++--- .../MSTTeamPreview_view.aod | 5 +++ .../MSTeamsChannelList_view.aod | 25 +++++++++++++++ process/Entity_lib/process.js | 8 ++--- process/MSTeams_lib/process.js | 19 ++++++++++++ 38 files changed, 234 insertions(+), 109 deletions(-) delete mode 100644 entity/Activity_entity/entityfields/mst_teamactions/children/importfromteams/onActionProcess.js delete mode 100644 entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js create mode 100644 entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js create mode 100644 entity/Activity_entity/entityfields/msteamsactions/stateProcess.js rename entity/MSTTeamMember_entity/entityfields/{member => contact_id}/displayValueProcess.js (92%) rename entity/MSTTeamMember_entity/entityfields/{member => contact_id}/stateProcess.js (100%) create mode 100644 entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/isowner/dropDownProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/isowner/mandatoryProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/isowner/stateProcess.js delete mode 100644 entity/MSTTeamMember_entity/entityfields/role_or_invite/dropDownProcess.js delete mode 100644 entity/MSTTeamMember_entity/entityfields/role_or_invite/stateProcess.js create mode 100644 entity/MSTTeam_entity/afterUiInit.js rename entity/{MSTTeamMember_entity/entityfields/role_or_invite/mandatoryProcess.js => MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js} (51%) create mode 100644 entity/MSTTeam_entity/entityfields/teammembers/onValidation.js create mode 100644 entity/Salesproject_entity/entityfields/members/children/enablemsteams_param/valueProcess.js create mode 100644 neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index 7f288315562..a4390983dd2 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -591,14 +591,14 @@ </children> </entityConsumer> <entityActionGroup> - <name>MST_TeamActions</name> + <name>MSTeamsActions</name> <title>MS Teams</title> - <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js</stateProcess> + <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js</stateProcess> <children> <entityActionField> <name>importFromTeams</name> <title>Import from Teams</title> - <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/mst_teamactions/children/importfromteams/onActionProcess.js</onActionProcess> + <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js</onActionProcess> </entityActionField> </children> </entityActionGroup> diff --git a/entity/Activity_entity/entityfields/mst_teamactions/children/importfromteams/onActionProcess.js b/entity/Activity_entity/entityfields/mst_teamactions/children/importfromteams/onActionProcess.js deleted file mode 100644 index 3610fc446b7..00000000000 --- a/entity/Activity_entity/entityfields/mst_teamactions/children/importfromteams/onActionProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.neon"); - -neon.openContext("MSTTeamActivityImport", null, null, neon.OPERATINGSTATE_NEW, { - "RowId_param" : vars.get("$param.RowId_param") -}); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js b/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js deleted file mode 100644 index 5442a044cca..00000000000 --- a/entity/Activity_entity/entityfields/mst_teamactions/stateProcess.js +++ /dev/null @@ -1,15 +0,0 @@ -import("system.neon"); -import("system.result"); -import("system.project"); - -var isTeamsEnabled = project.getInstanceConfigValue("teamsEnabled", null); - -if (isTeamsEnabled == "true") -{ - result.string(neon.COMPONENTSTATE_EDITABLE); -} -else -{ - result.string(neon.COMPONENTSTATE_INVISIBLE); - result.string(neon.COMPONENTSTATE_INVISIBLE); -} \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js b/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js new file mode 100644 index 00000000000..781ff2f24f2 --- /dev/null +++ b/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.neon"); + +neon.openContext("MSTeamsActivityImport", null, null, neon.OPERATINGSTATE_NEW, { + "ObjectRowId_param" : vars.get("$param.RowId_param"), + "ObjectType_param": vars.get("$param.ObjectId_param") +}); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js b/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js new file mode 100644 index 00000000000..c05618702e3 --- /dev/null +++ b/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("MSTeams_lib"); + +var isTeamsEnabled = vars.get("$param.EnableMSTeams_param") == "true" && MSTeamsUtils.isTeamsEnabled(); +result.string(isTeamsEnabled ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_INVISIBLE); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod index 57390700764..94ab56ff9a8 100644 --- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -17,11 +17,11 @@ </dependencies> </entityProvider> <entityField> - <name>MEMBER</name> + <name>CONTACT_ID</name> <title>Members</title> <consumer>ProjectMembers</consumer> - <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/member/stateProcess.js</stateProcess> - <displayValueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/member/displayValueProcess.js</displayValueProcess> + <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js</stateProcess> + <displayValueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>UID</name> @@ -52,12 +52,6 @@ </entityParameter> </children> </entityConsumer> - <entityField> - <name>ROLE_OR_INVITE</name> - <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role_or_invite/mandatoryProcess.js</mandatoryProcess> - <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role_or_invite/dropDownProcess.js</dropDownProcess> - <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role_or_invite/stateProcess.js</stateProcess> - </entityField> <entityField> <name>ISEXTERN</name> <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js</valueProcess> @@ -89,6 +83,20 @@ <name>ObjectType_param</name> <expose v="true" /> </entityParameter> + <entityField> + <name>ISOWNER</name> + <title>Role</title> + <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/isowner/mandatoryProcess.js</mandatoryProcess> + <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/isowner/dropDownProcess.js</dropDownProcess> + <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/isowner/stateProcess.js</stateProcess> + </entityField> + <entityField> + <name>INVITE</name> + <title>Invitation</title> + <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js</mandatoryProcess> + <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js</dropDownProcess> + <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js</stateProcess> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -106,7 +114,10 @@ <name>MEMBERNAME.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> - <name>MEMBER.displayValue</name> + <name>ISOWNER.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CONTACT_ID.displayValue</name> </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> diff --git a/entity/MSTTeamMember_entity/entityfields/member/displayValueProcess.js b/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js similarity index 92% rename from entity/MSTTeamMember_entity/entityfields/member/displayValueProcess.js rename to entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js index 524ecbbf750..e038c4ba360 100644 --- a/entity/MSTTeamMember_entity/entityfields/member/displayValueProcess.js +++ b/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js @@ -6,5 +6,5 @@ if (vars.get("$field.MEMBERNAME")) result.string(vars.get("$field.MEMBERNAME")); else { - result.string(ContactUtils.getTitleByContactId(vars.get("$field.MEMBER"))); + result.string(ContactUtils.getTitleByContactId(vars.get("$field.CONTACT_ID"))); } \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/member/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js similarity index 100% rename from entity/MSTTeamMember_entity/entityfields/member/stateProcess.js rename to entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js diff --git a/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js new file mode 100644 index 00000000000..0a4ec38e3c7 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.translate"); + +result.object([ + ["true", translate.text("Invite")], + ["false", translate.text("Don't invite")] +]); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js new file mode 100644 index 00000000000..5d086208537 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(!vars.get("$field.MEMBERNAME") && vars.get("$field.ISEXTERN") == "true"); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js new file mode 100644 index 00000000000..37feecaa37d --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +result.string(vars.get("$field.MEMBERNAME") || vars.get("$field.ISEXTERN") != "true" ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js index f83ff5382e6..bb888295a8a 100644 --- a/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js +++ b/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js @@ -2,6 +2,6 @@ import("Employee_lib"); import("system.vars"); import("system.result"); -var member = vars.get("$field.MEMBER"); +var member = vars.get("$field.CONTACT_ID"); if (member) result.string(!EmployeeUtils.isUser(member)); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/isowner/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/isowner/dropDownProcess.js new file mode 100644 index 00000000000..3b9d6a7266f --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/isowner/dropDownProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.translate"); + +result.object([ + ["true", translate.text("Owner")], + ["false", translate.text("Member")] +]); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/isowner/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/isowner/mandatoryProcess.js new file mode 100644 index 00000000000..56edc5e4c6b --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/isowner/mandatoryProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(!vars.get("$field.MEMBERNAME") && vars.get("$field.ISEXTERN") != "true"); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/isowner/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/isowner/stateProcess.js new file mode 100644 index 00000000000..025c6018279 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/isowner/stateProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +result.string(vars.get("$field.MEMBERNAME") || vars.get("$field.ISEXTERN") == "true" ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role_or_invite/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/role_or_invite/dropDownProcess.js deleted file mode 100644 index 8f7cbef15d5..00000000000 --- a/entity/MSTTeamMember_entity/entityfields/role_or_invite/dropDownProcess.js +++ /dev/null @@ -1,21 +0,0 @@ -import("system.translate"); -import("system.vars"); -import("system.result"); - -var isExtern = vars.get("$field.ISEXTERN"); -var res = []; -if (isExtern == "true") -{ - res = [ - ["invite", translate.text("Invite")], - ["notInvite", translate.text("Don't invite")] - ]; -} -else if (isExtern == "false") -{ - res = [ - ["isOwner", translate.text("Owner")], - ["isMember", translate.text("Member")] - ] -} -result.object(res); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role_or_invite/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/role_or_invite/stateProcess.js deleted file mode 100644 index 8d5def7b923..00000000000 --- a/entity/MSTTeamMember_entity/entityfields/role_or_invite/stateProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("system.vars"); -import("system.neon"); - -result.string(vars.get("$field.MEMBERNAME") ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js index 421591be234..0e47ff74551 100644 --- a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js @@ -4,20 +4,21 @@ import("system.vars"); var teamId = vars.get("$param.MSTTeamId_param"); var allMembers = teamId ? teams.getAllMembers(teamId) : {}; +var owners = teamId ? teams.getAllOwners(teamId) : {}; var memberArray = []; if (vars.get("$local.idvalues")) { memberArray = vars.get("$local.idvalues").map(function (memberId) { - return [memberId, allMembers[memberId], allMembers[memberId]]; + return [memberId, allMembers[memberId], memberId in owners, allMembers[memberId]]; }); } else { for (let memberId in allMembers) { - memberArray.push([memberId, allMembers[memberId], allMembers[memberId]]); + memberArray.push([memberId, allMembers[memberId], memberId in owners, allMembers[memberId]]); } } diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod index 510b2585b53..fbd8d90278c 100644 --- a/entity/MSTTeam_entity/MSTTeam_entity.aod +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -9,6 +9,7 @@ <grantUpdateProcess>%aditoprj%/entity/MSTTeam_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/MSTTeam_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/MSTTeam_entity/contentTitleProcess.js</contentTitleProcess> + <afterUiInit>%aditoprj%/entity/MSTTeam_entity/afterUiInit.js</afterUiInit> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -50,6 +51,7 @@ <entityConsumer> <name>TeamMembers</name> <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js</stateProcess> + <onValidation>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js</onValidation> <dependency> <name>dependency</name> <entityName>MSTTeamMember_entity</entityName> @@ -86,6 +88,20 @@ <name>ObjectType_param</name> <expose v="true" /> </entityParameter> + <entityConsumer> + <name>Channels</name> + <dependency> + <name>dependency</name> + <entityName>MSTeamsChannel_entity</entityName> + <fieldName>ChannelsForTeam</fieldName> + </dependency> + <children> + <entityParameter> + <name>TeamId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTTeam_entity/afterUiInit.js b/entity/MSTTeam_entity/afterUiInit.js new file mode 100644 index 00000000000..018d0a4733e --- /dev/null +++ b/entity/MSTTeam_entity/afterUiInit.js @@ -0,0 +1,20 @@ +import("system.entities"); +import("system.vars"); +import("system.neon"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + var memberLoadConfig = entities.createConfigForLoadingRows() + .fields(["CONTACT_ID"]) + .entity("Member_entity") + .provider("Links") + .addParameter("ObjectRowId_param", vars.get("$param.ObjectRowId_param")) + .addParameter("ObjectType_param", vars.get("$param.ObjectType_param")); + + entities.getRows(memberLoadConfig).forEach(function (member) + { + neon.addRecord("TeamMembers", { + "CONTACT_ID": member["CONTACT_ID"] + }); + }) +} \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role_or_invite/mandatoryProcess.js b/entity/MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js similarity index 51% rename from entity/MSTTeamMember_entity/entityfields/role_or_invite/mandatoryProcess.js rename to entity/MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js index 8be1684334b..16c85500b53 100644 --- a/entity/MSTTeamMember_entity/entityfields/role_or_invite/mandatoryProcess.js +++ b/entity/MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js @@ -1,4 +1,4 @@ -import("system.result"); import("system.vars"); +import("system.result"); -result.string(!vars.get("$field.MEMBERNAME")); \ No newline at end of file +result.string(vars.get("$field.UID")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js b/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js new file mode 100644 index 00000000000..7bc2769a9fb --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js @@ -0,0 +1,11 @@ +import("Entity_lib"); +import("system.result"); +import("system.translate"); + +var members = EntityConsumerRowsHelper.getCurrentConsumerRows("TeamMembers", ["ISOWNER"]); +var hasOwner = members.some(function (member) +{ + return member["ISOWNER"] == "true"; +}); +if (!hasOwner) + result.string(translate.text("The team must have at least one owner")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js index e2f64e547b2..007fa7bf9a2 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -16,15 +16,15 @@ var internalMembers = []; var externalMembers = []; teamMembers.forEach(function (teamMember) { - var memberUser = EmployeeUtils.getUserByContactId(teamMember.MEMBER); + var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]); if (!memberUser) { - var memberEmail = CommUtil.getStandardMail(teamMember.MEMBER); + var memberEmail = CommUtil.getStandardMail(teamMember["CONTACT_ID"]); if (memberEmail) { externalMembers.push( teams.createExternalUserConfig(memberEmail) - .sendInvitation(teamMember.ROLE_OR_INVITE == "invite") + .sendInvitation(teamMember["INVITE"] == "true") ); } return; @@ -35,7 +35,7 @@ teamMembers.forEach(function (teamMember) memberAzureId = teams.getInternalAzureId(memberUpn); if (memberAzureId) { - if (teamMember.ROLE_OR_INVITE == "isOwner") + if (teamMember["ISOWNER"] == "true") ownerIds.push(memberAzureId); else internalMembers.push(teams.createInternalUserConfig(memberAzureId)); diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js index 2554384b37e..f645523963b 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js @@ -16,15 +16,15 @@ var internalMembers = []; var externalMembers = []; insertedTeamMembers.forEach(function (teamMember) { - var memberUser = EmployeeUtils.getUserByContactId(teamMember.MEMBER); + var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]); if (!memberUser) { - var memberEmail = CommUtil.getStandardMail(teamMember.MEMBER); + var memberEmail = CommUtil.getStandardMail(teamMember["CONTACT_ID"]); if (memberEmail) { externalMembers.push( teams.createExternalUserConfig(memberEmail) - .sendInvitation(teamMember.ROLE_OR_INVITE == "invite") + .sendInvitation(teamMember["INVITE"] == "true") ); } return; @@ -35,7 +35,7 @@ insertedTeamMembers.forEach(function (teamMember) memberAzureId = teams.getInternalAzureId(memberUpn); if (memberAzureId) { - internalMembers.push(teams.createInternalUserConfig(memberAzureId).setOwner(teamMember.ROLE_OR_INVITE == "isOwner")); + internalMembers.push(teams.createInternalUserConfig(memberAzureId).setOwner(teamMember["ISOWNER"] == "true")); } }); diff --git a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod index cc1786851fb..6ae1fbc483d 100644 --- a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod +++ b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod @@ -40,7 +40,7 @@ <consumer>Channels</consumer> </entityField> <entityParameter> - <name>RowId_param</name> + <name>ObjectRowId_param</name> <expose v="true" /> </entityParameter> <entityField> @@ -70,6 +70,10 @@ <entityField> <name>LOAD_ID</name> </entityField> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js index 6fa5f68e8e8..1f7366af28d 100644 --- a/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js +++ b/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js @@ -1,9 +1,4 @@ import("system.result"); import("Sql_lib"); -var teamId = newSelect("MST_TEAM_ID") - .from("SALESPROJECT") - .where("SALESPROJECT.SALESPROJECTID", "$param.RowId_param") - .cell(); - -result.string(teamId); \ No newline at end of file +result.string(MSTeamsUtils.getLinkedTeam(vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param")) || ""); \ No newline at end of file diff --git a/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod index 9094b5680a4..f54a35bd2af 100644 --- a/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod +++ b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod @@ -2,8 +2,10 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> <name>MSTeamsChannel_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <title>Channel</title> <siblings /> <contentTitleProcess>%aditoprj%/entity/MSTeamsChannel_entity/contentTitleProcess.js</contentTitleProcess> + <titlePlural>Channels</titlePlural> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -25,6 +27,12 @@ <fieldName>Channels</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>c2b60ab3-3edd-4571-b9aa-766826f561fd</name> + <entityName>MSTTeam_entity</entityName> + <fieldName>Channels</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityParameter> diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index 5b76c88fab6..cd7c674e6b5 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -281,6 +281,14 @@ <valueProcess>%aditoprj%/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> + <entityField> + <name>MST_MEMBERROLE</name> + <title>Teams role</title> + </entityField> + <entityParameter> + <name>EnableMSTeams_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js b/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js index d949390036f..566da0b330d 100644 --- a/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js +++ b/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js @@ -5,11 +5,4 @@ import("MSTeams_lib"); var objectType = vars.get("$param.ObjectType_param"); if (objectType in MSTeamsUtils.getTeamLinkContexts()) -{ - var teamId = newSelect("MST_TEAM_ID") - .from("MST_TEAMLINK") - .where("MST_TEAMLINK.OBJECT_ROWID", "$param.ObjectRowId_param") - .and("MST_TEAMLINK.OBJECT_TYPE", objectType) - .cell(); - result.string(teamId); -} \ No newline at end of file + result.string(MSTeamsUtils.getLinkedTeam(vars.get("$param.ObjectRowId_param"), objectType) || ""); \ No newline at end of file diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index c5167cdac22..c26b0305707 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -274,6 +274,10 @@ <name>MSTTeamId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/mstteamid_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>EnableMSTeams_param</name> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/enablemsteams_param/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> <entityActionField> diff --git a/entity/Salesproject_entity/entityfields/members/children/enablemsteams_param/valueProcess.js b/entity/Salesproject_entity/entityfields/members/children/enablemsteams_param/valueProcess.js new file mode 100644 index 00000000000..40effa01784 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/members/children/enablemsteams_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string(true); \ No newline at end of file diff --git a/neonContext/MSTeamsChannel/MSTeamsChannel.aod b/neonContext/MSTeamsChannel/MSTeamsChannel.aod index de18e7088f2..f8986b6e986 100644 --- a/neonContext/MSTeamsChannel/MSTeamsChannel.aod +++ b/neonContext/MSTeamsChannel/MSTeamsChannel.aod @@ -3,4 +3,10 @@ <name>MSTeamsChannel</name> <majorModelMode>DISTRIBUTED</majorModelMode> <entity>MSTeamsChannel_entity</entity> + <references> + <neonViewReference> + <name>01e5e126-8d14-4dec-a468-0de13b920900</name> + <view>MSTeamsChannelList_view</view> + </neonViewReference> + </references> </neonContext> diff --git a/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod index 7c20b7f45bf..404d59d6478 100644 --- a/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod +++ b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod @@ -18,6 +18,10 @@ <name>b69c563c-6230-4bb5-b543-236e0fdc791c</name> <entityField>TEAMNAME</entityField> </entityFieldLink> + <entityFieldLink> + <name>258beab2-60c4-4639-a343-3ac67c82dd5a</name> + <entityField>DESCRIPTION</entityField> + </entityFieldLink> </fields> </genericViewTemplate> <neonViewReference> @@ -25,16 +29,5 @@ <entityField>TeamMembers</entityField> <view>MSTTeamMemberMultiEdit_view</view> </neonViewReference> - <genericViewTemplate> - <name>Description</name> - <editMode v="true" /> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>0490e1b0-59e9-410d-9da7-c1f50abaa15f</name> - <entityField>DESCRIPTION</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> </children> </neonView> diff --git a/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod index a47c1df5f30..27b9c4b7bdf 100644 --- a/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod +++ b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod @@ -3,9 +3,9 @@ <name>MSTTeamMemberMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <noneLayout> <name>layout</name> - </boxLayout> + </noneLayout> </layout> <children> <genericMultipleViewTemplate> @@ -14,11 +14,15 @@ <columns> <neonGenericMultipleTableColumn> <name>a01d6a4e-1ac4-426c-a891-890bd3e9a4d0</name> - <entityField>MEMBER</entityField> + <entityField>CONTACT_ID</entityField> </neonGenericMultipleTableColumn> <neonGenericMultipleTableColumn> - <name>dade9a5b-2398-4303-8cae-6c7d0077e43d</name> - <entityField>ROLE_OR_INVITE</entityField> + <name>467ab169-f46a-4036-9e5e-5c480bd947a6</name> + <entityField>ISOWNER</entityField> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>b85c25c8-09dd-4f9a-b0b4-31c0b8a8f12c</name> + <entityField>INVITE</entityField> </neonGenericMultipleTableColumn> </columns> </genericMultipleViewTemplate> diff --git a/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod b/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod index 5932326dc88..d543b83e6b1 100644 --- a/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod +++ b/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod @@ -34,5 +34,10 @@ <entityField>TeamMembers</entityField> <view>MSTTeamMemberList_view</view> </neonViewReference> + <neonViewReference> + <name>500dd7ba-366e-4b01-9d28-ebe4672c7380</name> + <entityField>Channels</entityField> + <view>MSTeamsChannelList_view</view> + </neonViewReference> </children> </neonView> diff --git a/neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod b/neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod new file mode 100644 index 00000000000..514bf2098ee --- /dev/null +++ b/neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTeamsChannelList_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <titledListViewTemplate> + <name>ChannelList</name> + <entityField>#ENTITY</entityField> + <isDeletable v="false" /> + <isEditable v="false" /> + <isCreatable v="false" /> + <columns> + <neonTitledListTableColumn> + <name>04b88bd4-22f4-4640-a4ff-26d90bc48437</name> + <entityField>CHANNELNAME</entityField> + </neonTitledListTableColumn> + </columns> + </titledListViewTemplate> + </children> +</neonView> diff --git a/process/Entity_lib/process.js b/process/Entity_lib/process.js index 93360446bcf..81364bced0d 100644 --- a/process/Entity_lib/process.js +++ b/process/Entity_lib/process.js @@ -481,11 +481,11 @@ EntityConsumerRowsHelper.prototype.changeRows = function (pRowsToChange) pRowsToChange.forEach(function (changedRow) { changeCatalog[changedRow[this._uidField]] = changedRow; - }); + }, this); this._rows = this._rows.map(function (row) { return row[this._uidField] in changeCatalog ? changeCatalog[row[this._uidField]] : row; - }); + }, this); return this; } @@ -501,11 +501,11 @@ EntityConsumerRowsHelper.prototype.removeRows = function (pRowsToRemove) pRowsToRemove.forEach(function (deletedRow) { deleteCatalog[deletedRow[this._uidField]] = true; - }); + }, this); this._rows = this._rows.filter(function (row) { return !deleteCatalog[row[this._uidField]]; - }); + }, this); return this; } diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js index 69abf0969b8..2f41a4e4660 100644 --- a/process/MSTeams_lib/process.js +++ b/process/MSTeams_lib/process.js @@ -42,4 +42,23 @@ MSTeamsUtils.createTeamLink = function (pTeamId, pRowId, pObjectType) "OBJECT_TYPE": pObjectType }, "MST_TEAMLINK", "MST_TEAMLINKID"); } +} + +MSTeamsUtils.getLinkedTeams = function (pRowId, pObjectType) +{ + return newSelect("MST_TEAM_ID") + .from("MST_TEAMLINK") + .where("MST_TEAMLINK.OBJECT_ROWID", pRowId) + .andIfSet("MST_TEAMLINK.OBJECT_TYPE", pObjectType) + .arrayColumn(); +} + +MSTeamsUtils.getLinkedTeam = function (pRowId, pObjectType) +{ + return MSTeamsUtils.getLinkedTeams(pRowId, pObjectType)[0] || null; +} + +MSTeamsUtils.getTeamRoleSubSql = function (pTeamId, pContactIdField) +{ + } \ No newline at end of file -- GitLab From c549d64bf000629af44e94badda019ed068a3361 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 4 Sep 2020 17:04:38 +0200 Subject: [PATCH 025/184] #1064484 Teams integration changes --- .../MSTTeamMember_entity.aod | 18 +++-- .../contact_id/linkedContextProcess.js | 5 ++ .../entityfields/isowner/dropDownProcess.js | 7 -- .../entityfields/isowner/mandatoryProcess.js | 4 - .../entityfields/isowner/stateProcess.js | 5 -- .../entityfields/role/displayValueProcess.js | 10 +++ .../entityfields/role/dropDownProcess.js | 7 ++ .../entityfields/role/mandatoryProcess.js | 4 + .../entityfields/role/stateProcess.js | 14 ++++ .../recordcontainers/jdito/contentProcess.js | 32 ++++---- .../entityfields/teammembers/onValidation.js | 4 +- entity/MSTTeam_entity/grantDeleteProcess.js | 3 +- entity/MSTTeam_entity/grantUpdateProcess.js | 3 +- .../recordcontainers/jdito/onInsert.js | 2 +- .../recordcontainers/jdito/onUpdate.js | 2 +- entity/Member_entity/Member_entity.aod | 5 ++ .../mst_memberrole/stateProcess.js | 9 +++ .../mst_memberrole.value/expression.js | 5 ++ .../MSTTeamMemberList_view.aod | 10 ++- .../MSTTeamMemberMultiEdit_view.aod | 2 +- .../MemberFilter_view/MemberFilter_view.aod | 4 + process/MSTeams_lib/MSTeams_lib.aod | 1 + process/MSTeams_lib/process.js | 64 +++++++++++++++ process/Sql_lib/process.js | 78 +++++++++++++++++++ 24 files changed, 254 insertions(+), 44 deletions(-) create mode 100644 entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js delete mode 100644 entity/MSTTeamMember_entity/entityfields/isowner/dropDownProcess.js delete mode 100644 entity/MSTTeamMember_entity/entityfields/isowner/mandatoryProcess.js delete mode 100644 entity/MSTTeamMember_entity/entityfields/isowner/stateProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/role/displayValueProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/role/stateProcess.js create mode 100644 entity/Member_entity/entityfields/mst_memberrole/stateProcess.js create mode 100644 entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod index 94ab56ff9a8..d8655c46b72 100644 --- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -20,6 +20,7 @@ <name>CONTACT_ID</name> <title>Members</title> <consumer>ProjectMembers</consumer> + <linkedContextProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess> <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js</stateProcess> <displayValueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess> </entityField> @@ -84,11 +85,12 @@ <expose v="true" /> </entityParameter> <entityField> - <name>ISOWNER</name> + <name>ROLE</name> <title>Role</title> - <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/isowner/mandatoryProcess.js</mandatoryProcess> - <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/isowner/dropDownProcess.js</dropDownProcess> - <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/isowner/stateProcess.js</stateProcess> + <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js</mandatoryProcess> + <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js</dropDownProcess> + <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js</stateProcess> + <displayValueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>INVITE</name> @@ -114,11 +116,17 @@ <name>MEMBERNAME.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> - <name>ISOWNER.value</name> + <name>ROLE.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CONTACT_ID.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>CONTACT_ID.displayValue</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ISEXTERN.value</name> + </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> </recordContainers> diff --git a/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js b/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js new file mode 100644 index 00000000000..c02451c808e --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); + +if (vars.get("$field.CONTACT_ID")) + result.string("Person"); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/isowner/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/isowner/dropDownProcess.js deleted file mode 100644 index 3b9d6a7266f..00000000000 --- a/entity/MSTTeamMember_entity/entityfields/isowner/dropDownProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.result"); -import("system.translate"); - -result.object([ - ["true", translate.text("Owner")], - ["false", translate.text("Member")] -]); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/isowner/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/isowner/mandatoryProcess.js deleted file mode 100644 index 56edc5e4c6b..00000000000 --- a/entity/MSTTeamMember_entity/entityfields/isowner/mandatoryProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("system.vars"); - -result.string(!vars.get("$field.MEMBERNAME") && vars.get("$field.ISEXTERN") != "true"); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/isowner/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/isowner/stateProcess.js deleted file mode 100644 index 025c6018279..00000000000 --- a/entity/MSTTeamMember_entity/entityfields/isowner/stateProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("system.vars"); -import("system.neon"); - -result.string(vars.get("$field.MEMBERNAME") || vars.get("$field.ISEXTERN") == "true" ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role/displayValueProcess.js b/entity/MSTTeamMember_entity/entityfields/role/displayValueProcess.js new file mode 100644 index 00000000000..19bd5d6043b --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/role/displayValueProcess.js @@ -0,0 +1,10 @@ +import("system.result"); +import("system.translate"); +import("system.vars"); + +var roles = { + "owner": translate.text("Owner"), + "member": translate.text("Member"), + "guest": translate.text("Guest") +}; +result.string(roles[vars.get("$field.ROLE")] || ""); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js new file mode 100644 index 00000000000..97558334115 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.translate"); + +result.object([ + ["owner", translate.text("Owner")], + ["member", translate.text("Member")] +]); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js new file mode 100644 index 00000000000..5015e9937f4 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(vars.get("$field.ISEXTERN") != "true"); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js new file mode 100644 index 00000000000..f947ad98892 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js @@ -0,0 +1,14 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +var state = neon.COMPONENTSTATE_EDITABLE; +if (vars.get("$field.ISEXTERN") == "true") +{ + if (!vars.get("$field.MEMBERNAME")) + state = neon.COMPONENTSTATE_INVISIBLE; + else + state = neon.COMPONENTSTATE_READONLY; +} +else +result.string(state); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js index 0e47ff74551..1212de7df64 100644 --- a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js @@ -1,25 +1,31 @@ import("system.teams"); import("system.result"); import("system.vars"); +import("MSTeams_lib"); var teamId = vars.get("$param.MSTTeamId_param"); var allMembers = teamId ? teams.getAllMembers(teamId) : {}; +var memberIds = vars.get("$local.idvalues") || Object.keys(allMembers); var owners = teamId ? teams.getAllOwners(teamId) : {}; +var memberContactIds = MSTeamsUtils.getContactIdsByAzureIds(memberIds); var memberArray = []; -if (vars.get("$local.idvalues")) +memberArray = memberIds.map(function (memberId) { - memberArray = vars.get("$local.idvalues").map(function (memberId) - { - return [memberId, allMembers[memberId], memberId in owners, allMembers[memberId]]; - }); -} -else -{ - for (let memberId in allMembers) - { - memberArray.push([memberId, allMembers[memberId], memberId in owners, allMembers[memberId]]); - } -} + var role = "guest"; + if (memberId in owners) + role = "owner"; + else if (memberId in memberContactIds) + role = "member"; + + return [ + memberId, + allMembers[memberId], + role, + memberContactIds[memberId], + allMembers[memberId], + memberId in memberContactIds + ]; +}); result.object(memberArray); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js b/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js index 7bc2769a9fb..0629031e507 100644 --- a/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js +++ b/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js @@ -2,10 +2,10 @@ import("Entity_lib"); import("system.result"); import("system.translate"); -var members = EntityConsumerRowsHelper.getCurrentConsumerRows("TeamMembers", ["ISOWNER"]); +var members = EntityConsumerRowsHelper.getCurrentConsumerRows("TeamMembers", ["ROLE"]); var hasOwner = members.some(function (member) { - return member["ISOWNER"] == "true"; + return member["ROLE"] == "owner"; }); if (!hasOwner) result.string(translate.text("The team must have at least one owner")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/grantDeleteProcess.js b/entity/MSTTeam_entity/grantDeleteProcess.js index 5ecf6e451e5..d23403ca44d 100644 --- a/entity/MSTTeam_entity/grantDeleteProcess.js +++ b/entity/MSTTeam_entity/grantDeleteProcess.js @@ -1,4 +1,5 @@ import("system.result"); import("system.vars"); +import("MSTeams_lib"); -result.string(vars.get("$field.ISARCHIVED") != "true"); \ No newline at end of file +result.string(vars.get("$field.ISARCHIVED") != "true" && MSTeamsUtils.isUserTeamOwner(vars.get("$field.UID"))); \ No newline at end of file diff --git a/entity/MSTTeam_entity/grantUpdateProcess.js b/entity/MSTTeam_entity/grantUpdateProcess.js index 5ecf6e451e5..d23403ca44d 100644 --- a/entity/MSTTeam_entity/grantUpdateProcess.js +++ b/entity/MSTTeam_entity/grantUpdateProcess.js @@ -1,4 +1,5 @@ import("system.result"); import("system.vars"); +import("MSTeams_lib"); -result.string(vars.get("$field.ISARCHIVED") != "true"); \ No newline at end of file +result.string(vars.get("$field.ISARCHIVED") != "true" && MSTeamsUtils.isUserTeamOwner(vars.get("$field.UID"))); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js index 007fa7bf9a2..67814ad72f2 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -35,7 +35,7 @@ teamMembers.forEach(function (teamMember) memberAzureId = teams.getInternalAzureId(memberUpn); if (memberAzureId) { - if (teamMember["ISOWNER"] == "true") + if (teamMember["ROLE"] == "owner") ownerIds.push(memberAzureId); else internalMembers.push(teams.createInternalUserConfig(memberAzureId)); diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js index f645523963b..9219ab01d69 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js @@ -35,7 +35,7 @@ insertedTeamMembers.forEach(function (teamMember) memberAzureId = teams.getInternalAzureId(memberUpn); if (memberAzureId) { - internalMembers.push(teams.createInternalUserConfig(memberAzureId).setOwner(teamMember["ISOWNER"] == "true")); + internalMembers.push(teams.createInternalUserConfig(memberAzureId).setOwner(teamMember["ROLE"] == "owner")); } }); diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index cd7c674e6b5..b79d4cca1bc 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -284,6 +284,7 @@ <entityField> <name>MST_MEMBERROLE</name> <title>Teams role</title> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/mst_memberrole/stateProcess.js</stateProcess> </entityField> <entityParameter> <name>EnableMSTeams_param</name> @@ -415,6 +416,10 @@ <isFilterable v="true" /> <isLookupFilter v="true" /> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>MST_MEMBERROLE.value</name> + <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Member_entity/entityfields/mst_memberrole/stateProcess.js b/entity/Member_entity/entityfields/mst_memberrole/stateProcess.js new file mode 100644 index 00000000000..0d9f56400af --- /dev/null +++ b/entity/Member_entity/entityfields/mst_memberrole/stateProcess.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("MSTeams_lib"); + +result.string(MSTeamsUtils.isTeamsEnabled() && vars.get("$param.EnableMSTeams_param") == "true" + ? neon.COMPONENTSTATE_READONLY + : neon.COMPONENTSTATE_INVISIBLE +); \ No newline at end of file diff --git a/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js b/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js new file mode 100644 index 00000000000..2296cd85fe7 --- /dev/null +++ b/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("MSTeams_lib"); + +result.string(MSTeamsUtils.getTeamRoleSubSql(vars.get("$param.MSTTeamId_param"), "OBJECTMEMBER.CONTACT_ID")); \ No newline at end of file diff --git a/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod b/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod index c6b2cf1b3eb..55a8b3dda3b 100644 --- a/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod +++ b/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod @@ -3,9 +3,9 @@ <name>MSTTeamMemberList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <noneLayout> <name>layout</name> - </boxLayout> + </noneLayout> </layout> <children> <titledListViewTemplate> @@ -15,9 +15,13 @@ <isEditable v="false" /> <isCreatable v="false" /> <columns> + <neonTitledListTableColumn> + <name>ea5cdf04-7476-46f0-9df7-41d66e24acad</name> + <entityField>ROLE</entityField> + </neonTitledListTableColumn> <neonTitledListTableColumn> <name>20efb592-e94f-4f2c-87b5-fea410c4c28a</name> - <entityField>MEMBERNAME</entityField> + <entityField>CONTACT_ID</entityField> </neonTitledListTableColumn> </columns> </titledListViewTemplate> diff --git a/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod index 27b9c4b7bdf..7b50927fe8a 100644 --- a/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod +++ b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod @@ -18,7 +18,7 @@ </neonGenericMultipleTableColumn> <neonGenericMultipleTableColumn> <name>467ab169-f46a-4036-9e5e-5c480bd947a6</name> - <entityField>ISOWNER</entityField> + <entityField>ROLE</entityField> </neonGenericMultipleTableColumn> <neonGenericMultipleTableColumn> <name>b85c25c8-09dd-4f9a-b0b4-31c0b8a8f12c</name> diff --git a/neonView/MemberFilter_view/MemberFilter_view.aod b/neonView/MemberFilter_view/MemberFilter_view.aod index 35d9b432b67..0e32969791b 100644 --- a/neonView/MemberFilter_view/MemberFilter_view.aod +++ b/neonView/MemberFilter_view/MemberFilter_view.aod @@ -49,6 +49,10 @@ <name>bea82980-0639-405a-ab3f-92e45f97090e</name> <entityField>MEMBERROLE</entityField> </neonTableColumn> + <neonTableColumn> + <name>2a1a3331-5374-4da0-b15d-ede11a691e0a</name> + <entityField>MST_MEMBERROLE</entityField> + </neonTableColumn> </columns> </tableViewTemplate> </children> diff --git a/process/MSTeams_lib/MSTeams_lib.aod b/process/MSTeams_lib/MSTeams_lib.aod index b414a9e8a83..466fb42fa29 100644 --- a/process/MSTeams_lib/MSTeams_lib.aod +++ b/process/MSTeams_lib/MSTeams_lib.aod @@ -3,6 +3,7 @@ <name>MSTeams_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/MSTeams_lib/process.js</process> + <alias>Data_alias</alias> <variants> <element>LIBRARY</element> </variants> diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js index 2f41a4e4660..1cf1d4b8271 100644 --- a/process/MSTeams_lib/process.js +++ b/process/MSTeams_lib/process.js @@ -1,3 +1,6 @@ +import("Communication_lib"); +import("system.translate"); +import("system.tools"); import("Sql_lib"); import("system.teams"); import("system.project"); @@ -58,7 +61,68 @@ MSTeamsUtils.getLinkedTeam = function (pRowId, pObjectType) return MSTeamsUtils.getLinkedTeams(pRowId, pObjectType)[0] || null; } +MSTeamsUtils.getContactIdsByAzureIds = function (pAzureIds) +{ + if (pAzureIds.length === 0) + return {}; + + var teamsUsers = tools.getUsersByAttribute(tools.TEAMS_AZUREID, pAzureIds); + var contactIdMap = {}; + teamsUsers.forEach(function (user) + { + var azureId = user[tools.PARAMS][tools.TEAMS_AZUREID]; + contactIdMap[azureId] = user[tools.PARAMS][tools.CONTACTID]; + }); + return contactIdMap; +} + MSTeamsUtils.getTeamRoleSubSql = function (pTeamId, pContactIdField) { + if (!pTeamId) + return "''"; + + var ownerIds = Object.keys(teams.getAllOwners(pTeamId)); + var ownerContactIds = MSTeamsUtils.getContactIdsByAzureIds(ownerIds); + ownerContactIds = _getObjectValues(ownerContactIds); + + var members = teams.getAllMembers(pTeamId); + var memberIds = Object.keys(members); + var memberContactIds = MSTeamsUtils.getContactIdsByAzureIds(memberIds); + memberContactIds = _getObjectValues(memberContactIds); + + if (ownerContactIds.length === 0 && memberContactIds.length === 0) + return "''"; + + var caseWhen = SqlBuilder.caseStatement(true); + if (ownerContactIds.length !== 0) + caseWhen.when(pContactIdField, ownerContactIds, SqlBuilder.IN()).then(translate.text("Owner")); + if (memberContactIds.length !== 0) + caseWhen.when(pContactIdField, memberContactIds, SqlBuilder.IN()).then(translate.text("Member")); + + //the SqlBuilder.IN() can't be used here because of the sub-sql string for the email + caseWhen.when("(" + CommUtil.getStandardSubSqlMail() + ") in ('" + _getObjectValues(members).join("', '") + "')") + .then(translate.text("Guest")); + + return caseWhen.elseValue("").toString(); + + function _getObjectValues (pObject) + { + var values = []; + for (let key in pObject) + values.push(pObject[key]); + return values; + } +} + +MSTeamsUtils.isUserTeamOwner = function (pTeamId, pUserId) +{ + var user; + if (!pUserId) + user = tools.getCurrentUser(); + else + user = tools.getUserByAttribute(tools.NAME, pUserId); + if (!user) + return false; + return user[tools.PARAMS][tools.TEAMS_AZUREID] in teams.getAllOwners(pTeamId); } \ No newline at end of file diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index 3039c1cf1cb..d9bffacae79 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -2970,6 +2970,84 @@ SqlBuilder.prototype.translate = function(pAlias) return SqlUtils.translateStatementWithQuotes(this.build(), pAlias); } +/** + * @return {SqlBuilder._CaseStatement} + */ +SqlBuilder.caseStatement = function (pQuoteValues) +{ + return new SqlBuilder._CaseStatement(pQuoteValues); +} + +/** + * + */ +SqlBuilder._CaseStatement = function (pQuoteValues) +{ + this._whenCondition = null; + this._whenThens = []; + this._elseValue = null; + this._quoteValues = pQuoteValues || false; + this._afterWhenMask = new SqlBuilder._CaseWhen(this); +} + +/** + * @return {SqlBuilder._CaseWhen} + */ +SqlBuilder._CaseStatement.prototype.when = function (pFieldOrCond, pValue, pCondition, pFieldType) +{ + this._whenCondition = newWhere(pFieldOrCond, pValue, pCondition, pFieldType); + return this._afterWhenMask; +} + +/** + * + */ +SqlBuilder._CaseStatement.prototype.elseValue = function (pValue) +{ + if (pValue != null && this._quoteValues) + pValue = "'" + pValue + "'"; + this._elseValue = pValue; + return this; +} + +/** + * + */ +SqlBuilder._CaseStatement.prototype.toString = function () +{ + var caseStatement = "case"; + this._whenThens.forEach(function (whenThen) + { + caseStatement += " when " + whenThen.condition + " then " + whenThen.thenValue; + }); + if (this._elseValue) + caseStatement += " else " + this._elseValue; + caseStatement += " end"; + + logging.log(caseStatement) + return caseStatement; +} + +/** + * + */ +SqlBuilder._CaseWhen = function (pCaseStatement) +{ + this._caseStatement = pCaseStatement; +} + +/** + * @return {SqlBuilder._CaseStatement} + */ +SqlBuilder._CaseWhen.prototype.then = function (pValue) +{ + var condition = this._caseStatement._whenCondition; + this._caseStatement._whenCondition = null; + if (this._caseStatement._quoteValues) + pValue = "'" + pValue + "'"; + this._caseStatement._whenThens.push({condition: condition, thenValue: pValue}); + return this._caseStatement; +} /** *provides functions for masking sql functions -- GitLab From 5e8633ce5b8c679a860b0a8447ebf0e2c0727207 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 4 Sep 2020 17:52:24 +0200 Subject: [PATCH 026/184] #1064484 MST changes --- .aditoprj/UUIDNameMap.txt | 2 +- .../MSTTeamMember_entity.aod | 4 +++- .../children/objectrowid_param/valueProcess.js | 11 ++++++++++- .../entityfields/role/displayValueProcess.js | 10 ---------- .../entityfields/role/stateProcess.js | 3 ++- .../recordcontainers/jdito/contentProcess.js | 18 +++++++++++++----- entity/MSTTeam_entity/MSTTeam_entity.aod | 1 + entity/MSTTeam_entity/afterSave.js | 4 ++++ entity/MSTTeam_entity/grantDeleteProcess.js | 2 +- entity/MSTTeam_entity/grantUpdateProcess.js | 2 +- .../children/deleteteam/stateProcess.js | 3 ++- .../children/editteam/stateProcess.js | 3 ++- process/Sql_lib/process.js | 1 - 13 files changed, 40 insertions(+), 24 deletions(-) delete mode 100644 entity/MSTTeamMember_entity/entityfields/role/displayValueProcess.js create mode 100644 entity/MSTTeam_entity/afterSave.js diff --git a/.aditoprj/UUIDNameMap.txt b/.aditoprj/UUIDNameMap.txt index 002f9103477..70f701e0fe2 100644 --- a/.aditoprj/UUIDNameMap.txt +++ b/.aditoprj/UUIDNameMap.txt @@ -41,7 +41,7 @@ 40 41 1.0.0 -1598969268500 +1599146177805 #ENTITY #ENTITY #PROVIDER_FIELD diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod index d8655c46b72..4f0b86c6471 100644 --- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -90,7 +90,6 @@ <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js</mandatoryProcess> <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js</dropDownProcess> <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js</stateProcess> - <displayValueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>INVITE</name> @@ -118,6 +117,9 @@ <jDitoRecordFieldMapping> <name>ROLE.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ROLE.displayValue</name> + </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>CONTACT_ID.value</name> </jDitoRecordFieldMapping> diff --git a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js index dc0d70ccbe7..f21aa5c2a73 100644 --- a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js +++ b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js @@ -1,4 +1,13 @@ import("system.vars"); import("system.result"); +import("Sql_lib"); -result.string(vars.get("$param.ObjectRowId_param")); \ No newline at end of file +var rowId = vars.get("$param.ObjectRowId_param"); +if (!rowId) +{ + rowId = newSelect("OBJECT_ROWID") + .from("MST_TEAMLINK") + .where("MST_TEAMLINK.MST_TEAM_ID", "$param.MSTTeamId_param") + .cell(); +} +result.string(rowId); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role/displayValueProcess.js b/entity/MSTTeamMember_entity/entityfields/role/displayValueProcess.js deleted file mode 100644 index 19bd5d6043b..00000000000 --- a/entity/MSTTeamMember_entity/entityfields/role/displayValueProcess.js +++ /dev/null @@ -1,10 +0,0 @@ -import("system.result"); -import("system.translate"); -import("system.vars"); - -var roles = { - "owner": translate.text("Owner"), - "member": translate.text("Member"), - "guest": translate.text("Guest") -}; -result.string(roles[vars.get("$field.ROLE")] || ""); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js index f947ad98892..f76be28d47e 100644 --- a/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js +++ b/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js @@ -1,6 +1,7 @@ import("system.result"); import("system.vars"); import("system.neon"); +import("system.logging") var state = neon.COMPONENTSTATE_EDITABLE; if (vars.get("$field.ISEXTERN") == "true") @@ -10,5 +11,5 @@ if (vars.get("$field.ISEXTERN") == "true") else state = neon.COMPONENTSTATE_READONLY; } -else + result.string(state); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js index 1212de7df64..11d1d65919c 100644 --- a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js @@ -13,18 +13,26 @@ var memberArray = []; memberArray = memberIds.map(function (memberId) { var role = "guest"; + var roleName = translate.text("Guest"); if (memberId in owners) + { role = "owner"; + roleName = translate.text("Owner"); + } else if (memberId in memberContactIds) + { role = "member"; + roleName = translate.text("Member"); + } return [ memberId, - allMembers[memberId], - role, - memberContactIds[memberId], - allMembers[memberId], - memberId in memberContactIds + allMembers[memberId] || "", + role, + roleName, + memberContactIds[memberId] || "", + allMembers[memberId] || "", + !(memberId in memberContactIds) ]; }); diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod index fbd8d90278c..37bae16ffca 100644 --- a/entity/MSTTeam_entity/MSTTeam_entity.aod +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -10,6 +10,7 @@ <grantDeleteProcess>%aditoprj%/entity/MSTTeam_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/MSTTeam_entity/contentTitleProcess.js</contentTitleProcess> <afterUiInit>%aditoprj%/entity/MSTTeam_entity/afterUiInit.js</afterUiInit> + <afterSave>%aditoprj%/entity/MSTTeam_entity/afterSave.js</afterSave> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> diff --git a/entity/MSTTeam_entity/afterSave.js b/entity/MSTTeam_entity/afterSave.js new file mode 100644 index 00000000000..eeeb0cbd2a4 --- /dev/null +++ b/entity/MSTTeam_entity/afterSave.js @@ -0,0 +1,4 @@ +import("system.neon"); + +//TODO: this should not be necessary, check why the siblings don't work here +neon.refreshAll(); \ No newline at end of file diff --git a/entity/MSTTeam_entity/grantDeleteProcess.js b/entity/MSTTeam_entity/grantDeleteProcess.js index d23403ca44d..3fad7d06d00 100644 --- a/entity/MSTTeam_entity/grantDeleteProcess.js +++ b/entity/MSTTeam_entity/grantDeleteProcess.js @@ -2,4 +2,4 @@ import("system.result"); import("system.vars"); import("MSTeams_lib"); -result.string(vars.get("$field.ISARCHIVED") != "true" && MSTeamsUtils.isUserTeamOwner(vars.get("$field.UID"))); \ No newline at end of file +result.string(vars.get("$field.TEAMID_AND_NAME") && vars.get("$field.ISARCHIVED") != "true" && MSTeamsUtils.isUserTeamOwner(vars.get("$field.UID"))); \ No newline at end of file diff --git a/entity/MSTTeam_entity/grantUpdateProcess.js b/entity/MSTTeam_entity/grantUpdateProcess.js index d23403ca44d..3fad7d06d00 100644 --- a/entity/MSTTeam_entity/grantUpdateProcess.js +++ b/entity/MSTTeam_entity/grantUpdateProcess.js @@ -2,4 +2,4 @@ import("system.result"); import("system.vars"); import("MSTeams_lib"); -result.string(vars.get("$field.ISARCHIVED") != "true" && MSTeamsUtils.isUserTeamOwner(vars.get("$field.UID"))); \ No newline at end of file +result.string(vars.get("$field.TEAMID_AND_NAME") && vars.get("$field.ISARCHIVED") != "true" && MSTeamsUtils.isUserTeamOwner(vars.get("$field.UID"))); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js index 5a91fdde73f..d1432e9d7c5 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js @@ -2,6 +2,7 @@ import("system.vars"); import("system.neon"); import("system.result"); import("Sql_lib"); +import("MSTeams_lib"); var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; @@ -10,7 +11,7 @@ var isArchived = newSelect("IS_ARCHIVED") .whereIfSet("MST_TEAM.MST_TEAMID", teamId) .cell(true); -if (teamId == "" || isArchived == 1) +if (!teamId || isArchived == 1 || !MSTeamsUtils.isUserTeamOwner(teamId)) { result.string(neon.COMPONENTSTATE_DISABLED); } diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js index 5a91fdde73f..d1432e9d7c5 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js @@ -2,6 +2,7 @@ import("system.vars"); import("system.neon"); import("system.result"); import("Sql_lib"); +import("MSTeams_lib"); var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; @@ -10,7 +11,7 @@ var isArchived = newSelect("IS_ARCHIVED") .whereIfSet("MST_TEAM.MST_TEAMID", teamId) .cell(true); -if (teamId == "" || isArchived == 1) +if (!teamId || isArchived == 1 || !MSTeamsUtils.isUserTeamOwner(teamId)) { result.string(neon.COMPONENTSTATE_DISABLED); } diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index d9bffacae79..e59d4ba8b1b 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -3024,7 +3024,6 @@ SqlBuilder._CaseStatement.prototype.toString = function () caseStatement += " else " + this._elseValue; caseStatement += " end"; - logging.log(caseStatement) return caseStatement; } -- GitLab From 74dc7403b1ee7e02e4e35b043a47c2fb53a009d3 Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Mon, 14 Sep 2020 11:08:59 +0000 Subject: [PATCH 027/184] Calendar_lib: exchangeEmail Fix (cherry picked from commit 8026e5e52db88fc59b24b36897c6f92f3dd96ddb) (cherry picked from commit bed0d02e3e58c584835e4436f7faba2bbed5bde5) --- process/Calendar_lib/process.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/process/Calendar_lib/process.js b/process/Calendar_lib/process.js index 7cc5df86754..13fb9288d31 100644 --- a/process/Calendar_lib/process.js +++ b/process/Calendar_lib/process.js @@ -108,7 +108,7 @@ CalendarUtil.getEffectiveCalendarIdFromUser = function(pUser) var email = userParams["email"]; if(exchangeEmail) - return exhangeEmail; + return exchangeEmail; else if(calendarId) return calendarId; else if(email) -- GitLab From c396549c9086b12bffe0dbebc5427200aa3b7b70 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Tue, 15 Sep 2020 11:04:00 +0200 Subject: [PATCH 028/184] upgraded MS Teams datamodels --- entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod | 6 +++++- entity/MSTTeamMember_entity/MSTTeamMember_entity.aod | 6 +++++- entity/MSTTeam_entity/MSTTeam_entity.aod | 6 +++++- .../MSTeamsActivityImport_entity.aod | 6 +++++- .../MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod | 6 +++++- entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod | 6 +++++- entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod | 6 +++++- entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod | 6 +++++- entity/SingleObject_entity/SingleObject_entity.aod | 6 +++++- 9 files changed, 45 insertions(+), 9 deletions(-) diff --git a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod index 0c9ea22f83a..ea7e4183dcf 100644 --- a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod +++ b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTChooseTeam_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <siblings /> @@ -33,6 +33,10 @@ <name>ObjectType_param</name> <expose v="true" /> </entityParameter> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod index 4f0b86c6471..c05d6e59bd3 100644 --- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTTeamMember_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <siblings /> @@ -98,6 +98,10 @@ <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js</dropDownProcess> <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js</stateProcess> </entityField> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod index 37bae16ffca..f45825bd7d6 100644 --- a/entity/MSTTeam_entity/MSTTeam_entity.aod +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTTeam_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <siblings> @@ -103,6 +103,10 @@ </entityParameter> </children> </entityConsumer> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod index 6ae1fbc483d..82434544226 100644 --- a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod +++ b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTeamsActivityImport_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <siblings /> @@ -74,6 +74,10 @@ <name>ObjectType_param</name> <expose v="true" /> </entityParameter> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod b/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod index 2497bfbb52a..d9be6c9f336 100644 --- a/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod +++ b/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTeamsAddMembers_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Add members</title> @@ -47,6 +47,10 @@ <name>ObjectType_param</name> <expose v="true" /> </entityParameter> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod index f54a35bd2af..0b7cae243a3 100644 --- a/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod +++ b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTeamsChannel_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Channel</title> @@ -52,6 +52,10 @@ </entityDependency> </dependencies> </entityProvider> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod index b43879c6c71..a3bac6db687 100644 --- a/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod +++ b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTeamsDocument_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <siblings /> @@ -54,6 +54,10 @@ <expose v="true" /> <mandatory v="true" /> </entityParameter> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod index 89751eb2b28..26f7ab7d0cb 100644 --- a/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod +++ b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTeamsMessage_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <siblings /> @@ -55,6 +55,10 @@ <expose v="true" /> <documentation>%aditoprj%/entity/MSTTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc</documentation> </entityParameter> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/SingleObject_entity/SingleObject_entity.aod b/entity/SingleObject_entity/SingleObject_entity.aod index f471932a1d6..a810e79749d 100644 --- a/entity/SingleObject_entity/SingleObject_entity.aod +++ b/entity/SingleObject_entity/SingleObject_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>SingleObject_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <recordContainer>jdito</recordContainer> @@ -30,6 +30,10 @@ <targetContextField>TARGET_CONTEXT</targetContextField> <targetIdField>UID</targetIdField> </entityProvider> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> -- GitLab From de31ac6e71bee3e4676e2720fec6e2a5e5dbcc62 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Tue, 15 Sep 2020 11:07:00 +0200 Subject: [PATCH 029/184] fix merge errors --- .liquibase/Data_alias/changelog.xml | 2 +- entity/Salesproject_entity/Salesproject_entity.aod | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index 485c35f91ac..b2fb83292f5 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -19,5 +19,5 @@ <include relativeToChangelogFile="true" file="basic/2020.2.0/changelog.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> - <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>-- + <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>--> </databaseChangeLog> \ No newline at end of file diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 84c89c142bd..a04269fdb7a 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -803,7 +803,7 @@ <primaryKey>CLASSIFICATIONSTORAGEID</primaryKey> <isUIDTable v="false" /> <readonly v="true" /> - </linkInformation + </linkInformation> <linkInformation> <name>44fba381-e477-4a92-ba82-fc22c3d98c23</name> <tableName>MST_TEAM</tableName> -- GitLab From 3a8cb98aa0feb220a02f9e245fce1fe760b53bcb Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Tue, 15 Sep 2020 11:15:24 +0200 Subject: [PATCH 030/184] Moved Liquibase files for MS Teams --- .../basic/{2020.2.1 => 2020.2.0}/MSTeams/changelog.xml | 0 .../basic/{2020.2.1 => 2020.2.0}/MSTeams/create_MST_TEAM.xml | 0 .../basic/{2020.2.1 => 2020.2.0}/MSTeams/create_MST_TEAMLINK.xml | 0 .liquibase/Data_alias/basic/2020.2.0/changelog.xml | 1 + .liquibase/Data_alias/changelog.xml | 1 - 5 files changed, 1 insertion(+), 1 deletion(-) rename .liquibase/Data_alias/basic/{2020.2.1 => 2020.2.0}/MSTeams/changelog.xml (100%) rename .liquibase/Data_alias/basic/{2020.2.1 => 2020.2.0}/MSTeams/create_MST_TEAM.xml (100%) rename .liquibase/Data_alias/basic/{2020.2.1 => 2020.2.0}/MSTeams/create_MST_TEAMLINK.xml (100%) diff --git a/.liquibase/Data_alias/basic/2020.2.1/MSTeams/changelog.xml b/.liquibase/Data_alias/basic/2020.2.0/MSTeams/changelog.xml similarity index 100% rename from .liquibase/Data_alias/basic/2020.2.1/MSTeams/changelog.xml rename to .liquibase/Data_alias/basic/2020.2.0/MSTeams/changelog.xml diff --git a/.liquibase/Data_alias/basic/2020.2.1/MSTeams/create_MST_TEAM.xml b/.liquibase/Data_alias/basic/2020.2.0/MSTeams/create_MST_TEAM.xml similarity index 100% rename from .liquibase/Data_alias/basic/2020.2.1/MSTeams/create_MST_TEAM.xml rename to .liquibase/Data_alias/basic/2020.2.0/MSTeams/create_MST_TEAM.xml diff --git a/.liquibase/Data_alias/basic/2020.2.1/MSTeams/create_MST_TEAMLINK.xml b/.liquibase/Data_alias/basic/2020.2.0/MSTeams/create_MST_TEAMLINK.xml similarity index 100% rename from .liquibase/Data_alias/basic/2020.2.1/MSTeams/create_MST_TEAMLINK.xml rename to .liquibase/Data_alias/basic/2020.2.0/MSTeams/create_MST_TEAMLINK.xml diff --git a/.liquibase/Data_alias/basic/2020.2.0/changelog.xml b/.liquibase/Data_alias/basic/2020.2.0/changelog.xml index 52e4a7e0cd3..d14950e4699 100644 --- a/.liquibase/Data_alias/basic/2020.2.0/changelog.xml +++ b/.liquibase/Data_alias/basic/2020.2.0/changelog.xml @@ -10,4 +10,5 @@ <include relativeToChangelogFile="true" file="alter_ComunicationMedium_IdDatatype.xml"/> <include relativeToChangelogFile="true" file="ReportDispatchImpl/add_DocumentTemplatePlaceOfUse.xml"/> <include relativeToChangelogFile="true" file="alter_VisitrecommendationpriorityDatatype.xml"/> + <include relativeToChangelogFile="true" file="MSTeams/changelog.xml"/> </databaseChangeLog> diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index b2fb83292f5..c3a1d3c5759 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -14,7 +14,6 @@ <include relativeToChangelogFile="true" file="basic/2020.1.0/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.1.1/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.1.2/changelog.xml"/> - <include relativeToChangelogFile="true" file="basic/2020.2.1/MSTeams/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.1.3/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.2.0/changelog.xml"/> -- GitLab From 8c2d86be9575be583ba46cf6a07c6e688bc50ee7 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Tue, 15 Sep 2020 11:19:03 +0200 Subject: [PATCH 031/184] MS Teams: database refactoring --- .../2020.2.0/MSTeams/create_MST_TEAM.xml | 1 - aliasDefinition/Data_alias/Data_alias.aod | 46 +++++++------------ 2 files changed, 16 insertions(+), 31 deletions(-) diff --git a/.liquibase/Data_alias/basic/2020.2.0/MSTeams/create_MST_TEAM.xml b/.liquibase/Data_alias/basic/2020.2.0/MSTeams/create_MST_TEAM.xml index 48a4387dde9..3753f3db0c7 100644 --- a/.liquibase/Data_alias/basic/2020.2.0/MSTeams/create_MST_TEAM.xml +++ b/.liquibase/Data_alias/basic/2020.2.0/MSTeams/create_MST_TEAM.xml @@ -8,7 +8,6 @@ </column> <column name="TEAMNAME" type="NVARCHAR(255)"/> <column name="GENERAL_CHANNELID" type="CHAR(48)"/> - <column name="OBJECT_ROWID" type="CHAR(36)"/> <column name="IS_ARCHIVED" type="TINYINT"/> <column name="SERVICE_URL" type="NVARCHAR(255)"/> <column name="WEB_URL" type="NVARCHAR(500)"/> diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index fdce1bb8c09..097c01e9ccf 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -14217,20 +14217,6 @@ <syncIds></syncIds> </auditSyncConfig> <entityFields> - <entityFieldDb> - <name>OBJECT_ROWID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> <entityFieldDb> <name>MST_TEAMID</name> <dbName></dbName> @@ -14622,7 +14608,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <documentation></documentation> <title></title> <description></description> @@ -14655,6 +14641,20 @@ <title></title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>ORGANISATION_CONTACT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -14726,21 +14726,7 @@ <scale v="0" /> <notNull v="true" /> <isUnique v="false" /> - <index v="true" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ORGANISATION_CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="true" /> + <index v="false" /> <documentation></documentation> <title></title> <description></description> -- GitLab From 96f75f66b85fe24f64a15ef6a1e09fed5a72de78 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Tue, 15 Sep 2020 12:42:54 +0200 Subject: [PATCH 032/184] MS-Teams: Bugfixing --- aliasDefinition/Data_alias/Data_alias.aod | 12 +++++++++--- .../recordcontainers/jdito/contentProcess.js | 1 + entity/MSTTeam_entity/MSTTeam_entity.aod | 4 ---- entity/MSTTeam_entity/afterSave.js | 4 ---- .../MSTeamsActivityImport_entity.aod | 3 --- .../entityfields/team_id/valueProcess.js | 2 ++ .../recordcontainers/jdito/onInsert.js | 0 entity/Member_entity/Member_entity.aod | 18 +++++++++--------- .../Salesproject_entity.aod | 3 ++- 9 files changed, 23 insertions(+), 24 deletions(-) delete mode 100644 entity/MSTeamsActivityImport_entity/recordcontainers/jdito/onInsert.js diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 097c01e9ccf..eeae4a15898 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -261,7 +261,7 @@ <customJDitoProperty> <name>translate4Log</name> <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/contact/entityfields/language/customproperties/translate4log/property.js</property> + <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/contact/entityfields/isolanguage/customproperties/translate4log/property.js</property> </customJDitoProperty> </customProperties> </entityFieldDb> @@ -1760,10 +1760,11 @@ <global v="false" /> <property v="true" /> </customBooleanProperty> - <customStringProperty> + <customJDitoProperty> <name>translate4Log</name> <global v="false" /> - </customStringProperty> + <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/product/entityfields/contact_id/customproperties/translate4log/property.js</property> + </customJDitoProperty> </customProperties> </entityFieldDb> <entityFieldDb> @@ -2191,6 +2192,11 @@ <global v="false" /> <property v="true" /> </customBooleanProperty> + <customJDitoProperty> + <name>translate4Log</name> + <global v="false" /> + <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/productprice/entityfields/contact_id/customproperties/translate4log/property.js</property> + </customJDitoProperty> </customProperties> </entityFieldDb> <entityFieldDb> diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js index 11d1d65919c..3a44cd419e0 100644 --- a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,4 @@ +import("system.translate"); import("system.teams"); import("system.result"); import("system.vars"); diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod index f45825bd7d6..10735e065bf 100644 --- a/entity/MSTTeam_entity/MSTTeam_entity.aod +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -2,10 +2,6 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTTeam_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <siblings> - <element>Salesproject_entity</element> - <element>Member_entity</element> - </siblings> <grantUpdateProcess>%aditoprj%/entity/MSTTeam_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/MSTTeam_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/MSTTeam_entity/contentTitleProcess.js</contentTitleProcess> diff --git a/entity/MSTTeam_entity/afterSave.js b/entity/MSTTeam_entity/afterSave.js index eeeb0cbd2a4..e69de29bb2d 100644 --- a/entity/MSTTeam_entity/afterSave.js +++ b/entity/MSTTeam_entity/afterSave.js @@ -1,4 +0,0 @@ -import("system.neon"); - -//TODO: this should not be necessary, check why the siblings don't work here -neon.refreshAll(); \ No newline at end of file diff --git a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod index 82434544226..75900dda74e 100644 --- a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod +++ b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod @@ -16,8 +16,6 @@ <selectionMode>MULTI</selectionMode> <dependency> <name>dependency</name> - <entityName>MSTTeamsMessage_entity</entityName> - <fieldName>Messages</fieldName> </dependency> <children> <entityParameter> @@ -84,7 +82,6 @@ <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> <contentProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTeamsActivityImport_entity/recordcontainers/jdito/onInsert.js</onInsert> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> diff --git a/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js index 1f7366af28d..c431bd3ac3e 100644 --- a/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js +++ b/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js @@ -1,3 +1,5 @@ +import("system.vars"); +import("MSTeams_lib"); import("system.result"); import("Sql_lib"); diff --git a/entity/MSTeamsActivityImport_entity/recordcontainers/jdito/onInsert.js b/entity/MSTeamsActivityImport_entity/recordcontainers/jdito/onInsert.js deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index fea67a119b7..47bf2599e3a 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -4,7 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Member_entity/documentation.adoc</documentation> <title>${SALESPROJECT_MEMBER}</title> - <siblings /> + <siblings> + <element>MSTTeam_entity</element> + </siblings> <contentTitleProcess>%aditoprj%/entity/Member_entity/contentTitleProcess.js</contentTitleProcess> <iconId>VAADIN:FILE_SOUND</iconId> <titlePlural>${SALESPROJECT_MEMBER}</titlePlural> @@ -182,6 +184,12 @@ <fieldName>MemberConsumer</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>d97ada32-2043-4ebb-a53b-1b468cf6ad39</name> + <entityName>Salesproject_entity</entityName> + <fieldName>Members</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityField> @@ -202,14 +210,6 @@ <entityProvider> <name>WithDistrictResponsibles</name> <recordContainer>jdito</recordContainer> - <dependencies> - <entityDependency> - <name>6f90b6c6-118c-485e-9a41-365bdc325f9b</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Members</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityField> <name>UID</name> diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index a04269fdb7a..b2cf87ec299 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -7,6 +7,7 @@ <siblings> <element>SalesprojectMilestone_entity</element> <element>Member_entity</element> + <element>MSTTeam_entity</element> </siblings> <grantDeleteProcess>%aditoprj%/entity/Salesproject_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Salesproject_entity/contentTitleProcess.js</contentTitleProcess> @@ -258,7 +259,7 @@ <dependency> <name>dependency</name> <entityName>Member_entity</entityName> - <fieldName>WithDistrictResponsibles</fieldName> + <fieldName>Links</fieldName> </dependency> <children> <entityParameter> -- GitLab From 05135b80f83fa931e490bc7a06c568d2d250fcd7 Mon Sep 17 00:00:00 2001 From: "M.Bilda" <m.bilda@adito.de> Date: Wed, 16 Sep 2020 11:22:49 +0200 Subject: [PATCH 033/184] Added the SalesprojectCode to the mailnickname for MST; Added Documentation; Fixed a Bug in MST Webservice because false decoding; --- .../MSTChooseTeam_entity/MSTChooseTeam_entity.aod | 1 + entity/MSTChooseTeam_entity/documentation.adoc | 14 ++++++++++++++ .../MSTTeamMember_entity/MSTTeamMember_entity.aod | 2 ++ entity/MSTTeamMember_entity/documentation.adoc | 14 ++++++++++++++ .../entityfields/membersofteam/documentation.adoc | 3 +++ entity/MSTTeam_entity/MSTTeam_entity.aod | 7 ++++++- entity/MSTTeam_entity/afterSave.js | 0 entity/MSTTeam_entity/documentation.adoc | 14 ++++++++++++++ .../recordcontainers/jdito/onInsert.js | 1 + .../MSTeamsActivityImport_entity.aod | 3 +++ .../documentation.adoc | 12 ++++++++++++ .../MSTeamsAddMembers_entity.aod | 1 + entity/MSTeamsAddMembers_entity/documentation.adoc | 14 ++++++++++++++ .../MSTeamsChannel_entity.aod | 3 +++ entity/MSTeamsChannel_entity/documentation.adoc | 14 ++++++++++++++ .../entityfields/channelsbyname/documentation.adoc | 3 +++ .../channelsforteam/documentation.adoc | 3 +++ .../MSTeamsDocument_entity.aod | 1 + entity/MSTeamsDocument_entity/documentation.adoc | 14 ++++++++++++++ .../MSTeamsMessage_entity.aod | 4 ++-- entity/MSTeamsMessage_entity/documentation.adoc | 14 ++++++++++++++ .../entityfields/messages/documentation.adoc | 3 +++ entity/Member_entity/Member_entity.aod | 5 +++++ .../children/createteam/onActionProcess.js | 1 + entity/Salesproject_entity/Salesproject_entity.aod | 4 ++++ .../salesprojectcode_param/valueProcess.js | 4 ++++ process/mstBot_rest/process.js | 7 +++---- 27 files changed, 159 insertions(+), 7 deletions(-) create mode 100644 entity/MSTChooseTeam_entity/documentation.adoc create mode 100644 entity/MSTTeamMember_entity/documentation.adoc create mode 100644 entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc delete mode 100644 entity/MSTTeam_entity/afterSave.js create mode 100644 entity/MSTTeam_entity/documentation.adoc create mode 100644 entity/MSTeamsActivityImport_entity/documentation.adoc create mode 100644 entity/MSTeamsAddMembers_entity/documentation.adoc create mode 100644 entity/MSTeamsChannel_entity/documentation.adoc create mode 100644 entity/MSTeamsChannel_entity/entityfields/channelsbyname/documentation.adoc create mode 100644 entity/MSTeamsChannel_entity/entityfields/channelsforteam/documentation.adoc create mode 100644 entity/MSTeamsDocument_entity/documentation.adoc create mode 100644 entity/MSTeamsMessage_entity/documentation.adoc create mode 100644 entity/MSTeamsMessage_entity/entityfields/messages/documentation.adoc create mode 100644 entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js diff --git a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod index ea7e4183dcf..3fe2e3f7e7f 100644 --- a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod +++ b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTChooseTeam_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTChooseTeam_entity/documentation.adoc</documentation> <siblings /> <recordContainer>jdito</recordContainer> <entityFields> diff --git a/entity/MSTChooseTeam_entity/documentation.adoc b/entity/MSTChooseTeam_entity/documentation.adoc new file mode 100644 index 00000000000..9c7ade951f5 --- /dev/null +++ b/entity/MSTChooseTeam_entity/documentation.adoc @@ -0,0 +1,14 @@ +MSTChooseTeam +============ + +== Overview == +MSTChooseTeam is used to link any MST team to a sales project + +== A MSTChooseTeam consists of some modules: == +- MSTChooseTeam itself + +== BestPractice == + +== FAQ == + + diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod index c05d6e59bd3..5dfff61a5e6 100644 --- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTTeamMember_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTTeamMember_entity/documentation.adoc</documentation> <siblings /> <recordContainer>jdito</recordContainer> <entityFields> @@ -66,6 +67,7 @@ </entityParameter> <entityProvider> <name>MembersOfTeam</name> + <documentation>%aditoprj%/entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc</documentation> <titlePlural>Team members</titlePlural> <dependencies> <entityDependency> diff --git a/entity/MSTTeamMember_entity/documentation.adoc b/entity/MSTTeamMember_entity/documentation.adoc new file mode 100644 index 00000000000..31059321e3f --- /dev/null +++ b/entity/MSTTeamMember_entity/documentation.adoc @@ -0,0 +1,14 @@ +MSTTeamMember +============ + +== Overview == +MSTTeamMember is used to get all members of a MST team + +== A MSTTeamMember consists of some modules: == +- MSTTeamMember itself + +== BestPractice == + +== FAQ == + + diff --git a/entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc b/entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc new file mode 100644 index 00000000000..f9cc1fa6dc8 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc @@ -0,0 +1,3 @@ +Provider MembersOfTeam + +Provides the members of a team \ No newline at end of file diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod index 10735e065bf..4d7a5ff463e 100644 --- a/entity/MSTTeam_entity/MSTTeam_entity.aod +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -2,11 +2,11 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTTeam_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTTeam_entity/documentation.adoc</documentation> <grantUpdateProcess>%aditoprj%/entity/MSTTeam_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/MSTTeam_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/MSTTeam_entity/contentTitleProcess.js</contentTitleProcess> <afterUiInit>%aditoprj%/entity/MSTTeam_entity/afterUiInit.js</afterUiInit> - <afterSave>%aditoprj%/entity/MSTTeam_entity/afterSave.js</afterSave> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -103,6 +103,11 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityParameter> + <name>SalesprojectCode_param</name> + <expose v="true" /> + <description>PARAMETER</description> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTTeam_entity/afterSave.js b/entity/MSTTeam_entity/afterSave.js deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/entity/MSTTeam_entity/documentation.adoc b/entity/MSTTeam_entity/documentation.adoc new file mode 100644 index 00000000000..1d8ddac0f35 --- /dev/null +++ b/entity/MSTTeam_entity/documentation.adoc @@ -0,0 +1,14 @@ +MSTTeam +============ + +== Overview == +MSTTeam is used to display the linked team. create a team, edit a team + +== A MSTTeam consists of some modules: == +- MSTTeam itself + +== BestPractice == + +== FAQ == + + diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js index 67814ad72f2..0f208a0331c 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -48,6 +48,7 @@ var mailNickName = teamName.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function(match, i if (+match === 0) return ""; // or if (/\s+/.test(match)) for white spaces return index === 0 ? match.toLowerCase() : match.toUpperCase(); }); +mailNickName = mailNickName + vars.get("$param.SalesprojectCode_param"); var groupConfig = teams.createGroupConfig(teamName, mailNickName, ownerIds); if (description) diff --git a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod index 75900dda74e..6a44b2a44c1 100644 --- a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod +++ b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTeamsActivityImport_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTeamsActivityImport_entity/documentation.adoc</documentation> <siblings /> <recordContainer>jdito</recordContainer> <entityFields> @@ -16,6 +17,8 @@ <selectionMode>MULTI</selectionMode> <dependency> <name>dependency</name> + <entityName>MSTeamsMessage_entity</entityName> + <fieldName>Messages</fieldName> </dependency> <children> <entityParameter> diff --git a/entity/MSTeamsActivityImport_entity/documentation.adoc b/entity/MSTeamsActivityImport_entity/documentation.adoc new file mode 100644 index 00000000000..e9a7b4eaded --- /dev/null +++ b/entity/MSTeamsActivityImport_entity/documentation.adoc @@ -0,0 +1,12 @@ +MSTTeamsActivityImport +============ + +== Overview == +MSTTeamsActivityImport is used to import messages from MST + +== A MSTTeamsActivityImport consists of some modules: == +- MSTTeamsActivityImport itself + +== BestPractice == + +== FAQ == \ No newline at end of file diff --git a/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod b/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod index d9be6c9f336..b3a788b7b01 100644 --- a/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod +++ b/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTeamsAddMembers_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTeamsAddMembers_entity/documentation.adoc</documentation> <title>Add members</title> <siblings /> <recordContainer>jdito</recordContainer> diff --git a/entity/MSTeamsAddMembers_entity/documentation.adoc b/entity/MSTeamsAddMembers_entity/documentation.adoc new file mode 100644 index 00000000000..228acd4d940 --- /dev/null +++ b/entity/MSTeamsAddMembers_entity/documentation.adoc @@ -0,0 +1,14 @@ +MSTeamsAddMembers +============ + +== Overview == +MSTeamsAddMembers is used to add Members + +== A MSTeamsAddMembers consists of some modules: == +- MSTeamsAddMembers itself + +== BestPractice == + +== FAQ == + + diff --git a/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod index 0b7cae243a3..819f857c1ae 100644 --- a/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod +++ b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTeamsChannel_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTeamsChannel_entity/documentation.adoc</documentation> <title>Channel</title> <siblings /> <contentTitleProcess>%aditoprj%/entity/MSTeamsChannel_entity/contentTitleProcess.js</contentTitleProcess> @@ -20,6 +21,7 @@ </entityField> <entityProvider> <name>ChannelsForTeam</name> + <documentation>%aditoprj%/entity/MSTeamsChannel_entity/entityfields/channelsforteam/documentation.adoc</documentation> <dependencies> <entityDependency> <name>a784ee43-b2ef-4d55-a092-9c7f822905fa</name> @@ -43,6 +45,7 @@ <entityProvider> <name>ChannelsByName</name> <lookupIdfield>CHANNELNAME</lookupIdfield> + <documentation>%aditoprj%/entity/MSTeamsChannel_entity/entityfields/channelsbyname/documentation.adoc</documentation> <dependencies> <entityDependency> <name>3dfb5be2-d956-4e8a-9aec-4c80b81e0527</name> diff --git a/entity/MSTeamsChannel_entity/documentation.adoc b/entity/MSTeamsChannel_entity/documentation.adoc new file mode 100644 index 00000000000..84851137bfe --- /dev/null +++ b/entity/MSTeamsChannel_entity/documentation.adoc @@ -0,0 +1,14 @@ +MSTeamsChannel +============ + +== Overview == +MSTeamsChannel is used to get all channels of a MST Team + +== A MSTeamsChannel consists of some modules: == +- MSTeamsChannel itself + +== BestPractice == + +== FAQ == + + diff --git a/entity/MSTeamsChannel_entity/entityfields/channelsbyname/documentation.adoc b/entity/MSTeamsChannel_entity/entityfields/channelsbyname/documentation.adoc new file mode 100644 index 00000000000..276b88812f2 --- /dev/null +++ b/entity/MSTeamsChannel_entity/entityfields/channelsbyname/documentation.adoc @@ -0,0 +1,3 @@ +Provider ChannelsByName + +Gets all channels by their names \ No newline at end of file diff --git a/entity/MSTeamsChannel_entity/entityfields/channelsforteam/documentation.adoc b/entity/MSTeamsChannel_entity/entityfields/channelsforteam/documentation.adoc new file mode 100644 index 00000000000..c8c3ce9e562 --- /dev/null +++ b/entity/MSTeamsChannel_entity/entityfields/channelsforteam/documentation.adoc @@ -0,0 +1,3 @@ +Provider ChannelsForTeam + +Gets all channels for the specific team \ No newline at end of file diff --git a/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod index a3bac6db687..9929c440ae7 100644 --- a/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod +++ b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTeamsDocument_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTeamsDocument_entity/documentation.adoc</documentation> <siblings /> <recordContainer>jdito</recordContainer> <entityFields> diff --git a/entity/MSTeamsDocument_entity/documentation.adoc b/entity/MSTeamsDocument_entity/documentation.adoc new file mode 100644 index 00000000000..e751b842c92 --- /dev/null +++ b/entity/MSTeamsDocument_entity/documentation.adoc @@ -0,0 +1,14 @@ +MSTeamsDocument +============ + +== Overview == +MSTeamsDocument is used to synchronize all MST Documents with ADITO + +== A MSTeamsDocument consists of some modules: == +- MSTeamsDocument itself + +== BestPractice == + +== FAQ == + + diff --git a/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod index 26f7ab7d0cb..d4f61630a7e 100644 --- a/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod +++ b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod @@ -2,7 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTeamsMessage_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <siblings /> + <documentation>%aditoprj%/entity/MSTeamsMessage_entity/documentation.adoc</documentation> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -23,6 +23,7 @@ </entityField> <entityProvider> <name>Messages</name> + <documentation>%aditoprj%/entity/MSTeamsMessage_entity/entityfields/messages/documentation.adoc</documentation> <recordContainer>jdito</recordContainer> <dependencies> <entityDependency> @@ -64,7 +65,6 @@ <jDitoRecordContainer> <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/MSTTeamsMessage_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <title>Nachrichten</title> <recordFieldMappings> <jDitoRecordFieldMapping> diff --git a/entity/MSTeamsMessage_entity/documentation.adoc b/entity/MSTeamsMessage_entity/documentation.adoc new file mode 100644 index 00000000000..739a9e5de3c --- /dev/null +++ b/entity/MSTeamsMessage_entity/documentation.adoc @@ -0,0 +1,14 @@ +MSTeamsMessage +============ + +== Overview == +MSTeamsMessage is used to get the messages written in MST + +== A MSTeamsMessage consists of some modules: == +- MSTeamsMessage itself + +== BestPractice == + +== FAQ == + + diff --git a/entity/MSTeamsMessage_entity/entityfields/messages/documentation.adoc b/entity/MSTeamsMessage_entity/entityfields/messages/documentation.adoc new file mode 100644 index 00000000000..6bcca7fb1e9 --- /dev/null +++ b/entity/MSTeamsMessage_entity/entityfields/messages/documentation.adoc @@ -0,0 +1,3 @@ +Provider Messages + +Provides the messages for other entities \ No newline at end of file diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index 47bf2599e3a..854bfe8f3ec 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -304,6 +304,11 @@ <name>EnableMSTeams_param</name> <expose v="true" /> </entityParameter> + <entityParameter> + <name>SalesprojectCode_param</name> + <expose v="true" /> + <description>PARAMETER</description> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js index cb23d1d3c0b..611e6d39267 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js @@ -18,6 +18,7 @@ if (objectType === "Salesproject") .arrayRow(); params["TeamName_param"] = teamName; params["Description_param"] = description; + params["SalesprojectCode_param"] = vars.get("$param.SalesprojectCode_param"); } neon.openContext("MSTTeam", null, null, neon.OPERATINGSTATE_NEW, params); \ No newline at end of file diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index b2cf87ec299..7dd6be49891 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -280,6 +280,10 @@ <name>EnableMSTeams_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/enablemsteams_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>SalesprojectCode_param</name> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> <entityActionField> diff --git a/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js b/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js new file mode 100644 index 00000000000..598d579e335 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(vars.get("$field.PROJECTCODE")); \ No newline at end of file diff --git a/process/mstBot_rest/process.js b/process/mstBot_rest/process.js index 1b362801118..c93ca1c87aa 100644 --- a/process/mstBot_rest/process.js +++ b/process/mstBot_rest/process.js @@ -9,12 +9,11 @@ import("Date_lib"); function restpost(pRequestAsJson) { - //Umformen, dass man den Body des Requests als JsonFormat Base64 decodiert hat + //Umformen, dass man den Body des Requests als JsonFormat Base64 decodiert hat var jsonRequest = JSON.parse(pRequestAsJson); - logging.log(jsonRequest); var body = jsonRequest.body; - var decodedBody = util.decodeBase64String(body); - var jsonBody = JSON.parse(decodedBody); + var jsonBody = JSON.parse(body); + //Nötig, falls dies der InitialRequest ist var eventType = jsonBody.channelData.eventType; -- GitLab From 8ab08a1d5100f0705b05527aa22301dcb6e817c1 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Wed, 16 Sep 2020 15:09:01 +0200 Subject: [PATCH 034/184] Member_entity: District and MSTeams: insert, edit, delete --- .../recordcontainers/db/conditionProcess.js | 6 ++++-- entity/Member_entity/Member_entity.aod | 17 ++++++++++++++++- entity/Member_entity/documentation.adoc | 13 ++++++++++++- .../entityfields/recordtype/documentation.adoc | 1 + entity/Member_entity/grantDeleteProcess.js | 5 +++++ entity/Member_entity/grantUpdateProcess.js | 5 +++++ .../recordtype.value/expression.js | 4 ++++ .../recordcontainers/jdito/contentProcess.js | 5 +++-- .../recordcontainers/jdito/onDelete.js | 16 ++++++++++++++++ .../recordcontainers/jdito/onInsert.js | 1 + .../recordcontainers/jdito/onUpdate.js | 1 + .../Salesproject_entity/Salesproject_entity.aod | 2 +- neonContext/Member/Member.aod | 7 +++++++ 13 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 entity/Member_entity/entityfields/recordtype/documentation.adoc create mode 100644 entity/Member_entity/grantDeleteProcess.js create mode 100644 entity/Member_entity/grantUpdateProcess.js create mode 100644 entity/Member_entity/recordcontainers/db/recordfieldmappings/recordtype.value/expression.js create mode 100644 entity/Member_entity/recordcontainers/jdito/onDelete.js create mode 100644 entity/Member_entity/recordcontainers/jdito/onInsert.js create mode 100644 entity/Member_entity/recordcontainers/jdito/onUpdate.js diff --git a/entity/DistrictResponsible_entity/recordcontainers/db/conditionProcess.js b/entity/DistrictResponsible_entity/recordcontainers/db/conditionProcess.js index 1942674d0c7..d6118964901 100644 --- a/entity/DistrictResponsible_entity/recordcontainers/db/conditionProcess.js +++ b/entity/DistrictResponsible_entity/recordcontainers/db/conditionProcess.js @@ -14,9 +14,11 @@ if (districtId) else if(orgUid) { var orgDistrictIds = vars.get("$param.CollectedDistrictIds_param"); - if (orgDistrictIds){ + if (orgDistrictIds) + { orgDistrictIds = JSON.parse(orgDistrictIds); - cond.and("DISTRICTRESPONSIBLE.DISTRICT_ID", orgDistrictIds, SqlBuilder.IN()); + if (orgDistrictIds.length > 0) + cond.and("DISTRICTRESPONSIBLE.DISTRICT_ID", orgDistrictIds, SqlBuilder.IN()); } } diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index 854bfe8f3ec..b0538033f66 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -7,6 +7,8 @@ <siblings> <element>MSTTeam_entity</element> </siblings> + <grantUpdateProcess>%aditoprj%/entity/Member_entity/grantUpdateProcess.js</grantUpdateProcess> + <grantDeleteProcess>%aditoprj%/entity/Member_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Member_entity/contentTitleProcess.js</contentTitleProcess> <iconId>VAADIN:FILE_SOUND</iconId> <titlePlural>${SALESPROJECT_MEMBER}</titlePlural> @@ -43,7 +45,6 @@ <entityField> <name>ORGANISATION_NAME</name> <title>Company</title> - <state>READONLY</state> </entityField> <entityField> <name>ORG_ORGID</name> @@ -304,6 +305,10 @@ <name>EnableMSTeams_param</name> <expose v="true" /> </entityParameter> + <entityField> + <name>recordType</name> + <documentation>%aditoprj%/entity/Member_entity/entityfields/recordtype/documentation.adoc</documentation> + </entityField> <entityParameter> <name>SalesprojectCode_param</name> <expose v="true" /> @@ -439,12 +444,19 @@ <name>MST_MEMBERROLE.value</name> <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js</expression> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>recordType.value</name> + <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/recordtype.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> <jDitoRecordContainer> <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> <contentProcess>%aditoprj%/entity/Member_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/Member_entity/recordcontainers/jdito/onInsert.js</onInsert> + <onUpdate>%aditoprj%/entity/Member_entity/recordcontainers/jdito/onUpdate.js</onUpdate> + <onDelete>%aditoprj%/entity/Member_entity/recordcontainers/jdito/onDelete.js</onDelete> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> @@ -506,6 +518,9 @@ <jDitoRecordFieldMapping> <name>TARGETCONTEXT.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>recordType.value</name> + </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> </recordContainers> diff --git a/entity/Member_entity/documentation.adoc b/entity/Member_entity/documentation.adoc index 575b84d3290..3ad972dcc80 100644 --- a/entity/Member_entity/documentation.adoc +++ b/entity/Member_entity/documentation.adoc @@ -1,3 +1,14 @@ = Member_entity -Manages the project team in the sales project and in the campaign \ No newline at end of file +Manages the project team in the sales project and in the campaign + +This entity has two recordContainers: + +* db +* jdito + +While for the must purposes the `db`-recordContainer is perfectly fine to use there is one case necessary for the `jdito`-recordContainer: + +Salesproject memebers are loaded via the ``-provider and therefor use the `jdito`-recodContainer. This recordContainer first collects the data from +the `db`-rc and then loads additional memebers of the salesprojects district. The additional members are not modifyable, while those from the +`db`-rc are. \ No newline at end of file diff --git a/entity/Member_entity/entityfields/recordtype/documentation.adoc b/entity/Member_entity/entityfields/recordtype/documentation.adoc new file mode 100644 index 00000000000..3120dc65c22 --- /dev/null +++ b/entity/Member_entity/entityfields/recordtype/documentation.adoc @@ -0,0 +1 @@ +Field to differ between records from the OBJECTMEMBER-table and additional added district-members (only in the jdito-RecordContainer) \ No newline at end of file diff --git a/entity/Member_entity/grantDeleteProcess.js b/entity/Member_entity/grantDeleteProcess.js new file mode 100644 index 00000000000..a494c8292d2 --- /dev/null +++ b/entity/Member_entity/grantDeleteProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); + +var res = vars.get("$field.recordType") != "DistrictResponsible"; +result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/grantUpdateProcess.js b/entity/Member_entity/grantUpdateProcess.js new file mode 100644 index 00000000000..a494c8292d2 --- /dev/null +++ b/entity/Member_entity/grantUpdateProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); + +var res = vars.get("$field.recordType") != "DistrictResponsible"; +result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/recordcontainers/db/recordfieldmappings/recordtype.value/expression.js b/entity/Member_entity/recordcontainers/db/recordfieldmappings/recordtype.value/expression.js new file mode 100644 index 00000000000..ecce98df0cb --- /dev/null +++ b/entity/Member_entity/recordcontainers/db/recordfieldmappings/recordtype.value/expression.js @@ -0,0 +1,4 @@ +import("system.result"); + +//this value only differs in the jdito recordContainer +result.string("'ObjectMember'"); \ No newline at end of file diff --git a/entity/Member_entity/recordcontainers/jdito/contentProcess.js b/entity/Member_entity/recordcontainers/jdito/contentProcess.js index b678a96f2fa..7f4c73a178d 100644 --- a/entity/Member_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Member_entity/recordcontainers/jdito/contentProcess.js @@ -13,7 +13,8 @@ var memberLoadingConfig = entities.createConfigForLoadingRows() .addParameter("ObjectType_param", vars.get("$param.ObjectType_param")) .fields(["#UID", "CONTACT_ID", "CONTACTROLE", "DEPARTMENT", "ICON", "IMAGE", "MEMBERROLE", "OBJECT_ROWID", "OBJECT_TYPE", "OBJECTMEMBERID", "ORG_ORGID", "ORGANISATION_NAME", "PERSON_FIRSTNAME", "PERSON_FULL_NAME", - "PERSON_LASTNAME", "PERSON_PERSID", "PERSON_SALUTATION", "PERSON_TITLE", "POSITION", "TARGETCONTEXT"]); + "PERSON_LASTNAME", "PERSON_PERSID", "PERSON_SALUTATION", "PERSON_TITLE", "POSITION", "TARGETCONTEXT", + "recordType"]); if (idValues) { @@ -58,7 +59,7 @@ memberRows = memberRows.map(function(row) return [row["#UID"], row["OBJECTMEMBERID"], row["CONTACT_ID"], row["CONTACTROLE"], row["DEPARTMENT"], row["ICON"], row["IMAGE"], row["MEMBERROLE"], row["OBJECT_ROWID"], row["OBJECT_TYPE"], row["ORG_ORGID"], row["ORGANISATION_NAME"], row["PERSON_FIRSTNAME"], row["PERSON_FULL_NAME"], row["PERSON_LASTNAME"], row["PERSON_PERSID"], row["PERSON_SALUTATION"], row["PERSON_TITLE"], - row["POSITION"], row["TARGETCONTEXT"]]; + row["POSITION"], row["TARGETCONTEXT"], row["recordType"]]; }); var responsibleUids = []; diff --git a/entity/Member_entity/recordcontainers/jdito/onDelete.js b/entity/Member_entity/recordcontainers/jdito/onDelete.js new file mode 100644 index 00000000000..91caa64d3c7 --- /dev/null +++ b/entity/Member_entity/recordcontainers/jdito/onDelete.js @@ -0,0 +1,16 @@ +import("system.vars"); +import("system.entities"); + +//While there is no need to implement the insert or update process the delete process needs to be specified because the +//contexts viewmodeProvider for the editView only affect insert and update (delete has no view associated) +//let's do the db-record container the job to remove the record (additional district records can never be removed): +var rowData = vars.get("$local.rowdata"); +var memberId = rowData["OBJECTMEMBERID.value"]; +if (memberId) +{ + var config = entities.createConfigForDeletingRows().entity("Member_entity").uid(memberId); + entities.deleteRow(config); +} +else + throw new Error("Member_entity: Could not delete member entity because the given OBJECTMEMBERID was empty."); + diff --git a/entity/Member_entity/recordcontainers/jdito/onInsert.js b/entity/Member_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 00000000000..d86d21c9884 --- /dev/null +++ b/entity/Member_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1 @@ +//No insert code, because it is done in via the contexts viewmodeProvider for the editView \ No newline at end of file diff --git a/entity/Member_entity/recordcontainers/jdito/onUpdate.js b/entity/Member_entity/recordcontainers/jdito/onUpdate.js new file mode 100644 index 00000000000..1e04d32962f --- /dev/null +++ b/entity/Member_entity/recordcontainers/jdito/onUpdate.js @@ -0,0 +1 @@ +//No update code, because it is done in via the contexts viewmodeProvider for the editView \ No newline at end of file diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 7dd6be49891..412fcc0f202 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -259,7 +259,7 @@ <dependency> <name>dependency</name> <entityName>Member_entity</entityName> - <fieldName>Links</fieldName> + <fieldName>WithDistrictResponsibles</fieldName> </dependency> <children> <entityParameter> diff --git a/neonContext/Member/Member.aod b/neonContext/Member/Member.aod index 664965d770c..a2915648a32 100644 --- a/neonContext/Member/Member.aod +++ b/neonContext/Member/Member.aod @@ -24,4 +24,11 @@ <view>MemberLookup_view</view> </neonViewReference> </references> + <viewmodeProvider> + <staticContentEntry> + <name>editView</name> + <key>editView</key> + <value>Links</value> + </staticContentEntry> + </viewmodeProvider> </neonContext> -- GitLab From b2aef50b8cb1dcbcd6a74f6fce6e13f574622edb Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Wed, 16 Sep 2020 15:45:27 +0200 Subject: [PATCH 035/184] MSTeams: Member: validation bugfixing --- .../MSTTeamMember_entity.aod | 4 ++-- .../entityfields/invite/mandatoryProcess.js | 4 ---- .../entityfields/role/mandatoryProcess.js | 4 ---- entity/MSTTeamMember_entity/onValidation.js | 21 +++++++++++++++++++ .../recordcontainers/jdito/onUpdate.js | 2 ++ .../recordcontainers/jdito/onUpdate.js | 11 ++++++++-- 6 files changed, 34 insertions(+), 12 deletions(-) delete mode 100644 entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js delete mode 100644 entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js create mode 100644 entity/MSTTeamMember_entity/onValidation.js create mode 100644 entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod index 5dfff61a5e6..4847be9300d 100644 --- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -4,6 +4,7 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/MSTTeamMember_entity/documentation.adoc</documentation> <siblings /> + <onValidation>%aditoprj%/entity/MSTTeamMember_entity/onValidation.js</onValidation> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -89,14 +90,12 @@ <entityField> <name>ROLE</name> <title>Role</title> - <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js</mandatoryProcess> <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js</dropDownProcess> <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js</stateProcess> </entityField> <entityField> <name>INVITE</name> <title>Invitation</title> - <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js</mandatoryProcess> <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js</dropDownProcess> <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js</stateProcess> </entityField> @@ -112,6 +111,7 @@ <contentProcess>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <hasDependentRecords v="true" /> <onInsert>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js</onInsert> + <onUpdate>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js</onUpdate> <onDelete>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js</onDelete> <recordFieldMappings> <jDitoRecordFieldMapping> diff --git a/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js deleted file mode 100644 index 5d086208537..00000000000 --- a/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("system.vars"); - -result.string(!vars.get("$field.MEMBERNAME") && vars.get("$field.ISEXTERN") == "true"); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js deleted file mode 100644 index 5015e9937f4..00000000000 --- a/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("system.vars"); - -result.string(vars.get("$field.ISEXTERN") != "true"); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/onValidation.js b/entity/MSTTeamMember_entity/onValidation.js new file mode 100644 index 00000000000..9db830c5c67 --- /dev/null +++ b/entity/MSTTeamMember_entity/onValidation.js @@ -0,0 +1,21 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); + +var isExtern = vars.getString("$field.ISEXTERN") == "true"; +var res; + +if (vars.get("$field.CONTACT_ID")) +{ + if (isExtern && !vars.get("$field.INVITE")) + { + res = translate.withArguments("Required value for %0 is missing", [vars.get("$property.INVITE.title")]); + } + else if(!isExtern && !vars.get("$field.ROLE")) + { + res = translate.withArguments("Required value for %0 is missing", [vars.get("$property.ROLE.title")]); + } +} + +if (res) + result.string(res); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js new file mode 100644 index 00000000000..1df92b6ad9e --- /dev/null +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js @@ -0,0 +1,2 @@ +//updating is done in the MSTTeam_entity +var dummy = "dummy"; \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js index 9219ab01d69..07569b024b8 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js @@ -10,12 +10,12 @@ var teamId = rowData["UID.value"]; var teamName = rowData["TEAMNAME.value"]; var description = rowData["DESCRIPTION.value"]; var insertedTeamMembers = vars.get("$field.TeamMembers.insertedRows"); +var changedTeamMembers = vars.get("$field.TeamMembers.changedRows"); var deletedTeamMembers = vars.get("$field.TeamMembers.deletedRows"); var internalMembers = []; var externalMembers = []; -insertedTeamMembers.forEach(function (teamMember) -{ +insertedTeamMembers.forEach(function (teamMember){ var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]); if (!memberUser) { @@ -45,6 +45,13 @@ if (internalMembers.length !== 0) if (externalMembers.length !== 0) teams.addExternalMembers(teamId, externalMembers); +changedTeamMembers.forEach(function (teamMember){ + var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]); + + //teams.changeRole(teamId, ); +}); + + var owners = teams.getAllOwners(teamId); var removeMembers = deletedTeamMembers.map(function (member) { -- GitLab From 64dda83e150af2097f4895f75d2248b55462e1f4 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Wed, 16 Sep 2020 16:07:34 +0200 Subject: [PATCH 036/184] MSTeams: Member: change role for internal member --- .../recordcontainers/jdito/onUpdate.js | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js index 07569b024b8..f55e08ec25b 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js @@ -29,14 +29,9 @@ insertedTeamMembers.forEach(function (teamMember){ } return; } - var memberAzureId = memberUser[tools.PARAMS][tools.TEAMS_AZUREID]; - var memberUpn = memberUser[tools.PARAMS][tools.TEAMS_AZUREUPN]; - if (!memberAzureId && memberUpn) - memberAzureId = teams.getInternalAzureId(memberUpn); - if (memberAzureId) - { - internalMembers.push(teams.createInternalUserConfig(memberAzureId).setOwner(teamMember["ROLE"] == "owner")); - } + var internalUserConfigToAdd = _getTeamsInternalUserConfig(memberUser, teamMember["ROLE"] == "owner"); + if (internalUserConfigToAdd) + internalMembers.push(internalUserConfigToAdd); }); if (internalMembers.length !== 0) @@ -47,8 +42,13 @@ if (externalMembers.length !== 0) changedTeamMembers.forEach(function (teamMember){ var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]); + if (!memberUser) + return null; - //teams.changeRole(teamId, ); + var internalUserConfigToChange = _getTeamsInternalUserConfig(memberUser, teamMember["ROLE"] == "owner"); + if (internalUserConfigToChange) + teams.changeRole(teamId, internalUserConfigToChange); + return null;//prevent designer warning }); @@ -60,4 +60,17 @@ var removeMembers = deletedTeamMembers.map(function (member) }); if (removeMembers.length !== 0) - teams.removeInternalMembers(teamId, removeMembers); \ No newline at end of file + teams.removeInternalMembers(teamId, removeMembers); + +function _getTeamsInternalUserConfig(pUserObject, pAsOwner) +{ + var memberAzureId = pUserObject[tools.PARAMS][tools.TEAMS_AZUREID]; + var memberUpn = pUserObject[tools.PARAMS][tools.TEAMS_AZUREUPN]; + if (!memberAzureId && memberUpn) + memberAzureId = teams.getInternalAzureId(memberUpn); + if (memberAzureId) + { + return teams.createInternalUserConfig(memberAzureId).setOwner(pAsOwner); + } + return null; +} \ No newline at end of file -- GitLab From d84c7ec3f2525ade7324c170512be1930597dcef Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Wed, 16 Sep 2020 16:21:25 +0200 Subject: [PATCH 037/184] MSTeams: disabling should hide all fields --- entity/Member_entity/Member_entity.aod | 5 --- .../children/addapp/stateProcess.js | 36 +++++++++++-------- .../children/changetomsteam/stateProcess.js | 30 +++++++++------- .../children/deleteteam/stateProcess.js | 34 +++++++++++------- .../children/editteam/stateProcess.js | 34 +++++++++++------- .../children/restoreteam/stateProcess.js | 33 +++++++++++------ .../Salesproject_entity.aod | 2 +- .../mst_team_id/displayValueProcess.js | 16 ++++++--- .../entityfields/mst_team_id/stateProcess.js | 8 ++++- 9 files changed, 125 insertions(+), 73 deletions(-) diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index b0538033f66..f30e99f773a 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -229,7 +229,6 @@ <iconId>NEON:PLUS</iconId> <state>EDITABLE</state> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js</stateProcess> - <tooltip>Erstelle ein neues MicrosoftTeams Team</tooltip> </entityActionField> <entityActionField> <name>editTeam</name> @@ -244,7 +243,6 @@ <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js</onActionProcess> <iconId>VAADIN:MOBILE</iconId> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js</stateProcess> - <tooltip>Adds the MST ADITO App to the MSTTeam</tooltip> </entityActionField> <entityActionField> <name>chooseTeam</name> @@ -252,7 +250,6 @@ <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js</onActionProcess> <iconId>NEON:GROUP_APPOINTMENT</iconId> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js</stateProcess> - <tooltip>Wähle ein bereits hinterlegtes Team</tooltip> </entityActionField> <entityActionField> <name>restoreTeam</name> @@ -260,7 +257,6 @@ <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js</onActionProcess> <iconId>VAADIN:ARROW_BACKWARD</iconId> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js</stateProcess> - <tooltip>Stelle das Team wieder her</tooltip> </entityActionField> <entityActionField> <name>changeToMSTeam</name> @@ -275,7 +271,6 @@ <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js</onActionProcess> <iconId>NEON:TRASH</iconId> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js</stateProcess> - <tooltip>Lösche das verknüpfte MSTeams Team</tooltip> </entityActionField> </children> </entityActionGroup> diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js index 2446336fdb5..8c22d355887 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js @@ -1,25 +1,31 @@ +import("MSTeams_lib"); import("system.vars"); import("system.neon"); import("system.result"); import("Sql_lib"); +var res = neon.COMPONENTSTATE_DISABLED; var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; +if (teamId && MSTeamsUtils.isTeamsEnabled()) +{ + var isArchived, serviceUrl; + var teamData = newSelect("IS_ARCHIVED, SERVICE_URL") + .from("MST_TEAM") + .whereIfSet("MST_TEAM.MST_TEAMID", teamId) + .arrayRow(true); -var isArchived, serviceUrl; -var teamData = newSelect("IS_ARCHIVED, SERVICE_URL") - .from("MST_TEAM") - .whereIfSet("MST_TEAM.MST_TEAMID", teamId) - .arrayRow(true); + if (teamData) + [isArchived, serviceUrl] = teamData; -if (teamData) - [isArchived, serviceUrl] = teamData; - -if (teamId == "" || isArchived == 1 || serviceUrl) -{ - result.string(neon.COMPONENTSTATE_DISABLED); + if (isArchived == 1 || serviceUrl) + { + res = neon.COMPONENTSTATE_DISABLED; + } + else + { + res = neon.COMPONENTSTATE_EDITABLE; + } } -else -{ - result.string(neon.COMPONENTSTATE_EDITABLE); -} \ No newline at end of file + +result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js index 5a91fdde73f..43b7cdd5ead 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js @@ -1,20 +1,26 @@ +import("MSTeams_lib"); import("system.vars"); import("system.neon"); import("system.result"); import("Sql_lib"); +var res = neon.COMPONENTSTATE_DISABLED; var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; - -var isArchived = newSelect("IS_ARCHIVED") - .from("MST_TEAM") - .whereIfSet("MST_TEAM.MST_TEAMID", teamId) - .cell(true); +if (teamId && MSTeamsUtils.isTeamsEnabled()) +{ + var isArchived = newSelect("IS_ARCHIVED") + .from("MST_TEAM") + .whereIfSet("MST_TEAM.MST_TEAMID", teamId) + .cell(true); -if (teamId == "" || isArchived == 1) -{ - result.string(neon.COMPONENTSTATE_DISABLED); + if (isArchived == 1) + { + res = neon.COMPONENTSTATE_DISABLED; + } + else + { + res = neon.COMPONENTSTATE_EDITABLE; + } } -else -{ - result.string(neon.COMPONENTSTATE_EDITABLE); -} \ No newline at end of file + +result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js index d1432e9d7c5..ff7327ea214 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js @@ -1,21 +1,31 @@ +import("MSTeams_lib"); import("system.vars"); import("system.neon"); import("system.result"); import("Sql_lib"); -import("MSTeams_lib"); +var res = neon.COMPONENTSTATE_DISABLED; var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; - -var isArchived = newSelect("IS_ARCHIVED") +if (teamId && MSTeamsUtils.isTeamsEnabled()) +{ + var isArchived, serviceUrl; + var teamData = newSelect("IS_ARCHIVED, SERVICE_URL") .from("MST_TEAM") .whereIfSet("MST_TEAM.MST_TEAMID", teamId) - .cell(true); - -if (!teamId || isArchived == 1 || !MSTeamsUtils.isUserTeamOwner(teamId)) -{ - result.string(neon.COMPONENTSTATE_DISABLED); + .arrayRow(true); + + if (teamData) + [isArchived, serviceUrl] = teamData; + + + if (isArchived == 1 || serviceUrl || !MSTeamsUtils.isUserTeamOwner(teamId)) + { + res = neon.COMPONENTSTATE_DISABLED; + } + else + { + res = neon.COMPONENTSTATE_EDITABLE; + } } -else -{ - result.string(neon.COMPONENTSTATE_EDITABLE); -} \ No newline at end of file + +result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js index d1432e9d7c5..19d44a29c7a 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js @@ -1,21 +1,31 @@ +import("MSTeams_lib"); import("system.vars"); import("system.neon"); import("system.result"); import("Sql_lib"); -import("MSTeams_lib"); +var res = neon.COMPONENTSTATE_DISABLED; var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; - -var isArchived = newSelect("IS_ARCHIVED") +if (teamId && MSTeamsUtils.isTeamsEnabled()) +{ + var isArchived, serviceUrl; + var teamData = newSelect("IS_ARCHIVED, SERVICE_URL") .from("MST_TEAM") .whereIfSet("MST_TEAM.MST_TEAMID", teamId) - .cell(true); - -if (!teamId || isArchived == 1 || !MSTeamsUtils.isUserTeamOwner(teamId)) -{ - result.string(neon.COMPONENTSTATE_DISABLED); + .arrayRow(true); + + if (teamData) + [isArchived, serviceUrl] = teamData; + + + if (isArchived == 1 || !MSTeamsUtils.isUserTeamOwner(teamId)) + { + res = neon.COMPONENTSTATE_DISABLED; + } + else + { + res = neon.COMPONENTSTATE_EDITABLE; + } } -else -{ - result.string(neon.COMPONENTSTATE_EDITABLE); -} \ No newline at end of file + +result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js index 97ff04f9a94..f6f0a5da097 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js @@ -1,20 +1,31 @@ +import("MSTeams_lib"); import("system.vars"); import("system.neon"); import("system.result"); import("Sql_lib"); +var res = neon.COMPONENTSTATE_DISABLED; var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; - -var isArchived = newSelect("IS_ARCHIVED") +if (teamId && MSTeamsUtils.isTeamsEnabled()) +{ + var isArchived, serviceUrl; + var teamData = newSelect("IS_ARCHIVED, SERVICE_URL") .from("MST_TEAM") .whereIfSet("MST_TEAM.MST_TEAMID", teamId) - .cell(true); - -if (teamId == "" || isArchived == 0) -{ - result.string(neon.COMPONENTSTATE_DISABLED); + .arrayRow(true); + + if (teamData) + [isArchived, serviceUrl] = teamData; + + + if (isArchived == 0) + { + res = neon.COMPONENTSTATE_DISABLED; + } + else + { + res = neon.COMPONENTSTATE_EDITABLE; + } } -else -{ - result.string(neon.COMPONENTSTATE_EDITABLE); -} \ No newline at end of file + +result.string(res); \ No newline at end of file diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 412fcc0f202..1d915910da7 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -754,7 +754,7 @@ <name>MST_TEAM_ID</name> <title>Teams group</title> <linkedContext>MSTTeam</linkedContext> - <state>READONLY</state> + <state>INVISIBLE</state> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js</stateProcess> <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js</displayValueProcess> </entityField> diff --git a/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js b/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js index daf9387bb01..14271e09111 100644 --- a/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js +++ b/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js @@ -1,7 +1,15 @@ +import("MSTeams_lib"); import("system.result"); import("Sql_lib"); -result.string(newSelect("TEAMNAME") - .from("MST_TEAM") - .whereIfSet("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID") - .cell(true)); \ No newline at end of file +var res; + +if (MSTeamsUtils.isTeamsEnabled()) + res = newSelect("TEAMNAME") + .from("MST_TEAM") + .whereIfSet("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID") + .cell(true); +else + res = ""; + +result.string(res); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js b/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js index ddf69aa437e..0a84b37c599 100644 --- a/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js +++ b/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js @@ -1,5 +1,11 @@ +import("MSTeams_lib"); import("system.result"); import("system.vars"); import("system.neon"); -result.string(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_READONLY); \ No newline at end of file +var res = neon.COMPONENTSTATE_INVISIBLE; +var recordState = vars.get("$sys.recordstate"); +if (MSTeamsUtils.isTeamsEnabled() && recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) + res = neon.COMPONENTSTATE_READONLY; + +result.string(res); \ No newline at end of file -- GitLab From 8160879a26eae28b5bca0e635148d4ab83eddea0 Mon Sep 17 00:00:00 2001 From: "b.ulrich" <b.ulrich@adito.de> Date: Thu, 8 Oct 2020 14:48:13 +0200 Subject: [PATCH 038/184] [Projekt: Entwicklung - Neon][TicketNr.: 1065877][Mahnung - Tippfehler im Beleg] --- .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 4 +- report/Reminder_report/reportData.jrxml | 54 +++++++++---------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index f2aba5d40f0..b5c2b894568 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -6548,7 +6548,7 @@ </entry> <entry> <key>Order number</key> - <value>Belegsnummer</value> + <value>Belegnummer</value> </entry> <entry> <key>Permission Action</key> @@ -6576,7 +6576,7 @@ </entry> <entry> <key>Order date</key> - <value>Belegsdatum</value> + <value>Belegdatum</value> </entry> <entry> <key>Due date</key> diff --git a/report/Reminder_report/reportData.jrxml b/report/Reminder_report/reportData.jrxml index 5e0e92752af..0c3b01764e3 100644 --- a/report/Reminder_report/reportData.jrxml +++ b/report/Reminder_report/reportData.jrxml @@ -2,7 +2,7 @@ <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Mahnung" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e7a916c8-3f9a-497d-84bb-3909b15271ea"> <property name="ireport.zoom" value="2.1435888100000016"/> <property name="ireport.x" value="0"/> - <property name="ireport.y" value="144"/> + <property name="ireport.y" value="339"/> <parameter name="myAddr" class="java.lang.String"/> <parameter name="Kontenabstimmung" class="java.lang.String"/> <parameter name="Rech.-Nr" class="java.lang.String"/> @@ -41,28 +41,28 @@ <textField> <reportElement x="13" y="0" width="68" height="15" uuid="0a515534-8d2a-4e3e-9370-6cac4c65ef68"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$P{Ordernumber}]]></textFieldExpression> </textField> <textField> <reportElement x="104" y="0" width="63" height="15" uuid="87fc2f40-ffdc-47d5-9fd8-7a8caf821114"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$P{Orderdate}]]></textFieldExpression> </textField> <textField> - <reportElement x="202" y="0" width="62" height="15" uuid="86eacb27-6bb5-4ce8-b8cf-c3f0993380ad"/> + <reportElement x="202" y="0" width="76" height="15" uuid="86eacb27-6bb5-4ce8-b8cf-c3f0993380ad"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$P{DueDate}]]></textFieldExpression> </textField> <textField> <reportElement x="429" y="0" width="59" height="15" uuid="62a0909f-ef03-4242-969a-8a9532d1aa9a"/> <textElement textAlignment="Right"> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$P{Due}]]></textFieldExpression> </textField> @@ -72,58 +72,58 @@ <textField> <reportElement x="104" y="36" width="64" height="15" uuid="ca4c366a-1954-4aee-91c4-05c093b04df5"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{ORDERDATE}]]></textFieldExpression> </textField> <textField> <reportElement x="13" y="36" width="68" height="15" uuid="3fcb3ee0-fe4d-409e-8cb8-7a0e6ceca5ab"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{ORDERCODE}]]></textFieldExpression> </textField> <textField> <reportElement x="202" y="36" width="62" height="15" uuid="b5e006cf-5d37-42a1-bf74-0b49d3a39b27"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{DUEDATE}]]></textFieldExpression> </textField> <textField> <reportElement x="428" y="36" width="60" height="15" uuid="d57eeb7b-f517-4c85-a925-cdc3c1ea0830"/> <textElement textAlignment="Right"> - <font size="8" isBold="true"/> + <font size="8" isBold="true"/> </textElement> <textFieldExpression><![CDATA[$F{OFFEN}]]></textFieldExpression> </textField> <textField> - <reportElement x="307" y="35" width="56" height="15" uuid="72a49ece-7fc0-4cd7-a00c-94580845d150"/> + <reportElement x="332" y="35" width="56" height="15" uuid="72a49ece-7fc0-4cd7-a00c-94580845d150"/> <textElement textAlignment="Right"> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{BRUTTO}]]></textFieldExpression> </textField> <textField> - <reportElement x="307" y="15" width="56" height="15" uuid="a991ccab-0b04-4550-bbd2-2033a5fad0f0"/> + <reportElement x="332" y="15" width="56" height="15" uuid="a991ccab-0b04-4550-bbd2-2033a5fad0f0"/> <textElement textAlignment="Right"> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{CURRENCY}]]></textFieldExpression> </textField> <textField> <reportElement x="429" y="15" width="59" height="15" uuid="8e257160-536a-418a-b9df-80fa020268b8"/> <textElement textAlignment="Right"> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{CURRENCY}]]></textFieldExpression> </textField> <textField> - <reportElement x="326" y="0" width="62" height="15" uuid="000feb72-9b7d-42e6-ade9-8e12359c3eef"/> + <reportElement x="307" y="0" width="81" height="15" uuid="000feb72-9b7d-42e6-ade9-8e12359c3eef"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> - <textFieldExpression><![CDATA[$R{Rech.-Betrag}]]></textFieldExpression> + <textFieldExpression><![CDATA[$R{Rechnungsbetrag}]]></textFieldExpression> </textField> </band> </groupHeader> @@ -140,7 +140,7 @@ <textField> <reportElement x="13" y="88" width="527" height="20" forecolor="#000000" uuid="a47fa80c-6b70-4c8a-938d-3d44273b1ffb"/> <textElement textAlignment="Center" verticalAlignment="Middle"> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$P{Address}]]></textFieldExpression> </textField> @@ -157,35 +157,35 @@ <textField isStretchWithOverflow="true"> <reportElement x="13" y="122" width="152" height="20" uuid="c8514bfb-5e34-43f4-a256-7899cb58f0c1"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$P{ReminderAddress}]]></textFieldExpression> </textField> <textField> <reportElement x="13" y="172" width="132" height="20" uuid="d21620a9-4a49-496e-80f6-db842f0b70a9"/> <textElement> - <font size="14" isBold="true"/> + <font size="14" isBold="true"/> </textElement> <textFieldExpression><![CDATA[$P{Reminder}]]></textFieldExpression> </textField> <textField pattern="dd.MM.yyyy"> <reportElement x="388" y="192" width="100" height="20" uuid="5141d92f-3325-445b-b616-90630c1648f7"/> <textElement textAlignment="Right"> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression> </textField> <textField> <reportElement x="13" y="232" width="294" height="20" uuid="3f7d1c4a-a326-436b-831d-5da9fd255bf0"/> <textElement> - <font size="8" isBold="true"/> + <font size="8" isBold="true"/> </textElement> <textFieldExpression><![CDATA[$F{DUNNINGTEXT}]]></textFieldExpression> </textField> <textField> <reportElement x="13" y="212" width="214" height="20" uuid="52834aec-d107-4cc7-9662-1cdd73ba15c1"/> <textElement> - <font size="8" isBold="true"/> + <font size="8" isBold="true"/> </textElement> <textFieldExpression><![CDATA[$P{Dunninglevel} + " " + $F{DUNNINGLEVEL}]]></textFieldExpression> </textField> @@ -196,21 +196,21 @@ <textField pattern="EEEEE dd MMMMM yyyy"> <reportElement x="340" y="13" width="112" height="15" forecolor="#999999" uuid="26510f19-a203-4b34-8093-f6a9f7f6050e"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression> </textField> <textField> <reportElement x="452" y="13" width="48" height="15" forecolor="#999999" uuid="218ef560-390f-4807-b7f6-98e6f6162892"/> <textElement textAlignment="Right"> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$R{Seite}+" "+$V{PAGE_NUMBER}+" "+$R{von}]]></textFieldExpression> </textField> <textField evaluationTime="Report"> <reportElement x="500" y="13" width="40" height="15" forecolor="#999999" uuid="7ac354ed-0f8f-41fa-80a5-c2a0f74f7e09"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression> </textField> -- GitLab From ed1ee0db2170fbbe8ffba633c7cdd18086b81090 Mon Sep 17 00:00:00 2001 From: "b.ulrich" <b.ulrich@adito.de> Date: Mon, 12 Oct 2020 11:38:37 +0200 Subject: [PATCH 039/184] [Projekt: Entwicklung - Neon][TicketNr.: 1064514][Dashlet: Sales-Trichter mit Filter "Status=offen" programmieren] --- .../SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod b/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod index 1228d3cc49b..67c3c736904 100644 --- a/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod +++ b/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod @@ -8,7 +8,7 @@ <name>SalesprojectPhases</name> <title>Salesproject phases</title> <description>Shows how many sales projects are in the various sales phases</description> - <fragment>Salesproject/filter?search=eyJ0eXBlIjoiZ3JvdXAiLCJvcGVyYXRvciI6IkFORCIsImNoaWxkcyI6W3sidHlwZSI6InJvdyIsIm5hbWUiOiJQSEFTRSIsIm9wZXJhdG9yIjoiTk9UX0VRVUFMIiwidmFsdWUiOiJOZWdvdGlhdGlvbiIsImtleSI6IlNBTFBST0pQSEFTRU5FR08iLCJjb250ZW50dHlwZSI6IlRFWFQifV19&axes=COUNT&grouping=%23EXTENSION.Phase_filterExtention.Phase_filterExtention%23TEXT</fragment> + <fragment>Salesproject/filter?search=eyJ0eXBlIjoiZ3JvdXAiLCJvcGVyYXRvciI6IkFORCIsImNoaWxkcyI6W3sidHlwZSI6InJvdyIsIm5hbWUiOiJQSEFTRSIsIm9wZXJhdG9yIjoiTk9UX0VRVUFMIiwidmFsdWUiOiJOZWdvdGlhdGlvbiIsImtleSI6IlNBTFBST0pQSEFTRU5FR08iLCJjb250ZW50dHlwZSI6IlRFWFQifSx7InR5cGUiOiJyb3ciLCJuYW1lIjoiU1RBVFVTIiwib3BlcmF0b3IiOiJFUVVBTCIsInZhbHVlIjoiT2ZmZW4iLCJrZXkiOiJTQUxQUk9KU1RBVE9QRU4iLCJjb250ZW50dHlwZSI6IlRFWFQifV19&axes=COUNT&grouping=%23EXTENSION.Phase_filterExtention.Phase_filterExtention%23TEXT</fragment> <singleton v="true" /> <storeRoles> <element>PROJECT_FieldStaff</element> -- GitLab From 9a44ff30aece6fcb2ce5680bad93287595c1c84e Mon Sep 17 00:00:00 2001 From: "b.ulrich" <b.ulrich@adito.de> Date: Mon, 12 Oct 2020 13:46:13 +0200 Subject: [PATCH 040/184] [Projekt: Entwicklung - Neon][TicketNr.: 1065877][Mahnung - Tippfehler im Beleg] --- language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod | 3 +++ language/_____LANGUAGE_de/_____LANGUAGE_de.aod | 4 ++++ language/_____LANGUAGE_en/_____LANGUAGE_en.aod | 3 +++ report/Reminder_report/reportData.jrxml | 10 +++++----- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 2853fb59787..ba8f537e452 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -7284,6 +7284,9 @@ <entry> <key>Probability in %</key> </entry> + <entry> + <key>Outstanding Amount</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index b5c2b894568..698fcf15c81 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -9662,6 +9662,10 @@ Bitte Datumseingabe prüfen</value> <key>Probability in %</key> <value>Wahrscheinlichkeit in %</value> </entry> + <entry> + <key>Outstanding Amount</key> + <value>Offener Betrag</value> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index b09cc03cdef..7831ec4c963 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -7365,6 +7365,9 @@ <entry> <key>Probability in %</key> </entry> + <entry> + <key>Outstanding Amount</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/report/Reminder_report/reportData.jrxml b/report/Reminder_report/reportData.jrxml index 0c3b01764e3..ca529152a3f 100644 --- a/report/Reminder_report/reportData.jrxml +++ b/report/Reminder_report/reportData.jrxml @@ -2,7 +2,7 @@ <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Mahnung" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e7a916c8-3f9a-497d-84bb-3909b15271ea"> <property name="ireport.zoom" value="2.1435888100000016"/> <property name="ireport.x" value="0"/> - <property name="ireport.y" value="339"/> + <property name="ireport.y" value="57"/> <parameter name="myAddr" class="java.lang.String"/> <parameter name="Kontenabstimmung" class="java.lang.String"/> <parameter name="Rech.-Nr" class="java.lang.String"/> @@ -60,11 +60,11 @@ <textFieldExpression><![CDATA[$P{DueDate}]]></textFieldExpression> </textField> <textField> - <reportElement x="429" y="0" width="59" height="15" uuid="62a0909f-ef03-4242-969a-8a9532d1aa9a"/> + <reportElement x="408" y="0" width="103" height="15" uuid="62a0909f-ef03-4242-969a-8a9532d1aa9a"/> <textElement textAlignment="Right"> <font size="8"/> </textElement> - <textFieldExpression><![CDATA[$P{Due}]]></textFieldExpression> + <textFieldExpression><![CDATA[$P{Outstanding Amount}]]></textFieldExpression> </textField> <line> <reportElement x="13" y="33" width="527" height="1" uuid="d5108302-191f-4e27-8920-fcd330d335e8"/> @@ -91,7 +91,7 @@ <textFieldExpression><![CDATA[$F{DUEDATE}]]></textFieldExpression> </textField> <textField> - <reportElement x="428" y="36" width="60" height="15" uuid="d57eeb7b-f517-4c85-a925-cdc3c1ea0830"/> + <reportElement x="451" y="36" width="60" height="15" uuid="d57eeb7b-f517-4c85-a925-cdc3c1ea0830"/> <textElement textAlignment="Right"> <font size="8" isBold="true"/> </textElement> @@ -112,7 +112,7 @@ <textFieldExpression><![CDATA[$F{CURRENCY}]]></textFieldExpression> </textField> <textField> - <reportElement x="429" y="15" width="59" height="15" uuid="8e257160-536a-418a-b9df-80fa020268b8"/> + <reportElement x="452" y="15" width="59" height="15" uuid="8e257160-536a-418a-b9df-80fa020268b8"/> <textElement textAlignment="Right"> <font size="8"/> </textElement> -- GitLab From 98a71ca5cf9c142e6feb73e922ce3a4245d6bb13 Mon Sep 17 00:00:00 2001 From: Tobias Feldmann <t.feldmann@adito.de> Date: Wed, 28 Oct 2020 14:23:34 +0100 Subject: [PATCH 041/184] Notification_entity DB-RC changed to pageable --- entity/Notification_entity/Notification_entity.aod | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/entity/Notification_entity/Notification_entity.aod b/entity/Notification_entity/Notification_entity.aod index 8dead6bc118..cf3203213ac 100644 --- a/entity/Notification_entity/Notification_entity.aod +++ b/entity/Notification_entity/Notification_entity.aod @@ -175,8 +175,7 @@ <dbRecordContainer> <name>db</name> <alias>_____SYSTEMALIAS</alias> - <maximumDbRows v="200" /> - <isPageable v="false" /> + <isPageable v="true" /> <fromClauseProcess>%aditoprj%/entity/Notification_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> <conditionProcess>%aditoprj%/entity/Notification_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <orderClauseProcess>%aditoprj%/entity/Notification_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> -- GitLab From 45ed77682851deb985484baa00698423fa9baafe Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 29 Oct 2020 10:07:11 +0100 Subject: [PATCH 042/184] 1067997 Liquibase fix for MariaDB --- .../alter_DocumentTemplatePlaceOfUseDatatype.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml index 37249718641..a6e5c99db42 100644 --- a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml +++ b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml @@ -15,7 +15,7 @@ <changeSet dbms="!derby" author="b.ulrich" id="85ba6a61-9318-4118-ac4c-e33730f6581d"> <dropPrimaryKey tableName="DOCUMENTTEMPLATE" constraintName="PK_DOCUMENTTEMPLATE_DOCUMENTTEMPLATEID" dropIndex="true"/> - <dropNotNullConstraint tableName="DOCUMENTTEMPLATE" columnName="DOCUMENTTEMPLATEID"/> + <dropNotNullConstraint tableName="DOCUMENTTEMPLATE" columnName="DOCUMENTTEMPLATEID" columnDataType="VARCHAR(36)"/> <modifyDataType tableName="DOCUMENTTEMPLATE" columnName="DOCUMENTTEMPLATEID" newDataType="CHAR(36)"/> <addNotNullConstraint columnName="DOCUMENTTEMPLATEID" tableName="DOCUMENTTEMPLATE" columnDataType="CHAR(36)" validate="true"/> <addPrimaryKey tableName="DOCUMENTTEMPLATE" constraintName="PK_DOCUMENTTEMPLATE_DOCUMENTTEMPLATEID" columnNames="DOCUMENTTEMPLATEID"/> -- GitLab From d23d40b9a92ee6189dae202c4605c29f794e442d Mon Sep 17 00:00:00 2001 From: "M.Bilda" <m.bilda@adito.de> Date: Thu, 29 Oct 2020 10:31:55 +0100 Subject: [PATCH 043/184] Rename Entity with _entity --- entity/Document_entity/Document_entity.aod | 88 +++++++++---------- .../UserhelpResources_entity.aod} | 18 ++-- .../documentation.adoc | 0 .../assignmentrowid_param/valueProcess.js | 0 .../assignmenttable_param/valueProcess.js | 0 neonContext/Userhelp/Userhelp.aod | 2 +- 6 files changed, 54 insertions(+), 54 deletions(-) rename entity/{UserhelpResources/UserhelpResources.aod => UserhelpResources_entity/UserhelpResources_entity.aod} (70%) rename entity/{UserhelpResources => UserhelpResources_entity}/documentation.adoc (100%) rename entity/{UserhelpResources => UserhelpResources_entity}/entityfields/documents/children/assignmentrowid_param/valueProcess.js (100%) rename entity/{UserhelpResources => UserhelpResources_entity}/entityfields/documents/children/assignmenttable_param/valueProcess.js (100%) diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod index 420157a3713..cba9173b17c 100644 --- a/entity/Document_entity/Document_entity.aod +++ b/entity/Document_entity/Document_entity.aod @@ -144,6 +144,26 @@ <entityProvider> <name>Documents</name> <recordContainer>jdito</recordContainer> + <children> + <entityParameter> + <name>AssignmentName_param</name> + <valueProcess>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/valueProcess.js</valueProcess> + <expose v="true" /> + <documentation>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/documentation.adoc</documentation> + </entityParameter> + <entityParameter> + <name>AssignmentRowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>AssignmentTable_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>Keyword_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>1eae1907-53ea-4d6f-bcf1-772052365020</name> @@ -225,7 +245,7 @@ </entityDependency> <entityDependency> <name>2e6fcf27-ee98-4f7d-a99d-7ce02774076b</name> - <entityName>UserhelpResources</entityName> + <entityName>UserhelpResources_entity</entityName> <fieldName>Documents</fieldName> <isConsumer v="false" /> </entityDependency> @@ -242,12 +262,23 @@ <isConsumer v="false" /> </entityDependency> </dependencies> + </entityProvider> + <entityProvider> + <name>MainDocuments</name> + <recordContainer>jdito</recordContainer> <children> + <entityParameter> + <name>Keyword_param</name> + <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/keyword_param/valueProcess.js</valueProcess> + <expose v="true" /> + <mandatory v="true" /> + <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> + </entityParameter> <entityParameter> <name>AssignmentName_param</name> - <valueProcess>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/valueProcess.js</valueProcess> <expose v="true" /> - <documentation>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/documentation.adoc</documentation> + <documentation>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc</documentation> </entityParameter> <entityParameter> <name>AssignmentRowId_param</name> @@ -258,14 +289,10 @@ <expose v="true" /> </entityParameter> <entityParameter> - <name>Keyword_param</name> - <expose v="true" /> + <name>DisallowCreate_param</name> + <expose v="false" /> </entityParameter> </children> - </entityProvider> - <entityProvider> - <name>MainDocuments</name> - <recordContainer>jdito</recordContainer> <dependencies> <entityDependency> <name>87d738a5-5d5e-425e-b013-007371475a38</name> @@ -310,33 +337,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Keyword_param</name> - <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/keyword_param/valueProcess.js</valueProcess> - <expose v="true" /> - <mandatory v="true" /> - <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> - </entityParameter> - <entityParameter> - <name>AssignmentName_param</name> - <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/valueProcess.js</valueProcess> - <expose v="true" /> - <documentation>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc</documentation> - </entityParameter> - <entityParameter> - <name>AssignmentRowId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>AssignmentTable_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>DisallowCreate_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>DisallowCreate_param</name> @@ -346,14 +346,6 @@ <entityProvider> <name>SingleDocument</name> <titlePlural>Document</titlePlural> - <dependencies> - <entityDependency> - <name>91f87622-d0e8-43c6-99a0-5f9cebf79aaf</name> - <entityName>SerialLetter_entity</entityName> - <fieldName>Documents</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>AssignmentName_param</name> @@ -365,6 +357,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>91f87622-d0e8-43c6-99a0-5f9cebf79aaf</name> + <entityName>SerialLetter_entity</entityName> + <fieldName>Documents</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/UserhelpResources/UserhelpResources.aod b/entity/UserhelpResources_entity/UserhelpResources_entity.aod similarity index 70% rename from entity/UserhelpResources/UserhelpResources.aod rename to entity/UserhelpResources_entity/UserhelpResources_entity.aod index 7775d3fd5a4..32f253d4116 100644 --- a/entity/UserhelpResources/UserhelpResources.aod +++ b/entity/UserhelpResources_entity/UserhelpResources_entity.aod @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> - <name>UserhelpResources</name> + <name>UserhelpResources_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <documentation>%aditoprj%/entity/UserhelpResources/documentation.adoc</documentation> + <documentation>%aditoprj%/entity/UserhelpResources_entity/documentation.adoc</documentation> <entityFields> <entityProvider> <name>#PROVIDER</name> @@ -12,21 +12,21 @@ </entityField> <entityConsumer> <name>Documents</name> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentTable_param</name> - <valueProcess>%aditoprj%/entity/UserhelpResources/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/UserhelpResources_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> <entityParameter> <name>AssignmentRowId_param</name> - <valueProcess>%aditoprj%/entity/UserhelpResources/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/UserhelpResources_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/UserhelpResources/documentation.adoc b/entity/UserhelpResources_entity/documentation.adoc similarity index 100% rename from entity/UserhelpResources/documentation.adoc rename to entity/UserhelpResources_entity/documentation.adoc diff --git a/entity/UserhelpResources/entityfields/documents/children/assignmentrowid_param/valueProcess.js b/entity/UserhelpResources_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js similarity index 100% rename from entity/UserhelpResources/entityfields/documents/children/assignmentrowid_param/valueProcess.js rename to entity/UserhelpResources_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js diff --git a/entity/UserhelpResources/entityfields/documents/children/assignmenttable_param/valueProcess.js b/entity/UserhelpResources_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js similarity index 100% rename from entity/UserhelpResources/entityfields/documents/children/assignmenttable_param/valueProcess.js rename to entity/UserhelpResources_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js diff --git a/neonContext/Userhelp/Userhelp.aod b/neonContext/Userhelp/Userhelp.aod index 435de68c2c1..057b38dda49 100644 --- a/neonContext/Userhelp/Userhelp.aod +++ b/neonContext/Userhelp/Userhelp.aod @@ -3,7 +3,7 @@ <name>Userhelp</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterView>Userhelp_FilterView</filterView> - <entity>UserhelpResources</entity> + <entity>UserhelpResources_entity</entity> <references> <neonViewReference> <name>2a1dd62b-0f30-442b-aa1d-969b46312d2a</name> -- GitLab From 713f11a1f22a3fb7ec7c646ba670005cdca3fab2 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 29 Oct 2020 17:23:28 +0100 Subject: [PATCH 044/184] 1067663 support for oracle db --- .../hascommrestriction.value/expression.js | 4 ++-- .../status.displayvalue/expression.js | 11 +++------- .../targetcontext.value/expression.js | 8 +++---- .../activities/filterConditionProcess.js | 11 +++++++--- .../recordcontainers/jdito/onUpdate.js | 6 ++--- .../activities/filterConditionProcess.js | 11 +++++++--- .../targetcontext.value/expression.js | 8 +++---- .../activities/filterConditionProcess.js | 11 +++++++--- .../entityfields/product_id/onValueChange.js | 2 +- .../groupQueryProcess.js | 3 ++- .../groupQueryProcess.js | 19 +++++++++------- .../recordcontainers/jdito/contentProcess.js | 2 +- .../activities/filterConditionProcess.js | 11 +++++++--- .../recordcontainers/jdito/contentProcess.js | 8 ++++++- .../groupQueryProcess.js | 22 +++++++++++-------- .../activities/filterConditionProcess.js | 11 +++++++--- .../recordcontainers/jdito/contentProcess.js | 12 +++++----- .../recordcontainers/jdito/contentProcess.js | 2 +- process/Contact_lib/process.js | 2 +- process/Context_lib/process.js | 4 ++-- process/Leadimport_lib/process.js | 2 +- process/ObjectRelation_lib/process.js | 1 + process/Offer_lib/process.js | 2 +- process/Sql_lib/process.js | 2 +- process/Turnover_lib/process.js | 2 +- process/Workflow_lib/process.js | 9 +++++--- 26 files changed, 112 insertions(+), 74 deletions(-) diff --git a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/hascommrestriction.value/expression.js b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/hascommrestriction.value/expression.js index 3020cb618cd..04cd6d4dc91 100644 --- a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/hascommrestriction.value/expression.js +++ b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/hascommrestriction.value/expression.js @@ -5,5 +5,5 @@ import("system.db"); import("system.result"); var commRestrictionCond = ContactUtils.getCommRestrictionCondition($KeywordRegistry.communicationMediumCampaign$mail()); -var sql = "case when (" + commRestrictionCond.toString() + ") then 'true' else 'false' end"; -result.string(sql); +var sql = SqlBuilder.caseWhen(commRestrictionCond).thenString("true").elseString("false"); +result.string(sql.toString()); diff --git a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js index 115c35f85e4..49b6fefd592 100644 --- a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js +++ b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js @@ -1,17 +1,12 @@ import("Sql_lib"); import("Contact_lib"); import("system.translate"); -import("system.db"); -import("Bulkmail_lib"); import("system.result"); import("Keyword_lib"); import("KeywordRegistry_basic"); -var commRestrictionCond = ContactUtils.getCommRestrictionCondition($KeywordRegistry.communicationMediumCampaign$mail()).build(); +var commRestrictionCond = ContactUtils.getCommRestrictionCondition($KeywordRegistry.communicationMediumCampaign$mail()); var keywordSql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.bulkMailRecipientStatus(), "BULKMAILRECIPIENT.STATUS"); -// TODO: is prepared possible? -var sql = "case when (" + SqlUtils.translateStatementWithQuotes(commRestrictionCond) - + ") then '" + translate.text("Advertising ban") - + "' else (" + keywordSql + ") end"; -result.string(sql); +var sql = SqlBuilder.caseWhen(commRestrictionCond).thenString(translate.text("Advertising ban")).elseValue(keywordSql); +result.string(sql.toString()); diff --git a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js index 9bac722a3fa..5247fde75b3 100644 --- a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js +++ b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js @@ -1,7 +1,7 @@ +import("Sql_lib"); import("Context_lib"); import("system.result"); -// TODO: is prepared possible? -result.string("case when PERSON_ID is null then '" + ContextUtils.getContextName("Organisation") - + "' when CONTACT.ORGANISATION_ID is not null and CONTACT.PERSON_ID is not null then '" + ContextUtils.getContextName("Person") - + "' else '' end"); \ No newline at end of file +var sql = SqlBuilder.caseWhen("PERSON_ID is null").thenString(ContextUtils.getContextName("Organisation")) + .when(newWhere("CONTACT.ORGANISATION_ID is not null").and("CONTACT.PERSON_ID is not null")).thenString(ContextUtils.getContextName("Person")) +result.string(sql.toString()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js index fa780bd3a98..dd188aaf779 100644 --- a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js +++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js @@ -1,6 +1,11 @@ +import("Context_lib"); +import("Sql_lib"); import("system.vars"); import("system.result"); +//!LibFunction +var cond = newWhere(null, newSelect("ACTIVITYLINK.OBJECT_ROWID").from("ACTIVITYLINK") + .join("ACTIVITY", newWhere("ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID") + .and("ACTIVITYLINK.OBJECT_TYPE", ContextUtils.getCurrentContextId())) + .where(vars.get("$local.condition")), SqlBuilder.EXISTS()); -var from = "ACTIVITYLINK join ACTIVITY on ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID and ACTIVITYLINK.OBJECT_TYPE = 'Campaign'"; - -result.string("CAMPAIGNID in (select ACTIVITYLINK.OBJECT_ROWID from " + from + " where " + vars.get("$local.condition")+ ")"); \ No newline at end of file +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js index 43a6304543f..ea803f184c5 100644 --- a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js @@ -178,7 +178,7 @@ function _update() } } - cond = newWhereIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = '" + text.decodeMS(uid)[1] + "'"); + cond = newWhereIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", text.decodeMS(uid)[1]); columns.push("SCORETYPE"); values.push(vars.get("$field.CLASSIFICATIONTYPEIDDISPLAYVALUE")); cond.updateData(true, table, columns, null, values); @@ -195,13 +195,13 @@ function _update() .where("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", id) .cell(); - cond = newWhereIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = '" + classificationGroupId + "'"); + cond = newWhereIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", classificationGroupId); var groupTable = "CLASSIFICATIONGROUP"; var groupColumns = ["SORTING", "TITLE"]; var groupName = rowdata["CLASSIFICATIONGROUP.value"] == classificationGroupId ? rowdata["CLASSIFICATIONGROUP.displayValue"] : rowdata["CLASSIFICATIONGROUP.value"]; var groupValues = [vars.get("$field.SORTING"), groupName]; - var groupCond = newWhereIfSet("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID = '" + classificationGroupId + "'"); + var groupCond = newWhereIfSet("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", classificationGroupId); groupCond.updateData(true, groupTable, groupColumns, null, groupValues); } } \ No newline at end of file diff --git a/entity/Contract_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js b/entity/Contract_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js index c2197272407..dd188aaf779 100644 --- a/entity/Contract_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js +++ b/entity/Contract_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js @@ -1,6 +1,11 @@ +import("Context_lib"); +import("Sql_lib"); import("system.vars"); import("system.result"); +//!LibFunction +var cond = newWhere(null, newSelect("ACTIVITYLINK.OBJECT_ROWID").from("ACTIVITYLINK") + .join("ACTIVITY", newWhere("ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID") + .and("ACTIVITYLINK.OBJECT_TYPE", ContextUtils.getCurrentContextId())) + .where(vars.get("$local.condition")), SqlBuilder.EXISTS()); -var from = "ACTIVITYLINK join ACTIVITY on ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID and ACTIVITYLINK.OBJECT_TYPE = 'Contract'"; - -result.string("CONTRACTID in (select ACTIVITYLINK.OBJECT_ROWID from " + from + " where " + vars.get("$local.condition")+ ")"); \ No newline at end of file +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/LetterRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js b/entity/LetterRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js index 9bac722a3fa..b9a588dfe86 100644 --- a/entity/LetterRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js +++ b/entity/LetterRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js @@ -1,7 +1,7 @@ +import("Sql_lib"); import("Context_lib"); import("system.result"); -// TODO: is prepared possible? -result.string("case when PERSON_ID is null then '" + ContextUtils.getContextName("Organisation") - + "' when CONTACT.ORGANISATION_ID is not null and CONTACT.PERSON_ID is not null then '" + ContextUtils.getContextName("Person") - + "' else '' end"); \ No newline at end of file +var sql = SqlBuilder.caseWhen("PERSON_ID is null").thenString(ContextUtils.getContextName("Organisation")) + .when(newWhere("CONTACT.ORGANISATION_ID is not null").and("CONTACT.PERSON_ID is not null")).thenString(ContextUtils.getContextName("Person")); +result.string(sql.toString()); \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js index 9a3d0448054..dd188aaf779 100644 --- a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js +++ b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js @@ -1,6 +1,11 @@ +import("Context_lib"); +import("Sql_lib"); import("system.vars"); import("system.result"); +//!LibFunction +var cond = newWhere(null, newSelect("ACTIVITYLINK.OBJECT_ROWID").from("ACTIVITYLINK") + .join("ACTIVITY", newWhere("ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID") + .and("ACTIVITYLINK.OBJECT_TYPE", ContextUtils.getCurrentContextId())) + .where(vars.get("$local.condition")), SqlBuilder.EXISTS()); -var from = "ACTIVITYLINK join ACTIVITY on ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID and ACTIVITYLINK.OBJECT_TYPE = 'Offer'"; - -result.string("OFFERID in (select ACTIVITYLINK.OBJECT_ROWID from " + from + " where " + vars.get("$local.condition")+ ")"); \ No newline at end of file +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js index 3a5de6feaba..8ff2c784424 100644 --- a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js +++ b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js @@ -21,7 +21,7 @@ if(pid != "") var productInfoSubSql = newSelect("DESCRIPTION") .from("DESCRIPTIONTRANSLATION") .whereIfSet("DESCRIPTIONTRANSLATION.OBJECT_ROWID", "$local.value") - .and("DESCRIPTIONTRANSLATION.OBJECT_TYPE = 'Product'") + .and("DESCRIPTIONTRANSLATION.OBJECT_TYPE", "Product") .andIfSet("DESCRIPTIONTRANSLATION.LANG", "$param.Language_param") .toString(); var ProductDetails = ProductUtils.getProductDetails(pid, PriceListFilter, diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/groupQueryProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/groupQueryProcess.js index 768e6ca7501..aad0c1782f7 100644 --- a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/groupQueryProcess.js +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/groupQueryProcess.js @@ -13,7 +13,8 @@ var name = vars.get("$local.name"); var stmt = newSelect(isCount ? groupedColumns : columns) .from("ORGANISATION") .join("CONTACT", "ORGANISATIONID = ORGANISATION_ID and PERSON_ID is null") - .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID and OBJECT_TYPE = 'Organisation'") + .leftJoin("CLASSIFICATIONSTORAGE", newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID") + .and("CLASSIFICATIONSTORAGE.OBJECT_TYPE", "Organisation")) if (condition) { diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js index ccf8f498ce2..a4e9edc5b2c 100644 --- a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js @@ -11,15 +11,18 @@ var groupedColumns = vars.get("$local.groupedlist") // The coloumns, used for gr var order = vars.get("$local.order"); // The order of the result var classificationId = vars.get("$local.name"); classificationId = classificationId.slice(classificationId.lastIndexOf(".") + 1, classificationId.length); -var valuefield = "''" -var stmt = ""; -stmt = newSelect(isCount ? "1" : columns) +var sql = newSelect(isCount ? "1" : columns) .from("ORGANISATION") .join("CONTACT", "ORGANISATIONID = ORGANISATION_ID and PERSON_ID is null") - .leftJoin("CLASSIFICATION", "CLASSIFICATION.OBJECT_ROWID = CONTACT.CONTACTID and OBJECT_TYPE = 'Organisation' and CLASSIFICATION.CLASSIFICATIONTYPE_ID = '" + classificationId + "' ") - .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCOREID = CLASSIFICATION.CLASSIFICATIONSCORE_ID " + (condition != " " ? " WHERE " + condition : "")) - .groupBy(groupedColumns + (order != null && !isCount ? " ORDER BY " + order : "")) - .toString(); + .leftJoin("CLASSIFICATION", newWhere("CLASSIFICATION.OBJECT_ROWID = CONTACT.CONTACTID") + .and("CLASSIFICATION.OBJECT_TYPE", "Organisation") + .and("CLASSIFICATION.CLASSIFICATIONTYPE_ID", classificationId)) + .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCOREID = CLASSIFICATION.CLASSIFICATIONSCORE_ID") + .whereIfSet(condition.trim()) + .groupBy(groupedColumns); -result.string(stmt); \ No newline at end of file +if (order != null && !isCount) + sql.orderBy(order); + +result.string(sql.toString()); \ No newline at end of file diff --git a/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js b/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js index 0a21aef128b..293144a2513 100644 --- a/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js @@ -74,7 +74,7 @@ for each (var entry in rolesOrEntities) { // entry contains either a role or an .select("ASYS_PERMISSIONSETID") .from("ASYS_PERMISSIONSET") .where("ASYS_PERMISSIONSET.ASYS_PERMISSIONSET_ID", entityPermSetId) - .and("ACCESSTYPE = 'R'") + .and("ASYS_PERMISSIONSET.ACCESSTYPE", "R") .arrayColumn(); currOverview = [entityPermSetId, entry, "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE"]; diff --git a/entity/Product_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js b/entity/Product_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js index b8141bc3b76..dd188aaf779 100644 --- a/entity/Product_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js +++ b/entity/Product_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js @@ -1,6 +1,11 @@ +import("Context_lib"); +import("Sql_lib"); import("system.vars"); import("system.result"); +//!LibFunction +var cond = newWhere(null, newSelect("ACTIVITYLINK.OBJECT_ROWID").from("ACTIVITYLINK") + .join("ACTIVITY", newWhere("ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID") + .and("ACTIVITYLINK.OBJECT_TYPE", ContextUtils.getCurrentContextId())) + .where(vars.get("$local.condition")), SqlBuilder.EXISTS()); -var from = "ACTIVITYLINK join ACTIVITY on ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID and ACTIVITYLINK.OBJECT_TYPE = 'Product'"; - -result.string("PRODUCTID in (select ACTIVITYLINK.OBJECT_ROWID from " + from + " where " + vars.get("$local.condition")+ ")"); \ No newline at end of file +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js index 95781d32513..2f3dad2864f 100644 --- a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js @@ -37,7 +37,13 @@ if (filter != null) })).length > 0 })[0]; phasenFilter.operator = "OR"; - let pre = newSelect("PRE.KEYID").from("AB_KEYWORD_ENTRY").join("AB_KEYWORD_ENTRY", "AB_KEYWORD_ENTRY.SORTING -1 = PRE.SORTING", "PRE").where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase()).and("PRE.CONTAINER = '" + $KeywordRegistry.salesprojectPhase() + "'").and("AB_KEYWORD_ENTRY.KEYID", phasenFilter.childs[0].value).cell() + let pre = newSelect("PRE.KEYID") + .from("AB_KEYWORD_ENTRY") + .join("AB_KEYWORD_ENTRY", "AB_KEYWORD_ENTRY.SORTING -1 = PRE.SORTING", "PRE") + .where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase()) + .and(["AB_KEYWORD_ENTRY", "CONTAINER", "PRE"], $KeywordRegistry.salesprojectPhase()) + .and("AB_KEYWORD_ENTRY.KEYID", phasenFilter.childs[0].value) + .cell() if (pre != "") { let temp = JSON.parse(JSON.stringify(phasenFilter.childs[0])); temp.value = temp.key = pre; diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js index 524e35692ad..cf3462e69dd 100644 --- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js @@ -10,13 +10,17 @@ var groupedColumns = vars.get("$local.groupedlist") // The coloumns, used for gr var order = vars.get("$local.order"); // The order of the result var classificationId = vars.get("$local.name"); classificationId = classificationId.slice(classificationId.lastIndexOf(".") + 1, classificationId.length); -var valuefield = "''" -var stmt = ""; -stmt = newSelect(isCount ? "1" : columns) - .from("SALESPROJECT") - .leftJoin("CLASSIFICATION", "CLASSIFICATION.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID and CLASSIFICATION.OBJECT_TYPE = 'Salesproject' and CLASSIFICATION.CLASSIFICATIONTYPE_ID = '" + classificationId + "' ") - .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID = CLASSIFICATION.CLASSIFICATIONSCORE_ID" + (condition != " " ? " WHERE " + condition : "")) - .groupBy(groupedColumns + (order != null && !isCount ? " ORDER BY " + order : "")) - .toString(); -result.string(stmt); \ No newline at end of file +var sql = newSelect(isCount ? "1" : columns) + .from("SALESPROJECT") + .leftJoin("CLASSIFICATION", newWhere("CLASSIFICATION.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID") + .and("CLASSIFICATION.OBJECT_TYPE", "Salesproject") + .and("CLASSIFICATION.CLASSIFICATIONTYPE_ID", classificationId)) + .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID = CLASSIFICATION.CLASSIFICATIONSCORE_ID") + .whereIfSet(condition.trim()) + .groupBy(groupedColumns); + +if (order != null && !isCount) + sql.orderBy(order); + +result.string(sql.toString()); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js index 3a8b1fd9f84..dd188aaf779 100644 --- a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js @@ -1,6 +1,11 @@ +import("Context_lib"); +import("Sql_lib"); import("system.vars"); import("system.result"); +//!LibFunction +var cond = newWhere(null, newSelect("ACTIVITYLINK.OBJECT_ROWID").from("ACTIVITYLINK") + .join("ACTIVITY", newWhere("ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID") + .and("ACTIVITYLINK.OBJECT_TYPE", ContextUtils.getCurrentContextId())) + .where(vars.get("$local.condition")), SqlBuilder.EXISTS()); -var from = "ACTIVITYLINK join ACTIVITY on ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID and ACTIVITYLINK.OBJECT_TYPE = 'Salesproject'"; - -result.string("SALESPROJECTID in (select ACTIVITYLINK.OBJECT_ROWID from " + from + " where " + vars.get("$local.condition")+ ")"); \ No newline at end of file +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/VisitPlanEntry_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitPlanEntry_entity/recordcontainers/jdito/contentProcess.js index ce8bb62314f..ae8d3918edd 100644 --- a/entity/VisitPlanEntry_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/VisitPlanEntry_entity/recordcontainers/jdito/contentProcess.js @@ -46,19 +46,19 @@ if(entryData.length > 0) { for(var i = 0; i < entryData.length; i++) { - var entryDateRaw, visitPlanEntryId, beginn_time, end_time, organisationContact_id, contact_id, status, visitplanemployeeweek_id, appointmentid; - [entryDateRaw, visitPlanEntryId, beginn_time, end_time, organisationContact_id, contact_id, status, visitplanemployeeweek_id, appointmentid] = entryData[i] + var entryDateRaw, visitPlanEntryId, beginTime, endTime, organisationContactId, contactId, status, visitplanEmployeeWeekId, appointmentid; + [entryDateRaw, visitPlanEntryId, beginTime, endTime, organisationContactId, contactId, status, visitplanEmployeeWeekId, appointmentid] = entryData[i] - var contactname = db.cell(PersUtils.getResolvingDisplaySubSql("'" + contact_id + "'")); - var orgname = OrganisationUtils.getNameByContactId(organisationContact_id); + var contactname = ContactUtils.getTitleByContactId(contactId); + var orgname = OrganisationUtils.getNameByContactId(organisationContactId); var parentName = translate.text(datetime.toDate(entryDateRaw, "EEEE")); entryDate = datetime.toDate(entryDateRaw, "dd.MM.yyyy"); var statusDisplay = KeywordUtils.getViewValue($KeywordRegistry.visitPlanEntryStatus(), status) var alias = SqlUtils.getSystemAlias(); - items.push([visitPlanEntryId, false, parentName + "#" + entryDate, "", beginn_time - , end_time, organisationContact_id, orgname, contact_id, contactname, entryDateRaw, status, visitplanemployeeweek_id, appointmentid, statusDisplay]); + items.push([visitPlanEntryId, false, parentName + "#" + entryDate, "", beginTime + , endTime, organisationContactId, orgname, contactId, contactname, entryDateRaw, status, visitplanEmployeeWeekId, appointmentid, statusDisplay]); if(!vars.get("$local.idvalues")) { diff --git a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js index 7effd511c0a..42fecc4e3d1 100644 --- a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js @@ -271,7 +271,7 @@ function _getPrioByDueDateSubSql (pDueDateField, pPriorityField) { var currentDate = datetime.date(); var sqlMasker = new SqlMaskingUtils(); - + //!SqlBuilder var subSql = "case when " + pDueDateField + " < ? then '" + $KeywordRegistry.visitRecommendationPriority$critical() + "' when " + pDueDateField + " < ? then '" + $KeywordRegistry.visitRecommendationPriority$veryHigh() + "' when " + pDueDateField + " < ? then '" + $KeywordRegistry.visitRecommendationPriority$high() diff --git a/process/Contact_lib/process.js b/process/Contact_lib/process.js index 627ec11b149..1d8216d36f5 100644 --- a/process/Contact_lib/process.js +++ b/process/Contact_lib/process.js @@ -528,7 +528,7 @@ ContactUtils.getActiveCommRestrictionsSubselect = function() .and(newWhere() .or("COMMRESTRICTION.CONTACT_ID = CONTACT.CONTACTID") .or("COMMRESTRICTION.CONTACT_ID", orgContactSubselect)); - + //!SqlBuilder parts.push("case when exists(" + subquery.toString() + ") then '" + pMedium[1] + "' else '' end"); }) diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index 31d60828432..f0e62195ad8 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -497,7 +497,7 @@ ContextUtils.getSelectMap = function() return { "Organisation": ContextSelector.create("ORGANISATION", "CONTACT.CONTACTID", "ORGANISATION.NAME") .setJoinExpression("join CONTACT on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null") - .setCondition(newWhere("ORGANISATION.ORGANISATIONID != '0'")) + .setCondition(newWhere("ORGANISATION.ORGANISATIONID", "0", SqlBuilder.NOT_EQUAL())) .setSubContexts({ "Person": [newSelect("CONTACTID").from("CONTACT").where("PERSON_ID is not null"), "CONTACT.ORGANISATION_ID", ["Offer", "Order", "Contract", "SupportTicket"]] }) @@ -608,7 +608,7 @@ ContextUtils.getSelectMap = function() ContextUtils.getNameSubselectSql = function(pContextIdDbField, pRowIdDbField) { // TODO: prepared? - + //!SqlBuilder var select = "(case " + pContextIdDbField + " "; var selectMap = ContextUtils.getSelectMap () diff --git a/process/Leadimport_lib/process.js b/process/Leadimport_lib/process.js index ea0f5c14c0b..de9d13b2c7b 100644 --- a/process/Leadimport_lib/process.js +++ b/process/Leadimport_lib/process.js @@ -794,7 +794,7 @@ LeadImportUtils.getLeadAttr = function(pImportDefID) .from("AB_ATTRIBUTERELATION") .join("AB_ATTRIBUTEUSAGE", "AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID") .where("AB_ATTRIBUTERELATION.OBJECT_ROWID", pImportDefID) - .and("AB_ATTRIBUTERELATION.OBJECT_TYPE = 'Leadimport'") + .and("AB_ATTRIBUTERELATION.OBJECT_TYPE", "Leadimport") .table() }; } diff --git a/process/ObjectRelation_lib/process.js b/process/ObjectRelation_lib/process.js index 93063469bb2..c99e2322413 100644 --- a/process/ObjectRelation_lib/process.js +++ b/process/ObjectRelation_lib/process.js @@ -37,6 +37,7 @@ ObjectRelationUtils.getPossibleRelationTypes = function(pObjectTypes, pFullInfo, // only id and title: if (pFullInfo) { + //!SqlBuilder fields = fields.concat([ "main.RELATION_TYPE", "case when type2.AB_OBJECTRELATIONTYPEID is null then 'same' \n\ diff --git a/process/Offer_lib/process.js b/process/Offer_lib/process.js index 7c9504fa26d..f5a8cd0138d 100644 --- a/process/Offer_lib/process.js +++ b/process/Offer_lib/process.js @@ -502,7 +502,7 @@ OfferItemUtils.prototype.insertPartsList = function(pProductId, pAssignedTo, pCu "( " + newSelect("DESCRIPTION") .from("DESCRIPTIONTRANSLATION") .where("DESCRIPTIONTRANSLATION.OBJECT_ROWID = PRODUCT.PRODUCTID") - .and("DESCRIPTIONTRANSLATION.OBJECT_TYPE = 'Product'") + .and("DESCRIPTIONTRANSLATION.OBJECT_TYPE", "Product") .and("DESCRIPTIONTRANSLATION.LANG", pLanguage) .toString() + ")"]]]]); diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index 35b87999459..49bcb6bfc96 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -3167,7 +3167,7 @@ SqlBuilder._CaseStatement.prototype.toString = function (pAlias) return db.translateStatement(this.build(), pAlias || db.getCurrentAlias()); } -SqlBuilder._CaseStatement.prototype.build = function () +SqlBuilder._CaseStatement.prototype.build = function (pParameters) { var caseStatement = ["case"]; var preparedValues = []; diff --git a/process/Turnover_lib/process.js b/process/Turnover_lib/process.js index 14080be4ee9..e8f96a61314 100644 --- a/process/Turnover_lib/process.js +++ b/process/Turnover_lib/process.js @@ -34,7 +34,7 @@ TurnoverUtil.getTurnoverData = function (pMaxYear, pYearCount, pSalesprojectId) return newSelect("'" + turnoverCategory + "', year(SALESORDERDATE) yearNum, month(SALESORDERDATE) monthNum, SALESORDERITEM.DISCOUNT discount, SALESORDERITEM.VAT vat, SALESORDERITEM.PRICE price, sum(SALESORDERITEM.QUANTITY) quantity, SALESORDERITEM.GROUPCODEID prodGroup, (" + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "SALESORDERITEM.GROUPCODEID") + ") prodGroupName") .from("SALESORDER") .join("SALESORDERITEM", "SALESORDERITEM.SALESORDER_ID = SALESORDER.SALESORDERID") - .where("SALESORDER.ORDERTYPE = 'ORDTYPEINVO'") + .where("SALESORDER.ORDERTYPE", "ORDTYPEINVO") .and("SALESORDER.ORDERSTATUS = 1") .and("SALESORDER.CANCELLATION <> 1") .and("SALESORDERITEM.OPTIONAL <> 1") diff --git a/process/Workflow_lib/process.js b/process/Workflow_lib/process.js index d8705a1e95f..38627a87e22 100644 --- a/process/Workflow_lib/process.js +++ b/process/Workflow_lib/process.js @@ -46,15 +46,18 @@ WorkflowUtils.openNewInstance = function (pVariables, pTargetIds, pTargetContext { if ((!pTargetIds || pTargetIds.length === 0) && pSelectionFilter) pTargetIds = []; + else if (!pTargetIds) + pTargetIds = [WorkflowVariables.TARGET_ID.getDefaultValue()]; if (!pVariables) pVariables = {}; Object.assign(pVariables, WorkflowVariables.getTargetVariables(pTargetIds, pTargetContext)); neon.openContext("WorkflowLauncher", "WorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { - "ProcessVariables_param" : JSON.stringify(pVariables), - "TargetContext_param" : pVariables[WorkflowVariables.TARGET_CONTEXT()], - "TargetFilter_param" : pSelectionFilter ? JSON.stringify(pSelectionFilter) : "" + "ProcessVariables_param": JSON.stringify(pVariables), + "TargetContext_param": pVariables[WorkflowVariables.TARGET_CONTEXT()], + "TargetFilter_param": pSelectionFilter ? JSON.stringify(pSelectionFilter) : "", + "Targets_param": JSON.stringify(pTargetIds) }); } -- GitLab From 14f9afba31f607fe32565b57117250b4b82f4496 Mon Sep 17 00:00:00 2001 From: Tom Lutzenberger <t.lutzenberger@adito.de> Date: Fri, 30 Oct 2020 08:17:53 +0000 Subject: [PATCH 045/184] #1065112 unit test --- .../KeywordAttribute_test.aod | 12 + process/KeywordAttribute_test/process.js | 144 ++ process/Keyword_test/Keyword_test.aod | 12 + process/Keyword_test/process.js | 143 ++ process/SqlBuilder_test/SqlBuilder_test.aod | 12 + process/SqlBuilder_test/process.js | 1266 +++++++++++++++ process/SqlLib_tests/process.js | 1015 ------------ .../SqlMaskingUtils_test.aod | 12 + process/SqlMaskingUtils_test/process.js | 158 ++ process/Sql_lib/documentation.adoc | 4 +- .../Terminal_lib.aod} | 6 +- process/Terminal_lib/process.js | 342 ++++ process/UnitTest_lib/UnitTest_lib.aod | 1 + process/UnitTest_lib/process.js | 1374 ++++++++++++++--- process/UnitTest_test/UnitTest_test.aod | 12 + process/UnitTest_test/process.js | 1141 ++++++++++++++ process/Util_lib/process.js | 35 +- process/_all_test/_all_test.aod | 12 + process/_all_test/process.js | 23 + 19 files changed, 4531 insertions(+), 1193 deletions(-) create mode 100644 process/KeywordAttribute_test/KeywordAttribute_test.aod create mode 100644 process/KeywordAttribute_test/process.js create mode 100644 process/Keyword_test/Keyword_test.aod create mode 100644 process/Keyword_test/process.js create mode 100644 process/SqlBuilder_test/SqlBuilder_test.aod create mode 100644 process/SqlBuilder_test/process.js delete mode 100644 process/SqlLib_tests/process.js create mode 100644 process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod create mode 100644 process/SqlMaskingUtils_test/process.js rename process/{SqlLib_tests/SqlLib_tests.aod => Terminal_lib/Terminal_lib.aod} (67%) create mode 100644 process/Terminal_lib/process.js create mode 100644 process/UnitTest_test/UnitTest_test.aod create mode 100644 process/UnitTest_test/process.js create mode 100644 process/_all_test/_all_test.aod create mode 100644 process/_all_test/process.js diff --git a/process/KeywordAttribute_test/KeywordAttribute_test.aod b/process/KeywordAttribute_test/KeywordAttribute_test.aod new file mode 100644 index 00000000000..5956980e85a --- /dev/null +++ b/process/KeywordAttribute_test/KeywordAttribute_test.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>KeywordAttribute_test</name> + <title>[TEST] KeywordAttribute_lib</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/KeywordAttribute_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/KeywordAttribute_test/process.js b/process/KeywordAttribute_test/process.js new file mode 100644 index 00000000000..888e3a79bc3 --- /dev/null +++ b/process/KeywordAttribute_test/process.js @@ -0,0 +1,144 @@ +import("system.result"); +import("system.translate"); +import("system.vars"); +import("Keyword_lib"); +import("UnitTest_lib"); +import("Sql_lib"); + + +var constructor = new TestSuite("KeywordAttribute.constructor", [ + new Test("should throw error if no data is found and no default value is defined", + function(pTester) { + var exception = new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", ["contacts", "AddressType"])); + pTester.expectThat(function() { + new KeywordAttribute("AddressType", "contacts"); + }).throwsException(exception).assert(); + } + ), + + new Test("should not throw error if no data is found but default value is defined", + function(pTester) { + pTester.expectThat(function() { + new KeywordAttribute("AddressType", "contact", "testDefault"); + }).not().throwsException().assert(); + } + ), +]); + + +var getValue = new TestSuite("KeywordAttribute.getValue", [ + new Test("should throw error if attribute does not exist in container and no default value is defined", + function(pTester) { + var exception = new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", ["asdf", "AddressType"])); + + pTester.expectThat(function() { + var ka = new KeywordAttribute("AddressType", "asdf"); + ka.getValue("abc"); + }).throwsException(exception).assert(); + } + ), + + new Test("should throw error if attribute is not assigned to keyword and no default value is defined", + function(pTester) { + var exception = new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword \"%1\" from container \"%2\"", ["contact", "abc", "AddressType"])); + + pTester.expectThat(function() { + var ka = new KeywordAttribute("AddressType", "contact"); + ka.getValue("abc"); + }).throwsException(exception).assert(); + } + ), + + new Test("should return default value if defined but attribute does not exist in container", + function(pTester) { + var ka = new KeywordAttribute("AddressType", "asdf", "testDefault"); + var actualValue = ka.getValue("HOMEADDR"); + + pTester.expectThat(actualValue).equals("testDefault").assert(); + } + ), + + new Test("should return default value if defined and attribute exists in container but is not assigned to keyword", + function(pTester) { + var ka = new KeywordAttribute("AddressType", "contact", "testDefault"); + var actualValue = ka.getValue("abc"); + + pTester.expectThat(actualValue).equals("testDefault").assert(); + } + ), + + new Test("should return keywords boolean value (actually a number)", + function(pTester) { + var ka = new KeywordAttribute("AddressType", "organisation"); + var actualValue = ka.getValue("HOMEADDR"); + + pTester.expectThat(actualValue).isNumeric().assert(); + pTester.expectThat(actualValue).equals("0").assert(); + } + ), + + new Test("should return keywords number value (actually a string)", + function(pTester) { + var ka = new KeywordAttribute("PaymentTerm", "dayNumber"); + var actualValue = ka.getValue("PAYTERM30"); + + pTester.expectThat(actualValue).isNumeric().assert(); + pTester.expectThat(actualValue).isString().assert(); + pTester.expectThat(actualValue).equals("30.00").assert(); + } + ), + + new Test("should return keywords char value (string)", + function(pTester) { + var ka = new KeywordAttribute("TaskStatus", "icon"); + var actualValue = ka.getValue("ASSIGNED"); + + pTester.expectThat(actualValue).isString().assert(); + pTester.expectThat(actualValue).equals("NEON:STATUS_ASSIGNED").assert(); + } + ), + + new Test("should return keywords long char value (string)", + function(pTester) { + var ka = new KeywordAttribute("TicketType", "attributes"); + var actualValue = ka.getValue("SUPPORTTICKET"); + + pTester.expectThat(actualValue).isString().assert(); + pTester.expectThat(actualValue).equals('["ff8b1caf-cf30-4edb-b5ca-a9a219ba8399"]').assert(); + } + ), +]); + + +var getSqlBuilderSelect = new TestSuite("KeywordAttribute.getSqlBuilderSelect", [ + new Test("should return a SqlBuilder instance", + function(pTester) { + var ka = new KeywordAttribute("MemberRole", "Intern"); + /** @type {SqlBuilder} */ + var actualValue = ka.getSqlBuilderSelect(); + + var expectQueryResult = [ + "039fd6ae-b4ad-431e-86bf-59ed2f4df0a9", + "8cb1b843-713a-4193-aa50-9f5ca06820f8", + "9c421b0b-8529-4e07-9463-28d59fd027b6", + "b72294cd-3a46-4f71-ab93-72824f63f7f4", + "f78f229f-f809-4bd2-aca8-24e2f82fa220", + ]; + var actualQueryResult = actualValue.orderBy("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID").arrayColumn(); + + pTester.expectThat(actualValue).isInstanceOf("SqlBuilder").assert(); + pTester.expectThat(actualQueryResult).equals(expectQueryResult).assert(); + } + ), +]); + + +var tester = new Tester("Test KeywordAttribute_lib"); +tester.initCoverage(KeywordAttribute); +tester.test(constructor); +tester.test(getValue); +tester.test(getSqlBuilderSelect); + +tester.summary(); + +result.object(tester.getResults()); diff --git a/process/Keyword_test/Keyword_test.aod b/process/Keyword_test/Keyword_test.aod new file mode 100644 index 00000000000..e654f56663b --- /dev/null +++ b/process/Keyword_test/Keyword_test.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>Keyword_test</name> + <title>[TEST] Keyword_lib</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/Keyword_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/Keyword_test/process.js b/process/Keyword_test/process.js new file mode 100644 index 00000000000..d1b1d910e9d --- /dev/null +++ b/process/Keyword_test/process.js @@ -0,0 +1,143 @@ +import("system.result"); +import("system.translate"); +import("system.vars"); +import("Keyword_lib"); +import("UnitTest_lib"); + +//this test will not work currently +//TODO: renable and fix the tests + +//var getContainerNames = new TestSuite("KeywordUtils.getContainerNames", [ +// new Test("should return an alphabetically ascending ordered list of all keyword containers", +// function(pTester) { +// var actualValue = KeywordUtils.getContainerNames(); +// +// pTester.expectThat(actualValue).isArray().assert(); +// pTester.expectThat(actualValue).hasMinLength(1).assert(); +// pTester.expectThat(actualValue).elementAt(0).equals("ActivityCategory").assert(); +// pTester.expectThat(actualValue).elementAt(-1).equals("YesNo").assert(); +// } +// ) +//]); +// +// +//var getCategoryNameById = new TestSuite("KeywordUtils.getCategoryNameById", [ +// new Test("should return existing keyword category name for correct uuid", +// function(pTester) { +// var actualValue = KeywordUtils.getCategoryNameById("a55654b1-6a19-4d0c-b08d-cfbc12b5f7b0"); +// +// pTester.expectThat(actualValue).equals("MemberRole").assert(); +// } +// ), +// +// new Test("should return non-existing keyword category name for wrong uuid", +// function(pTester) { +// var actualValue = KeywordUtils.getCategoryNameById("a55654b1-6a19-4d0c-b08d-cfbc12b5f7b1"); +// +// pTester.expectThat(actualValue).equals("<unknown>").assert(); +// } +// ), +// +// new Test("should return non-existing keyword category name for missing uuid", +// function(pTester) { +// var actualValue = KeywordUtils.getCategoryNameById(); +// +// pTester.expectThat(actualValue).equals("<unknown>").assert(); +// } +// ), +//]); +// +// +//var getCategoryIdByName = new TestSuite("KeywordUtils.getCategoryIdByName", [ +// new Test("should return existing keyword uuid for correct category name", +// function(pTester) { +// var actualValue = KeywordUtils.getCategoryIdByName("MemberRole"); +// +// pTester.expectThat(actualValue).equals("a55654b1-6a19-4d0c-b08d-cfbc12b5f7b0").assert(); +// } +// ), +// +// new Test("should throw exception for wrong keyword category name", +// function(pTester) { +// var exception = new Error(translate.withArguments("no keyword category \"%0\" found", ["AddressTypes"])); +// pTester.expectThat(function() { +// KeywordUtils.getCategoryIdByName("AddressTypes"); +// }).throwsException(exception).assert(); +// } +// ), +// +// new Test("should throw exception for missing keyword category name", +// function(pTester) { +// var exception = new Error(translate.withArguments("no keyword category \"%0\" found", [""])); +// pTester.expectThat(function() { +// KeywordUtils.getCategoryIdByName(); +// }).throwsException(exception).assert(); +// } +// ), +//]); +// +// +//var getEntryNamesAndIdsByContainer = new TestSuite("KeywordUtils.getEntryNamesAndIdsByContainer", [ +// new Test("should return an array of all keywords and their ID's for given container", +// function(pTester) { +// var actualValue = KeywordUtils.getEntryNamesAndIdsByContainer("ActivityDirection"); +// +// pTester.expectThat(actualValue).isArray().assert(); +// pTester.expectThat(actualValue).hasMinLength(1, {name: "array"}).assert(); +// pTester.expectThat(actualValue).elementAt(0).isArray().assert(); +// pTester.expectThat(actualValue).elementAt(0).hasLength(2).assert(); +// } +// ), +// +// new Test("should return an empty array for non-existent container", +// function(pTester) { +// var actualValue = KeywordUtils.getEntryNamesAndIdsByContainer("Asdf"); +// +// pTester.expectThat(actualValue).isArray().assert(); +// pTester.expectThat(actualValue).hasLength(0, {name: "array"}).assert(); +// } +// ), +//]); +// +// +//var exists = new TestSuite("KeywordUtils.exists", [ +// new Test("should return a boolean indicating that a known keyword in a known container exists", +// function(pTester) { +// var actualValue = KeywordUtils.exists("VISIT", "ActivityCategory"); +// +// pTester.expectThat(actualValue).isBoolean().assert(); +// pTester.expectThat(actualValue).equals(true, "known keyword exists in known container").assert(); +// } +// ), +// +// new Test("should return a boolean indicating that an unknown keyword in a known container does not exist", +// function(pTester) { +// var actualValue = KeywordUtils.exists("ASDF", "ActivityCategory"); +// +// pTester.expectThat(actualValue).isBoolean().assert(); +// pTester.expectThat(actualValue).equals(false, "unknown keyword does not exist in known container").assert(); +// } +// ), +// +// new Test("should return a boolean indicating that a known keyword in an unknown container does not exist", +// function(pTester) { +// var actualValue = KeywordUtils.exists("VISIT", "Asdf"); +// +// pTester.expectThat(actualValue).isBoolean().assert(); +// pTester.expectThat(actualValue).equals(false, "known keyword does not exist in unknown container").assert(); +// } +// ), +//]); +// +// +//var tester = new Tester("Test Keyword_lib"); +//tester.initCoverage(KeywordUtils); +//tester.test(getContainerNames); +//tester.test(getCategoryNameById); +//tester.test(getCategoryIdByName); +//tester.test(getEntryNamesAndIdsByContainer); +//tester.test(exists); +// +//tester.summary(); +// +//result.object(tester.getResults()); \ No newline at end of file diff --git a/process/SqlBuilder_test/SqlBuilder_test.aod b/process/SqlBuilder_test/SqlBuilder_test.aod new file mode 100644 index 00000000000..39922829116 --- /dev/null +++ b/process/SqlBuilder_test/SqlBuilder_test.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>SqlBuilder_test</name> + <title>[TEST] Sql_lib - SqlBuilder</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/SqlBuilder_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/SqlBuilder_test/process.js b/process/SqlBuilder_test/process.js new file mode 100644 index 00000000000..3ec9ec86ddb --- /dev/null +++ b/process/SqlBuilder_test/process.js @@ -0,0 +1,1266 @@ +import("system.db"); +import("system.result"); +import("system.vars"); +import("system.translate"); +import("system.logging"); +import("system.SQLTYPES"); +import("Sql_lib"); +import("UnitTest_lib"); + +//SqlBuilder-tests: +var newSelectTests = new TestSuite("SqlLib.newSelect", [ + new Test("newSelect with just a string should just use it as select", + function(pTester) + { + var actualValue = newSelect("MySuper, Field, String") + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select MySuper, Field, String").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("newSelect with just an array of strings should just use them concatenated as select", + function(pTester) + { + var actualValue = newSelect(["MySuper", "Field", "String"]) + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select MySuper, Field, String").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("newSelect with just an SqlBuilder should use it as subselect", + function(pTester) + { + var actualValue = newSelect(new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz")) + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("newSelect an array of Strings and SqlBuilders should add them all", + function(pTester) + { + var actualValue = newSelect(["MySuper", "Field", "String", new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz")]) + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select MySuper, Field, String, (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert(); + } + ), +]); + + +var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [ + new Test("and should just add simple strings as condition just as it is", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?" + .and("PERSON.LASTNAME = 'Admin'") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = 'Tim' and PERSON.LASTNAME = 'Admin'").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("and should add a condition if field and value are passed", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and should add a condition if value is an empty string", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "") + .and("PERSON.LASTNAME", "") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and should add a condition if field and value as jdito-var are passed", + function(pTester) + { + vars.set("$global.TestUnitValueName", "Tim"); + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "$global.TestUnitValueName") + + pTester.expectThat(actualValue.toString()).equals("( PERSON.FIRSTNAME = 'Tim' ) ").assert(); + } + ), + + new Test("$ should be escaped by a second $ and the string should therefore just be used as string and not as jdito variable", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "$$mySuperString") + + pTester.expectThat(actualValue.toString()).equals("( PERSON.FIRSTNAME = '$mySuperString' ) ").assert(); + } + ), + + new Test("and should add a condition if value is a jdito-var containing an empty string", + function(pTester) + { + vars.set("$global.TestingVarEmptyString", ""); + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "$global.TestingVarEmptyString") + .and("PERSON.LASTNAME", "$global.TestingVarEmptyString") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and should use the given condition pattern", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim", "# <> ?") + .and("PERSON.LASTNAME", "Admin") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME <> ? and PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and should use the given SQLTYPE if provided", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", 6, null, SQLTYPES.INTEGER) + .and("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER) + .and("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and PERSON.LASTNAME <> ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(3).assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(0).elementAt(1).equals(SQLTYPES.INTEGER).assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(1).elementAt(1).equals(SQLTYPES.INTEGER).assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(2).elementAt(1).equals(SQLTYPES.INTEGER).assert(); + } + ), + + new Test("and only with a prepared statement-array should just use it as it is", + function(pTester) + { + var actualValue = new SqlBuilder() + .where([ + "PERSON.FIRSTNAME = ?", [["Peter", 12]] + ]) + .and([ + "exists (select * FROM CONTACT where PERSON_ID = PERSONID)", [] + ]) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? ) and ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("and only with a SqlBulder object should just use the condition from it", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(new SqlBuilder() + .select("TEST") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and with a builder as value and condition (field is null|undefined) should add the whole builder as subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(null, new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin"), + "exists ?") // Note: you can use SqlBuilder.EXISTS() instead of "exists ?" + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and with a builder as value and field should add the whole builder as subquery with field = (subquery)", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and with a prepared statement-array as value and field is null|undefined should add the whole statement as subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?") + .and(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) and ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and with a prepared statement-array as value and field should add the whole statement as subquery with field = (subquery)", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]]) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), +]); + + +var validOrUsageTests = new TestSuite("SqlLib.validOrUsage", [ + new Test("or should just add simple strings as condition just as it is", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?" + .or("PERSON.LASTNAME = 'Admin'") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = 'Tim' or PERSON.LASTNAME = 'Admin'").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("or should add a condition if field and value are passed", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or should use the given condition pattern", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim", "# <> ?") + .or("PERSON.LASTNAME", "Admin") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME <> ? or PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or should use the given SQLTYPE if provided", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", 6, null, SQLTYPES.INTEGER) + .or("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER) + .or("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? or PERSON.LASTNAME <> ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(3).assert(); + } + ), + + new Test("or only with a prepared statement-array should just use it as it is", + function(pTester) + { + var actualValue = new SqlBuilder() + .where([ + "PERSON.FIRSTNAME = ?", [["Peter", 12]] + ]) + .or([ + "exists (select * FROM CONTACT where PERSON_ID = PERSONID)", [] + ]) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? ) or ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("or only with a SqlBulder object should just use the condition from it", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or with a builder as value and condition (field is null|undefined) should add the whole builder as subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(null, new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin"), + "exists ?") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or with a builder as value and field should add the whole builder as subquery with field = (subquery)", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or with a prepared statement-array as value and field is null|undefined should add the whole statement as subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?") + .or(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) or ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), +]); + +var combinedAndOrTests = new TestSuite("SqlLib.combinedAndOr", [ + new Test("or combining two and", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin") + .or(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .and("PERSON.LASTNAME", "Müller")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("(PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?) or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(4).assert(); + } + ), + + new Test("and combining two or", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin")) + .and(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .or("PERSON.LASTNAME", "Müller")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(4).assert(); + } + ), + + new Test("some and/or combinations in one select", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.FIRSTNAME", "Franz") + .and("PERSON.LASTNAME", "Admin") + .and(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .or("PERSON.LASTNAME", "Müller")) + .or("PERSON.FIRSTNAME", "Franz") + .and("PERSON.FIRSTNAME", "Franz") + .or(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .and("PERSON.LASTNAME", "Müller") + .and(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .or("PERSON.LASTNAME", "Müller"))) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) or (PERSON.FIRSTNAME = ?) and PERSON.FIRSTNAME = ? or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(11).assert(); + } + ), +]); + + +var ifSetTests = new TestSuite("SqlLib.ifSet", [ + new Test("simple and if set with all types of empty values.", + function(pTester) + { + var actualValue = new SqlBuilder() + .whereIfSet("PERSON.LASTNAME", null) + .andIfSet("PERSON.LASTNAME", undefined) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert(); + } + ), + + new Test("jdito variable with null", + function(pTester) + { + vars.set("$global.TestingVarNull", null); + + var actualValue = new SqlBuilder() + .whereIfSet("PERSON.FIRSTNAME", "$global.TestingVarNull") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert(); + } + ), + + new Test("empty simple conditions", + function(pTester) + { + var actualValue = new SqlBuilder() + .whereIfSet("") + .andIfSet(["", []]) + .andIfSet(new SqlBuilder()) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert(); + } + ), + + new Test("empty subqueries", + function(pTester) + { + var actualValue = new SqlBuilder() + .whereIfSet("PERSON.FIRSTNAME", ["", []]) + .andIfSet("PERSON.LASTNAME", new SqlBuilder()) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert(); + } + ), +]); + + +function cleanWrapperTests() +{ + try { + db.runStatement("drop table SQL_LIB_TEST_TABLE"); + } catch(ex) {} + + try { + db.deleteData("PERSON", "PERSONID in ('TEST-5', 'TEST-6')") + } catch(ex) {} + +} + + +var dbWrapperTests = new TestSuite("SqlLib.dbWrapper", [ + new Test("cell should load only one value", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.PERSONID", "TEST-5") + var actualValue = builder.cell() + + pTester.expectThat(actualValue).equals("Franz").assert(); + } + ), + + new Test("cell should just return '' if no condition set but pExecuteOnlyIfConditionExists is true", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + var actualValue = builder.cell(true) + + pTester.expectThat(actualValue).equals("").assert(); + } + ), + + new Test("cell should return a value if no condition set and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON"); + + var actualValue = builder.cell(false) + + pTester.expectThat(actualValue).not().equals("").assert(); + pTester.expectThat(actualValue).not().isNull().assert(); + pTester.expectThat(actualValue).not().isUndefined().assert(); + } + ), + + new Test("array should load an array of values", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON") + .where("PERSON.PERSONID", "TEST-5"); + + var actualValue = builder.array(db.ROW); + pTester.expectThat(actualValue).elementAt(0).equals("Franz", {name: "firstname"}).assert(); + pTester.expectThat(actualValue).elementAt(1).equals("Müller", {name: "lastname"}).assert(); + } + ), + + new Test("array should return an empty array if no condition set but pExecuteOnlyIfConditionExists is true", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON") + + var actualValue = builder.array(db.ROW, true); + pTester.expectThat(actualValue).hasLength(0).assert(); + } + ), + + new Test("array should return a non-empty array if no condition set and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON") + + var actualValue = builder.array(db.ROW, false); + pTester.expectThat(actualValue).hasMinLength(1).assert(); + } + ), + + new Test("table should load an array of arrays with values", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON") + .where("PERSON.PERSONID", "TEST-5") + .or("PERSON.PERSONID", "TEST-6") + .orderBy("PERSONID asc"); + + var actualValue = builder.table(); + pTester.expectThat(actualValue).elementAt(0).elementAt(0).equals("Franz", {name: "firstname"}).assert(); + pTester.expectThat(actualValue).elementAt(0).elementAt(1).equals("Müller", {name: "lastname"}).assert(); + + pTester.expectThat(actualValue).elementAt(1).elementAt(0).equals("Marco", {name: "firstname"}).assert(); + pTester.expectThat(actualValue).elementAt(1).elementAt(1).equals("Polo", {name: "lastname"}).assert(); + } + ), + + new Test("table should return an empty array if no condition set but pExecuteOnlyIfConditionExists is true", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON"); + + var actualValue = builder.table(true); + + pTester.expectThat(actualValue).hasLength(0).assert(); + } + ), + + new Test("table should return a non-empty array if no condition set and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON"); + + var actualValue = builder.table(false); + pTester.expectThat(actualValue).hasMinLength(1).assert(); + } + ), + + new Test("delete should delete the data and use the from and condition from the builder", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); + + var actualValue = builder.deleteData(); + pTester.expectThat(actualValue).equals(1).assert(); + } + ), + + new Test("delete should delete the data from the provided table and use the condition from the builder. It ignores .from if a table is given.", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("PERSON") + .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); + + var actualValue = builder.deleteData(false, "SQL_LIB_TEST_TABLE"); + pTester.expectThat(actualValue).equals(1).assert(); + } + ), + + new Test("delete should delete ALL data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + + var actualValue = builder.deleteData(false); + pTester.expectThat(actualValue).equals(2).assert(); + } + ), + + new Test("delete should delete NO data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is true", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + + var actualValue = builder.deleteData(true); + pTester.expectThat(actualValue).equals(0).assert(); + } + ), + + new Test("update should update the data and use the from and condition from the builder", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); + + builder.updateData(false, undefined, ["FIRSTNAME"], null, ["Fritz"]); + + var actualValue = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") + + pTester.expectThat(actualValue).equals("Fritz").assert(); + } + ), + + new Test("update should update the data from the provided table and use the condition from the builder. It ignores .from if a table is given.", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("PERSON") + .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); + + builder.updateData(false, "SQL_LIB_TEST_TABLE", ["FIRSTNAME"], null, ["Fritz"]); + + var actualValue = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") + + pTester.expectThat(actualValue).equals("Fritz").assert(); + } + ), + + new Test("update should update ALL data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Franz", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + + builder.updateData(false, undefined, ["FIRSTNAME"], null, ["Fritz"]); + + var actualValue1 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") + var actualValue2 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-8'") + + pTester.expectThat(actualValue1).equals("Fritz", "TEST-7 should have Firstname Fritz").assert(); + pTester.expectThat(actualValue2).equals("Fritz", "TEST-8 should have Firstname Fritz").assert(); + } + ), + + new Test("update should update NO data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is true", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')") + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Franz", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + + builder.updateData(true, undefined, ["FIRSTNAME"], null, ["Fritz"]); + + var actualValue1 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") + var actualValue2 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-8'") + + pTester.expectThat(actualValue1).equals("Ludwig", "TEST-7 should have Firstname Ludwig").assert(); + pTester.expectThat(actualValue2).equals("Franz", "TEST-8 should have Firstname Franz").assert(); + } + ), +], function preAll() +{ + // remove data which may exist if previous test-run failed and postAll was not executed + cleanWrapperTests(); + + // add table for save testing of deletes + db.runStatement("create table SQL_LIB_TEST_TABLE (TESTID varchar(36), FIRSTNAME varchar(100), LASTNAME varchar(100))"); + + // add test persons + db.insertData("PERSON", ["PERSONID", "FIRSTNAME", "LASTNAME", "USER_NEW", "DATE_NEW"], null, ["TEST-5", "Franz", "Müller", "testuser", vars.get("$sys.date")]) + db.insertData("PERSON", ["PERSONID", "FIRSTNAME", "LASTNAME", "USER_NEW", "DATE_NEW"], null, ["TEST-6", "Marco", "Polo", "testuser", vars.get("$sys.date")]) +}, undefined, undefined, function postAll() +{ + cleanWrapperTests(); +}) + + +var mandatoryErrorTests = new TestSuite("SqlLib.mandatoryError", [ +// and + new Test("and without parameter should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or(); + }).throwsException(SqlBuilder._ERROR_NO_PARAMETER_PROVIDED()).assert(); + } + ), + + new Test("and with null as value should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", null); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("and with undefined as value should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", undefined); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("and with a jdito-var containing null should error", + function(pTester) + { + vars.set("$global.TestingVarNull", null); + + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", "$global.TestingVarNull"); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR()).assert(); + } + ), + + new Test("and with an empty sql-builder as subquery should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", new SqlBuilder()); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("and with an empty prepared statement as subquery should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", ["", []]); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + +// or + new Test("or without parameter should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or(); + }).throwsException(SqlBuilder._ERROR_NO_PARAMETER_PROVIDED()).assert(); + } + ), + + new Test("or with null as value should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", null); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("or with undefined as value should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", undefined); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("or with a jdito-var containing null should error", + function(pTester) + { + vars.set("$global.TestingVarNull", null); + + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", "$global.TestingVarNull"); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR()).assert(); + } + ), + + new Test("or with an empty sql-builder as subquery should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", new SqlBuilder()); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("or with an empty prepared statement as subquery should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", ["", []]); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), +]); + + +var inStatementTests = new TestSuite("SqlLib.inStatement", [ + new Test("simple and in", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.LASTNAME", ["Franz", "Fritz"], SqlBuilder.IN()) // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter + .or("PERSON.LASTNAME", ["Peter", "Mayer"], SqlBuilder.IN()); + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.LASTNAME in (?, ?) ) or ( PERSON.LASTNAME in (?, ?) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(4).assert(); + } + ), + + new Test("simple and not in", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.LASTNAME", ["Franz", "Fritz"], "# not in ?"); // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.LASTNAME not in (?, ?) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("in with subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", new SqlBuilder() + .select("PERSON.FIRSTNAME") + .from("PERSON") + .where("PERSON.LASTNAME", "Fritz") + , "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?" + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("in with prepared statement-array", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", ["select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ?", [["Fritz", SQLTYPES.VARCHAR]]] + , "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?" + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("andIfSet should ignore empty array", + function(pTester) + { + var actualValue = new SqlBuilder() + .whereIfSet("PERSON.LASTNAME", []); + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("and should error on an empty array", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.LASTNAME", []); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), +]); + + +var testConstantFunctions = new TestSuite("SqlLib.testConstantFunc", [ + new Test("SqlBuilder.IN()", + function(pTester) + { + var actualValue = SqlBuilder.IN(); + pTester.expectThat(actualValue).equals("# in ?").assert(); + } + ), + + new Test("SqlBuilder.NOT_IN()", + function(pTester) + { + var actualValue = SqlBuilder.NOT_IN(); + pTester.expectThat(actualValue).equals("# not in ?").assert(); + } + ), + + new Test("SqlBuilder.EXISTS()", + function(pTester) + { + var actualValue = SqlBuilder.EXISTS(); + pTester.expectThat(actualValue).equals("exists ?").assert(); + } + ), +]); + + +var selectTests = new TestSuite("SqlLib.select", [ + new Test("a sql-builder in a fields-array is translated to sql correctly", + function(pTester) + { + var countSubQuery = newSelect("count(*)") + .from("AB_ATTRIBUTEUSAGE") + .where("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", "myType") + .and("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"); + + var actualValue = new SqlBuilder() + .select(["AB_ATTRIBUTEID", "AB_ATTRIBUTEUSAGEID", countSubQuery]) + .from("AB_ATTRIBUTE") + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID, (select count(*) from AB_ATTRIBUTEUSAGE where AB_ATTRIBUTEUSAGE.OBJECT_TYPE = ? and AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID)").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("a sql-builder in from is used as subselect", + function(pTester) + { + var subQuery = newSelect("FIRSTNAME") + .from("PERSON") + .where("PERSON.LASTNAME", "Meier") + + var actualValue = new SqlBuilder() + .select("*") + .from(subQuery) + + pTester.expectThat(actualValue).elementAt("_from").elementAt("_sqlStorage").equals("from (select FIRSTNAME from PERSON where PERSON.LASTNAME = ?)").assert(); + pTester.expectThat(actualValue).elementAt("_from").elementAt("preparedValues").hasLength(1).assert(); + } + ), +]); + + +var joinTests = new TestSuite("SqlLib.join", [ + new Test("SqlBuilder as on-condition should only add the conditon of the builder", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + + var actualValue = new SqlBuilder() + .select("*") + .from("PERSON") + .join("ORGANISATION", subQuery) + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join ORGANISATION on ORGANISATION.NAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("SqlBuilder as table for join is added as subselect", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + + var actualValue = new SqlBuilder() + .select("*") + .from("PERSON") + .join(subQuery, "orgname.NAME = TABLE2.NAME", "orgname") + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join (select NAME from ORGANISATION where ORGANISATION.NAME = ?) orgname on orgname.NAME = TABLE2.NAME").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("just use a string also containing a condition as join without additional condition", + function(pTester) + { + var actualValue = new SqlBuilder() + .select("*") + .from("PERSON") + .join("TABLE1 on TABLE1.NAME = TABLE2.NAME") + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join TABLE1 on TABLE1.NAME = TABLE2.NAME").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(0).assert(); + } + ), +]); + + +var subqueryAsFieldTests = new TestSuite("SqlLib.subqueryAsField", [ + new Test("Test if a Subselect as field works if pValue is provided. This should be added as subselect.", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") + .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place + + var actualValue = new SqlBuilder().where(subQuery, "val2", "# = ?", SQLTYPES.VARCHAR) + .and("PERSON.FIRSTNAME", "val3"); + + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( ( select NAME from ORGANISATION where ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and PERSON.FIRSTNAME = ? ) = ? ) and PERSON.FIRSTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(3).assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(0).elementAt(0).equals("val1").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(1).elementAt(0).equals("val2").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(2).elementAt(0).equals("val3").assert(); + } + ), + + new Test("Test if a Subselect as field should error if no SQLTYPE is provided.", + function(pTester) + { + pTester.expectThat(function() { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") + .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place + new SqlBuilder().where(subQuery, "val2", "# = ?"); + }).throwsException(SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NO_FIELD_TYPE()).assert(); + } + ), + + new Test("Test if a Subselect as field should error if it is not a full select.", + function(pTester) + { + pTester.expectThat(function() { + var subQuery = newSelect("NAME") + .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") + .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place + + new SqlBuilder().where(subQuery, "val2", "# = ?", SQLTYPES.VARCHAR); + }).throwsException(SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NOT_COMPLETE()).assert(); + } + ), +]); + + +var conditionFormatTests = new TestSuite("SqlLib.conditionFormat", [ + new Test("pCondition should not fail if # an ? exist in correct order", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder() + .where("PERSON.FIRSTNAME", "val1", "# = ?") + .and("PERSON.FIRSTNAME", "val1", "asdf # fdsa=asdf ?fdas") + ; + }).not().throwsException().assert(); + } + ), + + new Test("pCondition should not fail if # an ? exist in correct order and there are additional, escaped # and ?", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "\\? # \\#= ?"); + }).not().throwsException().assert(); + } + ), + + new Test("pCondition should not fail if only ? exists", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "?") + }).not().throwsException().assert(); + } + ), + + new Test("pCondition should fail if more than one ? exists", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "? test ?") + }).throwsException(SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()).assert(); + } + ), + + new Test("pCondition should fail if more than one # exists", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "# test #") + }).throwsException(SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()).assert(); + } + ), + + new Test("pCondition should fail if # and ? are in wrong order", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "? = #") + }).throwsException(SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()).assert(); + } + ), +]); + + +var subqueryAliasTests = new TestSuite("SqlLib.subqueryAlias", [ + new Test("subselectAlias should be added for subquery in .select", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + .subselectAlias("testAlias") + + var actualValue = new SqlBuilder() + .select([subQuery, "FIRSTNAME"]) + .from("PERSON") + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias, FIRSTNAME").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("subselectAlias should be added for subquery in .from", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + .subselectAlias("testAlias") + + var actualValue = new SqlBuilder() + .from(subQuery) + + pTester.expectThat(actualValue).elementAt("_from").elementAt("_sqlStorage").equals("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias").assert(); + pTester.expectThat(actualValue).elementAt("_from").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("subselectAlias should be overruled by the param in in .from", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + .subselectAlias("testAlias") + + var actualValue = new SqlBuilder() + .from(subQuery, "overwriteAlias") + + pTester.expectThat(actualValue).elementAt("_from").elementAt("_sqlStorage").equals("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias").assert(); + pTester.expectThat(actualValue).elementAt("_from").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("subselectAlias should be added for subquery in .join", + function(pTester) + { + var subQuery = newSelect("NAME, ORGANISATIONID") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + .subselectAlias("testAlias") + + var actualValue = new SqlBuilder() + .from("CONTACT") + .join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID") + .join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID", "overwriteAlias") + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) testAlias on testAlias.ORGANISATIONID = ORGANISATION_ID").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(1).assert(); + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(1).elementAt("_sqlStorage").equals("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias on testAlias.ORGANISATIONID = ORGANISATION_ID").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(1).elementAt("preparedValues").hasLength(1).assert(); + } + ), +]); + + +var tester = new Tester("Test SqlBuilder"); +tester.test(newSelectTests); +tester.test(validAndUsageTests); +tester.test(validOrUsageTests); +tester.test(combinedAndOrTests); +tester.test(ifSetTests); +tester.test(dbWrapperTests); +tester.test(mandatoryErrorTests); +tester.test(inStatementTests); +tester.test(testConstantFunctions); +tester.test(selectTests); +tester.test(joinTests); +tester.test(subqueryAsFieldTests); +tester.test(conditionFormatTests); +tester.test(subqueryAliasTests); + +tester.summary(); + +result.object(tester.getResults()); \ No newline at end of file diff --git a/process/SqlLib_tests/process.js b/process/SqlLib_tests/process.js deleted file mode 100644 index 924162e2a4e..00000000000 --- a/process/SqlLib_tests/process.js +++ /dev/null @@ -1,1015 +0,0 @@ -import("system.db"); -import("system.vars"); -import("system.translate"); -import("system.logging"); -import("system.SQLTYPES"); -import("Sql_lib"); -import("UnitTest_lib"); - -var newSelectTests = new TestSuite([ - ["newSelect with just a string schould just use it as select", function(pTester) - { - var actual = newSelect("MySuper, Field, String") - - pTester.assert("select MySuper, Field, String", actual._select._sqlStorage, "prepared sql"); - pTester.assert(0, actual._select.preparedValues.length, "number of params"); - }], - - ["newSelect with just an array of strings schould just use them concatenated as select", function(pTester) - { - var actual = newSelect(["MySuper", "Field", "String"]) - - pTester.assert("select MySuper, Field, String", actual._select._sqlStorage, "prepared sql"); - pTester.assert(0, actual._select.preparedValues.length, "number of params"); - }], - - ["newSelect with just an SqlBuilder should use it as subselect", function(pTester) - { - var actual = newSelect(new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz")) - - pTester.assert("select (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)", actual._select._sqlStorage, "prepared sql"); - pTester.assert(1, actual._select.preparedValues.length, "number of params"); - }], - - ["newSelect an array of Strings and SqlBuilders should add them all", function(pTester) - { - var actual = newSelect(["MySuper", "Field", "String", new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz")]) - - pTester.assert("select MySuper, Field, String, (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)", actual._select._sqlStorage, "prepared sql"); - pTester.assert(1, actual._select.preparedValues.length, "number of params"); - }], -]); - -var validAndUsageTests = new TestSuite([ - ["and should just add simple strings as condition just as it is", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?" - .and("PERSON.LASTNAME = 'Admin'") - - pTester.assert("PERSON.FIRSTNAME = 'Tim' and PERSON.LASTNAME = 'Admin'", actual._where._sqlStorage, "prepared sql"); - pTester.assert(0, actual._where.preparedValues.length, "number of params"); - }], - - ["and should add a condition if field and value are passed", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin") - - pTester.assert("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and should add a condition if value is an empty string", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "") - .and("PERSON.LASTNAME", "") - - pTester.assert("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and should add a condition if field and value as jdito-var are passed", function(pTester) - { - vars.set("$global.TestUnitValueName", "Tim"); - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "$global.TestUnitValueName") - - pTester.assert("( PERSON.FIRSTNAME = 'Tim' ) ", actual.toString()); - }], - - ["$ should be escaped by a second $ and the string should therefore just be used as string and not as jdito variable", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "$$mySuperString") - - pTester.assert("( PERSON.FIRSTNAME = '$mySuperString' ) ", actual.toString()); - }], - - ["and should add a condition if value is a jdito-var containing an empty string", function(pTester) - { - vars.set("$global.TestingVarEmptyString", ""); - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "$global.TestingVarEmptyString") - .and("PERSON.LASTNAME", "$global.TestingVarEmptyString") - - pTester.assert("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and should use the given condition pattern", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim", "# <> ?") - .and("PERSON.LASTNAME", "Admin") - - pTester.assert("PERSON.FIRSTNAME <> ? and PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and should use the given SQLTYPE if provided", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", 6, null, SQLTYPES.INTEGER) - .and("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER) - .and("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER) - - pTester.assert("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and PERSON.LASTNAME <> ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(3, actual._where.preparedValues.length, "number of params"); - pTester.assert(SQLTYPES.INTEGER, actual._where.preparedValues[0][1], "sql type of param 1 is the provided type"); - pTester.assert(SQLTYPES.INTEGER, actual._where.preparedValues[1][1], "sql type of param 2 is the provided type"); - pTester.assert(SQLTYPES.INTEGER, actual._where.preparedValues[2][1], "sql type of param 3 is the provided type"); - }], - - ["and only with a prepared statement-array should just use it as it is", function(pTester) - { - var actual = new SqlBuilder() - .where([ - "PERSON.FIRSTNAME = ?", [["Peter", 12]] - ]) - .and([ - "exists (select * FROM CONTACT where PERSON_ID = PERSONID)", [] - ]) - - pTester.assert(" ( PERSON.FIRSTNAME = ? ) and ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }], - - ["and only with a SqlBulder object should just use the condition from it", function(pTester) - { - var actual = new SqlBuilder() - .where(new SqlBuilder() - .select("TEST") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin")) - - pTester.assert(" ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and with a builder as value and condition (field is null|undefined) should add the whole builder as subquery", function(pTester) - { - var actual = new SqlBuilder() - .where(null, new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin"), - "exists ?") // Note: you can use SqlBuilder.EXISTS() instead of "exists ?" - - pTester.assert("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and with a builder as value and field should add the whole builder as subquery with field = (subquery)", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin")) - - pTester.assert("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and with a prepared statement-array as value and field is null|undefined should add the whole statement as subquery", function(pTester) - { - var actual = new SqlBuilder() - .where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?") - .and(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement - - pTester.assert("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) and ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and with a prepared statement-array as value and field should add the whole statement as subquery with field = (subquery)", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]]) - - pTester.assert("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }] -]); - -var validOrUsageTests = new TestSuite([ - ["or should just add simple strings as condition just as it is", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?" - .or("PERSON.LASTNAME = 'Admin'") - - pTester.assert("PERSON.FIRSTNAME = 'Tim' or PERSON.LASTNAME = 'Admin'", actual._where._sqlStorage, "prepared sql"); - pTester.assert(0, actual._where.preparedValues.length, "number of params"); - }], - - ["or should add a condition if field and value are passed", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin") - - pTester.assert("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or should use the given condition pattern", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim", "# <> ?") - .or("PERSON.LASTNAME", "Admin") - - pTester.assert("PERSON.FIRSTNAME <> ? or PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or should use the given SQLTYPE if provided", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", 6, null, SQLTYPES.INTEGER) - .or("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER) - .or("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER) - - pTester.assert("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? or PERSON.LASTNAME <> ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(3, actual._where.preparedValues.length, "number of params"); - }], - - ["or only with a prepared statement-array should just use it as it is", function(pTester) - { - var actual = new SqlBuilder() - .where([ - "PERSON.FIRSTNAME = ?", [["Peter", 12]] - ]) - .or([ - "exists (select * FROM CONTACT where PERSON_ID = PERSONID)", [] - ]) - - pTester.assert(" ( PERSON.FIRSTNAME = ? ) or ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }], - - ["or only with a SqlBulder object should just use the condition from it", function(pTester) - { - var actual = new SqlBuilder() - .where(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin")) - - pTester.assert(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or with a builder as value and condition (field is null|undefined) should add the whole builder as subquery", function(pTester) - { - var actual = new SqlBuilder() - .where(null, new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin"), - "exists ?") - - pTester.assert("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or with a builder as value and field should add the whole builder as subquery with field = (subquery)", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin")) - - pTester.assert("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or with a prepared statement-array as value and field is null|undefined should add the whole statement as subquery", function(pTester) - { - var actual = new SqlBuilder() - .where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?") - .or(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement - - pTester.assert("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) or ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }] -]); - -var combinedAndOrTests = new TestSuite([ - ["or combining two and", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin") - .or(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .and("PERSON.LASTNAME", "Müller")) - - pTester.assert("(PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?) or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(4, actual._where.preparedValues.length, "number of params"); - }], - - ["and combining two or", function(pTester) - { - var actual = new SqlBuilder() - .where(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin")) - .and(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .or("PERSON.LASTNAME", "Müller")) - - pTester.assert(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(4, actual._where.preparedValues.length, "number of params"); - }], - - ["some and/or combinations in one select", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.FIRSTNAME", "Franz") - .and("PERSON.LASTNAME", "Admin") - .and(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .or("PERSON.LASTNAME", "Müller")) - .or("PERSON.FIRSTNAME", "Franz") - .and("PERSON.FIRSTNAME", "Franz") - .or(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .and("PERSON.LASTNAME", "Müller") - .and(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .or("PERSON.LASTNAME", "Müller"))) - - pTester.assert("PERSON.FIRSTNAME = ? or PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) or (PERSON.FIRSTNAME = ?) and PERSON.FIRSTNAME = ? or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(11, actual._where.preparedValues.length, "number of params"); - }] -]); - -var ifSetTests = new TestSuite([ - ["simple and if set with all types of empty values.", function(pTester) - { - var actual = new SqlBuilder() - .whereIfSet("PERSON.LASTNAME", null) - .andIfSet("PERSON.LASTNAME", undefined) - - pTester.assert("", actual._where._sqlStorage, "no sql should be added"); - pTester.assert(0, actual._where.preparedValues.length, "no params should be added"); - }], - - ["jdito variable with null", function(pTester) - { - vars.set("$global.TestingVarNull", null); - - var actual = new SqlBuilder() - .whereIfSet("PERSON.FIRSTNAME", "$global.TestingVarNull") - - pTester.assert("", actual._where._sqlStorage, "no sql should be added"); - pTester.assert(0, actual._where.preparedValues.length, "no params should be added"); - }], - - ["empty simple conditions", function(pTester) - { - var actual = new SqlBuilder() - .whereIfSet("") - .andIfSet(["", []]) - .andIfSet(new SqlBuilder()) - - pTester.assert("", actual._where._sqlStorage, "no sql should be added"); - pTester.assert(0, actual._where.preparedValues.length, "no params should be added"); - }], - - ["empty subqueries", function(pTester) - { - var actual = new SqlBuilder() - .whereIfSet("PERSON.FIRSTNAME", ["", []]) - .andIfSet("PERSON.LASTNAME", new SqlBuilder()) - - pTester.assert("", actual._where._sqlStorage, "no sql should be added"); - pTester.assert(0, actual._where.preparedValues.length, "no params should be added"); - }] -]); - -function cleanWrapperTests() -{ - try { - db.runStatement("drop table SQL_LIB_TEST_TABLE"); - } catch(ex) {} - - try { - db.deleteData("PERSON", "PERSONID in ('TEST-5', 'TEST-6')") - } catch(ex) {} - -} - -var dbWrapperTests = new TestSuite([ - ["cell should load only one value", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.PERSONID", "TEST-5") - pTester.assert("Franz", builder.cell()); - }], - - ["cell should just return '' if no condition set but pExecuteOnlyIfConditionExists is true", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - pTester.assert("", builder.cell(true)); - }], - - ["cell should return a value if no condition set and pExecuteOnlyIfConditionExists is false", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON"); - - var actual = builder.cell(false) - pTester.assert(true, actual !== "" && actual !== null && actual !== undefined); - }], - - ["array should load an array of values", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON") - .where("PERSON.PERSONID", "TEST-5"); - - var actual = builder.array(db.ROW); - pTester.assert("Franz", actual[0], "firstname should be 'Franz'"); - pTester.assert("Müller", actual[1], "lastname should be 'Müller'"); - }], - - ["array should return an empty array if no condition set but pExecuteOnlyIfConditionExists is true", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON") - - var actual = builder.array(db.ROW, true); - pTester.assert(0, actual.length); - }], - - ["array should return a non-empty array if no condition set and pExecuteOnlyIfConditionExists is false", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON") - - var actual = builder.array(db.ROW, false); - pTester.assert(true, actual.length > 0); - }], - - ["table should load an array of arrays with values", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON") - .where("PERSON.PERSONID", "TEST-5") - .or("PERSON.PERSONID", "TEST-6") - .orderBy("PERSONID asc"); - - var actual = builder.table(); - pTester.assert("Franz", actual[0][0], "firstname should be 'Franz'"); - pTester.assert("Müller", actual[0][1], "lastname should be 'Müller'"); - - pTester.assert("Marco", actual[1][0], "firstname should be 'Marco'"); - pTester.assert("Polo", actual[1][1], "lastname should be 'Polo'"); - }], - - ["table should return an empty array if no condition set but pExecuteOnlyIfConditionExists is true", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON"); - - var actual = builder.table(true); - pTester.assert(0, actual.length); - }], - - ["table should return a non-empty array if no condition set and pExecuteOnlyIfConditionExists is false", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON"); - - var actual = builder.table(false); - pTester.assert(true, actual.length > 0); - }], - - ["delete should delete the data and use the from and condition from the builder", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); - - var deletedRows = builder.deleteData(); - pTester.assert(1, deletedRows); - }], - - ["delete should delete the data from the provided table and use the condition from the builder. It ignores .from if a table is given.", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("PERSON") - .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); - - var deletedRows = builder.deleteData(false, "SQL_LIB_TEST_TABLE"); - pTester.assert(1, deletedRows); - }], - - ["delete should delete ALL data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is false", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - - var deletedRows = builder.deleteData(false); - pTester.assert(2, deletedRows); - }], - - ["delete should delete NO data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is true", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - - var deletedRows = builder.deleteData(true); - pTester.assert(0, deletedRows); - }], - - ["update should update the data and use the from and condition from the builder", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); - - builder.updateData(false, undefined, ["FIRSTNAME"], null, ["Fritz"]); - - var actual = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") - - pTester.assert("Fritz", actual); - }], - - ["update should update the data from the provided table and use the condition from the builder. It ignores .from if a table is given.", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("PERSON") - .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); - - builder.updateData(false, "SQL_LIB_TEST_TABLE", ["FIRSTNAME"], null, ["Fritz"]); - - var actual = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") - - pTester.assert("Fritz", actual); - }], - - ["update should update ALL data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is false", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Franz", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - - builder.updateData(false, undefined, ["FIRSTNAME"], null, ["Fritz"]); - - var actual1 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") - var actual2 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-8'") - - pTester.assert("Fritz", actual1, "TEST-7 should have Firstname Fritz"); - pTester.assert("Fritz", actual2, "TEST-8 should have Firstname Fritz"); - }], - - ["update should update NO data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is true", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')") - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Franz", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - - builder.updateData(true, undefined, ["FIRSTNAME"], null, ["Fritz"]); - - var actual1 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") - var actual2 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-8'") - - pTester.assert("Ludwig", actual1, "TEST-7 should have Firstname Ludwig"); - pTester.assert("Franz", actual2, "TEST-8 should have Firstname Franz"); - }] -], function preAll() -{ - // remove data which may exist if previous test-run failed and postAll was not executed - cleanWrapperTests() - - // add table for save testing of deletes - db.runStatement("create table SQL_LIB_TEST_TABLE (TESTID varchar(36), FIRSTNAME varchar(100), LASTNAME varchar(100))"); - - // add test persons - db.insertData("PERSON", ["PERSONID", "FIRSTNAME", "LASTNAME", "USER_NEW", "DATE_NEW"], null, ["TEST-5", "Franz", "Müller", "testuser", vars.get("$sys.date")]) - db.insertData("PERSON", ["PERSONID", "FIRSTNAME", "LASTNAME", "USER_NEW", "DATE_NEW"], null, ["TEST-6", "Marco", "Polo", "testuser", vars.get("$sys.date")]) -}, undefined, undefined, function postAll() -{ - cleanWrapperTests() -}) - -var mandatoryErrorTests = new TestSuite([ -// and - ["and without parameter should error", function(pTester) - { - new SqlBuilder().where().or(); - }, SqlBuilder._ERROR_NO_PARAMETER_PROVIDED()], - - ["and with null as value should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", null); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["and with undefined as value should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", undefined); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["and with a jdito-var containing null should error", function(pTester) - { - vars.set("$global.TestingVarNull", null); - - new SqlBuilder().where().or("PERSON.FIRSTNAME", "$global.TestingVarNull"); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR()], - - ["and with an empty sql-builder as subquery should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", new SqlBuilder()); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["and with an empty prepared statement as subquery should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", ["", []]); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - -// or - ["or without parameter should error", function(pTester) - { - new SqlBuilder().where().or(); - }, SqlBuilder._ERROR_NO_PARAMETER_PROVIDED()], - - ["or with null as value should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", null); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["or with undefined as value should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", undefined); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["or with a jdito-var containing null should error", function(pTester) - { - vars.set("$global.TestingVarNull", null); - - new SqlBuilder().where().or("PERSON.FIRSTNAME", "$global.TestingVarNull"); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR()], - - ["or with an empty sql-builder as subquery should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", new SqlBuilder()); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["or with an empty prepared statement as subquery should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", ["", []]); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], -]); - -var inStatementTests = new TestSuite([ - ["simple and in", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.LASTNAME", ["Franz", "Fritz"], SqlBuilder.IN()) // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter - .or("PERSON.LASTNAME", ["Peter", "Mayer"], SqlBuilder.IN()); - - pTester.assert(" ( PERSON.LASTNAME in (?, ?) ) or ( PERSON.LASTNAME in (?, ?) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(4, actual._where.preparedValues.length, "number of params"); - }], - - ["simple and not in", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.LASTNAME", ["Franz", "Fritz"], "# not in ?"); // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter - - pTester.assert(" ( PERSON.LASTNAME not in (?, ?) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["in with subquery", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", new SqlBuilder() - .select("PERSON.FIRSTNAME") - .from("PERSON") - .where("PERSON.LASTNAME", "Fritz") - , "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?" - - pTester.assert("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }], - - ["in with prepared statement-array", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", ["select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ?", [["Fritz", SQLTYPES.VARCHAR]]] - , "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?" - - pTester.assert("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }], - - ["andIfSet should ignore empty array", function(pTester) - { - var actual = new SqlBuilder() - .whereIfSet("PERSON.LASTNAME", []); - - pTester.assert("", actual._where._sqlStorage, "prepared sql should be empty"); - pTester.assert(0, actual._where.preparedValues.length, "number of params should be 0"); - }], - - ["and should error on an empty array", function(pTester) - { - new SqlBuilder() - .where("PERSON.LASTNAME", []); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()] -]); - -var testConstantFunctions = new TestSuite([ - ["SqlBuilder.IN()", function(pTester) - { - pTester.assert("# in ?", SqlBuilder.IN()); - }], - - ["SqlBuilder.NOT_IN()", function(pTester) - { - pTester.assert("# not in ?", SqlBuilder.NOT_IN()); - }], - - ["SqlBuilder.EXISTS()", function(pTester) - { - pTester.assert("exists ?", SqlBuilder.EXISTS()); - }] -]); - -var selectTests = new TestSuite([ - ["a sql-builder in a fields-array is translated to sql correctly", function(pTester) - { - var countSubQuery = newSelect("count(*)") - .from("AB_ATTRIBUTEUSAGE") - .where("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", "myType") - .and("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"); - - var actual = new SqlBuilder() - .select(["AB_ATTRIBUTEID", "AB_ATTRIBUTEUSAGEID", countSubQuery]) - .from("AB_ATTRIBUTE") - - pTester.assert("select AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID, (select count(*) from AB_ATTRIBUTEUSAGE where AB_ATTRIBUTEUSAGE.OBJECT_TYPE = ? and AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID)", actual._select._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._select.preparedValues.length, "number of params"); - }], - - ["a sql-builder in from is used as subselect", function(pTester) - { - var subQuery = newSelect("FIRSTNAME") - .from("PERSON") - .where("PERSON.LASTNAME", "Meier") - - var actual = new SqlBuilder() - .select("*") - .from(subQuery) - - pTester.assert("from (select FIRSTNAME from PERSON where PERSON.LASTNAME = ?)", actual._from._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._from.preparedValues.length, "number of params"); - }] -]); - -var joinTests = new TestSuite([ - ["SqlBuilder as on-condition should only add the conditon of the builder", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - - var actual = new SqlBuilder() - .select("*") - .from("PERSON") - .join("ORGANISATION", subQuery) - - pTester.assert("join ORGANISATION on ORGANISATION.NAME = ?", actual._joins[0]._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._joins[0].preparedValues.length, "number of params"); - }], - - ["SqlBuilder as table for join is added as subselect", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - - var actual = new SqlBuilder() - .select("*") - .from("PERSON") - .join(subQuery, "orgname.NAME = TABLE2.NAME", "orgname") - - pTester.assert("join (select NAME from ORGANISATION where ORGANISATION.NAME = ?) orgname on orgname.NAME = TABLE2.NAME", actual._joins[0]._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._joins[0].preparedValues.length, "number of params"); - }], - - ["just use a string also containing a condition as join without additional condition", function(pTester) - { - var actual = new SqlBuilder() - .select("*") - .from("PERSON") - .join("TABLE1 on TABLE1.NAME = TABLE2.NAME") - - pTester.assert("join TABLE1 on TABLE1.NAME = TABLE2.NAME", actual._joins[0]._sqlStorage, "prepared select-sql"); - pTester.assert(0, actual._joins[0].preparedValues.length, "number of params"); - }] -]); - -var subqueryAsFieldTests = new TestSuite([ - ["Test if a Subselect as field works if pValue is provided. This should be added as subselect.", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") - .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place - - var actual = new SqlBuilder().where(subQuery, "val2", "# = ?", SQLTYPES.VARCHAR) - .and("PERSON.FIRSTNAME", "val3"); - - - pTester.assert(" ( ( select NAME from ORGANISATION where ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and PERSON.FIRSTNAME = ? ) = ? ) and PERSON.FIRSTNAME = ?", actual._where._sqlStorage, "prepared select-sql"); - pTester.assert(3, actual._where.preparedValues.length, "number of params"); - pTester.assert("val1", actual._where.preparedValues[0][0], "param 1 is correct value"); - pTester.assert("val2", actual._where.preparedValues[1][0], "param 2 is correct value"); - pTester.assert("val3", actual._where.preparedValues[2][0], "param 3 is correct value"); - }], - - ["Test if a Subselect as field should error if no SQLTYPE is provided.", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") - .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place - new SqlBuilder().where(subQuery, "val2", "# = ?"); - }, SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NO_FIELD_TYPE()], - - ["Test if a Subselect as field should error if it is not a full select.", function(pTester) - { - var subQuery = newSelect("NAME") - .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") - .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place - - new SqlBuilder().where(subQuery, "val2", "# = ?", SQLTYPES.VARCHAR); - }, SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NOT_COMPLETE()] -]); - -var conditionFormatTests = new TestSuite([ - ["pCondition should not fail if # an ? exist in correct order", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "# = ?") - .and("PERSON.FIRSTNAME", "val1", "asdf # fdsa=asdf ?fdas") - }], - - ["pCondition should not fail if # an ? exist in correct order and there are additional, escaped # and ?", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "\\? # \\#= ?"); - }], - - ["pCondition should not fail if only ? exists", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "?") - }], - - ["pCondition should fail if more than one ? exists", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "? test ?") - }, SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()], - - ["pCondition should fail if more than one # exists", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "# test #") - }, SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()], - - ["pCondition should fail if # and ? are in wrong order", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "? = #") - }, SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()] -]); - -var subqueryAliasTests = new TestSuite([ - ["subselectAlias should be added for subquery in .select", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - .subselectAlias("testAlias") - - var actual = new SqlBuilder() - .select([subQuery, "FIRSTNAME"]) - .from("PERSON") - - pTester.assert("select (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias, FIRSTNAME", actual._select._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._select.preparedValues.length, "number of params"); - }], - - ["subselectAlias should be added for subquery in .from", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - .subselectAlias("testAlias") - - var actual = new SqlBuilder() - .from(subQuery) - - pTester.assert("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias", actual._from._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._from.preparedValues.length, "number of params"); - }], - - ["subselectAlias should be overruled by the param in in .from", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - .subselectAlias("testAlias") - - var actual = new SqlBuilder() - .from(subQuery, "overwriteAlias") - - pTester.assert("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias", actual._from._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._from.preparedValues.length, "number of params"); - }], - - ["subselectAlias should be added for subquery in .join", function(pTester) - { - var subQuery = newSelect("NAME, ORGANISATIONID") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - .subselectAlias("testAlias") - - var actual = new SqlBuilder() - .from("CONTACT") - .join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID") - .join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID", "overwriteAlias") - - pTester.assert("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) testAlias on testAlias.ORGANISATIONID = ORGANISATION_ID", actual._joins[0]._sqlStorage, "prepared select-sql join 1"); - pTester.assert(1, actual._joins[0].preparedValues.length, "number of params join 1"); - - pTester.assert("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias on testAlias.ORGANISATIONID = ORGANISATION_ID", actual._joins[1]._sqlStorage, "prepared select-sql join 2"); - pTester.assert(1, actual._joins[1].preparedValues.length, "number of params join 2"); - }] -]) - -var tester = new Tester("Test SqlBuilder"); -tester.test(newSelectTests); -tester.test(validAndUsageTests); -tester.test(validOrUsageTests); -tester.test(combinedAndOrTests); -tester.test(ifSetTests); -tester.test(dbWrapperTests); -tester.test(mandatoryErrorTests); -tester.test(inStatementTests); -tester.test(testConstantFunctions); -tester.test(selectTests); -tester.test(joinTests); -tester.test(subqueryAsFieldTests); -tester.test(conditionFormatTests); -tester.test(subqueryAliasTests); - -logging.log("-------------------------"); -tester.printResults(); diff --git a/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod b/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod new file mode 100644 index 00000000000..8636a3707b1 --- /dev/null +++ b/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>SqlMaskingUtils_test</name> + <title>[TEST] Sql_lib - SqlMaskingUtils</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/SqlMaskingUtils_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/SqlMaskingUtils_test/process.js b/process/SqlMaskingUtils_test/process.js new file mode 100644 index 00000000000..533a1b32e94 --- /dev/null +++ b/process/SqlMaskingUtils_test/process.js @@ -0,0 +1,158 @@ +import("system.result"); +import("system.db"); +import("Sql_lib"); +import("UnitTest_lib"); + +function _createDummyMaskingUtil(pDbType) +{ + var currentAlias = db.getCurrentAlias(); + if (!currentAlias) + throw new Error("alias required for test is not set"); + var currentAliasType = db.getDatabaseType(currentAlias); + if (!currentAliasType) + throw new Error("alias type required for test is not set"); + var createdObject = new SqlMaskingUtils(currentAlias); + createdObject.dbType = pDbType; + return createdObject; +} + +var constructorTest = new TestSuite("SqlMaskingUtils.constructor", [ + new Test("constructor sets correct specified alias", + function(pTester) + { + var currentAlias = db.getCurrentAlias(); + if (!currentAlias) + throw new Error("alias required for test is not set"); + var createdObject = new SqlMaskingUtils(currentAlias); + pTester.expectThat(createdObject.alias).equals(currentAlias).assert(); + } + ), + new Test("constructor sets correct default alias", + function(pTester) + { + var currentAlias = db.getCurrentAlias(); + if (!currentAlias) + throw new Error("alias required for test is not set"); + var createdObject = new SqlMaskingUtils(); + pTester.expectThat(createdObject.alias).equals(currentAlias).assert(); + } + ), + new Test("constructor sets correct alias type", + function(pTester) + { + var currentAlias = db.getCurrentAlias(); + if (!currentAlias) + throw new Error("alias required for test is not set"); + var currentAliasType = db.getDatabaseType(currentAlias); + if (!currentAliasType) + throw new Error("alias type required for test is not set"); + var createdObject = new SqlMaskingUtils(currentAlias); + pTester.expectThat(createdObject.dbType).equals(currentAliasType).assert(); + } + ), + new Test("overwrite constructors dbType with derby", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_DERBY10); + pTester.expectThat(res.dbType).equals(db.DBTYPE_DERBY10).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with mariaDB", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_MARIADB10); + pTester.expectThat(res.dbType).equals(db.DBTYPE_MARIADB10).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with mySql", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_MYSQL4); + pTester.expectThat(res.dbType).equals(db.DBTYPE_MYSQL4).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with oracle-cluster", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_ORACLE10_CLUSTER); + pTester.expectThat(res.dbType).equals(db.DBTYPE_ORACLE10_CLUSTER).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with oracle-oci", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_ORACLE10_OCI); + pTester.expectThat(res.dbType).equals(db.DBTYPE_ORACLE10_OCI).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with oracle-thin", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_ORACLE10_THIN); + pTester.expectThat(res.dbType).equals(db.DBTYPE_ORACLE10_THIN).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with postgresql", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_POSTGRESQL8); + pTester.expectThat(res.dbType).equals(db.DBTYPE_POSTGRESQL8).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with ms sql", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_SQLSERVER2000); + pTester.expectThat(res.dbType).equals(db.DBTYPE_SQLSERVER2000).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ) + ]); + + +var getConcatSymbolTest = new TestSuite("SqlMaskingUtils.getConcatSymbol", [ + new Test("getConcatSymbol returns a non empty string", + function(pTester) + { + var maskingHelper = _createDummyMaskingUtil(db.DBTYPE_SQLSERVER2000); + var res = maskingHelper.getConcatSymbol(); + pTester.expectThat(res).not().isNull().assert(); + pTester.expectThat(res).not().isUndefined().assert(); + pTester.expectThat(res).isString().assert(); + pTester.expectThat(res.length).isInteger().assert(); + pTester.expectThat(res.length).isGreater(0).assert(); + } + ), + new Test("+ for MS SQL", + function(pTester) + { + var maskingHelper = _createDummyMaskingUtil(db.DBTYPE_SQLSERVER2000); + var res = maskingHelper.getConcatSymbol(); + pTester.expectThat(res.trim()).equals("+").assert(); + } + ), + new Test("|| for Oracle", + function(pTester) + { + var maskingHelper = _createDummyMaskingUtil(db.DBTYPE_ORACLE10_THIN); + var res = maskingHelper.getConcatSymbol(); + pTester.expectThat(res.trim()).equals("||").assert(); + } + ) + ]); + +var tester = new Tester("Test SqlMaskingUtils"); +tester.initCoverage(SqlMaskingUtils); +tester.test(constructorTest); +tester.test(getConcatSymbolTest); +//TODO: add full test coverage +tester.summary(); + +result.object(tester.getResults()); \ No newline at end of file diff --git a/process/Sql_lib/documentation.adoc b/process/Sql_lib/documentation.adoc index 8b903c2155e..417d8aa237b 100644 --- a/process/Sql_lib/documentation.adoc +++ b/process/Sql_lib/documentation.adoc @@ -17,10 +17,10 @@ include::_default_attributes_EN.adoc[] This document describes the functionality and the usage of the SqlBuilder, which is included in the library *Sql_lib* of the ADITO xRM project (see "Projects" window, under process > libraries). The documentation may not contain all features of the SqlBuilder. It is supplemental to the documentation you find in the code itself: A usage will often be possible in an intuitive way, so just try coding using code completion and JSDoc, where all parameters are documented. -You may also take a look at the library *SqlLib_tests* (also under process > libraries), as it contains many possible ways to use the SqlBuilder. +You may also take a look at the library *Sql_test* (also under process > libraries), as it contains many possible ways to use the SqlBuilder. [NOTE] -The tests included in the library SqlLib_tests use the UnitTest_lib for unit testing. You can use this functionality also in other contexts, according to your requirements. +The tests included in the library Sql_test use the UnitTest_lib for unit testing. You can use this functionality also in other contexts, according to your requirements. == Benefits diff --git a/process/SqlLib_tests/SqlLib_tests.aod b/process/Terminal_lib/Terminal_lib.aod similarity index 67% rename from process/SqlLib_tests/SqlLib_tests.aod rename to process/Terminal_lib/Terminal_lib.aod index 9f2866f8f91..9fa0811425e 100644 --- a/process/SqlLib_tests/SqlLib_tests.aod +++ b/process/Terminal_lib/Terminal_lib.aod @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> - <name>SqlLib_tests</name> + <name>Terminal_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <process>%aditoprj%/process/SqlLib_tests/process.js</process> - <alias>Data_alias</alias> + <documentation>%aditoprj%/process/Terminal_lib/documentation.adoc</documentation> + <process>%aditoprj%/process/Terminal_lib/process.js</process> <variants> <element>LIBRARY</element> </variants> diff --git a/process/Terminal_lib/process.js b/process/Terminal_lib/process.js new file mode 100644 index 00000000000..13a0188495d --- /dev/null +++ b/process/Terminal_lib/process.js @@ -0,0 +1,342 @@ +import("system.logging"); +import("Util_lib"); + + +/** + * This library gives you helpful colored output on the terminal + * You can use the predefined helper methods or use your own color- and format combinations + * + * @example + * var t = new Terminal(); + * logging.log(t.success("It works!")); + * logging.log(t.color(t.fg.green).background(t.bg.red).output("I would never use green text on red background...")); + * + * @see https://en.wikipedia.org/wiki/ANSI_escape_code + * @class + */ +function Terminal() +{ + this.mod = { + reset : 0 + }; + + this.fg = { + reset : 39, + black : 30, + red : 31, + green : 32, + yellow : 33, + blue : 34, + magenta : 35, + cyan : 36, + white : 37, + brightBlack : 90, + brightRed : 91, + brightGreen : 92, + brightYellow : 93, + brightBlue : 94, + brightMagenta : 95, + brightCyan : 96, + brightWhite : 97 + }; + + this.bg = { + reset : 49, + black : 40, + red : 41, + green : 42, + yellow : 43, + blue : 44, + magenta : 45, + cyan : 46, + white : 47, + brightBlack : 100, + brightRed : 101, + brightGreen : 102, + brightYellow : 103, + brightBlue : 104, + brightMagenta : 105, + brightCyan : 106, + brightWhite : 107 + }; + + this.formats = { + weightBold : 1, + weightLight : 2, + weightOff : 22, + italic : 3, + italicOff : 23, + underline : 4, + underlineDouble : 21, + underlineOff : 24, + strike : 9, + strikeOff : 29 + }; + + this._defaultConfig = { + colorText: this.fg.reset, + colorBackground: this.bg.reset, + bold: this.formats.weightOff, + italic: this.formats.italicOff, + underline: this.formats.underlineOff, + strike: this.formats.strikeOff + }; + + this.outputConfig = Utils.clone(this._defaultConfig); +} + + +/** + * Reset the output config by cloning and setting the default + * + * @return {void} + */ +Terminal.prototype._resetConfig = function () +{ + this.outputConfig = Utils.clone(this._defaultConfig); +} + +/** + * Set or reset the text color + * + * @param {int} pValue + * @return {Terminal} + */ +Terminal.prototype.color = function (pValue) +{ + this.outputConfig.colorText = this._contains(this.fg, pValue) ? pValue : this.fg.reset; + + return this; +} + +/** + * Set or reset the background color + * + * @param {int} pValue + * @return {Terminal} + */ +Terminal.prototype.background = function (pValue) +{ + this.outputConfig.colorBackground = this._contains(this.bg, pValue) ? pValue : this.bg.reset; + + return this; +} + +/** + * Set, unset or add a formatting to the output config + * + * @param {int} pValue + * @return {Terminal} + */ +Terminal.prototype.format = function (pValue) +{ + var allowedWeightValues = [this.formats.weightBold, this.formats.weightLight, this.formats.weightOff]; + this.outputConfig.bold = this._contains(allowedWeightValues, pValue) ? pValue : this.formats.weightOff; + + var allowedItalicValues = [this.formats.italic, this.formats.italicOff]; + this.outputConfig.italic = this._contains(allowedItalicValues, pValue) ? pValue : this.formats.italicOff; + + var allowedUnderlineValues = [this.formats.underline, this.formats.underlineDouble, this.formats.underlineOff]; + this.outputConfig.underline = this._contains(allowedUnderlineValues, pValue) ? pValue : this.formats.underlineOff; + + var allowedStrikeValues = [this.formats.strike, this.formats.strikeOff]; + this.outputConfig.strike = this._contains(allowedStrikeValues, pValue) ? pValue : this.formats.strikeOff; + + return this; +} + +/** + * Returns a string wrapped in escape sequences according to previous formatting instructions + * Must be called after `.color()`, `.background()` and/or `.format()`. + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.output = function (pString) +{ + var output = ""; + var seqValues = []; + + Object.keys(this.outputConfig).forEach(function(pKey) { + seqValues.push(this.outputConfig[pKey]); + }, this); + + output += this._generateSequence(seqValues); + output += pString; + output += this._generateSequence(this.mod.reset); + + this._resetConfig(); + return output; +} + +/** + * Returns the given string formatted as light-colored text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.debug = function (pString) +{ + return this.color(this.fg.white).output(pString); +} + +/** + * Returns the given string formatted as bold black text on green background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.successBlock = function (pString) +{ + return this.color(this.fg.brightBlack).background(this.bg.green).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold green text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.success = function (pString) +{ + return this.color(this.fg.green).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold black text on green background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.successBlock = function (pString) +{ + return this.color(this.fg.brightBlack).background(this.bg.green).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Returns the given string formatted as bold blue text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.info = function (pString) +{ + return this.color(this.fg.blue).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold white text on blue background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.infoBlock = function (pString) +{ + return this.color(this.fg.brightWhite).background(this.bg.blue).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Returns the given string formatted as bold magenta text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.important = function (pString) +{ + return this.color(this.fg.magenta).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold white text on magenta background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.importantBlock = function (pString) +{ + return this.color(this.fg.brightWhite).background(this.bg.magenta).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Returns the given string formatted as bold yellow text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.warning = function (pString) +{ + return this.color(this.fg.yellow).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold black text on yellow background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.warningBlock = function (pString) +{ + return this.color(this.fg.brightBlack).background(this.bg.yellow).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Returns the given string formatted as bold red text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.error = function (pString) +{ + return this.color(this.fg.red).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold white text on red background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.errorBlock = function (pString) +{ + return this.color(this.fg.brightWhite).background(this.bg.red).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Checks if a specific value is in a given array or object + * + * @param {(Array|Object)} pType + * @param {Any} pValue + * @return {Boolean} + */ +Terminal.prototype._contains = function (pType, pValue) +{ + var res = false; + + if(Array.isArray(pType)) { + res = pType.indexOf(pValue) !== -1; + } else { + Object.keys(pType).forEach(function(pKey) { + if(pType[pKey] === pValue) { + res = true; + } + }, this); + } + + return res; +} + +/** + * Generates and returns a terminal escape sequence + * + * @param {(int|int[])} pSequences A single or multiple escape sequence commands + */ +Terminal.prototype._generateSequence = function (pSequences) +{ + var seq = Array.isArray(pSequences) ? pSequences : [pSequences]; + + seq = seq.filter(function(pElement) { + return Number.isInteger(parseFloat(pElement)) && isFinite(pElement); + }); + + return "\033[" + seq.join(";") + "m"; +} diff --git a/process/UnitTest_lib/UnitTest_lib.aod b/process/UnitTest_lib/UnitTest_lib.aod index 225ac230384..a4499316765 100644 --- a/process/UnitTest_lib/UnitTest_lib.aod +++ b/process/UnitTest_lib/UnitTest_lib.aod @@ -2,6 +2,7 @@ <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> <name>UnitTest_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE_O</icon> <process>%aditoprj%/process/UnitTest_lib/process.js</process> <alias>Data_alias</alias> <variants> diff --git a/process/UnitTest_lib/process.js b/process/UnitTest_lib/process.js index 0ce141d4828..382d37e0215 100644 --- a/process/UnitTest_lib/process.js +++ b/process/UnitTest_lib/process.js @@ -1,235 +1,1265 @@ import("system.logging"); +import("Terminal_lib"); +import("Util_lib"); + +/** + * @param {String} pName the name/description of the test + * @param {Function} pCallback the actual test callback to execute + * @param {Function} pDataProviderCallback an optional callback to deliver multiple datasets to the test + * @param {Boolean} pRerunOnError an optional flag indicating if a test should get rerun without try-catch if an error occurs (default: false) + * + * @class + */ +function Test(pName, pCallback, pDataProviderCallback, pRerunOnError) +{ + this.name = pName; + this.callback = pCallback; + this.dataProviderCallback = pDataProviderCallback || function() { return null; }; + this.rerunOnError = !!pRerunOnError; +} /** * A TestSuite combines several tests - * @param {Array} pTests this is a n array of Tests in the following form:<br/> - * [<br/> - * ["Test description", function(pTester) <br/> - * {<br/> - * // the test which may use pTester.assert(...)<br/> - * }, {Optional: an expected error}<br/> - * ],<br/> - * [...]<br/> - * ]<br/> + * + * @param {String} pName name of the TestSuite + * @param {Array} pTests this is a n array of Tests + * + * @example + * var myTest = new TestSuite("MyObject.myTest", [ + * new Test("Test description", + * function(pTester) { + * var expectValue = 5; + * var var actualValue = 20; + * pTester.expectThat(actualValue).isGreater(expectValue).assert(); + * }, + * ), + * new Test(...) + * ]; + + * @example + * // Using a DataProvider + * var myTest = new TestSuite("MyObject.myTest", [ + * new Test("Test description", + * function(pTester, pDataProvider) { + * var obj = new MyObject("Something"); + * var expectValue = pDataProvider[0]; + * var var actualValue = obj.getNumber(); + * pTester.expectThat(actualValue).isGreater(expectValue).assert(); + * }, + * function dataProvider() { + * return [ + * [0], + * [10], + * [100], + * ]; + * }, + * ), + * new Test(...) + * ]; + * * @param {functionCallback} [pPreAll] a callback, called once before all tests * @param {functionCallback} [pPreTest] a callback, called once before each test * @param {functionCallback} [pPostTest] a callback, called once after each test * @param {functionCallback} [pPostAll] a callback, called once after all tests - * + * + * TODO: set callbacks via separate methods + * * @class */ -function TestSuite(pTests, pPreAll, pPreTest, pPostTest, pPostAll) +function TestSuite(pName, pTests, pPreAll, pPreTest, pPostTest, pPostAll) { + this.name = pName; this.tests = pTests; - this.preAll = (pPreAll ? pPreAll : function() {}); - this.preTest = (pPreTest ? pPreTest : function() {}); - this.postTest = (pPostTest ? pPostTest : function() {}); - this.postAll = (pPostAll ? pPostAll : function() {}); + this.preAll = pPreAll || function() {}; + this.preTest = pPreTest || function() {}; + this.postTest = pPostTest || function() {}; + this.postAll = pPostAll || function() {}; } /** - * The tester can test TestSuites. - * It will be passed as paramter to each test. - * + * The tester runs TestSuites. + * It will be passed as parameter to each test. + * * @param {String} pCollectionName + * + * @example + * var myTest = new TestSuite("MyObject.myTest", [...]); + * var tester = new Tester("Test SqlBuilder", SqlBuilder); + * tester.test(myTest); + * // More test suites using tester.test() + * // ... + * + * tester.summary(); + * + * @class + * + * TODO: Implement `isEmpty()` + * TODO: Implement `hasKey()` + * TODO: Implement `contains()` + * TODO: Implement `containsIgnoreCase()` + * TODO: Implement `isPrimitive()` + * TODO: Implement `matches()` + * TODO: Implement `matchesIgnoreCase()` + * TODO: Move multiple used code blocks into separate methods (like the logging output + reset) + * TODO: Use more getters, especially when implementing `elementAt()` + * TODO: Add examples to test methods + */ +function Tester(pCollectionName) +{ + this.collectionName = pCollectionName; + this.instanceName = undefined; + this.methods = []; + this.methodsCalled = []; + + this.actualValue = undefined; + this.actualDisplayValue = undefined; + this.actualOriginalValue = undefined; + this.actualOriginalDisplayValue = undefined; + this.actualValueElementHierarchy = []; + this.expectedValue = undefined; + this.expectedDisplayValue = undefined; + this._assertDescription = ""; + this._testResult = false; + this._useNegation = false; + this.dataProvider = undefined; + this.currentTestSuite = undefined; + + this.testCount = 0; + this.successCount = 0; + this.failCount = 0; + this.startTime = new Date().getTime(); + this.endTime = null; + + this.t = new Terminal(); + this.outputEnabled = true; + this.output = ""; +} + +/** + * Set the value to test + * + * @param {*} pValue + * @return {Tester} + */ +Tester.prototype.expectThat = function(pValue) +{ + this.actualValue = pValue; + this.actualDisplayValue = pValue; + this.actualOriginalValue = pValue; + this.actualOriginalDisplayValue = pValue; + this._useNegation = false; + + return this; +} + +/** + * Retrieve the result of the current test + * + * @return {Boolean} + */ +Tester.prototype.getTestResult = function() +{ + return this._useNegation ? !this._testResult : this._testResult; +} + +/** + * Enable or disable the output + * + * @param {Boolean} pIsEnabled whether the output should be enabled or not + * @return {Tester} + */ +Tester.prototype.setOutputEnabled = function(pIsEnabled) +{ + this.outputEnabled = pIsEnabled; + return this; +} + +/** + * Assert makes the test eventually pass or fail by looking at the result and writing into the output + * + * @return {void} + */ +Tester.prototype.assert = function() +{ + if(this.getTestResult() === true) + { + this.successCount++; + this._log("success", "\t\t\u2705 " + this._assertDescription); + } + else + { + this.failCount++; + this._log("error", "\t\t\u274C " + this._assertDescription); + + if(this.actualDisplayValue !== undefined && this.expectedDisplayValue !== undefined) + { + this._log("warning", "\t\t\t expected: " + JSON.stringify(this.expectedDisplayValue, null, "\t")); + this._log("error", "\t\t\t actual: " + JSON.stringify(this.actualDisplayValue, null, "\t")); + } + } +} + +/** + * Activate test negation + * + * @return {Tester} + */ +Tester.prototype.not = function() +{ + this._useNegation = true; + + return this; +} + +/** + * Select a child element of `actualValue` to work with + * + * @param {(String|Number)} pKey the key of the child + * @return {Tester} * * @example - * var tester = new Tester("Test SqlBuilder"); - * tester.test(newSelectTests); - * tester.test(validAndUsageTests); - * tester.test(validOrUsageTests); + * // Grab first array element to test + * pTester.expectThat(actualValue).elementAt(0).equals("MyValue").assert(); * - * logging.log("-------------------------"); - * tester.printResults(); + * // Grab last array element to test + * pTester.expectThat(actualValue).elementAt(-1).equals("MyValue").assert(); * - * @class + * // Grab object element to test + * pTester.expectThat(actualValue).elementAt("myKey").equals("MyValue").assert(); + * + * // Grab nested element in array/object structure to test, in this case `actualValue[5].myKey[2].someChild` + * pTester.expectThat(actualValue).elementAt(5).elementAt("myKey").elementAt(2).elementAt("someChild").equals("MyValue").assert(); */ -function Tester(pCollectionName) +Tester.prototype.elementAt = function(pKey) { - this.collectionName = pCollectionName; - this.testResults = []; + if(!Array.isArray(this.actualValue) && !Utils.isObject(this.actualValue)) + { + var error = new Error("actualValue must be array or object to use elementAt('" + pKey + "')"); + error.name = "UnitTest_lib Error"; + throw error; + } + + var key = Array.isArray(this.actualValue) && pKey === -1 ? this.actualValue.length - 1 : pKey; - // if no assert was called during a test, no test-message would be added. -> Add a success message that no error occoured. - this.currentTestHadAlreadyAssert = false; + this.actualValueElementHierarchy.push(key); + this.actualValue = this.actualValue[key]; + this.actualDisplayValue = this.actualDisplayValue[key]; + + return this; } /** - * generates a summary of the test results - * - * @return {Obect} + * Test if a value is equal to a given value + * + * @param {*} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.equals = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + if(Utils.isObject(this.actualValue) || Utils.isObject(this.expectedValue)) + { + this.expectedDisplayValue = JSON.stringify(this.actualValue); + this._testResult = Utils.isEqual(this.actualValue, this.expectedValue); + this._generateAssertDescription({custom: pCustomDescription, operator: "===", name: "Object value"}); + } + else + { + this._testResult = this.actualValue === this.expectedValue; + this._generateAssertDescription({custom: pCustomDescription, operator: "==="}); + } + + return this; +} + +/** + * Test if a value is greater than a given compare value + * + * @param {Number} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isGreater = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = this.actualValue > this.expectedValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: ">"}); + + return this; +} + +/** + * Test if a value is greater or equal than a given compare value + * + * @param {Number} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isGreaterEqual = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = this.actualValue >= this.expectedValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: ">="}); + + return this; +} + +/** + * Test if a value is lower than a given compare value + * + * @param {Number} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isLower = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = this.actualValue < this.expectedValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "<"}); + + return this; +} + +/** + * Test if a value is lower or equal than a given compare value + * + * @param {Number} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isLowerEqual = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = this.actualValue <= this.expectedValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "<="}); + + return this; +} + +/** + * Test if a value is a boolean + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isBoolean = function(pCustomDescription) +{ + this._setExpectValue("boolean"); + this._testResult = Utils.isBoolean(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is a number + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isNumber = function(pCustomDescription) +{ + this._setExpectValue("number"); + this._testResult = Utils.isNumber(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is numeric + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isNumeric = function(pCustomDescription) +{ + this._setExpectValue("numeric"); + this._testResult = Utils.isNumeric(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a value is NaN (not a number) + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isNaN = function(pCustomDescription) +{ + this._setExpectValue("NaN"); + this._testResult = Number.isNaN(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is an integer + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isInteger = function(pCustomDescription) +{ + this._setExpectValue("integer"); + this._testResult = Utils.isInteger(this.actualValue); + + this.actualDisplayValue = typeof this.actualValue; + this.expectedDisplayValue = "number"; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is", expected: this.expectedValue}); + + return this; +} + +/** + * Test if a value is a float + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isFloat = function(pCustomDescription) +{ + this._setExpectValue("float"); + this._testResult = Utils.isFloat(this.actualValue); + + this.actualDisplayValue = typeof this.actualValue; + this.expectedDisplayValue = "number"; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is", expected: this.expectedValue}); + + return this; +} + +/** + * Test if a value is a string + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isString = function(pCustomDescription) +{ + this._setExpectValue("string"); + this._testResult = Utils.isString(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is an array + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isArray = function(pCustomDescription) +{ + this._setExpectValue("array"); + this._testResult = Array.isArray(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is an object + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isObject = function(pCustomDescription) +{ + this._setExpectValue("object"); + this._testResult = Utils.isObject(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is a function + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isFunction = function(pCustomDescription) +{ + this._setExpectValue("function"); + this._testResult = Utils.isFunction(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is null + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isNull = function(pCustomDescription) +{ + this._setExpectValue("null"); + this._testResult = this.actualValue === null; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a value is undefined + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isUndefined = function(pCustomDescription) +{ + this._setExpectValue("undefined"); + this._testResult = this.actualValue === undefined || typeof this.actualValue === "undefined"; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a string value is lowercase + * + * An additional check of the opposite must be made to prevent strings with non-letter characters passing the test + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isUpperCase = function(pCustomDescription) +{ + this._setExpectValue("uppercase"); + this._testResult = Utils.isString(this.actualValue) + && this.actualValue === this.actualValue.toUpperCase() + && this.actualValue !== this.actualValue.toLowerCase() + ; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a string value is lowercase + * + * An additional check of the opposite must be made to prevent strings with non-letter characters passing the test + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isLowerCase = function(pCustomDescription) +{ + this._setExpectValue("lowercase"); + this._testResult = Utils.isString(this.actualValue) + && this.actualValue === this.actualValue.toLowerCase() + && this.actualValue !== this.actualValue.toUpperCase() + ; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a value starts with a given string + * + * An additional check of the opposite must be made to prevent strings with non-letter characters passing the test + * + * @param {Number} pExpect the expected string beginning + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.startsWith = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = Utils.isString(this.actualValue) && this.actualValue.startsWith(this.expectedValue); + + this._generateAssertDescription({custom: pCustomDescription, operator: "starts with"}); + + return this; +} + +/** + * Test if a value end with a given string + * + * An additional check of the opposite must be made to prevent strings with non-letter characters passing the test + * + * @param {Number} pExpect the expected string beginning + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.endsWith = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = Utils.isString(this.actualValue) && this.actualValue.endsWith(this.expectedValue); + + this._generateAssertDescription({custom: pCustomDescription, operator: "ends with"}); + + return this; +} + +/** + * Test if value is an instance of the expected "class" + * + * @param {Number} pExpect the expected instance name + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isInstanceOf = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + // Checks the name of the constructor and runs a function to check the actual instance. + // To prevent security issues by using `eval()`, a double nested function was needed. + // The outer one to evaluate the code, the inner one to be able to pass an argument, that will be evaluated. + // TODO: Also check for isObject() before + this._testResult = Utils.isObject(this.actualValue) + && this.actualValue.constructor.name === this.expectedValue + && Function('"use strict"; return function(obj) {return obj instanceof ' + this.expectedValue + ';};')()(this.actualValue); + this.actualDisplayValue = this.actualValue.constructor.name; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is instance of"}); + + return this; +} + +/** + * Test if value (array, string, object) has the expected length + * + * @param {Number} pExpect the expected length + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.hasLength = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + var length = this._getLength(this.actualValue); + this._testResult = length === this.expectedValue; + this.actualDisplayValue = length; + + this._generateAssertDescription({custom: pCustomDescription, operator: "===", nameSuffix: ".length"}); + + return this; +} + +/** + * Test if value (array, string, object) has a minimum expected length + * + * @param {Number} pExpect the expected length + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.hasMinLength = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + var length = this._getLength(this.actualValue); + this._testResult = length >= this.expectedValue; + this.actualDisplayValue = length; + + this._generateAssertDescription({custom: pCustomDescription, operator: ">=", nameSuffix: ".length"}); + + return this; +} + +/** + * Test if value (array, string, object) has a maximum expected length + * + * @param {Number} pExpect the expected length + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.hasMaxLength = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + var length = this._getLength(this.actualValue); + this._testResult = length <= this.expectedValue; + this.actualDisplayValue = length; + + this._generateAssertDescription({custom: pCustomDescription, operator: "<=", nameSuffix: ".length"}); + + return this; +} + + +/** + * Test if a callback function throws an exception + * + * @param {Number} pExpect the expected error + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} */ -Tester.prototype.getSummary = function () +Tester.prototype.throwsException = function(pExpect, pCustomDescription) { - var summary = { - failures : 0, - successes : 0, - failedTests : [], - getMessage : function () + this._setExpectValue(pExpect); + this._generateAssertDescription({custom: pCustomDescription, operator: "throws", expected: "exception", name: " "}); + + if(this._useNegation) + { + try + { + this.actualValue(); + } + catch(e) + { + this._testResult = true; // Actually `false` and therefore failed, but must be `true` to make negation work + this.actualDisplayValue = e; + throw e; + } + + this._testResult = false; // Actually `true` and therefore successful, but must be `false` to make negation work + } + else + { + try { - var message = "-------------------------\n" - + (this.failures ? "Test failure" : "Test success") - + "\n-------------------------\nTests performed: " + (this.successes + this.failures) - + "\nTests successful: " + this.successes - + "\nTests failed: " + this.failures; - if (this.failedTests.length) + this.actualValue(); + } + catch(e) + { + this._testResult = e.toSource() === this.expectedValue.toSource(); + + if (!this._testResult) { - message += "\nFailures:"; - this.failedTests.forEach(function (testName) - { - message += "\n\t" + testName; - }); + this.actualDisplayValue = e; + throw e; } - return message; } } - this.testResults.forEach(function ([testName,, successful]) - { - if (successful) - summary.successes++; + + return this; +} + +/** + * Executes all tests in a TestSuite + * + * @param {TestSuite} pTestSuite the TestSuite which should be tested + * @return {void} + */ +Tester.prototype.test = function(pTestSuite) +{ + this.currentTestSuite = pTestSuite; + this._log("important", "\u2692 Suite: " + this.currentTestSuite.name); + this._registerMethodTestCall(); + + this.currentTestSuite.preAll(this); + + this.currentTestSuite.tests.forEach(function(pTest) { + this._resetTest(); + + this.currentTestSuite.preTest(this); + this.dataProvider = pTest.dataProviderCallback(); + + if(Array.isArray(this.dataProvider) && this.dataProvider.length > 0) + { + this.dataProvider.forEach(function(pElement, pIndex) { + this._runTest(pTest, pIndex); + }, this); + } else { - summary.failures++; - summary.failedTests.push(testName); + this._runTest(pTest); } + + this.currentTestSuite.postTest(this); + }, this); + + this.currentTestSuite.postAll(this); +} + +/** + * Calculate test duration + * + * Will we used in the results and summary output. + * + * @return {Number} the duration in milliseconds + */ +Tester.prototype.getDuration = function() +{ + if(this.endTime === null) + { + this.endTime = new Date().getTime(); + } + + return this.endTime - this.startTime; +} + +/** + * Initializes test coverage by registering available and testable methods of given class + * + * @param {Object=} pInstanceName an optional class instance to make test coverage work + * @return {void} + */ +Tester.prototype.initCoverage = function(pInstanceName) +{ + if(pInstanceName !== undefined) + { + this.instanceName = pInstanceName; + + var instanceMethods = Object.getOwnPropertyNames(this.instanceName.prototype).filter(function(property) { + return typeof this.instanceName.prototype[property] === 'function'; + }, this); + var staticMethods = Object.getOwnPropertyNames(this.instanceName).filter(function(property) { + return typeof this.instanceName[property] === 'function'; + }, this); + + this.methods = instanceMethods.concat(staticMethods); + } +} + +/** + * Get the results of current tester as object + * + * @return {Object} the test results + */ +Tester.prototype.getResults = function() +{ + return { + testCount: this.testCount, + assertCount: this.successCount + this.failCount, + successCount: this.successCount, + failCount: this.failCount, + duration: this.getDuration(), + coverage: this._getCoverageRate(), + methodsTotal: this.methods.length, + methodsCalled: this.methodsCalled.length + }; +} + +/** + * Output the summary for a single or multiple test suites to the server log + * + * The results of multiple tests get cumulated. + * There will be no log output if it has been disabled. + * + * @param {(Object|Object[])} pTestSuiteResults the test suite result(s) to log a summary for + * @return {void} + */ +Tester.prototype.summary = function(pTestSuiteResults) +{ + var testSuiteResults = pTestSuiteResults !== undefined && Array.isArray(pTestSuiteResults) ? pTestSuiteResults : [this.getResults()]; + var divider = testSuiteResults.length > 1 ? "=" : "-"; + var title = testSuiteResults.length > 1 ? "All Tests" : this.collectionName; + + var testCount = 0; + var assertCount = 0; + var successCount = 0; + var failCount = 0; + var duration = 0; + + testSuiteResults.forEach(function(pTestResult) { + testCount += pTestResult.testCount; + assertCount += pTestResult.assertCount; + successCount += pTestResult.successCount; + failCount += pTestResult.failCount; + duration += pTestResult.duration; }); - return summary; + + this._log("info", "\n" + title + " Summary:"); + this._log("info", divider.repeat(32)); + this._log("", "Total: " + this.t.important(testCount + " Tests, " + assertCount + " Assertions")); + this._log("", "Passed: " + (successCount === assertCount ? this.t.success(successCount) : this.t.warning(successCount))); + this._log("", "Failed: " + (failCount === 0 ? this.t.success(failCount) : this.t.error(failCount))); + this._log("", "Time: " + this.t.important(duration + "ms")); + this._log("", "Coverage: " + this._getCoverageOutput(testSuiteResults)); + this._log("", "\n\n"); + + this._print(); } /** - * With assert you can test if a variable is the same like an expected value.<br/> - * The test result is added to the Tester<br/> + * Write a certain message type to the output + * + * If the given message type is not valid/allowed, the output will be plain unformatted text. + * + * @param {String} pType the message type + * @param {String} pOutput the actual message + * @return {void} * - * Note: the values are compared by === so also the type is checked.<br/> - * By using assert you can Test everything you want.<br/> + * @private + */ +Tester.prototype._log = function(pType, pOutput) +{ + var allowedTerminalMethods = ["debug", "success", "info", "error", "warning", "important"]; + + if(allowedTerminalMethods.indexOf(pType) !== -1) + { + this.output += "\n" + this.t[pType](pOutput); + } + else + { + this.output += "\n" + pOutput; + } +} + +/** + * Set the value to test against + * + * @param {*} pValue + * @return {void} * - * @param {AnyValue} pExpect the expected value - * @param {AnyValue} pActual the actual value - * @param {String} [pTestDescription] this is an optional description. You should use it, if you have more than one .assert in your test. + * @private */ -Tester.prototype.assert = function (pExpect, pActual, pTestDescription) +Tester.prototype._setExpectValue = function(pValue) { - this.currentTestHadAlreadyAssert = true; - - var res = pActual === pExpect; + this.expectedValue = pValue; + this.expectedDisplayValue = pValue; +} + +/** + * Determine, whether an error is expected in the current test run + * + * @return {Boolean} + * + * @private + */ +Tester.prototype._testExpectsError = function() +{ + return this.expectedValue instanceof Error; +} + +/** + * Write the ouput to the log and reset the output to an empty string + * + * @return {Tester} + * + * @private + */ +Tester.prototype._print = function() +{ + if(this.outputEnabled) + { + logging.log(this.output); + } - this.testResults.push([ - this._currentTest, - pTestDescription, - res, - pExpect, - pActual - ]); + this.output = ""; + return this; } /** - * Executes all tests in a TestSuite - * @param {TestSuite} pTestSuite the TestSuite which should be tested + * Generates and sets an assert description by given config object or simply set a given custom string + * + * It also handles using the correct operators when negation via `not()` is used + * + * @param {Object} pDescriptionConfig a config object + * @return {void} + * + * @private */ -Tester.prototype.test = function (pTestSuite) +Tester.prototype._generateAssertDescription = function(pDescriptionConfig) { - pTestSuite.preAll(this); + if(Utils.isString(pDescriptionConfig.custom)) + { + this._assertDescription = pDescriptionConfig.custom; + return; + } - pTestSuite.tests.forEach(function(pTest) { - logging.log("Testing " + pTest[0]); - - this.currentTestHadAlreadyAssert = false; - - this._currentTest = pTest[0]; - pTestSuite.preTest(this); - - if (pTest.length >= 3) + Object.assign(pDescriptionConfig, pDescriptionConfig.custom); + var valueName = pDescriptionConfig.name || "value"; + var valueNameSuffix = pDescriptionConfig.nameSuffix || ""; + var operator = pDescriptionConfig.operator.trim(); + var expectedValue = pDescriptionConfig.expected || this.expectedDisplayValue; + expectedValue = Utils.isString(expectedValue) ? "`" + expectedValue + "`" : expectedValue + ""; + + if(this._useNegation) + { + switch(operator) { - var errorThrowed = false; - - try { - pTest[1](this); - } catch (ex) { - errorThrowed = true; - - if (ex.toSource() == pTest[2].toSource()) - { - this.testResults.push([ - this._currentTest, - "Expected error throwed", - true, - pTest[2].toSource(), - ex.toSource() - ]); - - // don't throw as it's expected and no detailed stacktrace is needed - } - else - { - this.testResults.push([ - this._currentTest, - "Expected error throwed", - false, - pTest[2].toSource(), - ex.toSource() - ]); - - logging.log("Expected error: " + pTest[2].toSource() + ", but wrong error occoured.\nRunning test again without try catch to get detailed error stack trace") - - pTestSuite.preTest(this); - pTest[1](this); - pTestSuite.postTest(this); - return; - } - } - - if (!errorThrowed) - { - // if it didn't fail - this.testResults.push([ - this._currentTest, - "Expected error throwed", - false, - pTest[2].toSource(), - "no error" - ]); - } + case "===": + operator = "!=="; + break; + case ">": + operator = "<="; + break; + case ">=": + operator = "<"; + break; + case "<": + operator = ">="; + break; + case "<=": + operator = ">"; + break; + case "is": + case "type is": + case "has": + operator += " not"; + break; + case "is instance of": + operator += "is not instance of"; + break; + case "starts with": + case "ends with": + case "throws": + default: + operator = "not " + operator; + break; } - else + } + + this.actualValueElementHierarchy.forEach(function(pElement) { + valueName += typeof pElement === "number" ? "[" + pElement + "]" : "." + pElement; + }, this); + + var description = valueName + valueNameSuffix + " " + operator + " " + expectedValue; + this._assertDescription = description.trim(); + this.actualValueElementHierarchy = []; +} + +/** + * Reset test-related properties to their initial state + * + * This is done before every test run to prevent side-effects or expired/invalid data and states + * + * @return {Tester} + * + * @private + */ +Tester.prototype._resetTest = function() +{ + this.actualValue = undefined; + this.actualDisplayValue = undefined; + this.actualOriginalValue = undefined; + this.actualOriginalDisplayValue = undefined; + this.actualValueElementHierarchy = []; + this.expectedValue = undefined; + this.expectedDisplayValue = undefined; + this._assertDescription = ""; + this._testResult = false; + this._useNegation = false; + + return this; +} + +/** + * Get the length of a given value or undefined if it is not an array, object or string + * + * @param {(Array|Object|String)} pActualValue the value to get the length from + * @return {Number} + * + * @private + */ +Tester.prototype._getLength = function(pActualValue) +{ + if(Array.isArray(pActualValue) || Utils.isString(pActualValue)) + { + return pActualValue.length; + } + else if(Utils.isObject(pActualValue)) + { + return Object.keys(pActualValue).length; + } + + return undefined; +} + +/** + * Get the percentage of test coverage + * + * Will we used in the results and summary output. + * + * @return {?Number} the duration in milliseconds + */ +Tester.prototype._getCoverageRate = function() +{ + if(this.methods.length === 0 && this.methodsCalled.length === 0) + { + return null; + } + + if(this.methods.length === 0 || this.methodsCalled.length === 0) + { + return 0.00; + } + + var coverage = (this.methodsCalled.length / this.methods.length) * 100; + coverage = Number.parseFloat(Number.parseFloat(coverage).toFixed(2)); + + return coverage > 100 ? 100.00 : coverage; +} + +/** + * Register, which method of the given class has been called + * + * It takes the name of the TestSuite and splits it to get the class name and the method. + * Then, it checks if the class has such a method. It gets added to the call-list, if it has not been added yet. + * This is necessary to calculate the test coverage. + * All available class methods get registered beforehand and will be compared to this list later in `_getCoverageRate()`. + * + * @return {void} + * + * @private + */ +Tester.prototype._registerMethodTestCall = function() +{ + if(this.instanceName !== undefined) + { + var callParts = this.currentTestSuite.name.split("."); + + if(callParts[0] === this.instanceName.prototype.constructor.name && this.methods.indexOf(callParts[1]) !== -1) { - // run without try catch as no error expected - pTest[1](this); + if(this.methodsCalled.indexOf(callParts[1]) === -1) + { + this.methodsCalled.push(callParts[1]); + } } - - if (!this.currentTestHadAlreadyAssert && pTest.length < 3) // only add message if no error expected - { - this.testResults.push([ - this._currentTest, - "Expected no error", - true, - "no error", - "no error" - ]); + } +} + +/** + * Renders the output for the test coverage + * + * The results of multiple tests get cumulated. + * + * @param {Object[]} pTestSuiteResults the test suite(s) to log a summary for + * @return {String} the test coverage output + */ +Tester.prototype._getCoverageOutput = function(pTestSuiteResults) +{ + var coverageOutput = this.t.debug("unknown"); + var methodsTotal = 0; + var methodsCalled = 0; + var coverage = null; + var avgCoverage = null; + var coverageMethodCount = null; + + pTestSuiteResults.forEach(function(pTestResult) { + methodsTotal += pTestResult.methodsTotal; + methodsCalled += pTestResult.methodsCalled; + + if(pTestResult.coverage !== null) { + coverage += pTestResult.coverage; } - - pTestSuite.postTest(this); - }, this); - - pTestSuite.postAll(this); + }); + + if(coverage !== null) + { + avgCoverage = coverage / pTestSuiteResults.length; + coverageMethodCount = "(" + methodsCalled + "/" + methodsTotal + ")"; + } + + if(avgCoverage >= 80) + { + coverageOutput = this.t.success(avgCoverage + "% " + coverageMethodCount); + } + else if(avgCoverage >= 50) + { + coverageOutput = this.t.warning(avgCoverage + "% " + coverageMethodCount); + } + else if(avgCoverage > 0) + { + coverageOutput = this.t.error(avgCoverage + "% " + coverageMethodCount); + } + + return coverageOutput; } /** - * Prints the test results to the log + * Generates the title for the test about to run + * + * @param {Test} pTest the test to run + * @param {Number} pDataProviderIndex the current index of the data provider + * @return {void} + * + * @private */ -Tester.prototype.printResults = function () +Tester.prototype._generateTestTitle = function(pTest, pDataProviderIndex) { - var lastTestDescription = ""; - logging.log("Test results for \"" + this.collectionName + "\"") - this.testResults.forEach(function(pResult) { - - if (lastTestDescription != pResult[0]) + if(pDataProviderIndex !== undefined) + { + var titleValues = []; + + this.dataProvider[pDataProviderIndex].forEach(function(pElement) { + titleValues.push(pElement === undefined ? "undefined" : JSON.stringify(pElement)); + }); + this._log("", this.t.info("\t\u2699 Test: " + pTest.name) + this.t.debug(" (#" + (pDataProviderIndex + 1) + ": " + titleValues.join(" | ") + ")")); + } + else + { + this._log("info", "\t\u2699 Test: " + pTest.name); + } +} + +/** + * Runs a single test iteration and handles errors + * + * @param {Test} pTest the test to run + * @param {Number} pDataProviderIndex the current index of the data provider + * @return {void} + * + * @private + */ +Tester.prototype._runTest = function(pTest, pDataProviderIndex) +{ + this._generateTestTitle(pTest, pDataProviderIndex); + this.testCount++; + + var dataProvider = pDataProviderIndex !== undefined ? this.dataProvider[pDataProviderIndex] : undefined; + + try + { + pTest.callback(this, dataProvider); + } + catch (e) + { + this.assert(); + + // Expected, but wrong error + if (this._testExpectsError() && e.toSource() !== this.expectedValue.toSource()) { - logging.log("Test \"" + pResult[0] + "\":"); + this._log("error", "Wrong error occurred"); + this._log("warning", "\t\t expected: " + this.expectedValue.toSource()); + this._log("error", "\t\t actual: " + e.toSource()); } - - var message = (pResult[1] ? " - " + pResult[1] : " - Test result ") + ": " + (pResult[2] ? "success" : "fail\nexpected: " + JSON.stringify(pResult[3], null, "\t") + "\nactual: " + JSON.stringify(pResult[4], null, "\t")); - - logging.log(message); - lastTestDescription = pResult[0]; - }, this); - logging.log(this.getSummary().getMessage()); -} \ No newline at end of file + else + { // Unexpected error + this._log("error", "Unexpected error occurred"); + } + + var exception = logging.toLogString(e["rhinoException"] !== undefined ? e["rhinoException"] : e, true); + this._log("error", e.name + ":\n" + exception.replace(/\s+(at|\[->\])\s/g, "\n\t$1 ")); + this._log("error", "jDito callstack:\n" + e.stack); + + if(pTest.rerunOnError) + { + this._log("debug", "Rerun without try-catch to get detailed error stack trace"); + this._print(); + + this.currentTestSuite.preTest(this); + pTest.callback(this, dataProvider); + this.currentTestSuite.postTest(this); + } + } +} diff --git a/process/UnitTest_test/UnitTest_test.aod b/process/UnitTest_test/UnitTest_test.aod new file mode 100644 index 00000000000..095a395529b --- /dev/null +++ b/process/UnitTest_test/UnitTest_test.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>UnitTest_test</name> + <title>[TEST] UnitTest_lib</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/UnitTest_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/UnitTest_test/process.js b/process/UnitTest_test/process.js new file mode 100644 index 00000000000..7d80b7995e4 --- /dev/null +++ b/process/UnitTest_test/process.js @@ -0,0 +1,1141 @@ +import("system.result"); +import("system.vars"); +import("Keyword_lib"); +import("UnitTest_lib"); + + +var equals = new TestSuite("Tester.equals", [ + new Test("should test value equality", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).equals(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + var num = 0; + var str = '0'; + var objStr = new String('0'); + var obj_1 = {a: 1, b: 2, c: 3}; + var obj_2 = {x: null, y: "test", z: true}; + + return [ + [true, num, num], + [true, str, str], + [true, true, true], + [true, objStr, objStr], + [true, obj_1, obj_1], + [true, obj_2, obj_2], + [false, true, false], + [false, obj_1, obj_2], + [false, num, objStr], + [false, num, str], + [false, objStr, str], + [false, null, undefined], + [false, objStr, null], + [false, objStr, undefined], + [false, null, "null"], + ]; + } + ) +]); + +var isGreater = new TestSuite("Tester.isGreater", [ + new Test("should test if value is greater than another", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isGreater(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 1, 0], + [true, 100, 10], + [false, 3, 3], + [false, 0, 5], + [false, 1234, 5678], + ]; + } + ) +]); + +var isGreaterEqual = new TestSuite("Tester.isGreaterEqual", [ + new Test("should test if value is greater or equal than another", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isGreaterEqual(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 1, 0], + [true, 101, 100], + [true, 3, 3], + [false, 0, 5], + [false, 1234, 5678], + ]; + } + ) +]); + +var isLower = new TestSuite("Tester.isLower", [ + new Test("should test if value is lower than another", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isLower(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0, 1], + [true, 10, 100], + [false, 3, 3], + [false, 5, 0], + [false, 5678, 1234], + ]; + } + ) +]); + +var isLowerEqual = new TestSuite("Tester.isLowerEqual", [ + new Test("should test if value is greater or equal than another", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isLowerEqual(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0, 1], + [true, 100, 101], + [true, 3, 3], + [false, 5, 0], + [false, 5678, 1234], + ]; + } + ) +]); + +var isBoolean = new TestSuite("Tester.isBoolean", [ + new Test("should test if value is a boolean", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isBoolean().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, true], + [true, false], + [false, "true"], + [false, "false"], + [false, ""], + [false, "0"], + [false, 0], + [false, new Object()], + [false, []], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isNumber = new TestSuite("Tester.isNumber", [ + new Test("should test if value is a number", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isNumber().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0], + [true, 100], + [true, 33.33333], + [true, 0xFFFFFF], + [true, 0777], // Octal + //[true, 0o777], // New octal format since ECMAScript 2015 + //[true, 0b11111111], // Seems like binary numbers are not supported + [true, 2e6], // Exponentiation + [true, 0.1e2], // Exponentiation + [true, +Infinity], + [true, -Infinity], + [true, NaN], // This should actually fail. Needs fix in Utils + [false, ""], + [false, "0"], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isNumeric = new TestSuite("Tester.isNumeric", [ + new Test("should test if value is numeric", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isNumeric().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0], + [true, 100], + [true, 33.33333], + [true, "0777"], // Octal + [true, "2e6"], // Exponentiation + [true, "0.1e2"], // Exponentiation + [true, +Infinity], + [true, -Infinity], + [true, NaN], // This should actually fail. Needs fix in Utils + [true, "50000"], + [true, "0"], + [false, ""], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isNotANumber = new TestSuite("Tester.isNaN", [ + new Test("should test if value is not NaN", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isNaN().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, NaN], + [false, 0], + [false, 100], + [false, 33.33333], + [false, "0777"], // Octal + [false, "2e6"], // Exponentiation + [false, "0.1e2"], // Exponentiation + [false, +Infinity], + [false, -Infinity], + [false, "50000"], + [false, "0"], + [false, ""], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isInteger = new TestSuite("Tester.isInteger", [ + new Test("should test if value is an integer", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isInteger().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0], + [true, 100], + [true, 0xFFFFFF], + [true, 0777], // Octal + [true, 2e6], // Exponentiation + [true, 0.1e2], // Exponentiation + [true, "0"], + [false, 33.33333], + [false, +Infinity], + [false, -Infinity], + [false, NaN], + [false, ""], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isFloat = new TestSuite("Tester.isFloat", [ + new Test("should test if value is a float", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isFloat().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 33.33333], + [false, 0], + [false, 100], + [false, 0xFFFFFF], + [false, 0777], // Octal + [false, 2e6], // Exponentiation + [false, 0.1e2], // Exponentiation + [false, +Infinity], + [false, -Infinity], + [false, NaN], + [false, ""], + [false, "0"], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isString = new TestSuite("Tester.isString", [ + new Test("should test if value is a string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isString().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, ""], + [true, "Hello"], + [true, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isArray = new TestSuite("Tester.isArray", [ + new Test("should test if value is an array", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isArray().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, []], + [true, ["a", 2, null]], + [true, new Array()], + [false, ""], + [false, "0"], + [false, new Object()], + [false, new Function()], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isObject = new TestSuite("Tester.isObject", [ + new Test("should test if value is an object", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isObject().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, {}], + [true, []], + [true, ["a", 2, null]], + [true, new Array()], + [true, new Object()], + [true, new String("hello")], + [false, new Function()], + [false, ""], + [false, "0"], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isFunction = new TestSuite("Tester.isFunction", [ + new Test("should test if value is a function", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isFunction().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, new Function()], + [true, function(){}], + [true, Math.sin], + [true, Array.isArray], + [false, new Array()], + [false, new Object()], + [false, ""], + [false, "0"], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isNull = new TestSuite("Tester.isNull", [ + new Test("should test if value is null", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isNull().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, null], + [false, ""], + [false, "Hello"], + [false, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, undefined], + ]; + } + ) +]); + +var isUndefined = new TestSuite("Tester.isUndefined", [ + new Test("should test if value is undefined", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isUndefined().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, undefined], + [false, ""], + [false, "Hello"], + [false, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, null], + ]; + } + ) +]); + +var isUpperCase = new TestSuite("Tester.isUpperCase", [ + new Test("should test if value is an uppercase string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isUpperCase().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "HELLO"], + [false, "HeLlo"], + [false, "hello"], + [false, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isLowerCase = new TestSuite("Tester.isLowerCase", [ + new Test("should test if value is a lowercase string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isLowerCase().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "hello"], + [false, "HELLO"], + [false, "HeLlo"], + [false, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var startsWith = new TestSuite("Tester.startsWith", [ + new Test("should test if value starts with a given string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).startsWith(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "Millenium Falcon", "Mill"], + [false, "Millenium Falcon", "MILL"], + [false, "Millenium Falcon", "Abc"], + [false, "Millenium Falcon", "0"], + ]; + } + ) +]); + +var endsWith = new TestSuite("Tester.endsWith", [ + new Test("should test if value ends with a given string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).endsWith(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "Millenium Falcon", "con"], + [false, "Millenium Falcon", "CON"], + [false, "Millenium Falcon", "Abc"], + [false, "Millenium Falcon", "0"], + ]; + } + ) +]); + +var isInstanceOf = new TestSuite("Tester.isInstanceOf", [ + new Test("should test if value is an instance of given class", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isInstanceOf(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, new Tester(), "Tester"], + [true, [], "Array"], + [true, {}, "Object"], + [false, "abc", "String"], + [false, true, "Boolean"], + [false, 0, "Number"], + ]; + } + ) +]); + +var hasLength = new TestSuite("Tester.hasLength", [ + new Test("should test if value has the expected length", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).hasLength(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "", 0], + [true, [], 0], + [true, {}, 0], + [true, "abc", 3], + [true, ["a", "z"], 2], + [true, new String("?!"), 2], + [false, 0, 1], + [false, true, 1], + [false, null, 1], + [false, undefined, 1], + ]; + } + ) +]); + + +var hasMinLength = new TestSuite("Tester.hasMinLength", [ + new Test("should test if value has the expected minimum length", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).hasMinLength(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "", 0], + [true, [], 0], + [true, {}, 0], + [true, "abc", 3], + [true, "abc", 2], + [true, ["a", "z"], 2], + [true, ["a", "z"], 1], + [true, new String("?!"), 2], + [false, "abc", 4], + [false, ["a", "z"], 5], + [false, 0, 1], + [false, true, 1], + [false, null, 1], + [false, undefined, 1], + ]; + } + ) +]); + + +var hasMaxLength = new TestSuite("Tester.hasMaxLength", [ + new Test("should test if value has the expected maximum length", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).hasMaxLength(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "", 0], + [true, [], 0], + [true, {}, 0], + [true, "abc", 3], + [true, "abc", 4], + [true, ["a", "z"], 2], + [true, ["a", "z"], 3], + [true, new String("?!"), 2], + [false, "abc", 2], + [false, ["a", "z"], 1], + [false, 0, 1], + [false, true, 1], + [false, null, 1], + [false, undefined, 1], + ]; + } + ) +]); + +var not = new TestSuite("Tester.not", [ + new Test("should test negation of compare tests", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var method = pDataProvider[1]; + var actualValue = dummyTester.expectThat(pDataProvider[2]).not()[method](pDataProvider[3]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + var num = 0; + var str = '0'; + var objStr = new String('0'); + var obj_1 = {a: 1, b: 2, c: 3}; + var obj_2 = {x: null, y: "test", z: true}; + + return [ + [true, "equals", true, false], + [true, "equals", obj_1, obj_2], + [true, "equals", num, objStr], + [false, "equals", num, num], + [false, "equals", str, str], + [false, "equals", true, true], + [true, "isGreater", 3, 3], + [true, "isGreater", 0, 5], + [true, "isGreater", 1234, 5678], + [false, "isGreater", 1, 0], + [false, "isGreater", 100, 10], + [true, "isGreaterEqual", 0, 5], + [true, "isGreaterEqual", 1234, 5678], + [false, "isGreaterEqual", 1, 0], + [false, "isGreaterEqual", 101, 100], + [false, "isGreaterEqual", 3, 3], + [true, "isLower", 3, 3], + [true, "isLower", 5, 0], + [true, "isLower", 5678, 1234], + [false, "isLower", 0, 1], + [false, "isLower", 10, 100], + [true, "isLowerEqual", 5, 0], + [true, "isLowerEqual", 5678, 1234], + [false, "isLowerEqual", 0, 1], + [false, "isLowerEqual", 100, 101], + [false, "isLowerEqual", 3, 3], + [true, "startsWith", "Millenium Falcon", "MILL"], + [true, "startsWith", "Millenium Falcon", "Abc"], + [true, "startsWith", "Millenium Falcon", "0"], + [false, "startsWith", "Millenium Falcon", "Mill"], + [true, "endsWith", "Millenium Falcon", "CON"], + [true, "endsWith", "Millenium Falcon", "Abc"], + [true, "endsWith", "Millenium Falcon", "0"], + [false, "endsWith", "Millenium Falcon", "con"], + [true, "isInstanceOf", "abc", "String"], + [true, "isInstanceOf", true, "Boolean"], + [true, "isInstanceOf", 0, "Number"], + [false, "isInstanceOf", new Tester(), "Tester"], + [false, "isInstanceOf", [], "Array"], + [false, "isInstanceOf", {}, "Object"], + [true, "hasLength", 0, 1], + [true, "hasLength", true, 1], + [true, "hasLength", null, 1], + [true, "hasLength", undefined, 1], + [false, "hasLength", "", 0], + [false, "hasLength", [], 0], + [false, "hasLength", {}, 0], + [false, "hasLength", "abc", 3], + [false, "hasLength", ["a", "z"], 2], + [false, "hasLength", new String("?!"), 2], + ]; + } + ), + new Test("should test negation of type tests", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var method = pDataProvider[1]; + var actualValue = dummyTester.expectThat(pDataProvider[2]).not()[method]().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "isBoolean", "true"], + [true, "isBoolean", "false"], + [true, "isBoolean", ""], + [true, "isBoolean", "0"], + [true, "isBoolean", 0], + [true, "isBoolean", new Object()], + [true, "isBoolean", []], + [true, "isBoolean", null], + [true, "isBoolean", undefined], + [false, "isBoolean", true], + [false, "isBoolean", false], + [true, "isNumber", ""], + [true, "isNumber", "0"], + [true, "isNumber", new Object()], + [true, "isNumber", []], + [true, "isNumber", true], + [true, "isNumber", null], + [true, "isNumber", undefined], + [false, "isNumber", 0], + [false, "isNumber", 100], + [false, "isNumber", 33.33333], + [false, "isNumber", 0xFFFFFF], + [false, "isNumber", 0777], // Octal + [false, "isNumber", 2e6], // Exponentiation + [false, "isNumber", 0.1e2], // Exponentiation + [false, "isNumber", +Infinity], + [false, "isNumber", -Infinity], + [false, "isNumber", NaN], + [true, "isNumeric", ""], + [true, "isNumeric", new Object()], + [true, "isNumeric", []], + [true, "isNumeric", true], + [true, "isNumeric", null], + [true, "isNumeric", undefined], + [false, "isNumeric", 0], + [false, "isNumeric", 100], + [false, "isNumeric", 33.33333], + [false, "isNumeric", "0777"], // Octal + [false, "isNumeric", "2e6"], // Exponentiation + [false, "isNumeric", "0.1e2"], // Exponentiation + [false, "isNumeric", +Infinity], + [false, "isNumeric", -Infinity], + [false, "isNumeric", NaN], + [false, "isNumeric", "50000"], + [false, "isNumeric", "0"], + [true, "isNaN", 0], + [true, "isNaN", 100], + [true, "isNaN", 33.33333], + [true, "isNaN", "0777"], // Octal + [true, "isNaN", "2e6"], // Exponentiation + [true, "isNaN", "0.1e2"], // Exponentiation + [true, "isNaN", +Infinity], + [true, "isNaN", -Infinity], + [true, "isNaN", "50000"], + [true, "isNaN", "0"], + [true, "isNaN", ""], + [true, "isNaN", new Object()], + [true, "isNaN", []], + [true, "isNaN", true], + [true, "isNaN", null], + [true, "isNaN", undefined], + [false, "isNaN", NaN], + [true, "isInteger", 33.33333], + [true, "isInteger", +Infinity], + [true, "isInteger", -Infinity], + [true, "isInteger", NaN], + [true, "isInteger", ""], + [true, "isInteger", new Object()], + [true, "isInteger", []], + [true, "isInteger", true], + [true, "isInteger", null], + [true, "isInteger", undefined], + [false, "isInteger", 0], + [false, "isInteger", 100], + [false, "isInteger", 0xFFFFFF], + [false, "isInteger", 0777], // Octal + [false, "isInteger", 2e6], // Exponentiation + [false, "isInteger", 0.1e2], // Exponentiation + [false, "isInteger", "0"], + [true, "isFloat", 0], + [true, "isFloat", 100], + [true, "isFloat", 0xFFFFFF], + [true, "isFloat", 0777], // Octal + [true, "isFloat", 2e6], // Exponentiation + [true, "isFloat", 0.1e2], // Exponentiation + [true, "isFloat", +Infinity], + [true, "isFloat", -Infinity], + [true, "isFloat", NaN], + [true, "isFloat", ""], + [true, "isFloat", "0"], + [true, "isFloat", new Object()], + [true, "isFloat", []], + [true, "isFloat", true], + [true, "isFloat", null], + [true, "isFloat", undefined], + [false, "isFloat", 33.33333], + [true, "isString", new String('Hello')], + [true, "isString", []], + [true, "isString", 0], + [true, "isString", true], + [true, "isString", null], + [true, "isString", undefined], + [false, "isString", ""], + [false, "isString", "Hello"], + [false, "isString", "0"], + [true, "isArray", ""], + [true, "isArray", "0"], + [true, "isArray", new Object()], + [true, "isArray", new Function()], + [true, "isArray", 0], + [true, "isArray", true], + [true, "isArray", null], + [true, "isArray", undefined], + [false, "isArray", []], + [false, "isArray", ["a", 2, null]], + [false, "isArray", new Array()], + [true, "isObject", new Function()], + [true, "isObject", ""], + [true, "isObject", "0"], + [true, "isObject", 0], + [true, "isObject", true], + [true, "isObject", null], + [true, "isObject", undefined], + [false, "isObject", {}], + [false, "isObject", []], + [false, "isObject", ["a", 2, null]], + [false, "isObject", new Array()], + [false, "isObject", new Object()], + [false, "isObject", new String("hello")], + [true, "isFunction", new Array()], + [true, "isFunction", new Object()], + [true, "isFunction", ""], + [true, "isFunction", "0"], + [true, "isFunction", 0], + [true, "isFunction", true], + [true, "isFunction", null], + [true, "isFunction", undefined], + [false, "isFunction", new Function()], + [false, "isFunction", function(){}], + [false, "isFunction", Math.sin], + [false, "isFunction", Array.isArray], + [true, "isNull", ""], + [true, "isNull", "Hello"], + [true, "isNull", "0"], + [true, "isNull", new String('Hello')], + [true, "isNull", []], + [true, "isNull", 0], + [true, "isNull", true], + [true, "isNull", undefined], + [false, "isNull", null], + [true, "isUndefined", ""], + [true, "isUndefined", "Hello"], + [true, "isUndefined", "0"], + [true, "isUndefined", new String('Hello')], + [true, "isUndefined", []], + [true, "isUndefined", 0], + [true, "isUndefined", true], + [true, "isUndefined", null], + [false, "isUndefined", undefined], + [true, "isUpperCase", "HeLlo"], + [true, "isUpperCase", "hello"], + [true, "isUpperCase", "0"], + [true, "isUpperCase", new String('Hello')], + [true, "isUpperCase", []], + [true, "isUpperCase", 0], + [true, "isUpperCase", true], + [true, "isUpperCase", null], + [true, "isUpperCase", undefined], + [false, "isUpperCase", "HELLO"], + [true, "isLowerCase", "HELLO"], + [true, "isLowerCase", "HeLlo"], + [true, "isLowerCase", "0"], + [true, "isLowerCase", new String('Hello')], + [true, "isLowerCase", []], + [true, "isLowerCase", 0], + [true, "isLowerCase", true], + [true, "isLowerCase", null], + [true, "isLowerCase", undefined], + [false, "isLowerCase", "hello"], + ]; + } + ), + new Test("should not affect other assertions", + function(pTester) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + //first assertion with not()-call + var expectValue = true; + var actualValue = dummyTester.expectThat("this value").not().equals("that other value").getTestResult(); + pTester.expectThat(actualValue).equals(expectValue).assert(); + + //second test without not()-call => the first not()-call should not affect the second assertion + expectValue = false; + actualValue = dummyTester.expectThat("this value").equals("that other value").getTestResult(); + pTester.expectThat(actualValue).equals(expectValue).assert(); + } + ) +]); + +var elementAt = new TestSuite("Tester.elementAt", [ + new Test("should test if value element at key position passes test", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var key = pDataProvider[2]; + var method = pDataProvider[3]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).elementAt(key)[method](pDataProvider[4]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, ["a", "z", ["x", true, 42]], 0, "isString", undefined], + [true, ["a", "z", ["x", true, 42]], 1, "equals", "z"], + [true, ["a", "z", ["x", true, 42]], 2, "isArray", undefined], + [true, ["a", "z", ["x", true, 42]], 2, "hasLength", 3], + [true, ["a", "z", {"first": "x", "second": true}], 2, "isObject", undefined], + [true, ["a", "z", {"first": "x", "second": true}], 2, "hasLength", 2], + [false, ["a", "z", ["x", true, 42]], 0, "isNumeric", undefined], + [false, ["a", "z", ["x", true, 42]], 1, "equals", "a"], + [false, ["a", "z", ["x", true, 42]], 2, "isString", undefined], + [false, ["a", "z", ["x", true, 42]], 2, "hasLength", 1], + [false, ["a", "z", {"first": "x", "second": true}], 2, "isArray", undefined], + [false, ["a", "z", {"first": "x", "second": true}], 2, "hasLength", 1], + ]; + } + ), + new Test("should test if nested value element at key position passes test", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var key1 = pDataProvider[2]; + var key2 = pDataProvider[3]; + var method = pDataProvider[4]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).elementAt(key1).elementAt(key2)[method](pDataProvider[5]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, [["x", true, [42]]], 0, 0, "isString", undefined], + [true, [["x", true, [42]]], 0, 0, "equals", "x"], + [true, [["x", true, [42]]], 0, 1, "isBoolean", undefined], + [true, [["x", true, [42]]], 0, 1, "equals", true], + [true, [["x", true, [42]]], 0, 2, "isArray", undefined], + [true, [{"first": "a", "second": 42}], 0, "first", "equals", "a"], + [true, [{"first": "a", "second": 42}], 0, "second", "equals", 42], + [true, {"outer": {"inner": "a"}}, "outer", "inner", "isString", undefined], + [true, {"outer": {"inner": "a"}}, "outer", "inner", "equals", "a"], + [false, [["x", true, [42]]], 0, 1, "equals", "a"], + [false, [["x", true, [42]]], 0, 2, "isNumber", undefined], + [false, {"outer": {"inner": "a"}}, "outer", "inner", "isNumber", undefined], + ]; + } + ) +]); + +var getCoverageRate = new TestSuite("Tester._getCoverageRate", [ + new Test("should test if coverage is correctly calculated", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + dummyTester.methods = pDataProvider[1]; + dummyTester.methodsCalled = pDataProvider[2]; + var actualValue = dummyTester._getCoverageRate(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [100, ["method1", "method2", "method3"], ["method1", "method2", "method3"]], + [33.33, ["method1", "method2", "method3"], ["method1"]], + [66.67, ["method1", "method2", "method3"], ["method1", "method2"]], + [100, ["method1"], ["method1", "method2", "method3"]], + [0, ["method1"], []], + [0, [], ["method1"]], + [null, [], []], + ]; + } + ) +]); + +var getLength = new TestSuite("Tester._getLength", [ + new Test("should test if value has the expected length", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[1]; + var actualValue = dummyTester._getLength(pDataProvider[0]); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + ["", 0], + [[], 0], + [{}, 0], + ["abc", 3], + [["a", "z"], 2], + [new String("?!"), 2], + [{first: "xyz"}, 1], + [0, undefined], + [true, undefined], + [null, undefined], + [undefined, undefined], + ]; + } + ) +]); + + + +var tester = new Tester("Test UnitTest_lib"); +tester.initCoverage(Tester); +tester.test(equals); +tester.test(isGreater); +tester.test(isGreaterEqual); +tester.test(isLower); +tester.test(isLowerEqual); +tester.test(isBoolean); +tester.test(isNumber); +tester.test(isNumeric); +tester.test(isNotANumber); +tester.test(isInteger); +tester.test(isFloat); +tester.test(isString); +tester.test(isArray); +tester.test(isObject); +tester.test(isFunction); +tester.test(isNull); +tester.test(isUndefined); +tester.test(isUpperCase); +tester.test(isLowerCase); +tester.test(startsWith); +tester.test(endsWith); +tester.test(isInstanceOf); +tester.test(hasLength); +tester.test(hasMinLength); +tester.test(hasMaxLength); +tester.test(not); +tester.test(elementAt); +tester.test(getCoverageRate); +tester.test(getLength); + +tester.summary(); + +result.object(tester.getResults()); diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index 9dc7208091d..97545be1730 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -183,6 +183,39 @@ Utils.isNumber = function (pValue) return typeof pValue === "number"; } +/** + * Checks if the given value is numeric. + * + * @param {Object} pValue the value to check + * @return {Boolean} true if the value is numeric + */ +Utils.isNumeric = function (pValue) +{ + return Utils.isNumber(pValue) || (!isNaN(parseFloat(pValue)) && isFinite(pValue)); +} + +/** + * Checks if the given value is an integer. + * + * @param {Object} pValue the value to check + * @return {Boolean} true if the value is an integer + */ +Utils.isInteger = function (pValue) +{ + return Number.isInteger(parseFloat(pValue)) && isFinite(pValue); +} + +/** + * Checks if the given value is a floating point number. + * + * @param {Object} pValue the value to check + * @return {Boolean} true if the value is a float + */ +Utils.isFloat = function (pValue) +{ + return !Number.isInteger(parseFloat(pValue)) && !isNaN(parseFloat(pValue)) && isFinite(pValue); +} + /** * Checks if the given value is an object. Be careful, null is also considered "object". * @@ -191,7 +224,7 @@ Utils.isNumber = function (pValue) */ Utils.isObject = function (pValue) { - return typeof pValue === "object"; + return typeof pValue === "object" && pValue !== null; } /** diff --git a/process/_all_test/_all_test.aod b/process/_all_test/_all_test.aod new file mode 100644 index 00000000000..4336a9ddb94 --- /dev/null +++ b/process/_all_test/_all_test.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>_all_test</name> + <title>[TEST] .All</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/_all_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/_all_test/process.js b/process/_all_test/process.js new file mode 100644 index 00000000000..cbc75f35849 --- /dev/null +++ b/process/_all_test/process.js @@ -0,0 +1,23 @@ +import("system.logging"); +import("system.process"); +import("UnitTest_lib"); +import("Terminal_lib"); + + +var testResults = []; + +process.getProcesses([process.VARIANT_EXECUTABLE]).forEach(function(pProcessName) { + // Run all executable processes ending with "_test" except THIS one + if(pProcessName !== "_all_test" && pProcessName.substr(-5, 5) === "_test") { + var startConfig = process.createStartConfig().setName(pProcessName); + var testResult = JSON.parse(process.start(startConfig)); + + if(testResult !== null && typeof testResult === "object") { + testResults.push(testResult); + } + } +}); + +var tester = new Tester(""); +tester.summary(testResults); + -- GitLab From bc67ab8720d96985af20b85e2483beaab2b96ae5 Mon Sep 17 00:00:00 2001 From: Johannes Goderbauer <j.goderbauer@adito.de> Date: Fri, 30 Oct 2020 08:17:53 +0000 Subject: [PATCH 046/184] Merge branch '#1065112-unit-test' into '2020.2' #1065112 unit test See merge request xrm/basic!461 (cherry picked from commit 4028739296154fe0f0e9ffb41e64d1a16cad0563) 10c27fe4 #1065112: Massively refactored and extended UnitTest_lib including a collection runner 410b3453 #1065112: Update existing and add new UnitTests 34d19ace #1065112: Implement code coverage for Unit Tests 6d7e775d #1065112: Implement data providers for tests e34f25b5 #1065112: Implement new string tests 0946c2ae #1065112: Switch data provider values for more consistency 67067782 #1065112: Documentation and some bug fixing 23de5e48 #1065112: Add coverage method count to output fd7bb172 #1065112: Merge and update equality methods and add documentation 36412ea0 #1065112: Implement more tests 35dc9252 #1065112: Fix KeywordAttribute test 60f74598 #1065112: Add documentation b2978f57 #1065112: Refactor test coverage b7c9e55a #1065112: Add and improve documentation 6d505996 #1065112: Fix typo in docs d05a4851 #1065112: Introduce display values for assertion and add stacktrace to errors 9ee07194 #1065112: Fix test process config 7d4fe5e4 #1065112: Implement rerun option for tests and improve exception handling df86e7c7 #1065112: Implement test negation and therefore needed assert description generation a5f3c230 #1065112: Fix failing keyword tests 619c88a4 #1065112: Improve exception handling 3eeaeb20 #1065112: Update keyword tests aad8fb8f #1065112: Implement `elementAt()` and update tests d3314c2d #1065112: Implement `hasMinLength()` and `hasMaxLength()` and update tests 873b3d41 #1065112: Reorder and rename methods, add documentation and update tests accordingly d403e025 #1065112: Adapt coding guidelines e32568de Bugfix: UnitTest_lib applied not()-call for all assertions aae3b3f4 Split Sql_test into SqlBuilder_test and SqlMaskingUtils_test b3608380 Disabled faulty Keyword_test --- .../KeywordAttribute_test.aod | 12 + process/KeywordAttribute_test/process.js | 144 ++ process/Keyword_test/Keyword_test.aod | 12 + process/Keyword_test/process.js | 143 ++ process/SqlBuilder_test/SqlBuilder_test.aod | 12 + process/SqlBuilder_test/process.js | 1266 +++++++++++++++ process/SqlLib_tests/process.js | 1015 ------------ .../SqlMaskingUtils_test.aod | 12 + process/SqlMaskingUtils_test/process.js | 158 ++ process/Sql_lib/documentation.adoc | 4 +- .../Terminal_lib.aod} | 6 +- process/Terminal_lib/process.js | 342 ++++ process/UnitTest_lib/UnitTest_lib.aod | 1 + process/UnitTest_lib/process.js | 1374 ++++++++++++++--- process/UnitTest_test/UnitTest_test.aod | 12 + process/UnitTest_test/process.js | 1141 ++++++++++++++ process/Util_lib/process.js | 35 +- process/_all_test/_all_test.aod | 12 + process/_all_test/process.js | 23 + 19 files changed, 4531 insertions(+), 1193 deletions(-) create mode 100644 process/KeywordAttribute_test/KeywordAttribute_test.aod create mode 100644 process/KeywordAttribute_test/process.js create mode 100644 process/Keyword_test/Keyword_test.aod create mode 100644 process/Keyword_test/process.js create mode 100644 process/SqlBuilder_test/SqlBuilder_test.aod create mode 100644 process/SqlBuilder_test/process.js delete mode 100644 process/SqlLib_tests/process.js create mode 100644 process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod create mode 100644 process/SqlMaskingUtils_test/process.js rename process/{SqlLib_tests/SqlLib_tests.aod => Terminal_lib/Terminal_lib.aod} (67%) create mode 100644 process/Terminal_lib/process.js create mode 100644 process/UnitTest_test/UnitTest_test.aod create mode 100644 process/UnitTest_test/process.js create mode 100644 process/_all_test/_all_test.aod create mode 100644 process/_all_test/process.js diff --git a/process/KeywordAttribute_test/KeywordAttribute_test.aod b/process/KeywordAttribute_test/KeywordAttribute_test.aod new file mode 100644 index 00000000000..5956980e85a --- /dev/null +++ b/process/KeywordAttribute_test/KeywordAttribute_test.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>KeywordAttribute_test</name> + <title>[TEST] KeywordAttribute_lib</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/KeywordAttribute_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/KeywordAttribute_test/process.js b/process/KeywordAttribute_test/process.js new file mode 100644 index 00000000000..888e3a79bc3 --- /dev/null +++ b/process/KeywordAttribute_test/process.js @@ -0,0 +1,144 @@ +import("system.result"); +import("system.translate"); +import("system.vars"); +import("Keyword_lib"); +import("UnitTest_lib"); +import("Sql_lib"); + + +var constructor = new TestSuite("KeywordAttribute.constructor", [ + new Test("should throw error if no data is found and no default value is defined", + function(pTester) { + var exception = new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", ["contacts", "AddressType"])); + pTester.expectThat(function() { + new KeywordAttribute("AddressType", "contacts"); + }).throwsException(exception).assert(); + } + ), + + new Test("should not throw error if no data is found but default value is defined", + function(pTester) { + pTester.expectThat(function() { + new KeywordAttribute("AddressType", "contact", "testDefault"); + }).not().throwsException().assert(); + } + ), +]); + + +var getValue = new TestSuite("KeywordAttribute.getValue", [ + new Test("should throw error if attribute does not exist in container and no default value is defined", + function(pTester) { + var exception = new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", ["asdf", "AddressType"])); + + pTester.expectThat(function() { + var ka = new KeywordAttribute("AddressType", "asdf"); + ka.getValue("abc"); + }).throwsException(exception).assert(); + } + ), + + new Test("should throw error if attribute is not assigned to keyword and no default value is defined", + function(pTester) { + var exception = new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword \"%1\" from container \"%2\"", ["contact", "abc", "AddressType"])); + + pTester.expectThat(function() { + var ka = new KeywordAttribute("AddressType", "contact"); + ka.getValue("abc"); + }).throwsException(exception).assert(); + } + ), + + new Test("should return default value if defined but attribute does not exist in container", + function(pTester) { + var ka = new KeywordAttribute("AddressType", "asdf", "testDefault"); + var actualValue = ka.getValue("HOMEADDR"); + + pTester.expectThat(actualValue).equals("testDefault").assert(); + } + ), + + new Test("should return default value if defined and attribute exists in container but is not assigned to keyword", + function(pTester) { + var ka = new KeywordAttribute("AddressType", "contact", "testDefault"); + var actualValue = ka.getValue("abc"); + + pTester.expectThat(actualValue).equals("testDefault").assert(); + } + ), + + new Test("should return keywords boolean value (actually a number)", + function(pTester) { + var ka = new KeywordAttribute("AddressType", "organisation"); + var actualValue = ka.getValue("HOMEADDR"); + + pTester.expectThat(actualValue).isNumeric().assert(); + pTester.expectThat(actualValue).equals("0").assert(); + } + ), + + new Test("should return keywords number value (actually a string)", + function(pTester) { + var ka = new KeywordAttribute("PaymentTerm", "dayNumber"); + var actualValue = ka.getValue("PAYTERM30"); + + pTester.expectThat(actualValue).isNumeric().assert(); + pTester.expectThat(actualValue).isString().assert(); + pTester.expectThat(actualValue).equals("30.00").assert(); + } + ), + + new Test("should return keywords char value (string)", + function(pTester) { + var ka = new KeywordAttribute("TaskStatus", "icon"); + var actualValue = ka.getValue("ASSIGNED"); + + pTester.expectThat(actualValue).isString().assert(); + pTester.expectThat(actualValue).equals("NEON:STATUS_ASSIGNED").assert(); + } + ), + + new Test("should return keywords long char value (string)", + function(pTester) { + var ka = new KeywordAttribute("TicketType", "attributes"); + var actualValue = ka.getValue("SUPPORTTICKET"); + + pTester.expectThat(actualValue).isString().assert(); + pTester.expectThat(actualValue).equals('["ff8b1caf-cf30-4edb-b5ca-a9a219ba8399"]').assert(); + } + ), +]); + + +var getSqlBuilderSelect = new TestSuite("KeywordAttribute.getSqlBuilderSelect", [ + new Test("should return a SqlBuilder instance", + function(pTester) { + var ka = new KeywordAttribute("MemberRole", "Intern"); + /** @type {SqlBuilder} */ + var actualValue = ka.getSqlBuilderSelect(); + + var expectQueryResult = [ + "039fd6ae-b4ad-431e-86bf-59ed2f4df0a9", + "8cb1b843-713a-4193-aa50-9f5ca06820f8", + "9c421b0b-8529-4e07-9463-28d59fd027b6", + "b72294cd-3a46-4f71-ab93-72824f63f7f4", + "f78f229f-f809-4bd2-aca8-24e2f82fa220", + ]; + var actualQueryResult = actualValue.orderBy("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID").arrayColumn(); + + pTester.expectThat(actualValue).isInstanceOf("SqlBuilder").assert(); + pTester.expectThat(actualQueryResult).equals(expectQueryResult).assert(); + } + ), +]); + + +var tester = new Tester("Test KeywordAttribute_lib"); +tester.initCoverage(KeywordAttribute); +tester.test(constructor); +tester.test(getValue); +tester.test(getSqlBuilderSelect); + +tester.summary(); + +result.object(tester.getResults()); diff --git a/process/Keyword_test/Keyword_test.aod b/process/Keyword_test/Keyword_test.aod new file mode 100644 index 00000000000..e654f56663b --- /dev/null +++ b/process/Keyword_test/Keyword_test.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>Keyword_test</name> + <title>[TEST] Keyword_lib</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/Keyword_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/Keyword_test/process.js b/process/Keyword_test/process.js new file mode 100644 index 00000000000..d1b1d910e9d --- /dev/null +++ b/process/Keyword_test/process.js @@ -0,0 +1,143 @@ +import("system.result"); +import("system.translate"); +import("system.vars"); +import("Keyword_lib"); +import("UnitTest_lib"); + +//this test will not work currently +//TODO: renable and fix the tests + +//var getContainerNames = new TestSuite("KeywordUtils.getContainerNames", [ +// new Test("should return an alphabetically ascending ordered list of all keyword containers", +// function(pTester) { +// var actualValue = KeywordUtils.getContainerNames(); +// +// pTester.expectThat(actualValue).isArray().assert(); +// pTester.expectThat(actualValue).hasMinLength(1).assert(); +// pTester.expectThat(actualValue).elementAt(0).equals("ActivityCategory").assert(); +// pTester.expectThat(actualValue).elementAt(-1).equals("YesNo").assert(); +// } +// ) +//]); +// +// +//var getCategoryNameById = new TestSuite("KeywordUtils.getCategoryNameById", [ +// new Test("should return existing keyword category name for correct uuid", +// function(pTester) { +// var actualValue = KeywordUtils.getCategoryNameById("a55654b1-6a19-4d0c-b08d-cfbc12b5f7b0"); +// +// pTester.expectThat(actualValue).equals("MemberRole").assert(); +// } +// ), +// +// new Test("should return non-existing keyword category name for wrong uuid", +// function(pTester) { +// var actualValue = KeywordUtils.getCategoryNameById("a55654b1-6a19-4d0c-b08d-cfbc12b5f7b1"); +// +// pTester.expectThat(actualValue).equals("<unknown>").assert(); +// } +// ), +// +// new Test("should return non-existing keyword category name for missing uuid", +// function(pTester) { +// var actualValue = KeywordUtils.getCategoryNameById(); +// +// pTester.expectThat(actualValue).equals("<unknown>").assert(); +// } +// ), +//]); +// +// +//var getCategoryIdByName = new TestSuite("KeywordUtils.getCategoryIdByName", [ +// new Test("should return existing keyword uuid for correct category name", +// function(pTester) { +// var actualValue = KeywordUtils.getCategoryIdByName("MemberRole"); +// +// pTester.expectThat(actualValue).equals("a55654b1-6a19-4d0c-b08d-cfbc12b5f7b0").assert(); +// } +// ), +// +// new Test("should throw exception for wrong keyword category name", +// function(pTester) { +// var exception = new Error(translate.withArguments("no keyword category \"%0\" found", ["AddressTypes"])); +// pTester.expectThat(function() { +// KeywordUtils.getCategoryIdByName("AddressTypes"); +// }).throwsException(exception).assert(); +// } +// ), +// +// new Test("should throw exception for missing keyword category name", +// function(pTester) { +// var exception = new Error(translate.withArguments("no keyword category \"%0\" found", [""])); +// pTester.expectThat(function() { +// KeywordUtils.getCategoryIdByName(); +// }).throwsException(exception).assert(); +// } +// ), +//]); +// +// +//var getEntryNamesAndIdsByContainer = new TestSuite("KeywordUtils.getEntryNamesAndIdsByContainer", [ +// new Test("should return an array of all keywords and their ID's for given container", +// function(pTester) { +// var actualValue = KeywordUtils.getEntryNamesAndIdsByContainer("ActivityDirection"); +// +// pTester.expectThat(actualValue).isArray().assert(); +// pTester.expectThat(actualValue).hasMinLength(1, {name: "array"}).assert(); +// pTester.expectThat(actualValue).elementAt(0).isArray().assert(); +// pTester.expectThat(actualValue).elementAt(0).hasLength(2).assert(); +// } +// ), +// +// new Test("should return an empty array for non-existent container", +// function(pTester) { +// var actualValue = KeywordUtils.getEntryNamesAndIdsByContainer("Asdf"); +// +// pTester.expectThat(actualValue).isArray().assert(); +// pTester.expectThat(actualValue).hasLength(0, {name: "array"}).assert(); +// } +// ), +//]); +// +// +//var exists = new TestSuite("KeywordUtils.exists", [ +// new Test("should return a boolean indicating that a known keyword in a known container exists", +// function(pTester) { +// var actualValue = KeywordUtils.exists("VISIT", "ActivityCategory"); +// +// pTester.expectThat(actualValue).isBoolean().assert(); +// pTester.expectThat(actualValue).equals(true, "known keyword exists in known container").assert(); +// } +// ), +// +// new Test("should return a boolean indicating that an unknown keyword in a known container does not exist", +// function(pTester) { +// var actualValue = KeywordUtils.exists("ASDF", "ActivityCategory"); +// +// pTester.expectThat(actualValue).isBoolean().assert(); +// pTester.expectThat(actualValue).equals(false, "unknown keyword does not exist in known container").assert(); +// } +// ), +// +// new Test("should return a boolean indicating that a known keyword in an unknown container does not exist", +// function(pTester) { +// var actualValue = KeywordUtils.exists("VISIT", "Asdf"); +// +// pTester.expectThat(actualValue).isBoolean().assert(); +// pTester.expectThat(actualValue).equals(false, "known keyword does not exist in unknown container").assert(); +// } +// ), +//]); +// +// +//var tester = new Tester("Test Keyword_lib"); +//tester.initCoverage(KeywordUtils); +//tester.test(getContainerNames); +//tester.test(getCategoryNameById); +//tester.test(getCategoryIdByName); +//tester.test(getEntryNamesAndIdsByContainer); +//tester.test(exists); +// +//tester.summary(); +// +//result.object(tester.getResults()); \ No newline at end of file diff --git a/process/SqlBuilder_test/SqlBuilder_test.aod b/process/SqlBuilder_test/SqlBuilder_test.aod new file mode 100644 index 00000000000..39922829116 --- /dev/null +++ b/process/SqlBuilder_test/SqlBuilder_test.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>SqlBuilder_test</name> + <title>[TEST] Sql_lib - SqlBuilder</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/SqlBuilder_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/SqlBuilder_test/process.js b/process/SqlBuilder_test/process.js new file mode 100644 index 00000000000..3ec9ec86ddb --- /dev/null +++ b/process/SqlBuilder_test/process.js @@ -0,0 +1,1266 @@ +import("system.db"); +import("system.result"); +import("system.vars"); +import("system.translate"); +import("system.logging"); +import("system.SQLTYPES"); +import("Sql_lib"); +import("UnitTest_lib"); + +//SqlBuilder-tests: +var newSelectTests = new TestSuite("SqlLib.newSelect", [ + new Test("newSelect with just a string should just use it as select", + function(pTester) + { + var actualValue = newSelect("MySuper, Field, String") + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select MySuper, Field, String").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("newSelect with just an array of strings should just use them concatenated as select", + function(pTester) + { + var actualValue = newSelect(["MySuper", "Field", "String"]) + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select MySuper, Field, String").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("newSelect with just an SqlBuilder should use it as subselect", + function(pTester) + { + var actualValue = newSelect(new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz")) + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("newSelect an array of Strings and SqlBuilders should add them all", + function(pTester) + { + var actualValue = newSelect(["MySuper", "Field", "String", new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz")]) + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select MySuper, Field, String, (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert(); + } + ), +]); + + +var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [ + new Test("and should just add simple strings as condition just as it is", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?" + .and("PERSON.LASTNAME = 'Admin'") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = 'Tim' and PERSON.LASTNAME = 'Admin'").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("and should add a condition if field and value are passed", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and should add a condition if value is an empty string", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "") + .and("PERSON.LASTNAME", "") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and should add a condition if field and value as jdito-var are passed", + function(pTester) + { + vars.set("$global.TestUnitValueName", "Tim"); + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "$global.TestUnitValueName") + + pTester.expectThat(actualValue.toString()).equals("( PERSON.FIRSTNAME = 'Tim' ) ").assert(); + } + ), + + new Test("$ should be escaped by a second $ and the string should therefore just be used as string and not as jdito variable", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "$$mySuperString") + + pTester.expectThat(actualValue.toString()).equals("( PERSON.FIRSTNAME = '$mySuperString' ) ").assert(); + } + ), + + new Test("and should add a condition if value is a jdito-var containing an empty string", + function(pTester) + { + vars.set("$global.TestingVarEmptyString", ""); + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "$global.TestingVarEmptyString") + .and("PERSON.LASTNAME", "$global.TestingVarEmptyString") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and should use the given condition pattern", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim", "# <> ?") + .and("PERSON.LASTNAME", "Admin") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME <> ? and PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and should use the given SQLTYPE if provided", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", 6, null, SQLTYPES.INTEGER) + .and("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER) + .and("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and PERSON.LASTNAME <> ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(3).assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(0).elementAt(1).equals(SQLTYPES.INTEGER).assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(1).elementAt(1).equals(SQLTYPES.INTEGER).assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(2).elementAt(1).equals(SQLTYPES.INTEGER).assert(); + } + ), + + new Test("and only with a prepared statement-array should just use it as it is", + function(pTester) + { + var actualValue = new SqlBuilder() + .where([ + "PERSON.FIRSTNAME = ?", [["Peter", 12]] + ]) + .and([ + "exists (select * FROM CONTACT where PERSON_ID = PERSONID)", [] + ]) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? ) and ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("and only with a SqlBulder object should just use the condition from it", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(new SqlBuilder() + .select("TEST") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and with a builder as value and condition (field is null|undefined) should add the whole builder as subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(null, new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin"), + "exists ?") // Note: you can use SqlBuilder.EXISTS() instead of "exists ?" + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and with a builder as value and field should add the whole builder as subquery with field = (subquery)", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and with a prepared statement-array as value and field is null|undefined should add the whole statement as subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?") + .and(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) and ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and with a prepared statement-array as value and field should add the whole statement as subquery with field = (subquery)", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]]) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), +]); + + +var validOrUsageTests = new TestSuite("SqlLib.validOrUsage", [ + new Test("or should just add simple strings as condition just as it is", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?" + .or("PERSON.LASTNAME = 'Admin'") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = 'Tim' or PERSON.LASTNAME = 'Admin'").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("or should add a condition if field and value are passed", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or should use the given condition pattern", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim", "# <> ?") + .or("PERSON.LASTNAME", "Admin") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME <> ? or PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or should use the given SQLTYPE if provided", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", 6, null, SQLTYPES.INTEGER) + .or("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER) + .or("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? or PERSON.LASTNAME <> ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(3).assert(); + } + ), + + new Test("or only with a prepared statement-array should just use it as it is", + function(pTester) + { + var actualValue = new SqlBuilder() + .where([ + "PERSON.FIRSTNAME = ?", [["Peter", 12]] + ]) + .or([ + "exists (select * FROM CONTACT where PERSON_ID = PERSONID)", [] + ]) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? ) or ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("or only with a SqlBulder object should just use the condition from it", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or with a builder as value and condition (field is null|undefined) should add the whole builder as subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(null, new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin"), + "exists ?") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or with a builder as value and field should add the whole builder as subquery with field = (subquery)", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or with a prepared statement-array as value and field is null|undefined should add the whole statement as subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?") + .or(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) or ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), +]); + +var combinedAndOrTests = new TestSuite("SqlLib.combinedAndOr", [ + new Test("or combining two and", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin") + .or(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .and("PERSON.LASTNAME", "Müller")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("(PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?) or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(4).assert(); + } + ), + + new Test("and combining two or", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin")) + .and(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .or("PERSON.LASTNAME", "Müller")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(4).assert(); + } + ), + + new Test("some and/or combinations in one select", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.FIRSTNAME", "Franz") + .and("PERSON.LASTNAME", "Admin") + .and(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .or("PERSON.LASTNAME", "Müller")) + .or("PERSON.FIRSTNAME", "Franz") + .and("PERSON.FIRSTNAME", "Franz") + .or(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .and("PERSON.LASTNAME", "Müller") + .and(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .or("PERSON.LASTNAME", "Müller"))) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) or (PERSON.FIRSTNAME = ?) and PERSON.FIRSTNAME = ? or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(11).assert(); + } + ), +]); + + +var ifSetTests = new TestSuite("SqlLib.ifSet", [ + new Test("simple and if set with all types of empty values.", + function(pTester) + { + var actualValue = new SqlBuilder() + .whereIfSet("PERSON.LASTNAME", null) + .andIfSet("PERSON.LASTNAME", undefined) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert(); + } + ), + + new Test("jdito variable with null", + function(pTester) + { + vars.set("$global.TestingVarNull", null); + + var actualValue = new SqlBuilder() + .whereIfSet("PERSON.FIRSTNAME", "$global.TestingVarNull") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert(); + } + ), + + new Test("empty simple conditions", + function(pTester) + { + var actualValue = new SqlBuilder() + .whereIfSet("") + .andIfSet(["", []]) + .andIfSet(new SqlBuilder()) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert(); + } + ), + + new Test("empty subqueries", + function(pTester) + { + var actualValue = new SqlBuilder() + .whereIfSet("PERSON.FIRSTNAME", ["", []]) + .andIfSet("PERSON.LASTNAME", new SqlBuilder()) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert(); + } + ), +]); + + +function cleanWrapperTests() +{ + try { + db.runStatement("drop table SQL_LIB_TEST_TABLE"); + } catch(ex) {} + + try { + db.deleteData("PERSON", "PERSONID in ('TEST-5', 'TEST-6')") + } catch(ex) {} + +} + + +var dbWrapperTests = new TestSuite("SqlLib.dbWrapper", [ + new Test("cell should load only one value", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.PERSONID", "TEST-5") + var actualValue = builder.cell() + + pTester.expectThat(actualValue).equals("Franz").assert(); + } + ), + + new Test("cell should just return '' if no condition set but pExecuteOnlyIfConditionExists is true", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + var actualValue = builder.cell(true) + + pTester.expectThat(actualValue).equals("").assert(); + } + ), + + new Test("cell should return a value if no condition set and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON"); + + var actualValue = builder.cell(false) + + pTester.expectThat(actualValue).not().equals("").assert(); + pTester.expectThat(actualValue).not().isNull().assert(); + pTester.expectThat(actualValue).not().isUndefined().assert(); + } + ), + + new Test("array should load an array of values", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON") + .where("PERSON.PERSONID", "TEST-5"); + + var actualValue = builder.array(db.ROW); + pTester.expectThat(actualValue).elementAt(0).equals("Franz", {name: "firstname"}).assert(); + pTester.expectThat(actualValue).elementAt(1).equals("Müller", {name: "lastname"}).assert(); + } + ), + + new Test("array should return an empty array if no condition set but pExecuteOnlyIfConditionExists is true", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON") + + var actualValue = builder.array(db.ROW, true); + pTester.expectThat(actualValue).hasLength(0).assert(); + } + ), + + new Test("array should return a non-empty array if no condition set and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON") + + var actualValue = builder.array(db.ROW, false); + pTester.expectThat(actualValue).hasMinLength(1).assert(); + } + ), + + new Test("table should load an array of arrays with values", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON") + .where("PERSON.PERSONID", "TEST-5") + .or("PERSON.PERSONID", "TEST-6") + .orderBy("PERSONID asc"); + + var actualValue = builder.table(); + pTester.expectThat(actualValue).elementAt(0).elementAt(0).equals("Franz", {name: "firstname"}).assert(); + pTester.expectThat(actualValue).elementAt(0).elementAt(1).equals("Müller", {name: "lastname"}).assert(); + + pTester.expectThat(actualValue).elementAt(1).elementAt(0).equals("Marco", {name: "firstname"}).assert(); + pTester.expectThat(actualValue).elementAt(1).elementAt(1).equals("Polo", {name: "lastname"}).assert(); + } + ), + + new Test("table should return an empty array if no condition set but pExecuteOnlyIfConditionExists is true", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON"); + + var actualValue = builder.table(true); + + pTester.expectThat(actualValue).hasLength(0).assert(); + } + ), + + new Test("table should return a non-empty array if no condition set and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON"); + + var actualValue = builder.table(false); + pTester.expectThat(actualValue).hasMinLength(1).assert(); + } + ), + + new Test("delete should delete the data and use the from and condition from the builder", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); + + var actualValue = builder.deleteData(); + pTester.expectThat(actualValue).equals(1).assert(); + } + ), + + new Test("delete should delete the data from the provided table and use the condition from the builder. It ignores .from if a table is given.", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("PERSON") + .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); + + var actualValue = builder.deleteData(false, "SQL_LIB_TEST_TABLE"); + pTester.expectThat(actualValue).equals(1).assert(); + } + ), + + new Test("delete should delete ALL data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + + var actualValue = builder.deleteData(false); + pTester.expectThat(actualValue).equals(2).assert(); + } + ), + + new Test("delete should delete NO data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is true", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + + var actualValue = builder.deleteData(true); + pTester.expectThat(actualValue).equals(0).assert(); + } + ), + + new Test("update should update the data and use the from and condition from the builder", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); + + builder.updateData(false, undefined, ["FIRSTNAME"], null, ["Fritz"]); + + var actualValue = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") + + pTester.expectThat(actualValue).equals("Fritz").assert(); + } + ), + + new Test("update should update the data from the provided table and use the condition from the builder. It ignores .from if a table is given.", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("PERSON") + .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); + + builder.updateData(false, "SQL_LIB_TEST_TABLE", ["FIRSTNAME"], null, ["Fritz"]); + + var actualValue = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") + + pTester.expectThat(actualValue).equals("Fritz").assert(); + } + ), + + new Test("update should update ALL data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Franz", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + + builder.updateData(false, undefined, ["FIRSTNAME"], null, ["Fritz"]); + + var actualValue1 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") + var actualValue2 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-8'") + + pTester.expectThat(actualValue1).equals("Fritz", "TEST-7 should have Firstname Fritz").assert(); + pTester.expectThat(actualValue2).equals("Fritz", "TEST-8 should have Firstname Fritz").assert(); + } + ), + + new Test("update should update NO data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is true", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')") + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Franz", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + + builder.updateData(true, undefined, ["FIRSTNAME"], null, ["Fritz"]); + + var actualValue1 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") + var actualValue2 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-8'") + + pTester.expectThat(actualValue1).equals("Ludwig", "TEST-7 should have Firstname Ludwig").assert(); + pTester.expectThat(actualValue2).equals("Franz", "TEST-8 should have Firstname Franz").assert(); + } + ), +], function preAll() +{ + // remove data which may exist if previous test-run failed and postAll was not executed + cleanWrapperTests(); + + // add table for save testing of deletes + db.runStatement("create table SQL_LIB_TEST_TABLE (TESTID varchar(36), FIRSTNAME varchar(100), LASTNAME varchar(100))"); + + // add test persons + db.insertData("PERSON", ["PERSONID", "FIRSTNAME", "LASTNAME", "USER_NEW", "DATE_NEW"], null, ["TEST-5", "Franz", "Müller", "testuser", vars.get("$sys.date")]) + db.insertData("PERSON", ["PERSONID", "FIRSTNAME", "LASTNAME", "USER_NEW", "DATE_NEW"], null, ["TEST-6", "Marco", "Polo", "testuser", vars.get("$sys.date")]) +}, undefined, undefined, function postAll() +{ + cleanWrapperTests(); +}) + + +var mandatoryErrorTests = new TestSuite("SqlLib.mandatoryError", [ +// and + new Test("and without parameter should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or(); + }).throwsException(SqlBuilder._ERROR_NO_PARAMETER_PROVIDED()).assert(); + } + ), + + new Test("and with null as value should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", null); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("and with undefined as value should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", undefined); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("and with a jdito-var containing null should error", + function(pTester) + { + vars.set("$global.TestingVarNull", null); + + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", "$global.TestingVarNull"); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR()).assert(); + } + ), + + new Test("and with an empty sql-builder as subquery should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", new SqlBuilder()); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("and with an empty prepared statement as subquery should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", ["", []]); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + +// or + new Test("or without parameter should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or(); + }).throwsException(SqlBuilder._ERROR_NO_PARAMETER_PROVIDED()).assert(); + } + ), + + new Test("or with null as value should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", null); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("or with undefined as value should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", undefined); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("or with a jdito-var containing null should error", + function(pTester) + { + vars.set("$global.TestingVarNull", null); + + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", "$global.TestingVarNull"); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR()).assert(); + } + ), + + new Test("or with an empty sql-builder as subquery should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", new SqlBuilder()); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("or with an empty prepared statement as subquery should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", ["", []]); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), +]); + + +var inStatementTests = new TestSuite("SqlLib.inStatement", [ + new Test("simple and in", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.LASTNAME", ["Franz", "Fritz"], SqlBuilder.IN()) // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter + .or("PERSON.LASTNAME", ["Peter", "Mayer"], SqlBuilder.IN()); + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.LASTNAME in (?, ?) ) or ( PERSON.LASTNAME in (?, ?) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(4).assert(); + } + ), + + new Test("simple and not in", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.LASTNAME", ["Franz", "Fritz"], "# not in ?"); // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.LASTNAME not in (?, ?) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("in with subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", new SqlBuilder() + .select("PERSON.FIRSTNAME") + .from("PERSON") + .where("PERSON.LASTNAME", "Fritz") + , "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?" + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("in with prepared statement-array", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", ["select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ?", [["Fritz", SQLTYPES.VARCHAR]]] + , "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?" + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("andIfSet should ignore empty array", + function(pTester) + { + var actualValue = new SqlBuilder() + .whereIfSet("PERSON.LASTNAME", []); + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("and should error on an empty array", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.LASTNAME", []); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), +]); + + +var testConstantFunctions = new TestSuite("SqlLib.testConstantFunc", [ + new Test("SqlBuilder.IN()", + function(pTester) + { + var actualValue = SqlBuilder.IN(); + pTester.expectThat(actualValue).equals("# in ?").assert(); + } + ), + + new Test("SqlBuilder.NOT_IN()", + function(pTester) + { + var actualValue = SqlBuilder.NOT_IN(); + pTester.expectThat(actualValue).equals("# not in ?").assert(); + } + ), + + new Test("SqlBuilder.EXISTS()", + function(pTester) + { + var actualValue = SqlBuilder.EXISTS(); + pTester.expectThat(actualValue).equals("exists ?").assert(); + } + ), +]); + + +var selectTests = new TestSuite("SqlLib.select", [ + new Test("a sql-builder in a fields-array is translated to sql correctly", + function(pTester) + { + var countSubQuery = newSelect("count(*)") + .from("AB_ATTRIBUTEUSAGE") + .where("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", "myType") + .and("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"); + + var actualValue = new SqlBuilder() + .select(["AB_ATTRIBUTEID", "AB_ATTRIBUTEUSAGEID", countSubQuery]) + .from("AB_ATTRIBUTE") + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID, (select count(*) from AB_ATTRIBUTEUSAGE where AB_ATTRIBUTEUSAGE.OBJECT_TYPE = ? and AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID)").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("a sql-builder in from is used as subselect", + function(pTester) + { + var subQuery = newSelect("FIRSTNAME") + .from("PERSON") + .where("PERSON.LASTNAME", "Meier") + + var actualValue = new SqlBuilder() + .select("*") + .from(subQuery) + + pTester.expectThat(actualValue).elementAt("_from").elementAt("_sqlStorage").equals("from (select FIRSTNAME from PERSON where PERSON.LASTNAME = ?)").assert(); + pTester.expectThat(actualValue).elementAt("_from").elementAt("preparedValues").hasLength(1).assert(); + } + ), +]); + + +var joinTests = new TestSuite("SqlLib.join", [ + new Test("SqlBuilder as on-condition should only add the conditon of the builder", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + + var actualValue = new SqlBuilder() + .select("*") + .from("PERSON") + .join("ORGANISATION", subQuery) + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join ORGANISATION on ORGANISATION.NAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("SqlBuilder as table for join is added as subselect", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + + var actualValue = new SqlBuilder() + .select("*") + .from("PERSON") + .join(subQuery, "orgname.NAME = TABLE2.NAME", "orgname") + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join (select NAME from ORGANISATION where ORGANISATION.NAME = ?) orgname on orgname.NAME = TABLE2.NAME").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("just use a string also containing a condition as join without additional condition", + function(pTester) + { + var actualValue = new SqlBuilder() + .select("*") + .from("PERSON") + .join("TABLE1 on TABLE1.NAME = TABLE2.NAME") + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join TABLE1 on TABLE1.NAME = TABLE2.NAME").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(0).assert(); + } + ), +]); + + +var subqueryAsFieldTests = new TestSuite("SqlLib.subqueryAsField", [ + new Test("Test if a Subselect as field works if pValue is provided. This should be added as subselect.", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") + .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place + + var actualValue = new SqlBuilder().where(subQuery, "val2", "# = ?", SQLTYPES.VARCHAR) + .and("PERSON.FIRSTNAME", "val3"); + + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( ( select NAME from ORGANISATION where ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and PERSON.FIRSTNAME = ? ) = ? ) and PERSON.FIRSTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(3).assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(0).elementAt(0).equals("val1").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(1).elementAt(0).equals("val2").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(2).elementAt(0).equals("val3").assert(); + } + ), + + new Test("Test if a Subselect as field should error if no SQLTYPE is provided.", + function(pTester) + { + pTester.expectThat(function() { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") + .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place + new SqlBuilder().where(subQuery, "val2", "# = ?"); + }).throwsException(SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NO_FIELD_TYPE()).assert(); + } + ), + + new Test("Test if a Subselect as field should error if it is not a full select.", + function(pTester) + { + pTester.expectThat(function() { + var subQuery = newSelect("NAME") + .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") + .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place + + new SqlBuilder().where(subQuery, "val2", "# = ?", SQLTYPES.VARCHAR); + }).throwsException(SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NOT_COMPLETE()).assert(); + } + ), +]); + + +var conditionFormatTests = new TestSuite("SqlLib.conditionFormat", [ + new Test("pCondition should not fail if # an ? exist in correct order", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder() + .where("PERSON.FIRSTNAME", "val1", "# = ?") + .and("PERSON.FIRSTNAME", "val1", "asdf # fdsa=asdf ?fdas") + ; + }).not().throwsException().assert(); + } + ), + + new Test("pCondition should not fail if # an ? exist in correct order and there are additional, escaped # and ?", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "\\? # \\#= ?"); + }).not().throwsException().assert(); + } + ), + + new Test("pCondition should not fail if only ? exists", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "?") + }).not().throwsException().assert(); + } + ), + + new Test("pCondition should fail if more than one ? exists", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "? test ?") + }).throwsException(SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()).assert(); + } + ), + + new Test("pCondition should fail if more than one # exists", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "# test #") + }).throwsException(SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()).assert(); + } + ), + + new Test("pCondition should fail if # and ? are in wrong order", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "? = #") + }).throwsException(SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()).assert(); + } + ), +]); + + +var subqueryAliasTests = new TestSuite("SqlLib.subqueryAlias", [ + new Test("subselectAlias should be added for subquery in .select", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + .subselectAlias("testAlias") + + var actualValue = new SqlBuilder() + .select([subQuery, "FIRSTNAME"]) + .from("PERSON") + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias, FIRSTNAME").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("subselectAlias should be added for subquery in .from", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + .subselectAlias("testAlias") + + var actualValue = new SqlBuilder() + .from(subQuery) + + pTester.expectThat(actualValue).elementAt("_from").elementAt("_sqlStorage").equals("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias").assert(); + pTester.expectThat(actualValue).elementAt("_from").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("subselectAlias should be overruled by the param in in .from", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + .subselectAlias("testAlias") + + var actualValue = new SqlBuilder() + .from(subQuery, "overwriteAlias") + + pTester.expectThat(actualValue).elementAt("_from").elementAt("_sqlStorage").equals("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias").assert(); + pTester.expectThat(actualValue).elementAt("_from").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("subselectAlias should be added for subquery in .join", + function(pTester) + { + var subQuery = newSelect("NAME, ORGANISATIONID") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + .subselectAlias("testAlias") + + var actualValue = new SqlBuilder() + .from("CONTACT") + .join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID") + .join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID", "overwriteAlias") + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) testAlias on testAlias.ORGANISATIONID = ORGANISATION_ID").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(1).assert(); + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(1).elementAt("_sqlStorage").equals("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias on testAlias.ORGANISATIONID = ORGANISATION_ID").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(1).elementAt("preparedValues").hasLength(1).assert(); + } + ), +]); + + +var tester = new Tester("Test SqlBuilder"); +tester.test(newSelectTests); +tester.test(validAndUsageTests); +tester.test(validOrUsageTests); +tester.test(combinedAndOrTests); +tester.test(ifSetTests); +tester.test(dbWrapperTests); +tester.test(mandatoryErrorTests); +tester.test(inStatementTests); +tester.test(testConstantFunctions); +tester.test(selectTests); +tester.test(joinTests); +tester.test(subqueryAsFieldTests); +tester.test(conditionFormatTests); +tester.test(subqueryAliasTests); + +tester.summary(); + +result.object(tester.getResults()); \ No newline at end of file diff --git a/process/SqlLib_tests/process.js b/process/SqlLib_tests/process.js deleted file mode 100644 index 924162e2a4e..00000000000 --- a/process/SqlLib_tests/process.js +++ /dev/null @@ -1,1015 +0,0 @@ -import("system.db"); -import("system.vars"); -import("system.translate"); -import("system.logging"); -import("system.SQLTYPES"); -import("Sql_lib"); -import("UnitTest_lib"); - -var newSelectTests = new TestSuite([ - ["newSelect with just a string schould just use it as select", function(pTester) - { - var actual = newSelect("MySuper, Field, String") - - pTester.assert("select MySuper, Field, String", actual._select._sqlStorage, "prepared sql"); - pTester.assert(0, actual._select.preparedValues.length, "number of params"); - }], - - ["newSelect with just an array of strings schould just use them concatenated as select", function(pTester) - { - var actual = newSelect(["MySuper", "Field", "String"]) - - pTester.assert("select MySuper, Field, String", actual._select._sqlStorage, "prepared sql"); - pTester.assert(0, actual._select.preparedValues.length, "number of params"); - }], - - ["newSelect with just an SqlBuilder should use it as subselect", function(pTester) - { - var actual = newSelect(new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz")) - - pTester.assert("select (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)", actual._select._sqlStorage, "prepared sql"); - pTester.assert(1, actual._select.preparedValues.length, "number of params"); - }], - - ["newSelect an array of Strings and SqlBuilders should add them all", function(pTester) - { - var actual = newSelect(["MySuper", "Field", "String", new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz")]) - - pTester.assert("select MySuper, Field, String, (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)", actual._select._sqlStorage, "prepared sql"); - pTester.assert(1, actual._select.preparedValues.length, "number of params"); - }], -]); - -var validAndUsageTests = new TestSuite([ - ["and should just add simple strings as condition just as it is", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?" - .and("PERSON.LASTNAME = 'Admin'") - - pTester.assert("PERSON.FIRSTNAME = 'Tim' and PERSON.LASTNAME = 'Admin'", actual._where._sqlStorage, "prepared sql"); - pTester.assert(0, actual._where.preparedValues.length, "number of params"); - }], - - ["and should add a condition if field and value are passed", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin") - - pTester.assert("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and should add a condition if value is an empty string", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "") - .and("PERSON.LASTNAME", "") - - pTester.assert("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and should add a condition if field and value as jdito-var are passed", function(pTester) - { - vars.set("$global.TestUnitValueName", "Tim"); - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "$global.TestUnitValueName") - - pTester.assert("( PERSON.FIRSTNAME = 'Tim' ) ", actual.toString()); - }], - - ["$ should be escaped by a second $ and the string should therefore just be used as string and not as jdito variable", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "$$mySuperString") - - pTester.assert("( PERSON.FIRSTNAME = '$mySuperString' ) ", actual.toString()); - }], - - ["and should add a condition if value is a jdito-var containing an empty string", function(pTester) - { - vars.set("$global.TestingVarEmptyString", ""); - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "$global.TestingVarEmptyString") - .and("PERSON.LASTNAME", "$global.TestingVarEmptyString") - - pTester.assert("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and should use the given condition pattern", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim", "# <> ?") - .and("PERSON.LASTNAME", "Admin") - - pTester.assert("PERSON.FIRSTNAME <> ? and PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and should use the given SQLTYPE if provided", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", 6, null, SQLTYPES.INTEGER) - .and("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER) - .and("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER) - - pTester.assert("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and PERSON.LASTNAME <> ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(3, actual._where.preparedValues.length, "number of params"); - pTester.assert(SQLTYPES.INTEGER, actual._where.preparedValues[0][1], "sql type of param 1 is the provided type"); - pTester.assert(SQLTYPES.INTEGER, actual._where.preparedValues[1][1], "sql type of param 2 is the provided type"); - pTester.assert(SQLTYPES.INTEGER, actual._where.preparedValues[2][1], "sql type of param 3 is the provided type"); - }], - - ["and only with a prepared statement-array should just use it as it is", function(pTester) - { - var actual = new SqlBuilder() - .where([ - "PERSON.FIRSTNAME = ?", [["Peter", 12]] - ]) - .and([ - "exists (select * FROM CONTACT where PERSON_ID = PERSONID)", [] - ]) - - pTester.assert(" ( PERSON.FIRSTNAME = ? ) and ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }], - - ["and only with a SqlBulder object should just use the condition from it", function(pTester) - { - var actual = new SqlBuilder() - .where(new SqlBuilder() - .select("TEST") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin")) - - pTester.assert(" ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and with a builder as value and condition (field is null|undefined) should add the whole builder as subquery", function(pTester) - { - var actual = new SqlBuilder() - .where(null, new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin"), - "exists ?") // Note: you can use SqlBuilder.EXISTS() instead of "exists ?" - - pTester.assert("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and with a builder as value and field should add the whole builder as subquery with field = (subquery)", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin")) - - pTester.assert("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and with a prepared statement-array as value and field is null|undefined should add the whole statement as subquery", function(pTester) - { - var actual = new SqlBuilder() - .where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?") - .and(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement - - pTester.assert("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) and ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and with a prepared statement-array as value and field should add the whole statement as subquery with field = (subquery)", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]]) - - pTester.assert("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }] -]); - -var validOrUsageTests = new TestSuite([ - ["or should just add simple strings as condition just as it is", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?" - .or("PERSON.LASTNAME = 'Admin'") - - pTester.assert("PERSON.FIRSTNAME = 'Tim' or PERSON.LASTNAME = 'Admin'", actual._where._sqlStorage, "prepared sql"); - pTester.assert(0, actual._where.preparedValues.length, "number of params"); - }], - - ["or should add a condition if field and value are passed", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin") - - pTester.assert("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or should use the given condition pattern", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim", "# <> ?") - .or("PERSON.LASTNAME", "Admin") - - pTester.assert("PERSON.FIRSTNAME <> ? or PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or should use the given SQLTYPE if provided", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", 6, null, SQLTYPES.INTEGER) - .or("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER) - .or("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER) - - pTester.assert("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? or PERSON.LASTNAME <> ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(3, actual._where.preparedValues.length, "number of params"); - }], - - ["or only with a prepared statement-array should just use it as it is", function(pTester) - { - var actual = new SqlBuilder() - .where([ - "PERSON.FIRSTNAME = ?", [["Peter", 12]] - ]) - .or([ - "exists (select * FROM CONTACT where PERSON_ID = PERSONID)", [] - ]) - - pTester.assert(" ( PERSON.FIRSTNAME = ? ) or ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }], - - ["or only with a SqlBulder object should just use the condition from it", function(pTester) - { - var actual = new SqlBuilder() - .where(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin")) - - pTester.assert(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or with a builder as value and condition (field is null|undefined) should add the whole builder as subquery", function(pTester) - { - var actual = new SqlBuilder() - .where(null, new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin"), - "exists ?") - - pTester.assert("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or with a builder as value and field should add the whole builder as subquery with field = (subquery)", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin")) - - pTester.assert("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or with a prepared statement-array as value and field is null|undefined should add the whole statement as subquery", function(pTester) - { - var actual = new SqlBuilder() - .where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?") - .or(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement - - pTester.assert("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) or ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }] -]); - -var combinedAndOrTests = new TestSuite([ - ["or combining two and", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin") - .or(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .and("PERSON.LASTNAME", "Müller")) - - pTester.assert("(PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?) or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(4, actual._where.preparedValues.length, "number of params"); - }], - - ["and combining two or", function(pTester) - { - var actual = new SqlBuilder() - .where(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin")) - .and(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .or("PERSON.LASTNAME", "Müller")) - - pTester.assert(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(4, actual._where.preparedValues.length, "number of params"); - }], - - ["some and/or combinations in one select", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.FIRSTNAME", "Franz") - .and("PERSON.LASTNAME", "Admin") - .and(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .or("PERSON.LASTNAME", "Müller")) - .or("PERSON.FIRSTNAME", "Franz") - .and("PERSON.FIRSTNAME", "Franz") - .or(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .and("PERSON.LASTNAME", "Müller") - .and(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .or("PERSON.LASTNAME", "Müller"))) - - pTester.assert("PERSON.FIRSTNAME = ? or PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) or (PERSON.FIRSTNAME = ?) and PERSON.FIRSTNAME = ? or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(11, actual._where.preparedValues.length, "number of params"); - }] -]); - -var ifSetTests = new TestSuite([ - ["simple and if set with all types of empty values.", function(pTester) - { - var actual = new SqlBuilder() - .whereIfSet("PERSON.LASTNAME", null) - .andIfSet("PERSON.LASTNAME", undefined) - - pTester.assert("", actual._where._sqlStorage, "no sql should be added"); - pTester.assert(0, actual._where.preparedValues.length, "no params should be added"); - }], - - ["jdito variable with null", function(pTester) - { - vars.set("$global.TestingVarNull", null); - - var actual = new SqlBuilder() - .whereIfSet("PERSON.FIRSTNAME", "$global.TestingVarNull") - - pTester.assert("", actual._where._sqlStorage, "no sql should be added"); - pTester.assert(0, actual._where.preparedValues.length, "no params should be added"); - }], - - ["empty simple conditions", function(pTester) - { - var actual = new SqlBuilder() - .whereIfSet("") - .andIfSet(["", []]) - .andIfSet(new SqlBuilder()) - - pTester.assert("", actual._where._sqlStorage, "no sql should be added"); - pTester.assert(0, actual._where.preparedValues.length, "no params should be added"); - }], - - ["empty subqueries", function(pTester) - { - var actual = new SqlBuilder() - .whereIfSet("PERSON.FIRSTNAME", ["", []]) - .andIfSet("PERSON.LASTNAME", new SqlBuilder()) - - pTester.assert("", actual._where._sqlStorage, "no sql should be added"); - pTester.assert(0, actual._where.preparedValues.length, "no params should be added"); - }] -]); - -function cleanWrapperTests() -{ - try { - db.runStatement("drop table SQL_LIB_TEST_TABLE"); - } catch(ex) {} - - try { - db.deleteData("PERSON", "PERSONID in ('TEST-5', 'TEST-6')") - } catch(ex) {} - -} - -var dbWrapperTests = new TestSuite([ - ["cell should load only one value", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.PERSONID", "TEST-5") - pTester.assert("Franz", builder.cell()); - }], - - ["cell should just return '' if no condition set but pExecuteOnlyIfConditionExists is true", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - pTester.assert("", builder.cell(true)); - }], - - ["cell should return a value if no condition set and pExecuteOnlyIfConditionExists is false", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON"); - - var actual = builder.cell(false) - pTester.assert(true, actual !== "" && actual !== null && actual !== undefined); - }], - - ["array should load an array of values", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON") - .where("PERSON.PERSONID", "TEST-5"); - - var actual = builder.array(db.ROW); - pTester.assert("Franz", actual[0], "firstname should be 'Franz'"); - pTester.assert("Müller", actual[1], "lastname should be 'Müller'"); - }], - - ["array should return an empty array if no condition set but pExecuteOnlyIfConditionExists is true", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON") - - var actual = builder.array(db.ROW, true); - pTester.assert(0, actual.length); - }], - - ["array should return a non-empty array if no condition set and pExecuteOnlyIfConditionExists is false", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON") - - var actual = builder.array(db.ROW, false); - pTester.assert(true, actual.length > 0); - }], - - ["table should load an array of arrays with values", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON") - .where("PERSON.PERSONID", "TEST-5") - .or("PERSON.PERSONID", "TEST-6") - .orderBy("PERSONID asc"); - - var actual = builder.table(); - pTester.assert("Franz", actual[0][0], "firstname should be 'Franz'"); - pTester.assert("Müller", actual[0][1], "lastname should be 'Müller'"); - - pTester.assert("Marco", actual[1][0], "firstname should be 'Marco'"); - pTester.assert("Polo", actual[1][1], "lastname should be 'Polo'"); - }], - - ["table should return an empty array if no condition set but pExecuteOnlyIfConditionExists is true", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON"); - - var actual = builder.table(true); - pTester.assert(0, actual.length); - }], - - ["table should return a non-empty array if no condition set and pExecuteOnlyIfConditionExists is false", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON"); - - var actual = builder.table(false); - pTester.assert(true, actual.length > 0); - }], - - ["delete should delete the data and use the from and condition from the builder", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); - - var deletedRows = builder.deleteData(); - pTester.assert(1, deletedRows); - }], - - ["delete should delete the data from the provided table and use the condition from the builder. It ignores .from if a table is given.", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("PERSON") - .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); - - var deletedRows = builder.deleteData(false, "SQL_LIB_TEST_TABLE"); - pTester.assert(1, deletedRows); - }], - - ["delete should delete ALL data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is false", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - - var deletedRows = builder.deleteData(false); - pTester.assert(2, deletedRows); - }], - - ["delete should delete NO data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is true", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - - var deletedRows = builder.deleteData(true); - pTester.assert(0, deletedRows); - }], - - ["update should update the data and use the from and condition from the builder", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); - - builder.updateData(false, undefined, ["FIRSTNAME"], null, ["Fritz"]); - - var actual = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") - - pTester.assert("Fritz", actual); - }], - - ["update should update the data from the provided table and use the condition from the builder. It ignores .from if a table is given.", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("PERSON") - .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); - - builder.updateData(false, "SQL_LIB_TEST_TABLE", ["FIRSTNAME"], null, ["Fritz"]); - - var actual = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") - - pTester.assert("Fritz", actual); - }], - - ["update should update ALL data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is false", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Franz", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - - builder.updateData(false, undefined, ["FIRSTNAME"], null, ["Fritz"]); - - var actual1 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") - var actual2 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-8'") - - pTester.assert("Fritz", actual1, "TEST-7 should have Firstname Fritz"); - pTester.assert("Fritz", actual2, "TEST-8 should have Firstname Fritz"); - }], - - ["update should update NO data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is true", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')") - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Franz", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - - builder.updateData(true, undefined, ["FIRSTNAME"], null, ["Fritz"]); - - var actual1 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") - var actual2 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-8'") - - pTester.assert("Ludwig", actual1, "TEST-7 should have Firstname Ludwig"); - pTester.assert("Franz", actual2, "TEST-8 should have Firstname Franz"); - }] -], function preAll() -{ - // remove data which may exist if previous test-run failed and postAll was not executed - cleanWrapperTests() - - // add table for save testing of deletes - db.runStatement("create table SQL_LIB_TEST_TABLE (TESTID varchar(36), FIRSTNAME varchar(100), LASTNAME varchar(100))"); - - // add test persons - db.insertData("PERSON", ["PERSONID", "FIRSTNAME", "LASTNAME", "USER_NEW", "DATE_NEW"], null, ["TEST-5", "Franz", "Müller", "testuser", vars.get("$sys.date")]) - db.insertData("PERSON", ["PERSONID", "FIRSTNAME", "LASTNAME", "USER_NEW", "DATE_NEW"], null, ["TEST-6", "Marco", "Polo", "testuser", vars.get("$sys.date")]) -}, undefined, undefined, function postAll() -{ - cleanWrapperTests() -}) - -var mandatoryErrorTests = new TestSuite([ -// and - ["and without parameter should error", function(pTester) - { - new SqlBuilder().where().or(); - }, SqlBuilder._ERROR_NO_PARAMETER_PROVIDED()], - - ["and with null as value should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", null); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["and with undefined as value should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", undefined); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["and with a jdito-var containing null should error", function(pTester) - { - vars.set("$global.TestingVarNull", null); - - new SqlBuilder().where().or("PERSON.FIRSTNAME", "$global.TestingVarNull"); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR()], - - ["and with an empty sql-builder as subquery should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", new SqlBuilder()); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["and with an empty prepared statement as subquery should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", ["", []]); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - -// or - ["or without parameter should error", function(pTester) - { - new SqlBuilder().where().or(); - }, SqlBuilder._ERROR_NO_PARAMETER_PROVIDED()], - - ["or with null as value should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", null); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["or with undefined as value should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", undefined); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["or with a jdito-var containing null should error", function(pTester) - { - vars.set("$global.TestingVarNull", null); - - new SqlBuilder().where().or("PERSON.FIRSTNAME", "$global.TestingVarNull"); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR()], - - ["or with an empty sql-builder as subquery should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", new SqlBuilder()); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["or with an empty prepared statement as subquery should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", ["", []]); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], -]); - -var inStatementTests = new TestSuite([ - ["simple and in", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.LASTNAME", ["Franz", "Fritz"], SqlBuilder.IN()) // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter - .or("PERSON.LASTNAME", ["Peter", "Mayer"], SqlBuilder.IN()); - - pTester.assert(" ( PERSON.LASTNAME in (?, ?) ) or ( PERSON.LASTNAME in (?, ?) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(4, actual._where.preparedValues.length, "number of params"); - }], - - ["simple and not in", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.LASTNAME", ["Franz", "Fritz"], "# not in ?"); // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter - - pTester.assert(" ( PERSON.LASTNAME not in (?, ?) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["in with subquery", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", new SqlBuilder() - .select("PERSON.FIRSTNAME") - .from("PERSON") - .where("PERSON.LASTNAME", "Fritz") - , "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?" - - pTester.assert("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }], - - ["in with prepared statement-array", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", ["select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ?", [["Fritz", SQLTYPES.VARCHAR]]] - , "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?" - - pTester.assert("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }], - - ["andIfSet should ignore empty array", function(pTester) - { - var actual = new SqlBuilder() - .whereIfSet("PERSON.LASTNAME", []); - - pTester.assert("", actual._where._sqlStorage, "prepared sql should be empty"); - pTester.assert(0, actual._where.preparedValues.length, "number of params should be 0"); - }], - - ["and should error on an empty array", function(pTester) - { - new SqlBuilder() - .where("PERSON.LASTNAME", []); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()] -]); - -var testConstantFunctions = new TestSuite([ - ["SqlBuilder.IN()", function(pTester) - { - pTester.assert("# in ?", SqlBuilder.IN()); - }], - - ["SqlBuilder.NOT_IN()", function(pTester) - { - pTester.assert("# not in ?", SqlBuilder.NOT_IN()); - }], - - ["SqlBuilder.EXISTS()", function(pTester) - { - pTester.assert("exists ?", SqlBuilder.EXISTS()); - }] -]); - -var selectTests = new TestSuite([ - ["a sql-builder in a fields-array is translated to sql correctly", function(pTester) - { - var countSubQuery = newSelect("count(*)") - .from("AB_ATTRIBUTEUSAGE") - .where("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", "myType") - .and("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"); - - var actual = new SqlBuilder() - .select(["AB_ATTRIBUTEID", "AB_ATTRIBUTEUSAGEID", countSubQuery]) - .from("AB_ATTRIBUTE") - - pTester.assert("select AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID, (select count(*) from AB_ATTRIBUTEUSAGE where AB_ATTRIBUTEUSAGE.OBJECT_TYPE = ? and AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID)", actual._select._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._select.preparedValues.length, "number of params"); - }], - - ["a sql-builder in from is used as subselect", function(pTester) - { - var subQuery = newSelect("FIRSTNAME") - .from("PERSON") - .where("PERSON.LASTNAME", "Meier") - - var actual = new SqlBuilder() - .select("*") - .from(subQuery) - - pTester.assert("from (select FIRSTNAME from PERSON where PERSON.LASTNAME = ?)", actual._from._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._from.preparedValues.length, "number of params"); - }] -]); - -var joinTests = new TestSuite([ - ["SqlBuilder as on-condition should only add the conditon of the builder", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - - var actual = new SqlBuilder() - .select("*") - .from("PERSON") - .join("ORGANISATION", subQuery) - - pTester.assert("join ORGANISATION on ORGANISATION.NAME = ?", actual._joins[0]._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._joins[0].preparedValues.length, "number of params"); - }], - - ["SqlBuilder as table for join is added as subselect", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - - var actual = new SqlBuilder() - .select("*") - .from("PERSON") - .join(subQuery, "orgname.NAME = TABLE2.NAME", "orgname") - - pTester.assert("join (select NAME from ORGANISATION where ORGANISATION.NAME = ?) orgname on orgname.NAME = TABLE2.NAME", actual._joins[0]._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._joins[0].preparedValues.length, "number of params"); - }], - - ["just use a string also containing a condition as join without additional condition", function(pTester) - { - var actual = new SqlBuilder() - .select("*") - .from("PERSON") - .join("TABLE1 on TABLE1.NAME = TABLE2.NAME") - - pTester.assert("join TABLE1 on TABLE1.NAME = TABLE2.NAME", actual._joins[0]._sqlStorage, "prepared select-sql"); - pTester.assert(0, actual._joins[0].preparedValues.length, "number of params"); - }] -]); - -var subqueryAsFieldTests = new TestSuite([ - ["Test if a Subselect as field works if pValue is provided. This should be added as subselect.", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") - .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place - - var actual = new SqlBuilder().where(subQuery, "val2", "# = ?", SQLTYPES.VARCHAR) - .and("PERSON.FIRSTNAME", "val3"); - - - pTester.assert(" ( ( select NAME from ORGANISATION where ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and PERSON.FIRSTNAME = ? ) = ? ) and PERSON.FIRSTNAME = ?", actual._where._sqlStorage, "prepared select-sql"); - pTester.assert(3, actual._where.preparedValues.length, "number of params"); - pTester.assert("val1", actual._where.preparedValues[0][0], "param 1 is correct value"); - pTester.assert("val2", actual._where.preparedValues[1][0], "param 2 is correct value"); - pTester.assert("val3", actual._where.preparedValues[2][0], "param 3 is correct value"); - }], - - ["Test if a Subselect as field should error if no SQLTYPE is provided.", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") - .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place - new SqlBuilder().where(subQuery, "val2", "# = ?"); - }, SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NO_FIELD_TYPE()], - - ["Test if a Subselect as field should error if it is not a full select.", function(pTester) - { - var subQuery = newSelect("NAME") - .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") - .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place - - new SqlBuilder().where(subQuery, "val2", "# = ?", SQLTYPES.VARCHAR); - }, SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NOT_COMPLETE()] -]); - -var conditionFormatTests = new TestSuite([ - ["pCondition should not fail if # an ? exist in correct order", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "# = ?") - .and("PERSON.FIRSTNAME", "val1", "asdf # fdsa=asdf ?fdas") - }], - - ["pCondition should not fail if # an ? exist in correct order and there are additional, escaped # and ?", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "\\? # \\#= ?"); - }], - - ["pCondition should not fail if only ? exists", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "?") - }], - - ["pCondition should fail if more than one ? exists", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "? test ?") - }, SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()], - - ["pCondition should fail if more than one # exists", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "# test #") - }, SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()], - - ["pCondition should fail if # and ? are in wrong order", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "? = #") - }, SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()] -]); - -var subqueryAliasTests = new TestSuite([ - ["subselectAlias should be added for subquery in .select", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - .subselectAlias("testAlias") - - var actual = new SqlBuilder() - .select([subQuery, "FIRSTNAME"]) - .from("PERSON") - - pTester.assert("select (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias, FIRSTNAME", actual._select._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._select.preparedValues.length, "number of params"); - }], - - ["subselectAlias should be added for subquery in .from", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - .subselectAlias("testAlias") - - var actual = new SqlBuilder() - .from(subQuery) - - pTester.assert("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias", actual._from._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._from.preparedValues.length, "number of params"); - }], - - ["subselectAlias should be overruled by the param in in .from", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - .subselectAlias("testAlias") - - var actual = new SqlBuilder() - .from(subQuery, "overwriteAlias") - - pTester.assert("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias", actual._from._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._from.preparedValues.length, "number of params"); - }], - - ["subselectAlias should be added for subquery in .join", function(pTester) - { - var subQuery = newSelect("NAME, ORGANISATIONID") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - .subselectAlias("testAlias") - - var actual = new SqlBuilder() - .from("CONTACT") - .join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID") - .join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID", "overwriteAlias") - - pTester.assert("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) testAlias on testAlias.ORGANISATIONID = ORGANISATION_ID", actual._joins[0]._sqlStorage, "prepared select-sql join 1"); - pTester.assert(1, actual._joins[0].preparedValues.length, "number of params join 1"); - - pTester.assert("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias on testAlias.ORGANISATIONID = ORGANISATION_ID", actual._joins[1]._sqlStorage, "prepared select-sql join 2"); - pTester.assert(1, actual._joins[1].preparedValues.length, "number of params join 2"); - }] -]) - -var tester = new Tester("Test SqlBuilder"); -tester.test(newSelectTests); -tester.test(validAndUsageTests); -tester.test(validOrUsageTests); -tester.test(combinedAndOrTests); -tester.test(ifSetTests); -tester.test(dbWrapperTests); -tester.test(mandatoryErrorTests); -tester.test(inStatementTests); -tester.test(testConstantFunctions); -tester.test(selectTests); -tester.test(joinTests); -tester.test(subqueryAsFieldTests); -tester.test(conditionFormatTests); -tester.test(subqueryAliasTests); - -logging.log("-------------------------"); -tester.printResults(); diff --git a/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod b/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod new file mode 100644 index 00000000000..8636a3707b1 --- /dev/null +++ b/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>SqlMaskingUtils_test</name> + <title>[TEST] Sql_lib - SqlMaskingUtils</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/SqlMaskingUtils_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/SqlMaskingUtils_test/process.js b/process/SqlMaskingUtils_test/process.js new file mode 100644 index 00000000000..533a1b32e94 --- /dev/null +++ b/process/SqlMaskingUtils_test/process.js @@ -0,0 +1,158 @@ +import("system.result"); +import("system.db"); +import("Sql_lib"); +import("UnitTest_lib"); + +function _createDummyMaskingUtil(pDbType) +{ + var currentAlias = db.getCurrentAlias(); + if (!currentAlias) + throw new Error("alias required for test is not set"); + var currentAliasType = db.getDatabaseType(currentAlias); + if (!currentAliasType) + throw new Error("alias type required for test is not set"); + var createdObject = new SqlMaskingUtils(currentAlias); + createdObject.dbType = pDbType; + return createdObject; +} + +var constructorTest = new TestSuite("SqlMaskingUtils.constructor", [ + new Test("constructor sets correct specified alias", + function(pTester) + { + var currentAlias = db.getCurrentAlias(); + if (!currentAlias) + throw new Error("alias required for test is not set"); + var createdObject = new SqlMaskingUtils(currentAlias); + pTester.expectThat(createdObject.alias).equals(currentAlias).assert(); + } + ), + new Test("constructor sets correct default alias", + function(pTester) + { + var currentAlias = db.getCurrentAlias(); + if (!currentAlias) + throw new Error("alias required for test is not set"); + var createdObject = new SqlMaskingUtils(); + pTester.expectThat(createdObject.alias).equals(currentAlias).assert(); + } + ), + new Test("constructor sets correct alias type", + function(pTester) + { + var currentAlias = db.getCurrentAlias(); + if (!currentAlias) + throw new Error("alias required for test is not set"); + var currentAliasType = db.getDatabaseType(currentAlias); + if (!currentAliasType) + throw new Error("alias type required for test is not set"); + var createdObject = new SqlMaskingUtils(currentAlias); + pTester.expectThat(createdObject.dbType).equals(currentAliasType).assert(); + } + ), + new Test("overwrite constructors dbType with derby", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_DERBY10); + pTester.expectThat(res.dbType).equals(db.DBTYPE_DERBY10).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with mariaDB", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_MARIADB10); + pTester.expectThat(res.dbType).equals(db.DBTYPE_MARIADB10).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with mySql", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_MYSQL4); + pTester.expectThat(res.dbType).equals(db.DBTYPE_MYSQL4).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with oracle-cluster", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_ORACLE10_CLUSTER); + pTester.expectThat(res.dbType).equals(db.DBTYPE_ORACLE10_CLUSTER).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with oracle-oci", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_ORACLE10_OCI); + pTester.expectThat(res.dbType).equals(db.DBTYPE_ORACLE10_OCI).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with oracle-thin", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_ORACLE10_THIN); + pTester.expectThat(res.dbType).equals(db.DBTYPE_ORACLE10_THIN).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with postgresql", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_POSTGRESQL8); + pTester.expectThat(res.dbType).equals(db.DBTYPE_POSTGRESQL8).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with ms sql", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_SQLSERVER2000); + pTester.expectThat(res.dbType).equals(db.DBTYPE_SQLSERVER2000).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ) + ]); + + +var getConcatSymbolTest = new TestSuite("SqlMaskingUtils.getConcatSymbol", [ + new Test("getConcatSymbol returns a non empty string", + function(pTester) + { + var maskingHelper = _createDummyMaskingUtil(db.DBTYPE_SQLSERVER2000); + var res = maskingHelper.getConcatSymbol(); + pTester.expectThat(res).not().isNull().assert(); + pTester.expectThat(res).not().isUndefined().assert(); + pTester.expectThat(res).isString().assert(); + pTester.expectThat(res.length).isInteger().assert(); + pTester.expectThat(res.length).isGreater(0).assert(); + } + ), + new Test("+ for MS SQL", + function(pTester) + { + var maskingHelper = _createDummyMaskingUtil(db.DBTYPE_SQLSERVER2000); + var res = maskingHelper.getConcatSymbol(); + pTester.expectThat(res.trim()).equals("+").assert(); + } + ), + new Test("|| for Oracle", + function(pTester) + { + var maskingHelper = _createDummyMaskingUtil(db.DBTYPE_ORACLE10_THIN); + var res = maskingHelper.getConcatSymbol(); + pTester.expectThat(res.trim()).equals("||").assert(); + } + ) + ]); + +var tester = new Tester("Test SqlMaskingUtils"); +tester.initCoverage(SqlMaskingUtils); +tester.test(constructorTest); +tester.test(getConcatSymbolTest); +//TODO: add full test coverage +tester.summary(); + +result.object(tester.getResults()); \ No newline at end of file diff --git a/process/Sql_lib/documentation.adoc b/process/Sql_lib/documentation.adoc index 8b903c2155e..417d8aa237b 100644 --- a/process/Sql_lib/documentation.adoc +++ b/process/Sql_lib/documentation.adoc @@ -17,10 +17,10 @@ include::_default_attributes_EN.adoc[] This document describes the functionality and the usage of the SqlBuilder, which is included in the library *Sql_lib* of the ADITO xRM project (see "Projects" window, under process > libraries). The documentation may not contain all features of the SqlBuilder. It is supplemental to the documentation you find in the code itself: A usage will often be possible in an intuitive way, so just try coding using code completion and JSDoc, where all parameters are documented. -You may also take a look at the library *SqlLib_tests* (also under process > libraries), as it contains many possible ways to use the SqlBuilder. +You may also take a look at the library *Sql_test* (also under process > libraries), as it contains many possible ways to use the SqlBuilder. [NOTE] -The tests included in the library SqlLib_tests use the UnitTest_lib for unit testing. You can use this functionality also in other contexts, according to your requirements. +The tests included in the library Sql_test use the UnitTest_lib for unit testing. You can use this functionality also in other contexts, according to your requirements. == Benefits diff --git a/process/SqlLib_tests/SqlLib_tests.aod b/process/Terminal_lib/Terminal_lib.aod similarity index 67% rename from process/SqlLib_tests/SqlLib_tests.aod rename to process/Terminal_lib/Terminal_lib.aod index 9f2866f8f91..9fa0811425e 100644 --- a/process/SqlLib_tests/SqlLib_tests.aod +++ b/process/Terminal_lib/Terminal_lib.aod @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> - <name>SqlLib_tests</name> + <name>Terminal_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <process>%aditoprj%/process/SqlLib_tests/process.js</process> - <alias>Data_alias</alias> + <documentation>%aditoprj%/process/Terminal_lib/documentation.adoc</documentation> + <process>%aditoprj%/process/Terminal_lib/process.js</process> <variants> <element>LIBRARY</element> </variants> diff --git a/process/Terminal_lib/process.js b/process/Terminal_lib/process.js new file mode 100644 index 00000000000..13a0188495d --- /dev/null +++ b/process/Terminal_lib/process.js @@ -0,0 +1,342 @@ +import("system.logging"); +import("Util_lib"); + + +/** + * This library gives you helpful colored output on the terminal + * You can use the predefined helper methods or use your own color- and format combinations + * + * @example + * var t = new Terminal(); + * logging.log(t.success("It works!")); + * logging.log(t.color(t.fg.green).background(t.bg.red).output("I would never use green text on red background...")); + * + * @see https://en.wikipedia.org/wiki/ANSI_escape_code + * @class + */ +function Terminal() +{ + this.mod = { + reset : 0 + }; + + this.fg = { + reset : 39, + black : 30, + red : 31, + green : 32, + yellow : 33, + blue : 34, + magenta : 35, + cyan : 36, + white : 37, + brightBlack : 90, + brightRed : 91, + brightGreen : 92, + brightYellow : 93, + brightBlue : 94, + brightMagenta : 95, + brightCyan : 96, + brightWhite : 97 + }; + + this.bg = { + reset : 49, + black : 40, + red : 41, + green : 42, + yellow : 43, + blue : 44, + magenta : 45, + cyan : 46, + white : 47, + brightBlack : 100, + brightRed : 101, + brightGreen : 102, + brightYellow : 103, + brightBlue : 104, + brightMagenta : 105, + brightCyan : 106, + brightWhite : 107 + }; + + this.formats = { + weightBold : 1, + weightLight : 2, + weightOff : 22, + italic : 3, + italicOff : 23, + underline : 4, + underlineDouble : 21, + underlineOff : 24, + strike : 9, + strikeOff : 29 + }; + + this._defaultConfig = { + colorText: this.fg.reset, + colorBackground: this.bg.reset, + bold: this.formats.weightOff, + italic: this.formats.italicOff, + underline: this.formats.underlineOff, + strike: this.formats.strikeOff + }; + + this.outputConfig = Utils.clone(this._defaultConfig); +} + + +/** + * Reset the output config by cloning and setting the default + * + * @return {void} + */ +Terminal.prototype._resetConfig = function () +{ + this.outputConfig = Utils.clone(this._defaultConfig); +} + +/** + * Set or reset the text color + * + * @param {int} pValue + * @return {Terminal} + */ +Terminal.prototype.color = function (pValue) +{ + this.outputConfig.colorText = this._contains(this.fg, pValue) ? pValue : this.fg.reset; + + return this; +} + +/** + * Set or reset the background color + * + * @param {int} pValue + * @return {Terminal} + */ +Terminal.prototype.background = function (pValue) +{ + this.outputConfig.colorBackground = this._contains(this.bg, pValue) ? pValue : this.bg.reset; + + return this; +} + +/** + * Set, unset or add a formatting to the output config + * + * @param {int} pValue + * @return {Terminal} + */ +Terminal.prototype.format = function (pValue) +{ + var allowedWeightValues = [this.formats.weightBold, this.formats.weightLight, this.formats.weightOff]; + this.outputConfig.bold = this._contains(allowedWeightValues, pValue) ? pValue : this.formats.weightOff; + + var allowedItalicValues = [this.formats.italic, this.formats.italicOff]; + this.outputConfig.italic = this._contains(allowedItalicValues, pValue) ? pValue : this.formats.italicOff; + + var allowedUnderlineValues = [this.formats.underline, this.formats.underlineDouble, this.formats.underlineOff]; + this.outputConfig.underline = this._contains(allowedUnderlineValues, pValue) ? pValue : this.formats.underlineOff; + + var allowedStrikeValues = [this.formats.strike, this.formats.strikeOff]; + this.outputConfig.strike = this._contains(allowedStrikeValues, pValue) ? pValue : this.formats.strikeOff; + + return this; +} + +/** + * Returns a string wrapped in escape sequences according to previous formatting instructions + * Must be called after `.color()`, `.background()` and/or `.format()`. + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.output = function (pString) +{ + var output = ""; + var seqValues = []; + + Object.keys(this.outputConfig).forEach(function(pKey) { + seqValues.push(this.outputConfig[pKey]); + }, this); + + output += this._generateSequence(seqValues); + output += pString; + output += this._generateSequence(this.mod.reset); + + this._resetConfig(); + return output; +} + +/** + * Returns the given string formatted as light-colored text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.debug = function (pString) +{ + return this.color(this.fg.white).output(pString); +} + +/** + * Returns the given string formatted as bold black text on green background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.successBlock = function (pString) +{ + return this.color(this.fg.brightBlack).background(this.bg.green).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold green text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.success = function (pString) +{ + return this.color(this.fg.green).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold black text on green background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.successBlock = function (pString) +{ + return this.color(this.fg.brightBlack).background(this.bg.green).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Returns the given string formatted as bold blue text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.info = function (pString) +{ + return this.color(this.fg.blue).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold white text on blue background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.infoBlock = function (pString) +{ + return this.color(this.fg.brightWhite).background(this.bg.blue).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Returns the given string formatted as bold magenta text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.important = function (pString) +{ + return this.color(this.fg.magenta).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold white text on magenta background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.importantBlock = function (pString) +{ + return this.color(this.fg.brightWhite).background(this.bg.magenta).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Returns the given string formatted as bold yellow text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.warning = function (pString) +{ + return this.color(this.fg.yellow).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold black text on yellow background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.warningBlock = function (pString) +{ + return this.color(this.fg.brightBlack).background(this.bg.yellow).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Returns the given string formatted as bold red text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.error = function (pString) +{ + return this.color(this.fg.red).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold white text on red background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.errorBlock = function (pString) +{ + return this.color(this.fg.brightWhite).background(this.bg.red).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Checks if a specific value is in a given array or object + * + * @param {(Array|Object)} pType + * @param {Any} pValue + * @return {Boolean} + */ +Terminal.prototype._contains = function (pType, pValue) +{ + var res = false; + + if(Array.isArray(pType)) { + res = pType.indexOf(pValue) !== -1; + } else { + Object.keys(pType).forEach(function(pKey) { + if(pType[pKey] === pValue) { + res = true; + } + }, this); + } + + return res; +} + +/** + * Generates and returns a terminal escape sequence + * + * @param {(int|int[])} pSequences A single or multiple escape sequence commands + */ +Terminal.prototype._generateSequence = function (pSequences) +{ + var seq = Array.isArray(pSequences) ? pSequences : [pSequences]; + + seq = seq.filter(function(pElement) { + return Number.isInteger(parseFloat(pElement)) && isFinite(pElement); + }); + + return "\033[" + seq.join(";") + "m"; +} diff --git a/process/UnitTest_lib/UnitTest_lib.aod b/process/UnitTest_lib/UnitTest_lib.aod index 225ac230384..a4499316765 100644 --- a/process/UnitTest_lib/UnitTest_lib.aod +++ b/process/UnitTest_lib/UnitTest_lib.aod @@ -2,6 +2,7 @@ <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> <name>UnitTest_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE_O</icon> <process>%aditoprj%/process/UnitTest_lib/process.js</process> <alias>Data_alias</alias> <variants> diff --git a/process/UnitTest_lib/process.js b/process/UnitTest_lib/process.js index 0ce141d4828..382d37e0215 100644 --- a/process/UnitTest_lib/process.js +++ b/process/UnitTest_lib/process.js @@ -1,235 +1,1265 @@ import("system.logging"); +import("Terminal_lib"); +import("Util_lib"); + +/** + * @param {String} pName the name/description of the test + * @param {Function} pCallback the actual test callback to execute + * @param {Function} pDataProviderCallback an optional callback to deliver multiple datasets to the test + * @param {Boolean} pRerunOnError an optional flag indicating if a test should get rerun without try-catch if an error occurs (default: false) + * + * @class + */ +function Test(pName, pCallback, pDataProviderCallback, pRerunOnError) +{ + this.name = pName; + this.callback = pCallback; + this.dataProviderCallback = pDataProviderCallback || function() { return null; }; + this.rerunOnError = !!pRerunOnError; +} /** * A TestSuite combines several tests - * @param {Array} pTests this is a n array of Tests in the following form:<br/> - * [<br/> - * ["Test description", function(pTester) <br/> - * {<br/> - * // the test which may use pTester.assert(...)<br/> - * }, {Optional: an expected error}<br/> - * ],<br/> - * [...]<br/> - * ]<br/> + * + * @param {String} pName name of the TestSuite + * @param {Array} pTests this is a n array of Tests + * + * @example + * var myTest = new TestSuite("MyObject.myTest", [ + * new Test("Test description", + * function(pTester) { + * var expectValue = 5; + * var var actualValue = 20; + * pTester.expectThat(actualValue).isGreater(expectValue).assert(); + * }, + * ), + * new Test(...) + * ]; + + * @example + * // Using a DataProvider + * var myTest = new TestSuite("MyObject.myTest", [ + * new Test("Test description", + * function(pTester, pDataProvider) { + * var obj = new MyObject("Something"); + * var expectValue = pDataProvider[0]; + * var var actualValue = obj.getNumber(); + * pTester.expectThat(actualValue).isGreater(expectValue).assert(); + * }, + * function dataProvider() { + * return [ + * [0], + * [10], + * [100], + * ]; + * }, + * ), + * new Test(...) + * ]; + * * @param {functionCallback} [pPreAll] a callback, called once before all tests * @param {functionCallback} [pPreTest] a callback, called once before each test * @param {functionCallback} [pPostTest] a callback, called once after each test * @param {functionCallback} [pPostAll] a callback, called once after all tests - * + * + * TODO: set callbacks via separate methods + * * @class */ -function TestSuite(pTests, pPreAll, pPreTest, pPostTest, pPostAll) +function TestSuite(pName, pTests, pPreAll, pPreTest, pPostTest, pPostAll) { + this.name = pName; this.tests = pTests; - this.preAll = (pPreAll ? pPreAll : function() {}); - this.preTest = (pPreTest ? pPreTest : function() {}); - this.postTest = (pPostTest ? pPostTest : function() {}); - this.postAll = (pPostAll ? pPostAll : function() {}); + this.preAll = pPreAll || function() {}; + this.preTest = pPreTest || function() {}; + this.postTest = pPostTest || function() {}; + this.postAll = pPostAll || function() {}; } /** - * The tester can test TestSuites. - * It will be passed as paramter to each test. - * + * The tester runs TestSuites. + * It will be passed as parameter to each test. + * * @param {String} pCollectionName + * + * @example + * var myTest = new TestSuite("MyObject.myTest", [...]); + * var tester = new Tester("Test SqlBuilder", SqlBuilder); + * tester.test(myTest); + * // More test suites using tester.test() + * // ... + * + * tester.summary(); + * + * @class + * + * TODO: Implement `isEmpty()` + * TODO: Implement `hasKey()` + * TODO: Implement `contains()` + * TODO: Implement `containsIgnoreCase()` + * TODO: Implement `isPrimitive()` + * TODO: Implement `matches()` + * TODO: Implement `matchesIgnoreCase()` + * TODO: Move multiple used code blocks into separate methods (like the logging output + reset) + * TODO: Use more getters, especially when implementing `elementAt()` + * TODO: Add examples to test methods + */ +function Tester(pCollectionName) +{ + this.collectionName = pCollectionName; + this.instanceName = undefined; + this.methods = []; + this.methodsCalled = []; + + this.actualValue = undefined; + this.actualDisplayValue = undefined; + this.actualOriginalValue = undefined; + this.actualOriginalDisplayValue = undefined; + this.actualValueElementHierarchy = []; + this.expectedValue = undefined; + this.expectedDisplayValue = undefined; + this._assertDescription = ""; + this._testResult = false; + this._useNegation = false; + this.dataProvider = undefined; + this.currentTestSuite = undefined; + + this.testCount = 0; + this.successCount = 0; + this.failCount = 0; + this.startTime = new Date().getTime(); + this.endTime = null; + + this.t = new Terminal(); + this.outputEnabled = true; + this.output = ""; +} + +/** + * Set the value to test + * + * @param {*} pValue + * @return {Tester} + */ +Tester.prototype.expectThat = function(pValue) +{ + this.actualValue = pValue; + this.actualDisplayValue = pValue; + this.actualOriginalValue = pValue; + this.actualOriginalDisplayValue = pValue; + this._useNegation = false; + + return this; +} + +/** + * Retrieve the result of the current test + * + * @return {Boolean} + */ +Tester.prototype.getTestResult = function() +{ + return this._useNegation ? !this._testResult : this._testResult; +} + +/** + * Enable or disable the output + * + * @param {Boolean} pIsEnabled whether the output should be enabled or not + * @return {Tester} + */ +Tester.prototype.setOutputEnabled = function(pIsEnabled) +{ + this.outputEnabled = pIsEnabled; + return this; +} + +/** + * Assert makes the test eventually pass or fail by looking at the result and writing into the output + * + * @return {void} + */ +Tester.prototype.assert = function() +{ + if(this.getTestResult() === true) + { + this.successCount++; + this._log("success", "\t\t\u2705 " + this._assertDescription); + } + else + { + this.failCount++; + this._log("error", "\t\t\u274C " + this._assertDescription); + + if(this.actualDisplayValue !== undefined && this.expectedDisplayValue !== undefined) + { + this._log("warning", "\t\t\t expected: " + JSON.stringify(this.expectedDisplayValue, null, "\t")); + this._log("error", "\t\t\t actual: " + JSON.stringify(this.actualDisplayValue, null, "\t")); + } + } +} + +/** + * Activate test negation + * + * @return {Tester} + */ +Tester.prototype.not = function() +{ + this._useNegation = true; + + return this; +} + +/** + * Select a child element of `actualValue` to work with + * + * @param {(String|Number)} pKey the key of the child + * @return {Tester} * * @example - * var tester = new Tester("Test SqlBuilder"); - * tester.test(newSelectTests); - * tester.test(validAndUsageTests); - * tester.test(validOrUsageTests); + * // Grab first array element to test + * pTester.expectThat(actualValue).elementAt(0).equals("MyValue").assert(); * - * logging.log("-------------------------"); - * tester.printResults(); + * // Grab last array element to test + * pTester.expectThat(actualValue).elementAt(-1).equals("MyValue").assert(); * - * @class + * // Grab object element to test + * pTester.expectThat(actualValue).elementAt("myKey").equals("MyValue").assert(); + * + * // Grab nested element in array/object structure to test, in this case `actualValue[5].myKey[2].someChild` + * pTester.expectThat(actualValue).elementAt(5).elementAt("myKey").elementAt(2).elementAt("someChild").equals("MyValue").assert(); */ -function Tester(pCollectionName) +Tester.prototype.elementAt = function(pKey) { - this.collectionName = pCollectionName; - this.testResults = []; + if(!Array.isArray(this.actualValue) && !Utils.isObject(this.actualValue)) + { + var error = new Error("actualValue must be array or object to use elementAt('" + pKey + "')"); + error.name = "UnitTest_lib Error"; + throw error; + } + + var key = Array.isArray(this.actualValue) && pKey === -1 ? this.actualValue.length - 1 : pKey; - // if no assert was called during a test, no test-message would be added. -> Add a success message that no error occoured. - this.currentTestHadAlreadyAssert = false; + this.actualValueElementHierarchy.push(key); + this.actualValue = this.actualValue[key]; + this.actualDisplayValue = this.actualDisplayValue[key]; + + return this; } /** - * generates a summary of the test results - * - * @return {Obect} + * Test if a value is equal to a given value + * + * @param {*} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.equals = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + if(Utils.isObject(this.actualValue) || Utils.isObject(this.expectedValue)) + { + this.expectedDisplayValue = JSON.stringify(this.actualValue); + this._testResult = Utils.isEqual(this.actualValue, this.expectedValue); + this._generateAssertDescription({custom: pCustomDescription, operator: "===", name: "Object value"}); + } + else + { + this._testResult = this.actualValue === this.expectedValue; + this._generateAssertDescription({custom: pCustomDescription, operator: "==="}); + } + + return this; +} + +/** + * Test if a value is greater than a given compare value + * + * @param {Number} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isGreater = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = this.actualValue > this.expectedValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: ">"}); + + return this; +} + +/** + * Test if a value is greater or equal than a given compare value + * + * @param {Number} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isGreaterEqual = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = this.actualValue >= this.expectedValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: ">="}); + + return this; +} + +/** + * Test if a value is lower than a given compare value + * + * @param {Number} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isLower = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = this.actualValue < this.expectedValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "<"}); + + return this; +} + +/** + * Test if a value is lower or equal than a given compare value + * + * @param {Number} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isLowerEqual = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = this.actualValue <= this.expectedValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "<="}); + + return this; +} + +/** + * Test if a value is a boolean + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isBoolean = function(pCustomDescription) +{ + this._setExpectValue("boolean"); + this._testResult = Utils.isBoolean(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is a number + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isNumber = function(pCustomDescription) +{ + this._setExpectValue("number"); + this._testResult = Utils.isNumber(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is numeric + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isNumeric = function(pCustomDescription) +{ + this._setExpectValue("numeric"); + this._testResult = Utils.isNumeric(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a value is NaN (not a number) + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isNaN = function(pCustomDescription) +{ + this._setExpectValue("NaN"); + this._testResult = Number.isNaN(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is an integer + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isInteger = function(pCustomDescription) +{ + this._setExpectValue("integer"); + this._testResult = Utils.isInteger(this.actualValue); + + this.actualDisplayValue = typeof this.actualValue; + this.expectedDisplayValue = "number"; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is", expected: this.expectedValue}); + + return this; +} + +/** + * Test if a value is a float + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isFloat = function(pCustomDescription) +{ + this._setExpectValue("float"); + this._testResult = Utils.isFloat(this.actualValue); + + this.actualDisplayValue = typeof this.actualValue; + this.expectedDisplayValue = "number"; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is", expected: this.expectedValue}); + + return this; +} + +/** + * Test if a value is a string + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isString = function(pCustomDescription) +{ + this._setExpectValue("string"); + this._testResult = Utils.isString(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is an array + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isArray = function(pCustomDescription) +{ + this._setExpectValue("array"); + this._testResult = Array.isArray(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is an object + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isObject = function(pCustomDescription) +{ + this._setExpectValue("object"); + this._testResult = Utils.isObject(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is a function + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isFunction = function(pCustomDescription) +{ + this._setExpectValue("function"); + this._testResult = Utils.isFunction(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is null + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isNull = function(pCustomDescription) +{ + this._setExpectValue("null"); + this._testResult = this.actualValue === null; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a value is undefined + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isUndefined = function(pCustomDescription) +{ + this._setExpectValue("undefined"); + this._testResult = this.actualValue === undefined || typeof this.actualValue === "undefined"; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a string value is lowercase + * + * An additional check of the opposite must be made to prevent strings with non-letter characters passing the test + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isUpperCase = function(pCustomDescription) +{ + this._setExpectValue("uppercase"); + this._testResult = Utils.isString(this.actualValue) + && this.actualValue === this.actualValue.toUpperCase() + && this.actualValue !== this.actualValue.toLowerCase() + ; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a string value is lowercase + * + * An additional check of the opposite must be made to prevent strings with non-letter characters passing the test + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isLowerCase = function(pCustomDescription) +{ + this._setExpectValue("lowercase"); + this._testResult = Utils.isString(this.actualValue) + && this.actualValue === this.actualValue.toLowerCase() + && this.actualValue !== this.actualValue.toUpperCase() + ; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a value starts with a given string + * + * An additional check of the opposite must be made to prevent strings with non-letter characters passing the test + * + * @param {Number} pExpect the expected string beginning + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.startsWith = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = Utils.isString(this.actualValue) && this.actualValue.startsWith(this.expectedValue); + + this._generateAssertDescription({custom: pCustomDescription, operator: "starts with"}); + + return this; +} + +/** + * Test if a value end with a given string + * + * An additional check of the opposite must be made to prevent strings with non-letter characters passing the test + * + * @param {Number} pExpect the expected string beginning + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.endsWith = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = Utils.isString(this.actualValue) && this.actualValue.endsWith(this.expectedValue); + + this._generateAssertDescription({custom: pCustomDescription, operator: "ends with"}); + + return this; +} + +/** + * Test if value is an instance of the expected "class" + * + * @param {Number} pExpect the expected instance name + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isInstanceOf = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + // Checks the name of the constructor and runs a function to check the actual instance. + // To prevent security issues by using `eval()`, a double nested function was needed. + // The outer one to evaluate the code, the inner one to be able to pass an argument, that will be evaluated. + // TODO: Also check for isObject() before + this._testResult = Utils.isObject(this.actualValue) + && this.actualValue.constructor.name === this.expectedValue + && Function('"use strict"; return function(obj) {return obj instanceof ' + this.expectedValue + ';};')()(this.actualValue); + this.actualDisplayValue = this.actualValue.constructor.name; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is instance of"}); + + return this; +} + +/** + * Test if value (array, string, object) has the expected length + * + * @param {Number} pExpect the expected length + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.hasLength = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + var length = this._getLength(this.actualValue); + this._testResult = length === this.expectedValue; + this.actualDisplayValue = length; + + this._generateAssertDescription({custom: pCustomDescription, operator: "===", nameSuffix: ".length"}); + + return this; +} + +/** + * Test if value (array, string, object) has a minimum expected length + * + * @param {Number} pExpect the expected length + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.hasMinLength = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + var length = this._getLength(this.actualValue); + this._testResult = length >= this.expectedValue; + this.actualDisplayValue = length; + + this._generateAssertDescription({custom: pCustomDescription, operator: ">=", nameSuffix: ".length"}); + + return this; +} + +/** + * Test if value (array, string, object) has a maximum expected length + * + * @param {Number} pExpect the expected length + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.hasMaxLength = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + var length = this._getLength(this.actualValue); + this._testResult = length <= this.expectedValue; + this.actualDisplayValue = length; + + this._generateAssertDescription({custom: pCustomDescription, operator: "<=", nameSuffix: ".length"}); + + return this; +} + + +/** + * Test if a callback function throws an exception + * + * @param {Number} pExpect the expected error + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} */ -Tester.prototype.getSummary = function () +Tester.prototype.throwsException = function(pExpect, pCustomDescription) { - var summary = { - failures : 0, - successes : 0, - failedTests : [], - getMessage : function () + this._setExpectValue(pExpect); + this._generateAssertDescription({custom: pCustomDescription, operator: "throws", expected: "exception", name: " "}); + + if(this._useNegation) + { + try + { + this.actualValue(); + } + catch(e) + { + this._testResult = true; // Actually `false` and therefore failed, but must be `true` to make negation work + this.actualDisplayValue = e; + throw e; + } + + this._testResult = false; // Actually `true` and therefore successful, but must be `false` to make negation work + } + else + { + try { - var message = "-------------------------\n" - + (this.failures ? "Test failure" : "Test success") - + "\n-------------------------\nTests performed: " + (this.successes + this.failures) - + "\nTests successful: " + this.successes - + "\nTests failed: " + this.failures; - if (this.failedTests.length) + this.actualValue(); + } + catch(e) + { + this._testResult = e.toSource() === this.expectedValue.toSource(); + + if (!this._testResult) { - message += "\nFailures:"; - this.failedTests.forEach(function (testName) - { - message += "\n\t" + testName; - }); + this.actualDisplayValue = e; + throw e; } - return message; } } - this.testResults.forEach(function ([testName,, successful]) - { - if (successful) - summary.successes++; + + return this; +} + +/** + * Executes all tests in a TestSuite + * + * @param {TestSuite} pTestSuite the TestSuite which should be tested + * @return {void} + */ +Tester.prototype.test = function(pTestSuite) +{ + this.currentTestSuite = pTestSuite; + this._log("important", "\u2692 Suite: " + this.currentTestSuite.name); + this._registerMethodTestCall(); + + this.currentTestSuite.preAll(this); + + this.currentTestSuite.tests.forEach(function(pTest) { + this._resetTest(); + + this.currentTestSuite.preTest(this); + this.dataProvider = pTest.dataProviderCallback(); + + if(Array.isArray(this.dataProvider) && this.dataProvider.length > 0) + { + this.dataProvider.forEach(function(pElement, pIndex) { + this._runTest(pTest, pIndex); + }, this); + } else { - summary.failures++; - summary.failedTests.push(testName); + this._runTest(pTest); } + + this.currentTestSuite.postTest(this); + }, this); + + this.currentTestSuite.postAll(this); +} + +/** + * Calculate test duration + * + * Will we used in the results and summary output. + * + * @return {Number} the duration in milliseconds + */ +Tester.prototype.getDuration = function() +{ + if(this.endTime === null) + { + this.endTime = new Date().getTime(); + } + + return this.endTime - this.startTime; +} + +/** + * Initializes test coverage by registering available and testable methods of given class + * + * @param {Object=} pInstanceName an optional class instance to make test coverage work + * @return {void} + */ +Tester.prototype.initCoverage = function(pInstanceName) +{ + if(pInstanceName !== undefined) + { + this.instanceName = pInstanceName; + + var instanceMethods = Object.getOwnPropertyNames(this.instanceName.prototype).filter(function(property) { + return typeof this.instanceName.prototype[property] === 'function'; + }, this); + var staticMethods = Object.getOwnPropertyNames(this.instanceName).filter(function(property) { + return typeof this.instanceName[property] === 'function'; + }, this); + + this.methods = instanceMethods.concat(staticMethods); + } +} + +/** + * Get the results of current tester as object + * + * @return {Object} the test results + */ +Tester.prototype.getResults = function() +{ + return { + testCount: this.testCount, + assertCount: this.successCount + this.failCount, + successCount: this.successCount, + failCount: this.failCount, + duration: this.getDuration(), + coverage: this._getCoverageRate(), + methodsTotal: this.methods.length, + methodsCalled: this.methodsCalled.length + }; +} + +/** + * Output the summary for a single or multiple test suites to the server log + * + * The results of multiple tests get cumulated. + * There will be no log output if it has been disabled. + * + * @param {(Object|Object[])} pTestSuiteResults the test suite result(s) to log a summary for + * @return {void} + */ +Tester.prototype.summary = function(pTestSuiteResults) +{ + var testSuiteResults = pTestSuiteResults !== undefined && Array.isArray(pTestSuiteResults) ? pTestSuiteResults : [this.getResults()]; + var divider = testSuiteResults.length > 1 ? "=" : "-"; + var title = testSuiteResults.length > 1 ? "All Tests" : this.collectionName; + + var testCount = 0; + var assertCount = 0; + var successCount = 0; + var failCount = 0; + var duration = 0; + + testSuiteResults.forEach(function(pTestResult) { + testCount += pTestResult.testCount; + assertCount += pTestResult.assertCount; + successCount += pTestResult.successCount; + failCount += pTestResult.failCount; + duration += pTestResult.duration; }); - return summary; + + this._log("info", "\n" + title + " Summary:"); + this._log("info", divider.repeat(32)); + this._log("", "Total: " + this.t.important(testCount + " Tests, " + assertCount + " Assertions")); + this._log("", "Passed: " + (successCount === assertCount ? this.t.success(successCount) : this.t.warning(successCount))); + this._log("", "Failed: " + (failCount === 0 ? this.t.success(failCount) : this.t.error(failCount))); + this._log("", "Time: " + this.t.important(duration + "ms")); + this._log("", "Coverage: " + this._getCoverageOutput(testSuiteResults)); + this._log("", "\n\n"); + + this._print(); } /** - * With assert you can test if a variable is the same like an expected value.<br/> - * The test result is added to the Tester<br/> + * Write a certain message type to the output + * + * If the given message type is not valid/allowed, the output will be plain unformatted text. + * + * @param {String} pType the message type + * @param {String} pOutput the actual message + * @return {void} * - * Note: the values are compared by === so also the type is checked.<br/> - * By using assert you can Test everything you want.<br/> + * @private + */ +Tester.prototype._log = function(pType, pOutput) +{ + var allowedTerminalMethods = ["debug", "success", "info", "error", "warning", "important"]; + + if(allowedTerminalMethods.indexOf(pType) !== -1) + { + this.output += "\n" + this.t[pType](pOutput); + } + else + { + this.output += "\n" + pOutput; + } +} + +/** + * Set the value to test against + * + * @param {*} pValue + * @return {void} * - * @param {AnyValue} pExpect the expected value - * @param {AnyValue} pActual the actual value - * @param {String} [pTestDescription] this is an optional description. You should use it, if you have more than one .assert in your test. + * @private */ -Tester.prototype.assert = function (pExpect, pActual, pTestDescription) +Tester.prototype._setExpectValue = function(pValue) { - this.currentTestHadAlreadyAssert = true; - - var res = pActual === pExpect; + this.expectedValue = pValue; + this.expectedDisplayValue = pValue; +} + +/** + * Determine, whether an error is expected in the current test run + * + * @return {Boolean} + * + * @private + */ +Tester.prototype._testExpectsError = function() +{ + return this.expectedValue instanceof Error; +} + +/** + * Write the ouput to the log and reset the output to an empty string + * + * @return {Tester} + * + * @private + */ +Tester.prototype._print = function() +{ + if(this.outputEnabled) + { + logging.log(this.output); + } - this.testResults.push([ - this._currentTest, - pTestDescription, - res, - pExpect, - pActual - ]); + this.output = ""; + return this; } /** - * Executes all tests in a TestSuite - * @param {TestSuite} pTestSuite the TestSuite which should be tested + * Generates and sets an assert description by given config object or simply set a given custom string + * + * It also handles using the correct operators when negation via `not()` is used + * + * @param {Object} pDescriptionConfig a config object + * @return {void} + * + * @private */ -Tester.prototype.test = function (pTestSuite) +Tester.prototype._generateAssertDescription = function(pDescriptionConfig) { - pTestSuite.preAll(this); + if(Utils.isString(pDescriptionConfig.custom)) + { + this._assertDescription = pDescriptionConfig.custom; + return; + } - pTestSuite.tests.forEach(function(pTest) { - logging.log("Testing " + pTest[0]); - - this.currentTestHadAlreadyAssert = false; - - this._currentTest = pTest[0]; - pTestSuite.preTest(this); - - if (pTest.length >= 3) + Object.assign(pDescriptionConfig, pDescriptionConfig.custom); + var valueName = pDescriptionConfig.name || "value"; + var valueNameSuffix = pDescriptionConfig.nameSuffix || ""; + var operator = pDescriptionConfig.operator.trim(); + var expectedValue = pDescriptionConfig.expected || this.expectedDisplayValue; + expectedValue = Utils.isString(expectedValue) ? "`" + expectedValue + "`" : expectedValue + ""; + + if(this._useNegation) + { + switch(operator) { - var errorThrowed = false; - - try { - pTest[1](this); - } catch (ex) { - errorThrowed = true; - - if (ex.toSource() == pTest[2].toSource()) - { - this.testResults.push([ - this._currentTest, - "Expected error throwed", - true, - pTest[2].toSource(), - ex.toSource() - ]); - - // don't throw as it's expected and no detailed stacktrace is needed - } - else - { - this.testResults.push([ - this._currentTest, - "Expected error throwed", - false, - pTest[2].toSource(), - ex.toSource() - ]); - - logging.log("Expected error: " + pTest[2].toSource() + ", but wrong error occoured.\nRunning test again without try catch to get detailed error stack trace") - - pTestSuite.preTest(this); - pTest[1](this); - pTestSuite.postTest(this); - return; - } - } - - if (!errorThrowed) - { - // if it didn't fail - this.testResults.push([ - this._currentTest, - "Expected error throwed", - false, - pTest[2].toSource(), - "no error" - ]); - } + case "===": + operator = "!=="; + break; + case ">": + operator = "<="; + break; + case ">=": + operator = "<"; + break; + case "<": + operator = ">="; + break; + case "<=": + operator = ">"; + break; + case "is": + case "type is": + case "has": + operator += " not"; + break; + case "is instance of": + operator += "is not instance of"; + break; + case "starts with": + case "ends with": + case "throws": + default: + operator = "not " + operator; + break; } - else + } + + this.actualValueElementHierarchy.forEach(function(pElement) { + valueName += typeof pElement === "number" ? "[" + pElement + "]" : "." + pElement; + }, this); + + var description = valueName + valueNameSuffix + " " + operator + " " + expectedValue; + this._assertDescription = description.trim(); + this.actualValueElementHierarchy = []; +} + +/** + * Reset test-related properties to their initial state + * + * This is done before every test run to prevent side-effects or expired/invalid data and states + * + * @return {Tester} + * + * @private + */ +Tester.prototype._resetTest = function() +{ + this.actualValue = undefined; + this.actualDisplayValue = undefined; + this.actualOriginalValue = undefined; + this.actualOriginalDisplayValue = undefined; + this.actualValueElementHierarchy = []; + this.expectedValue = undefined; + this.expectedDisplayValue = undefined; + this._assertDescription = ""; + this._testResult = false; + this._useNegation = false; + + return this; +} + +/** + * Get the length of a given value or undefined if it is not an array, object or string + * + * @param {(Array|Object|String)} pActualValue the value to get the length from + * @return {Number} + * + * @private + */ +Tester.prototype._getLength = function(pActualValue) +{ + if(Array.isArray(pActualValue) || Utils.isString(pActualValue)) + { + return pActualValue.length; + } + else if(Utils.isObject(pActualValue)) + { + return Object.keys(pActualValue).length; + } + + return undefined; +} + +/** + * Get the percentage of test coverage + * + * Will we used in the results and summary output. + * + * @return {?Number} the duration in milliseconds + */ +Tester.prototype._getCoverageRate = function() +{ + if(this.methods.length === 0 && this.methodsCalled.length === 0) + { + return null; + } + + if(this.methods.length === 0 || this.methodsCalled.length === 0) + { + return 0.00; + } + + var coverage = (this.methodsCalled.length / this.methods.length) * 100; + coverage = Number.parseFloat(Number.parseFloat(coverage).toFixed(2)); + + return coverage > 100 ? 100.00 : coverage; +} + +/** + * Register, which method of the given class has been called + * + * It takes the name of the TestSuite and splits it to get the class name and the method. + * Then, it checks if the class has such a method. It gets added to the call-list, if it has not been added yet. + * This is necessary to calculate the test coverage. + * All available class methods get registered beforehand and will be compared to this list later in `_getCoverageRate()`. + * + * @return {void} + * + * @private + */ +Tester.prototype._registerMethodTestCall = function() +{ + if(this.instanceName !== undefined) + { + var callParts = this.currentTestSuite.name.split("."); + + if(callParts[0] === this.instanceName.prototype.constructor.name && this.methods.indexOf(callParts[1]) !== -1) { - // run without try catch as no error expected - pTest[1](this); + if(this.methodsCalled.indexOf(callParts[1]) === -1) + { + this.methodsCalled.push(callParts[1]); + } } - - if (!this.currentTestHadAlreadyAssert && pTest.length < 3) // only add message if no error expected - { - this.testResults.push([ - this._currentTest, - "Expected no error", - true, - "no error", - "no error" - ]); + } +} + +/** + * Renders the output for the test coverage + * + * The results of multiple tests get cumulated. + * + * @param {Object[]} pTestSuiteResults the test suite(s) to log a summary for + * @return {String} the test coverage output + */ +Tester.prototype._getCoverageOutput = function(pTestSuiteResults) +{ + var coverageOutput = this.t.debug("unknown"); + var methodsTotal = 0; + var methodsCalled = 0; + var coverage = null; + var avgCoverage = null; + var coverageMethodCount = null; + + pTestSuiteResults.forEach(function(pTestResult) { + methodsTotal += pTestResult.methodsTotal; + methodsCalled += pTestResult.methodsCalled; + + if(pTestResult.coverage !== null) { + coverage += pTestResult.coverage; } - - pTestSuite.postTest(this); - }, this); - - pTestSuite.postAll(this); + }); + + if(coverage !== null) + { + avgCoverage = coverage / pTestSuiteResults.length; + coverageMethodCount = "(" + methodsCalled + "/" + methodsTotal + ")"; + } + + if(avgCoverage >= 80) + { + coverageOutput = this.t.success(avgCoverage + "% " + coverageMethodCount); + } + else if(avgCoverage >= 50) + { + coverageOutput = this.t.warning(avgCoverage + "% " + coverageMethodCount); + } + else if(avgCoverage > 0) + { + coverageOutput = this.t.error(avgCoverage + "% " + coverageMethodCount); + } + + return coverageOutput; } /** - * Prints the test results to the log + * Generates the title for the test about to run + * + * @param {Test} pTest the test to run + * @param {Number} pDataProviderIndex the current index of the data provider + * @return {void} + * + * @private */ -Tester.prototype.printResults = function () +Tester.prototype._generateTestTitle = function(pTest, pDataProviderIndex) { - var lastTestDescription = ""; - logging.log("Test results for \"" + this.collectionName + "\"") - this.testResults.forEach(function(pResult) { - - if (lastTestDescription != pResult[0]) + if(pDataProviderIndex !== undefined) + { + var titleValues = []; + + this.dataProvider[pDataProviderIndex].forEach(function(pElement) { + titleValues.push(pElement === undefined ? "undefined" : JSON.stringify(pElement)); + }); + this._log("", this.t.info("\t\u2699 Test: " + pTest.name) + this.t.debug(" (#" + (pDataProviderIndex + 1) + ": " + titleValues.join(" | ") + ")")); + } + else + { + this._log("info", "\t\u2699 Test: " + pTest.name); + } +} + +/** + * Runs a single test iteration and handles errors + * + * @param {Test} pTest the test to run + * @param {Number} pDataProviderIndex the current index of the data provider + * @return {void} + * + * @private + */ +Tester.prototype._runTest = function(pTest, pDataProviderIndex) +{ + this._generateTestTitle(pTest, pDataProviderIndex); + this.testCount++; + + var dataProvider = pDataProviderIndex !== undefined ? this.dataProvider[pDataProviderIndex] : undefined; + + try + { + pTest.callback(this, dataProvider); + } + catch (e) + { + this.assert(); + + // Expected, but wrong error + if (this._testExpectsError() && e.toSource() !== this.expectedValue.toSource()) { - logging.log("Test \"" + pResult[0] + "\":"); + this._log("error", "Wrong error occurred"); + this._log("warning", "\t\t expected: " + this.expectedValue.toSource()); + this._log("error", "\t\t actual: " + e.toSource()); } - - var message = (pResult[1] ? " - " + pResult[1] : " - Test result ") + ": " + (pResult[2] ? "success" : "fail\nexpected: " + JSON.stringify(pResult[3], null, "\t") + "\nactual: " + JSON.stringify(pResult[4], null, "\t")); - - logging.log(message); - lastTestDescription = pResult[0]; - }, this); - logging.log(this.getSummary().getMessage()); -} \ No newline at end of file + else + { // Unexpected error + this._log("error", "Unexpected error occurred"); + } + + var exception = logging.toLogString(e["rhinoException"] !== undefined ? e["rhinoException"] : e, true); + this._log("error", e.name + ":\n" + exception.replace(/\s+(at|\[->\])\s/g, "\n\t$1 ")); + this._log("error", "jDito callstack:\n" + e.stack); + + if(pTest.rerunOnError) + { + this._log("debug", "Rerun without try-catch to get detailed error stack trace"); + this._print(); + + this.currentTestSuite.preTest(this); + pTest.callback(this, dataProvider); + this.currentTestSuite.postTest(this); + } + } +} diff --git a/process/UnitTest_test/UnitTest_test.aod b/process/UnitTest_test/UnitTest_test.aod new file mode 100644 index 00000000000..095a395529b --- /dev/null +++ b/process/UnitTest_test/UnitTest_test.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>UnitTest_test</name> + <title>[TEST] UnitTest_lib</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/UnitTest_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/UnitTest_test/process.js b/process/UnitTest_test/process.js new file mode 100644 index 00000000000..7d80b7995e4 --- /dev/null +++ b/process/UnitTest_test/process.js @@ -0,0 +1,1141 @@ +import("system.result"); +import("system.vars"); +import("Keyword_lib"); +import("UnitTest_lib"); + + +var equals = new TestSuite("Tester.equals", [ + new Test("should test value equality", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).equals(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + var num = 0; + var str = '0'; + var objStr = new String('0'); + var obj_1 = {a: 1, b: 2, c: 3}; + var obj_2 = {x: null, y: "test", z: true}; + + return [ + [true, num, num], + [true, str, str], + [true, true, true], + [true, objStr, objStr], + [true, obj_1, obj_1], + [true, obj_2, obj_2], + [false, true, false], + [false, obj_1, obj_2], + [false, num, objStr], + [false, num, str], + [false, objStr, str], + [false, null, undefined], + [false, objStr, null], + [false, objStr, undefined], + [false, null, "null"], + ]; + } + ) +]); + +var isGreater = new TestSuite("Tester.isGreater", [ + new Test("should test if value is greater than another", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isGreater(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 1, 0], + [true, 100, 10], + [false, 3, 3], + [false, 0, 5], + [false, 1234, 5678], + ]; + } + ) +]); + +var isGreaterEqual = new TestSuite("Tester.isGreaterEqual", [ + new Test("should test if value is greater or equal than another", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isGreaterEqual(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 1, 0], + [true, 101, 100], + [true, 3, 3], + [false, 0, 5], + [false, 1234, 5678], + ]; + } + ) +]); + +var isLower = new TestSuite("Tester.isLower", [ + new Test("should test if value is lower than another", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isLower(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0, 1], + [true, 10, 100], + [false, 3, 3], + [false, 5, 0], + [false, 5678, 1234], + ]; + } + ) +]); + +var isLowerEqual = new TestSuite("Tester.isLowerEqual", [ + new Test("should test if value is greater or equal than another", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isLowerEqual(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0, 1], + [true, 100, 101], + [true, 3, 3], + [false, 5, 0], + [false, 5678, 1234], + ]; + } + ) +]); + +var isBoolean = new TestSuite("Tester.isBoolean", [ + new Test("should test if value is a boolean", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isBoolean().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, true], + [true, false], + [false, "true"], + [false, "false"], + [false, ""], + [false, "0"], + [false, 0], + [false, new Object()], + [false, []], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isNumber = new TestSuite("Tester.isNumber", [ + new Test("should test if value is a number", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isNumber().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0], + [true, 100], + [true, 33.33333], + [true, 0xFFFFFF], + [true, 0777], // Octal + //[true, 0o777], // New octal format since ECMAScript 2015 + //[true, 0b11111111], // Seems like binary numbers are not supported + [true, 2e6], // Exponentiation + [true, 0.1e2], // Exponentiation + [true, +Infinity], + [true, -Infinity], + [true, NaN], // This should actually fail. Needs fix in Utils + [false, ""], + [false, "0"], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isNumeric = new TestSuite("Tester.isNumeric", [ + new Test("should test if value is numeric", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isNumeric().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0], + [true, 100], + [true, 33.33333], + [true, "0777"], // Octal + [true, "2e6"], // Exponentiation + [true, "0.1e2"], // Exponentiation + [true, +Infinity], + [true, -Infinity], + [true, NaN], // This should actually fail. Needs fix in Utils + [true, "50000"], + [true, "0"], + [false, ""], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isNotANumber = new TestSuite("Tester.isNaN", [ + new Test("should test if value is not NaN", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isNaN().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, NaN], + [false, 0], + [false, 100], + [false, 33.33333], + [false, "0777"], // Octal + [false, "2e6"], // Exponentiation + [false, "0.1e2"], // Exponentiation + [false, +Infinity], + [false, -Infinity], + [false, "50000"], + [false, "0"], + [false, ""], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isInteger = new TestSuite("Tester.isInteger", [ + new Test("should test if value is an integer", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isInteger().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0], + [true, 100], + [true, 0xFFFFFF], + [true, 0777], // Octal + [true, 2e6], // Exponentiation + [true, 0.1e2], // Exponentiation + [true, "0"], + [false, 33.33333], + [false, +Infinity], + [false, -Infinity], + [false, NaN], + [false, ""], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isFloat = new TestSuite("Tester.isFloat", [ + new Test("should test if value is a float", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isFloat().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 33.33333], + [false, 0], + [false, 100], + [false, 0xFFFFFF], + [false, 0777], // Octal + [false, 2e6], // Exponentiation + [false, 0.1e2], // Exponentiation + [false, +Infinity], + [false, -Infinity], + [false, NaN], + [false, ""], + [false, "0"], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isString = new TestSuite("Tester.isString", [ + new Test("should test if value is a string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isString().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, ""], + [true, "Hello"], + [true, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isArray = new TestSuite("Tester.isArray", [ + new Test("should test if value is an array", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isArray().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, []], + [true, ["a", 2, null]], + [true, new Array()], + [false, ""], + [false, "0"], + [false, new Object()], + [false, new Function()], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isObject = new TestSuite("Tester.isObject", [ + new Test("should test if value is an object", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isObject().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, {}], + [true, []], + [true, ["a", 2, null]], + [true, new Array()], + [true, new Object()], + [true, new String("hello")], + [false, new Function()], + [false, ""], + [false, "0"], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isFunction = new TestSuite("Tester.isFunction", [ + new Test("should test if value is a function", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isFunction().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, new Function()], + [true, function(){}], + [true, Math.sin], + [true, Array.isArray], + [false, new Array()], + [false, new Object()], + [false, ""], + [false, "0"], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isNull = new TestSuite("Tester.isNull", [ + new Test("should test if value is null", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isNull().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, null], + [false, ""], + [false, "Hello"], + [false, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, undefined], + ]; + } + ) +]); + +var isUndefined = new TestSuite("Tester.isUndefined", [ + new Test("should test if value is undefined", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isUndefined().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, undefined], + [false, ""], + [false, "Hello"], + [false, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, null], + ]; + } + ) +]); + +var isUpperCase = new TestSuite("Tester.isUpperCase", [ + new Test("should test if value is an uppercase string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isUpperCase().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "HELLO"], + [false, "HeLlo"], + [false, "hello"], + [false, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isLowerCase = new TestSuite("Tester.isLowerCase", [ + new Test("should test if value is a lowercase string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isLowerCase().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "hello"], + [false, "HELLO"], + [false, "HeLlo"], + [false, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var startsWith = new TestSuite("Tester.startsWith", [ + new Test("should test if value starts with a given string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).startsWith(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "Millenium Falcon", "Mill"], + [false, "Millenium Falcon", "MILL"], + [false, "Millenium Falcon", "Abc"], + [false, "Millenium Falcon", "0"], + ]; + } + ) +]); + +var endsWith = new TestSuite("Tester.endsWith", [ + new Test("should test if value ends with a given string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).endsWith(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "Millenium Falcon", "con"], + [false, "Millenium Falcon", "CON"], + [false, "Millenium Falcon", "Abc"], + [false, "Millenium Falcon", "0"], + ]; + } + ) +]); + +var isInstanceOf = new TestSuite("Tester.isInstanceOf", [ + new Test("should test if value is an instance of given class", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isInstanceOf(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, new Tester(), "Tester"], + [true, [], "Array"], + [true, {}, "Object"], + [false, "abc", "String"], + [false, true, "Boolean"], + [false, 0, "Number"], + ]; + } + ) +]); + +var hasLength = new TestSuite("Tester.hasLength", [ + new Test("should test if value has the expected length", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).hasLength(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "", 0], + [true, [], 0], + [true, {}, 0], + [true, "abc", 3], + [true, ["a", "z"], 2], + [true, new String("?!"), 2], + [false, 0, 1], + [false, true, 1], + [false, null, 1], + [false, undefined, 1], + ]; + } + ) +]); + + +var hasMinLength = new TestSuite("Tester.hasMinLength", [ + new Test("should test if value has the expected minimum length", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).hasMinLength(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "", 0], + [true, [], 0], + [true, {}, 0], + [true, "abc", 3], + [true, "abc", 2], + [true, ["a", "z"], 2], + [true, ["a", "z"], 1], + [true, new String("?!"), 2], + [false, "abc", 4], + [false, ["a", "z"], 5], + [false, 0, 1], + [false, true, 1], + [false, null, 1], + [false, undefined, 1], + ]; + } + ) +]); + + +var hasMaxLength = new TestSuite("Tester.hasMaxLength", [ + new Test("should test if value has the expected maximum length", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).hasMaxLength(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "", 0], + [true, [], 0], + [true, {}, 0], + [true, "abc", 3], + [true, "abc", 4], + [true, ["a", "z"], 2], + [true, ["a", "z"], 3], + [true, new String("?!"), 2], + [false, "abc", 2], + [false, ["a", "z"], 1], + [false, 0, 1], + [false, true, 1], + [false, null, 1], + [false, undefined, 1], + ]; + } + ) +]); + +var not = new TestSuite("Tester.not", [ + new Test("should test negation of compare tests", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var method = pDataProvider[1]; + var actualValue = dummyTester.expectThat(pDataProvider[2]).not()[method](pDataProvider[3]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + var num = 0; + var str = '0'; + var objStr = new String('0'); + var obj_1 = {a: 1, b: 2, c: 3}; + var obj_2 = {x: null, y: "test", z: true}; + + return [ + [true, "equals", true, false], + [true, "equals", obj_1, obj_2], + [true, "equals", num, objStr], + [false, "equals", num, num], + [false, "equals", str, str], + [false, "equals", true, true], + [true, "isGreater", 3, 3], + [true, "isGreater", 0, 5], + [true, "isGreater", 1234, 5678], + [false, "isGreater", 1, 0], + [false, "isGreater", 100, 10], + [true, "isGreaterEqual", 0, 5], + [true, "isGreaterEqual", 1234, 5678], + [false, "isGreaterEqual", 1, 0], + [false, "isGreaterEqual", 101, 100], + [false, "isGreaterEqual", 3, 3], + [true, "isLower", 3, 3], + [true, "isLower", 5, 0], + [true, "isLower", 5678, 1234], + [false, "isLower", 0, 1], + [false, "isLower", 10, 100], + [true, "isLowerEqual", 5, 0], + [true, "isLowerEqual", 5678, 1234], + [false, "isLowerEqual", 0, 1], + [false, "isLowerEqual", 100, 101], + [false, "isLowerEqual", 3, 3], + [true, "startsWith", "Millenium Falcon", "MILL"], + [true, "startsWith", "Millenium Falcon", "Abc"], + [true, "startsWith", "Millenium Falcon", "0"], + [false, "startsWith", "Millenium Falcon", "Mill"], + [true, "endsWith", "Millenium Falcon", "CON"], + [true, "endsWith", "Millenium Falcon", "Abc"], + [true, "endsWith", "Millenium Falcon", "0"], + [false, "endsWith", "Millenium Falcon", "con"], + [true, "isInstanceOf", "abc", "String"], + [true, "isInstanceOf", true, "Boolean"], + [true, "isInstanceOf", 0, "Number"], + [false, "isInstanceOf", new Tester(), "Tester"], + [false, "isInstanceOf", [], "Array"], + [false, "isInstanceOf", {}, "Object"], + [true, "hasLength", 0, 1], + [true, "hasLength", true, 1], + [true, "hasLength", null, 1], + [true, "hasLength", undefined, 1], + [false, "hasLength", "", 0], + [false, "hasLength", [], 0], + [false, "hasLength", {}, 0], + [false, "hasLength", "abc", 3], + [false, "hasLength", ["a", "z"], 2], + [false, "hasLength", new String("?!"), 2], + ]; + } + ), + new Test("should test negation of type tests", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var method = pDataProvider[1]; + var actualValue = dummyTester.expectThat(pDataProvider[2]).not()[method]().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "isBoolean", "true"], + [true, "isBoolean", "false"], + [true, "isBoolean", ""], + [true, "isBoolean", "0"], + [true, "isBoolean", 0], + [true, "isBoolean", new Object()], + [true, "isBoolean", []], + [true, "isBoolean", null], + [true, "isBoolean", undefined], + [false, "isBoolean", true], + [false, "isBoolean", false], + [true, "isNumber", ""], + [true, "isNumber", "0"], + [true, "isNumber", new Object()], + [true, "isNumber", []], + [true, "isNumber", true], + [true, "isNumber", null], + [true, "isNumber", undefined], + [false, "isNumber", 0], + [false, "isNumber", 100], + [false, "isNumber", 33.33333], + [false, "isNumber", 0xFFFFFF], + [false, "isNumber", 0777], // Octal + [false, "isNumber", 2e6], // Exponentiation + [false, "isNumber", 0.1e2], // Exponentiation + [false, "isNumber", +Infinity], + [false, "isNumber", -Infinity], + [false, "isNumber", NaN], + [true, "isNumeric", ""], + [true, "isNumeric", new Object()], + [true, "isNumeric", []], + [true, "isNumeric", true], + [true, "isNumeric", null], + [true, "isNumeric", undefined], + [false, "isNumeric", 0], + [false, "isNumeric", 100], + [false, "isNumeric", 33.33333], + [false, "isNumeric", "0777"], // Octal + [false, "isNumeric", "2e6"], // Exponentiation + [false, "isNumeric", "0.1e2"], // Exponentiation + [false, "isNumeric", +Infinity], + [false, "isNumeric", -Infinity], + [false, "isNumeric", NaN], + [false, "isNumeric", "50000"], + [false, "isNumeric", "0"], + [true, "isNaN", 0], + [true, "isNaN", 100], + [true, "isNaN", 33.33333], + [true, "isNaN", "0777"], // Octal + [true, "isNaN", "2e6"], // Exponentiation + [true, "isNaN", "0.1e2"], // Exponentiation + [true, "isNaN", +Infinity], + [true, "isNaN", -Infinity], + [true, "isNaN", "50000"], + [true, "isNaN", "0"], + [true, "isNaN", ""], + [true, "isNaN", new Object()], + [true, "isNaN", []], + [true, "isNaN", true], + [true, "isNaN", null], + [true, "isNaN", undefined], + [false, "isNaN", NaN], + [true, "isInteger", 33.33333], + [true, "isInteger", +Infinity], + [true, "isInteger", -Infinity], + [true, "isInteger", NaN], + [true, "isInteger", ""], + [true, "isInteger", new Object()], + [true, "isInteger", []], + [true, "isInteger", true], + [true, "isInteger", null], + [true, "isInteger", undefined], + [false, "isInteger", 0], + [false, "isInteger", 100], + [false, "isInteger", 0xFFFFFF], + [false, "isInteger", 0777], // Octal + [false, "isInteger", 2e6], // Exponentiation + [false, "isInteger", 0.1e2], // Exponentiation + [false, "isInteger", "0"], + [true, "isFloat", 0], + [true, "isFloat", 100], + [true, "isFloat", 0xFFFFFF], + [true, "isFloat", 0777], // Octal + [true, "isFloat", 2e6], // Exponentiation + [true, "isFloat", 0.1e2], // Exponentiation + [true, "isFloat", +Infinity], + [true, "isFloat", -Infinity], + [true, "isFloat", NaN], + [true, "isFloat", ""], + [true, "isFloat", "0"], + [true, "isFloat", new Object()], + [true, "isFloat", []], + [true, "isFloat", true], + [true, "isFloat", null], + [true, "isFloat", undefined], + [false, "isFloat", 33.33333], + [true, "isString", new String('Hello')], + [true, "isString", []], + [true, "isString", 0], + [true, "isString", true], + [true, "isString", null], + [true, "isString", undefined], + [false, "isString", ""], + [false, "isString", "Hello"], + [false, "isString", "0"], + [true, "isArray", ""], + [true, "isArray", "0"], + [true, "isArray", new Object()], + [true, "isArray", new Function()], + [true, "isArray", 0], + [true, "isArray", true], + [true, "isArray", null], + [true, "isArray", undefined], + [false, "isArray", []], + [false, "isArray", ["a", 2, null]], + [false, "isArray", new Array()], + [true, "isObject", new Function()], + [true, "isObject", ""], + [true, "isObject", "0"], + [true, "isObject", 0], + [true, "isObject", true], + [true, "isObject", null], + [true, "isObject", undefined], + [false, "isObject", {}], + [false, "isObject", []], + [false, "isObject", ["a", 2, null]], + [false, "isObject", new Array()], + [false, "isObject", new Object()], + [false, "isObject", new String("hello")], + [true, "isFunction", new Array()], + [true, "isFunction", new Object()], + [true, "isFunction", ""], + [true, "isFunction", "0"], + [true, "isFunction", 0], + [true, "isFunction", true], + [true, "isFunction", null], + [true, "isFunction", undefined], + [false, "isFunction", new Function()], + [false, "isFunction", function(){}], + [false, "isFunction", Math.sin], + [false, "isFunction", Array.isArray], + [true, "isNull", ""], + [true, "isNull", "Hello"], + [true, "isNull", "0"], + [true, "isNull", new String('Hello')], + [true, "isNull", []], + [true, "isNull", 0], + [true, "isNull", true], + [true, "isNull", undefined], + [false, "isNull", null], + [true, "isUndefined", ""], + [true, "isUndefined", "Hello"], + [true, "isUndefined", "0"], + [true, "isUndefined", new String('Hello')], + [true, "isUndefined", []], + [true, "isUndefined", 0], + [true, "isUndefined", true], + [true, "isUndefined", null], + [false, "isUndefined", undefined], + [true, "isUpperCase", "HeLlo"], + [true, "isUpperCase", "hello"], + [true, "isUpperCase", "0"], + [true, "isUpperCase", new String('Hello')], + [true, "isUpperCase", []], + [true, "isUpperCase", 0], + [true, "isUpperCase", true], + [true, "isUpperCase", null], + [true, "isUpperCase", undefined], + [false, "isUpperCase", "HELLO"], + [true, "isLowerCase", "HELLO"], + [true, "isLowerCase", "HeLlo"], + [true, "isLowerCase", "0"], + [true, "isLowerCase", new String('Hello')], + [true, "isLowerCase", []], + [true, "isLowerCase", 0], + [true, "isLowerCase", true], + [true, "isLowerCase", null], + [true, "isLowerCase", undefined], + [false, "isLowerCase", "hello"], + ]; + } + ), + new Test("should not affect other assertions", + function(pTester) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + //first assertion with not()-call + var expectValue = true; + var actualValue = dummyTester.expectThat("this value").not().equals("that other value").getTestResult(); + pTester.expectThat(actualValue).equals(expectValue).assert(); + + //second test without not()-call => the first not()-call should not affect the second assertion + expectValue = false; + actualValue = dummyTester.expectThat("this value").equals("that other value").getTestResult(); + pTester.expectThat(actualValue).equals(expectValue).assert(); + } + ) +]); + +var elementAt = new TestSuite("Tester.elementAt", [ + new Test("should test if value element at key position passes test", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var key = pDataProvider[2]; + var method = pDataProvider[3]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).elementAt(key)[method](pDataProvider[4]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, ["a", "z", ["x", true, 42]], 0, "isString", undefined], + [true, ["a", "z", ["x", true, 42]], 1, "equals", "z"], + [true, ["a", "z", ["x", true, 42]], 2, "isArray", undefined], + [true, ["a", "z", ["x", true, 42]], 2, "hasLength", 3], + [true, ["a", "z", {"first": "x", "second": true}], 2, "isObject", undefined], + [true, ["a", "z", {"first": "x", "second": true}], 2, "hasLength", 2], + [false, ["a", "z", ["x", true, 42]], 0, "isNumeric", undefined], + [false, ["a", "z", ["x", true, 42]], 1, "equals", "a"], + [false, ["a", "z", ["x", true, 42]], 2, "isString", undefined], + [false, ["a", "z", ["x", true, 42]], 2, "hasLength", 1], + [false, ["a", "z", {"first": "x", "second": true}], 2, "isArray", undefined], + [false, ["a", "z", {"first": "x", "second": true}], 2, "hasLength", 1], + ]; + } + ), + new Test("should test if nested value element at key position passes test", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var key1 = pDataProvider[2]; + var key2 = pDataProvider[3]; + var method = pDataProvider[4]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).elementAt(key1).elementAt(key2)[method](pDataProvider[5]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, [["x", true, [42]]], 0, 0, "isString", undefined], + [true, [["x", true, [42]]], 0, 0, "equals", "x"], + [true, [["x", true, [42]]], 0, 1, "isBoolean", undefined], + [true, [["x", true, [42]]], 0, 1, "equals", true], + [true, [["x", true, [42]]], 0, 2, "isArray", undefined], + [true, [{"first": "a", "second": 42}], 0, "first", "equals", "a"], + [true, [{"first": "a", "second": 42}], 0, "second", "equals", 42], + [true, {"outer": {"inner": "a"}}, "outer", "inner", "isString", undefined], + [true, {"outer": {"inner": "a"}}, "outer", "inner", "equals", "a"], + [false, [["x", true, [42]]], 0, 1, "equals", "a"], + [false, [["x", true, [42]]], 0, 2, "isNumber", undefined], + [false, {"outer": {"inner": "a"}}, "outer", "inner", "isNumber", undefined], + ]; + } + ) +]); + +var getCoverageRate = new TestSuite("Tester._getCoverageRate", [ + new Test("should test if coverage is correctly calculated", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + dummyTester.methods = pDataProvider[1]; + dummyTester.methodsCalled = pDataProvider[2]; + var actualValue = dummyTester._getCoverageRate(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [100, ["method1", "method2", "method3"], ["method1", "method2", "method3"]], + [33.33, ["method1", "method2", "method3"], ["method1"]], + [66.67, ["method1", "method2", "method3"], ["method1", "method2"]], + [100, ["method1"], ["method1", "method2", "method3"]], + [0, ["method1"], []], + [0, [], ["method1"]], + [null, [], []], + ]; + } + ) +]); + +var getLength = new TestSuite("Tester._getLength", [ + new Test("should test if value has the expected length", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[1]; + var actualValue = dummyTester._getLength(pDataProvider[0]); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + ["", 0], + [[], 0], + [{}, 0], + ["abc", 3], + [["a", "z"], 2], + [new String("?!"), 2], + [{first: "xyz"}, 1], + [0, undefined], + [true, undefined], + [null, undefined], + [undefined, undefined], + ]; + } + ) +]); + + + +var tester = new Tester("Test UnitTest_lib"); +tester.initCoverage(Tester); +tester.test(equals); +tester.test(isGreater); +tester.test(isGreaterEqual); +tester.test(isLower); +tester.test(isLowerEqual); +tester.test(isBoolean); +tester.test(isNumber); +tester.test(isNumeric); +tester.test(isNotANumber); +tester.test(isInteger); +tester.test(isFloat); +tester.test(isString); +tester.test(isArray); +tester.test(isObject); +tester.test(isFunction); +tester.test(isNull); +tester.test(isUndefined); +tester.test(isUpperCase); +tester.test(isLowerCase); +tester.test(startsWith); +tester.test(endsWith); +tester.test(isInstanceOf); +tester.test(hasLength); +tester.test(hasMinLength); +tester.test(hasMaxLength); +tester.test(not); +tester.test(elementAt); +tester.test(getCoverageRate); +tester.test(getLength); + +tester.summary(); + +result.object(tester.getResults()); diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index 9dc7208091d..97545be1730 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -183,6 +183,39 @@ Utils.isNumber = function (pValue) return typeof pValue === "number"; } +/** + * Checks if the given value is numeric. + * + * @param {Object} pValue the value to check + * @return {Boolean} true if the value is numeric + */ +Utils.isNumeric = function (pValue) +{ + return Utils.isNumber(pValue) || (!isNaN(parseFloat(pValue)) && isFinite(pValue)); +} + +/** + * Checks if the given value is an integer. + * + * @param {Object} pValue the value to check + * @return {Boolean} true if the value is an integer + */ +Utils.isInteger = function (pValue) +{ + return Number.isInteger(parseFloat(pValue)) && isFinite(pValue); +} + +/** + * Checks if the given value is a floating point number. + * + * @param {Object} pValue the value to check + * @return {Boolean} true if the value is a float + */ +Utils.isFloat = function (pValue) +{ + return !Number.isInteger(parseFloat(pValue)) && !isNaN(parseFloat(pValue)) && isFinite(pValue); +} + /** * Checks if the given value is an object. Be careful, null is also considered "object". * @@ -191,7 +224,7 @@ Utils.isNumber = function (pValue) */ Utils.isObject = function (pValue) { - return typeof pValue === "object"; + return typeof pValue === "object" && pValue !== null; } /** diff --git a/process/_all_test/_all_test.aod b/process/_all_test/_all_test.aod new file mode 100644 index 00000000000..4336a9ddb94 --- /dev/null +++ b/process/_all_test/_all_test.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>_all_test</name> + <title>[TEST] .All</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/_all_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/_all_test/process.js b/process/_all_test/process.js new file mode 100644 index 00000000000..cbc75f35849 --- /dev/null +++ b/process/_all_test/process.js @@ -0,0 +1,23 @@ +import("system.logging"); +import("system.process"); +import("UnitTest_lib"); +import("Terminal_lib"); + + +var testResults = []; + +process.getProcesses([process.VARIANT_EXECUTABLE]).forEach(function(pProcessName) { + // Run all executable processes ending with "_test" except THIS one + if(pProcessName !== "_all_test" && pProcessName.substr(-5, 5) === "_test") { + var startConfig = process.createStartConfig().setName(pProcessName); + var testResult = JSON.parse(process.start(startConfig)); + + if(testResult !== null && typeof testResult === "object") { + testResults.push(testResult); + } + } +}); + +var tester = new Tester(""); +tester.summary(testResults); + -- GitLab From a62cad9fb6ae986fa384098b4a7d256dd6190cca Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 30 Oct 2020 09:51:37 +0100 Subject: [PATCH 047/184] 1067663 sql queries fixed for oracle --- .../object_rowid.displayvalue/expression.js | 2 +- .../object_rowid.displayvalue/expression.js | 2 +- .../object_rowid.displayvalue/expression.js | 2 +- .../object_rowid.displayvalue/expression.js | 2 +- .../offer_id.displayvalue/expression.js | 3 +- .../recordcontainers/jdito/contentProcess.js | 4 +- process/Context_lib/process.js | 29 +++++------ process/Keyword_lib/process.js | 1 + process/Sql_lib/process.js | 15 +++++- process/Turnover_lib/process.js | 51 +++++++++++++------ 10 files changed, 73 insertions(+), 38 deletions(-) diff --git a/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js index 33554680ccc..fb69d484cfa 100644 --- a/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ b/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js @@ -1,4 +1,4 @@ import("system.result"); import("Context_lib"); -result.string(ContextUtils.getNameSubselectSql("OBJECT_TYPE", "OBJECT_ROWID")) \ No newline at end of file +result.string(ContextUtils.getNameSubselectSql("COMPETITION.OBJECT_TYPE", "COMPETITION.OBJECT_ROWID")) \ No newline at end of file diff --git a/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js index 33554680ccc..856c1bb3cff 100644 --- a/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ b/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js @@ -1,4 +1,4 @@ import("system.result"); import("Context_lib"); -result.string(ContextUtils.getNameSubselectSql("OBJECT_TYPE", "OBJECT_ROWID")) \ No newline at end of file +result.string(ContextUtils.getNameSubselectSql("FORECAST.OBJECT_TYPE", "FORECAST.OBJECT_ROWID")) \ No newline at end of file diff --git a/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js index 000d055cfac..a5d62617bee 100644 --- a/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ b/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js @@ -5,6 +5,6 @@ import("Context_lib"); //TODO: refactor: //whenever we want to shrink data for a single object it's not needed to resolve the objects name where we're from if (vars.get("$param.ObjectType_param") == null) - result.string(ContextUtils.getNameSubselectSql("OBJECT_TYPE", "OBJECT_ROWID")); + result.string(ContextUtils.getNameSubselectSql("OBJECTMEMBER.OBJECT_TYPE", "OBJECTMEMBER.OBJECT_ROWID")); else result.string("'OBJECT_ROWID.displayValue not loaded'"); \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js index 33554680ccc..c0332af5cb5 100644 --- a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js @@ -1,4 +1,4 @@ import("system.result"); import("Context_lib"); -result.string(ContextUtils.getNameSubselectSql("OBJECT_TYPE", "OBJECT_ROWID")) \ No newline at end of file +result.string(ContextUtils.getNameSubselectSql("OFFER.OBJECT_TYPE", "OFFER.OBJECT_ROWID")) \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js index a86ac585f27..2aec63a8d1b 100644 --- a/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js +++ b/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js @@ -1,4 +1,5 @@ import("system.result"); import("Context_lib"); +import("system.db"); -result.string(ContextUtils.getNameSubselectSql("'Offer'", "SALESORDER.OFFER_ID")); \ No newline at end of file +result.string(db.translateStatement(ContextUtils.getNameSql("Offer", "SALESORDER.OFFER_ID"))); \ No newline at end of file diff --git a/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js b/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js index bd20eceda69..fd0e3bd7a6f 100644 --- a/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js @@ -27,8 +27,8 @@ import("system.translate"); */ -var turnoverCategory = translate.text('Turnover'); -var forecastCategory = translate.text('Forecast'); +var turnoverCategory = translate.text("Turnover"); +var forecastCategory = translate.text("Forecast"); var maxYear = parseInt(vars.get("$param.MaxYear_param")); var yearCountToShow = parseInt(vars.get("$param.YearCountToShow_param")); diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index f0e62195ad8..fcf879f0488 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -536,31 +536,31 @@ ContextUtils.getSelectMap = function() .setStateField("STATUS") .setActiveStates([$KeywordRegistry.salesprojectState$open(), $KeywordRegistry.salesprojectState$postponed()]) ,"Contract": ContextSelector.create("CONTRACT", "CONTRACTID") - .setTitleExpression(maskingUtils.concat([ + .setTitleExpression(maskingUtils.cast(maskingUtils.concat([ KeywordUtils.getResolvedTitleSqlPart("ContractType", "CONTRACTTYPE"), maskingUtils.cast("CONTRACTCODE", SQLTYPES.VARCHAR, 10) - ], " ")) + ], " "), SQLTYPES.NVARCHAR, 50)) .setContactIdField("CONTACT_ID") .setCreationDateField("CONTRACTSTART") .setStateField("CONTRACTSTATUS") .setActiveStates([$KeywordRegistry.contractState$validLimited(), $KeywordRegistry.contractState$validUnlimited(), $KeywordRegistry.contractState$notSigned()]) ,"Offer": ContextSelector.create("OFFER", "OFFERID") - .setTitleExpression(maskingUtils.concat([ + .setTitleExpression(maskingUtils.cast(maskingUtils.concat([ "'" + translate.text("Offer") + "'", "' '", maskingUtils.cast("OFFERCODE", SQLTYPES.VARCHAR, 10), "'-'", maskingUtils.cast("VERSNR", SQLTYPES.VARCHAR, 10) - ], "", false)) + ], "", false), SQLTYPES.NVARCHAR, 50)) .setContactIdField("CONTACT_ID") .setCreationDateField("OFFERDATE") .setStateField("STATUS") .setActiveStates([$KeywordRegistry.offerStatus$open(), $KeywordRegistry.offerStatus$checked(), $KeywordRegistry.offerStatus$sent()]) ,"Order": ContextSelector.create("SALESORDER", "SALESORDERID") - .setTitleExpression(maskingUtils.concat([ + .setTitleExpression(maskingUtils.cast(maskingUtils.concat([ KeywordUtils.getResolvedTitleSqlPart("OrderType", "ORDERTYPE"), maskingUtils.cast("SALESORDERCODE", SQLTYPES.VARCHAR, 10) - ], " ")) + ], " "), SQLTYPES.NVARCHAR, 50)) .setContactIdField("CONTACT_ID") .setCreationDateField("SALESORDERDATE") .setStateField("ORDERSTATUS") @@ -607,20 +607,19 @@ ContextUtils.getSelectMap = function() */ ContextUtils.getNameSubselectSql = function(pContextIdDbField, pRowIdDbField) { - // TODO: prepared? - //!SqlBuilder - var select = "(case " + pContextIdDbField + " "; + var select = SqlBuilder.caseStatement() - var selectMap = ContextUtils.getSelectMap () + var selectMap = ContextUtils.getSelectMap(); for (let contextId in selectMap) { - select += "when '" + contextId + "' then (select " + selectMap[contextId].titleExpression + " from " + selectMap[contextId].getFullFromClause() + (pRowIdDbField ? " where " + selectMap[contextId].getFullIdField() + " = " + pRowIdDbField : " ") + ") "; + let titleSelect = newSelect(selectMap[contextId].titleExpression) + .from(selectMap[contextId].getFullFromClause()) + .where(selectMap[contextId].getFullIdField() + " = " + pRowIdDbField); + + select.when(pContextIdDbField, contextId).then(titleSelect); } - select += "else 'Not defined in ContextUtils.getNameSql()!'"; - select += "end)"; - - return select; + return select.toString(); } /** diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js index ea1736e5c13..994fd55c07d 100644 --- a/process/Keyword_lib/process.js +++ b/process/Keyword_lib/process.js @@ -107,6 +107,7 @@ KeywordUtils.getContainerNames = function() //do not cache this list since // a) the list can easly change when a new container is created // b) where this is called it's not relevant in terms of performance + //!SqlBuilder var list = db.array(db.COLUMN, "select distinct AB_KEYWORD_ENTRY.CONTAINER from AB_KEYWORD_ENTRY order by AB_KEYWORD_ENTRY.CONTAINER asc"); return list; }; diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index 49bcb6bfc96..0af28ce22fa 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -3100,6 +3100,14 @@ SqlBuilder.caseWhen = function (pFieldOrCond, pValue, pCondition, pFieldType) return new SqlBuilder._CaseStatement().when(pFieldOrCond, pValue, pCondition, pFieldType); } +/** + * @return {SqlBuilder._CaseStatement} + */ +SqlBuilder.caseStatement = function () +{ + return new SqlBuilder._CaseStatement(); +} + /** * Represents a case-when statement */ @@ -3373,6 +3381,8 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt return "char"; case SQLTYPES.VARCHAR: return "char"; + case SQLTYPES.NVARCHAR: + return "nvarchar"; case SQLTYPES.INTEGER: return "int"; case SQLTYPES.DECIMAL: @@ -3429,6 +3439,9 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt case SQLTYPES.VARCHAR: sqlDataType = "varchar2"; break; + case SQLTYPES.NVARCHAR: + sqlDataType = "nvarchar2"; + break; case SQLTYPES.INTEGER: sqlDataType = "number"; pTargetLength = "10" @@ -4152,7 +4165,7 @@ SqlUtils.getResolvingCaseWhen = function(pKeyValueArray, pDbFieldName, pLocale) else return translate.text(value); }; - + //!SqlBuilder var resSql = "case ", preparedValues = []; var colTypeKeyId = SQLTYPES.CHAR; var colTypeTitle = SQLTYPES.NVARCHAR; diff --git a/process/Turnover_lib/process.js b/process/Turnover_lib/process.js index e8f96a61314..1e69ad37d5f 100644 --- a/process/Turnover_lib/process.js +++ b/process/Turnover_lib/process.js @@ -26,24 +26,45 @@ function TurnoverUtil() {} */ TurnoverUtil.getTurnoverData = function (pMaxYear, pYearCount, pSalesprojectId) { - var turnoverCategory = translate.text('Turnover'); - + var turnoverCategory = translate.text("Turnover"); var minYear = pMaxYear - pYearCount + 1; + var sqlMask = new SqlMaskingUtils(); // load data - return newSelect("'" + turnoverCategory + "', year(SALESORDERDATE) yearNum, month(SALESORDERDATE) monthNum, SALESORDERITEM.DISCOUNT discount, SALESORDERITEM.VAT vat, SALESORDERITEM.PRICE price, sum(SALESORDERITEM.QUANTITY) quantity, SALESORDERITEM.GROUPCODEID prodGroup, (" + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "SALESORDERITEM.GROUPCODEID") + ") prodGroupName") - .from("SALESORDER") - .join("SALESORDERITEM", "SALESORDERITEM.SALESORDER_ID = SALESORDER.SALESORDERID") - .where("SALESORDER.ORDERTYPE", "ORDTYPEINVO") - .and("SALESORDER.ORDERSTATUS = 1") - .and("SALESORDER.CANCELLATION <> 1") - .and("SALESORDERITEM.OPTIONAL <> 1") - .and("SALESORDER.SALESORDERDATE", pMaxYear, "year(#) <= ?", SQLTYPES.INTEGER) - .and("SALESORDER.SALESORDERDATE", minYear, "year(#) >= ?", SQLTYPES.INTEGER) - .andIfSet("SALESORDER.SALESPROJECT_ID", pSalesprojectId) - .groupBy("year(SALESORDERDATE), month(SALESORDERDATE), SALESORDERITEM.GROUPCODEID, SALESORDERITEM.DISCOUNT, SALESORDERITEM.VAT, SALESORDERITEM.PRICE") - .orderBy("yearNum, monthNum") - .table(); + + return newSelect([ + "'" + turnoverCategory + "'", + sqlMask.yearFromDate("SALESORDERDATE"), + sqlMask.monthFromDate("SALESORDERDATE"), + "SALESORDERITEM.DISCOUNT", + "SALESORDERITEM.VAT", + "SALESORDERITEM.PRICE", + "sum(SALESORDERITEM.QUANTITY)", + "SALESORDERITEM.GROUPCODEID", + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "SALESORDERITEM.GROUPCODEID") + ]) + .from("SALESORDER") + .join("SALESORDERITEM", "SALESORDERITEM.SALESORDER_ID = SALESORDER.SALESORDERID") + .where("SALESORDER.ORDERTYPE", "ORDTYPEINVO") + .and("SALESORDER.ORDERSTATUS", "1") + .and("SALESORDER.CANCELLATION", "1", SqlBuilder.NOT_EQUAL()) + .and("SALESORDERITEM.OPTIONAL", "1", SqlBuilder.NOT_EQUAL()) + .and("SALESORDER.SALESORDERDATE", pMaxYear, sqlMask.yearFromDate("#") + " <= ?", SQLTYPES.INTEGER) + .and("SALESORDER.SALESORDERDATE", minYear, sqlMask.yearFromDate("#") + " >= ?", SQLTYPES.INTEGER) + .andIfSet("SALESORDER.SALESPROJECT_ID", pSalesprojectId) + .groupBy([ + sqlMask.yearFromDate("SALESORDERDATE"), + sqlMask.monthFromDate("SALESORDERDATE"), + "SALESORDERITEM.GROUPCODEID", + "SALESORDERITEM.DISCOUNT", + "SALESORDERITEM.VAT", + "SALESORDERITEM.PRICE" + ]) + .orderBy([ + sqlMask.yearFromDate("SALESORDERDATE"), + sqlMask.monthFromDate("SALESORDERDATE") + ]) + .table(); } /** -- GitLab From 44cef7690d238204ba0a4cc0f17c8dfdb5da2cf8 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 30 Oct 2020 09:57:50 +0100 Subject: [PATCH 048/184] ContactTitleRenderer sql correction --- process/Contact_lib/process.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/process/Contact_lib/process.js b/process/Contact_lib/process.js index 1d8216d36f5..4d53dde63a7 100644 --- a/process/Contact_lib/process.js +++ b/process/Contact_lib/process.js @@ -661,7 +661,7 @@ function ContactTitleRenderer(pContact, pOptions) var maskingUtil = new SqlMaskingUtils(); var res = maskingUtil.concat([this.contact.salutation, this.contact.title, this.contact.firstname, this.contact.middlename, this.contact.lastname].filter(function (e){ return e != ""; - }), " "); + }), " ", false); //binary AND check for possibility to check serveral options if (this._options & ContactTitleRenderer.OPTIONS.IncludeOrganisation && this.contact.organisationName) res = maskingUtil.concat([res, this.contact.organisationName], " | "); -- GitLab From 86efedf5e9072c782f65146b90b9e8fffd0edf67 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 30 Oct 2020 10:07:23 +0100 Subject: [PATCH 049/184] SqlMaskingUtils.cast map nvarchar to varchar if derby --- process/Sql_lib/process.js | 1 + 1 file changed, 1 insertion(+) diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index 0af28ce22fa..d0c827e77c8 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -3398,6 +3398,7 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt case db.DBTYPE_DERBY10: switch(pTargetDatatype) { + case SQLTYPES.NVARCHAR: case SQLTYPES.VARCHAR: // Because of a Derby bug, you can't cast INTEGER into VARCHAR // Therefor first cast to char then to varchar -- GitLab From 9856f4c6e6b4102d9a8dd14a6639eb48f7c82db8 Mon Sep 17 00:00:00 2001 From: "s.pongratz" <s.pongratz@adito.de> Date: Fri, 30 Oct 2020 10:27:30 +0100 Subject: [PATCH 050/184] #1068034-CampaignDeshlet Fix Condition and FromClause-Prozess --- .../recordcontainers/db/conditionProcess.js | 16 ++++------------ .../recordcontainers/db/fromClauseProcess.js | 9 +++++---- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/entity/Campaign_entity/recordcontainers/db/conditionProcess.js b/entity/Campaign_entity/recordcontainers/db/conditionProcess.js index b56a17e4e11..ea77837ea6f 100644 --- a/entity/Campaign_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Campaign_entity/recordcontainers/db/conditionProcess.js @@ -7,19 +7,11 @@ import("Sql_lib"); var recordState = vars.get("$sys.recordstate"); +var condition = newWhere(); if(vars.get("$param.ShowOnlyCurrentUsersCampaigns_param") == 'true') { - //TODO: use a preparedCondition (.build instead of .translate) when available #1030812 #1034026 - result.string(newWhere("CAMPAIGN.EMPLOYEE_CONTACT_ID", EmployeeUtils.getCurrentContactId()).toString()); -} else if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) { - var condition = new SqlBuilder() - .whereIfSet("STEPDATESTART_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID") - .andIfSet("STEPDATEEND_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID") - ; + condition.and("CAMPAIGN.EMPLOYEE_CONTACT_ID", EmployeeUtils.getCurrentContactId()); +} - result.string(condition.toString()); -} else { - - result.string(newWhere().toString()); -} \ No newline at end of file +result.string(condition.toString()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js b/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js index 5eec4c678e0..a24f9dfb3c0 100644 --- a/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js @@ -7,10 +7,11 @@ var recordState = vars.get("$sys.recordstate"); var res = "CAMPAIGN"; if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) { - var subSelectDateStart = "(select min(DATE_START) as STEPDATESTART_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) as STEPDATESTART_TABLEALIAS"; - var subSelectDateEnd = "(select max(DATE_END) as STEPDATEEND_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) as STEPDATEEND_TABLEALIAS"; - - res += ", " + subSelectDateStart + ", " + subSelectDateEnd; + res += " join (select min(DATE_START) as STEPDATESTART_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) as STEPDATESTART_TABLEALIAS" + + " on STEPDATESTART_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID " + + " join (select max(DATE_END) as STEPDATEEND_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) as STEPDATEEND_TABLEALIAS" + + " on STEPDATEEND_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID "; + } result.string(res); -- GitLab From fcdadc8bd486c32bf7362794f56aca4398e3e887 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 30 Oct 2020 11:36:53 +0100 Subject: [PATCH 051/184] Utils.clone support for Map, Set and Symbol properties --- process/Sql_lib/process.js | 27 +++++------------------ process/Util_lib/process.js | 43 ++++++++++++++++++++++++++++++------- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index d0c827e77c8..fc73644c520 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -801,8 +801,6 @@ function SqlBuilder (pAlias) this._where = {}; this._initWhere(); - - SqlBuilder.defineCanBuildSql(this); } /** @@ -823,6 +821,8 @@ SqlBuilder.checkCanBuildSql = function (pObject) return pObject[SqlBuilder.getCanBuildSqlSymbol()]; } +SqlBuilder.defineCanBuildSql(SqlBuilder.prototype); + /** * Deep copies the SqlBuilder object and returns a new one.<br/> * Use this if you want to add for example add additional parameters without modifying the current builder. @@ -830,25 +830,7 @@ SqlBuilder.checkCanBuildSql = function (pObject) */ SqlBuilder.prototype.copy = function() { - var newBuilder = _deepCopyByJson(this, new SqlBuilder()); - return newBuilder; - - // NOTE: this works only with simple data types. - // Here we only use strings, arrays, booleans and null, so this should work - function _deepCopyByJson(pObject, pNewObject) - { - // deep copy by using json - var deepCopied = JSON.parse(JSON.stringify(pObject)); - - // set the props of the new object to the deepCopied ones. - // without this all functions would be lost - for (let prop in deepCopied) - { - pNewObject[prop] = deepCopied[prop] - } - - return pNewObject; - } + return Utils.clone(this); } // errors which are thrown by the SqlBuilder @@ -3117,9 +3099,10 @@ SqlBuilder._CaseStatement = function () this._whenThens = []; this._elseValue = null; this._afterWhenMask = new SqlBuilder._CaseWhen(this); - SqlBuilder.defineCanBuildSql(this); } +SqlBuilder.defineCanBuildSql(SqlBuilder._CaseStatement.prototype); + /** * @param {String|String[]|SqlBuilder|PreparedSqlArray} [pFieldOrCond] If this is the only parameter, it is used as Subselect <br/> * else it is used as Field. <br/> diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index 97545be1730..778e4ae46cb 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -53,7 +53,7 @@ Utils.isNullOrEmpty = function (pObject) } /** - * Creates a deep copy of the given object. Also works with arrays. + * Creates a deep copy of the given object. Also works with arrays, maps and sets. * * @param {Object} pObject the object to create a copy of * @return {Object} the cloned object @@ -69,7 +69,7 @@ Utils.isNullOrEmpty = function (pObject) * * logging.log(original.name != copy.name); //true * logging.log(copy instanceof MyObject()); //true, prototypes are set correctly - * logging.log(copy.obj1 === copy.obj2); //true, relative object references are kept + * logging.log(copy.obj1 === copy.obj2); //true, relative object references are preserved */ Utils.clone = function (pObject) { @@ -84,20 +84,47 @@ Utils.clone = function (pObject) if (referenceMap.has(pObject)) return referenceMap.get(pObject); - var clonedObject = Array.isArray(pObject) - ? [] - : Object.create(Object.getPrototypeOf(pObject)); //set the prototype of the given object + var clonedObject; + if (Array.isArray(pObject)) + clonedObject = []; + else if (pObject instanceof Map) + clonedObject = new Map(); + else if (pObject instanceof Set) + clonedObject = new Set(); + else + clonedObject = Object.create(Object.getPrototypeOf(pObject)); //set the prototype of the given object /* keeps track of all encountered objects and maps the original to the copy, this makes it possible to: - have the same relative references in the copy as in the original - copy cyclic references without error */ referenceMap.set(pObject, clonedObject); - for (let key in pObject) + if (pObject instanceof Map) + { + pObject.forEach(function (value, key) + { + clonedObject.set(_clone(key), _clone(value)); + }); + } + else if (pObject instanceof Set) { - var value = pObject[key]; - clonedObject[key] = _clone(value); //Recursively (deep) copy for nested objects, including arrays + pObject.forEach(function (value) + { + clonedObject.add(_clone(value)); + }); } + else + { + for (let key in pObject) + { + clonedObject[key] = _clone(pObject[key]); //Recursively (deep) copy for nested objects, including arrays + } + } + + Object.getOwnPropertySymbols(pObject).forEach(function (sym) + { + clonedObject[sym] = _clone(pObject[sym]); + }); return clonedObject; } -- GitLab From f237b2ed51d035cf21baef5b15861d7e97e741f7 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 30 Oct 2020 11:50:42 +0100 Subject: [PATCH 052/184] WorkflowTask afterSave fieldnames fixed --- entity/WorkflowTask_entity/afterSave.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/entity/WorkflowTask_entity/afterSave.js b/entity/WorkflowTask_entity/afterSave.js index 68fae8b0d24..383331b295d 100644 --- a/entity/WorkflowTask_entity/afterSave.js +++ b/entity/WorkflowTask_entity/afterSave.js @@ -30,9 +30,9 @@ if (entityData["FORMRESULT"]) else { var params = { - "TaskTitle_param" : rowData["NAME.value"] + "TaskTitle_param" : rowData["NAME"] }; //if you try to open the task now, it will display "Task done" - neon.openContext("WorkflowTask", "WorkflowTaskPreview_view", [rowData["UID.value"]], neon.OPERATINGSTATE_VIEW, params); + neon.openContext("WorkflowTask", "WorkflowTaskPreview_view", [rowData["UID"]], neon.OPERATINGSTATE_VIEW, params); } } \ No newline at end of file -- GitLab From 00eb6144ea2f097e3f88763cda9bd04cbe9118ce Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 30 Oct 2020 13:17:10 +0100 Subject: [PATCH 053/184] 1067733 ContextUtils.getSelectMap not working with mariaDB --- process/Context_lib/process.js | 10 +++++++--- process/Sql_lib/process.js | 22 ++++++++++++++-------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index fcf879f0488..a9b9eac3121 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -494,6 +494,10 @@ ContextSelector.prototype.setGroupBy = function(pValue) ContextUtils.getSelectMap = function() { var maskingUtils = new SqlMaskingUtils(); + var isOracle = maskingUtils.dbType == db.DBTYPE_ORACLE10_CLUSTER + || maskingUtils.dbType == db.DBTYPE_ORACLE10_OCI + || maskingUtils.dbType == db.DBTYPE_ORACLE10_THIN; + return { "Organisation": ContextSelector.create("ORGANISATION", "CONTACT.CONTACTID", "ORGANISATION.NAME") .setJoinExpression("join CONTACT on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null") @@ -539,7 +543,7 @@ ContextUtils.getSelectMap = function() .setTitleExpression(maskingUtils.cast(maskingUtils.concat([ KeywordUtils.getResolvedTitleSqlPart("ContractType", "CONTRACTTYPE"), maskingUtils.cast("CONTRACTCODE", SQLTYPES.VARCHAR, 10) - ], " "), SQLTYPES.NVARCHAR, 50)) + ], " "), isOracle ? SQLTYPES.NVARCHAR : SQLTYPES.VARCHAR, 50)) .setContactIdField("CONTACT_ID") .setCreationDateField("CONTRACTSTART") .setStateField("CONTRACTSTATUS") @@ -551,7 +555,7 @@ ContextUtils.getSelectMap = function() maskingUtils.cast("OFFERCODE", SQLTYPES.VARCHAR, 10), "'-'", maskingUtils.cast("VERSNR", SQLTYPES.VARCHAR, 10) - ], "", false), SQLTYPES.NVARCHAR, 50)) + ], "", false), isOracle ? SQLTYPES.NVARCHAR : SQLTYPES.VARCHAR, 50)) .setContactIdField("CONTACT_ID") .setCreationDateField("OFFERDATE") .setStateField("STATUS") @@ -560,7 +564,7 @@ ContextUtils.getSelectMap = function() .setTitleExpression(maskingUtils.cast(maskingUtils.concat([ KeywordUtils.getResolvedTitleSqlPart("OrderType", "ORDERTYPE"), maskingUtils.cast("SALESORDERCODE", SQLTYPES.VARCHAR, 10) - ], " "), SQLTYPES.NVARCHAR, 50)) + ], " "), isOracle ? SQLTYPES.NVARCHAR : SQLTYPES.VARCHAR, 50)) .setContactIdField("CONTACT_ID") .setCreationDateField("SALESORDERDATE") .setStateField("ORDERSTATUS") diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index fc73644c520..75c6923e249 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -3406,6 +3406,7 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt case db.DBTYPE_MYSQL4: switch(pTargetDatatype) { + case SQLTYPES.NVARCHAR: case SQLTYPES.VARCHAR: case SQLTYPES.CHAR: case SQLTYPES.INTEGER: @@ -3445,18 +3446,23 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt case SQLTYPES.INTEGER: case SQLTYPES.CHAR: case SQLTYPES.VARCHAR: + case SQLTYPES.NVARCHAR: sqlDataType = _mapDefaults(pTargetDatatype); break; } break; case db.DBTYPE_SQLSERVER2000: - case SQLTYPES.DATE: - case SQLTYPES.DECIMAL: - case SQLTYPES.INTEGER: - case SQLTYPES.CHAR: - case SQLTYPES.VARCHAR: - sqlDataType = _mapDefaults(pTargetDatatype); - break; + switch(pTargetDatatype) + { + case SQLTYPES.DATE: + case SQLTYPES.DECIMAL: + case SQLTYPES.INTEGER: + case SQLTYPES.CHAR: + case SQLTYPES.VARCHAR: + case SQLTYPES.NVARCHAR: + sqlDataType = _mapDefaults(pTargetDatatype); + break; + } //TODO: firebird support? } @@ -3586,7 +3592,7 @@ SqlMaskingUtils.prototype.concat = function (pFields, pSeparator, pAutoTrimField if (pSeparator === null || pSeparator === undefined) pSeparator = "' '"; - else if (pSeparator) + else if (pSeparator || pSeparator === "") pSeparator = "'" + db.quote(pSeparator, this.alias) + "'"; var doEmptyStringCheck = true; -- GitLab From 5d76286961707810d7be58f2da0825b144855471 Mon Sep 17 00:00:00 2001 From: "s.pongratz" <s.pongratz@adito.de> Date: Fri, 30 Oct 2020 14:50:31 +0100 Subject: [PATCH 054/184] #1067733-KampagneFixOracle Remove As for Alias in select --- .../Campaign_entity/recordcontainers/db/fromClauseProcess.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js b/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js index a24f9dfb3c0..f1704c63ce0 100644 --- a/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js @@ -7,9 +7,9 @@ var recordState = vars.get("$sys.recordstate"); var res = "CAMPAIGN"; if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) { - res += " join (select min(DATE_START) as STEPDATESTART_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) as STEPDATESTART_TABLEALIAS" + res += " join (select min(DATE_START) as STEPDATESTART_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) STEPDATESTART_TABLEALIAS" + " on STEPDATESTART_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID " - + " join (select max(DATE_END) as STEPDATEEND_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) as STEPDATEEND_TABLEALIAS" + + " join (select max(DATE_END) as STEPDATEEND_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) STEPDATEEND_TABLEALIAS" + " on STEPDATEEND_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID "; } -- GitLab From 3ca44156d01cd9b6ccad122de1506fedc4bb74f0 Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Mon, 2 Nov 2020 10:38:22 +0100 Subject: [PATCH 055/184] Revert Revert #1060919 Calendar Fixes --- .../Appointment_entity/grantDeleteProcess.js | 8 ++++++-- .../Appointment_entity/grantUpdateProcess.js | 10 ++++++++-- .../recordcontainers/jdito/contentProcess.js | 3 ++- .../recordcontainers/jdito/onDelete.js | 20 ++++++++++++++----- 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/entity/Appointment_entity/grantDeleteProcess.js b/entity/Appointment_entity/grantDeleteProcess.js index 4caa2d99cfd..aef302f1112 100644 --- a/entity/Appointment_entity/grantDeleteProcess.js +++ b/entity/Appointment_entity/grantDeleteProcess.js @@ -2,6 +2,10 @@ import("system.vars"); import("system.result"); import("system.calendars"); import("system.text"); +import("system.tools"); -var owner = text.decodeMS(JSON.parse(vars.get("$param.Entry_param"))["h"])[1].split(":")[1]; -result.string(calendars.hasPermission([owner], calendars.VEVENT, "WRITE")); \ No newline at end of file + +var user = tools.getCurrentUser(); +var calUser = calendars.getCalendarUser(user["title"]); +var calUserCn = text.decodeMS(calUser)[1].split(":")[1]; +result.string(calendars.hasPermission(calUserCn, calendars.VEVENT, "WRITE")); \ No newline at end of file diff --git a/entity/Appointment_entity/grantUpdateProcess.js b/entity/Appointment_entity/grantUpdateProcess.js index 3562ea4a6c4..e6ac4c8426c 100644 --- a/entity/Appointment_entity/grantUpdateProcess.js +++ b/entity/Appointment_entity/grantUpdateProcess.js @@ -2,7 +2,13 @@ import("system.vars"); import("system.result"); import("system.calendars"); import("system.text"); +import("system.tools"); +import("system.logging"); -var owner = text.decodeMS(JSON.parse(vars.get("$param.Entry_param"))["h"])[1].split(":")[1]; -result.string(calendars.hasPermission([owner], calendars.VEVENT, "WRITE")); +var user = tools.getCurrentUser(); +var calUser = calendars.getCalendarUser(user["title"]); +var calUserCn = text.decodeMS(calUser)[1].split(":")[1]; +var permitted = calendars.hasPermission(calUserCn, calendars.VEVENT, "WRITE"); + +result.string(permitted); diff --git a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js index e56415a0faf..3d5ff22eafe 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js @@ -9,6 +9,7 @@ import("system.datetime"); import("system.eMath"); import("system.util"); import("system.neon"); +import("system.text"); var appointmentSelect = newSelect("APPOINTMENT_ID").from("AB_APPOINTMENTLINK"); var appointmentUids; @@ -77,7 +78,7 @@ function buildEntry(pEntry, pMasterentry) if(pEntry[calendars.ORGANIZER2] != undefined) var organizer = pEntry[calendars.ORGANIZER2]["paramvalue"]; if(pEntry[calendars.USER2] != undefined) - var owner = pEntry[calendars.USER2]["paramvalue"]; + var owner = JSON.stringify(pEntry[calendars.USER2]); var status = pEntry[calendars.STATUS]; var location = pEntry[calendars.LOCATION]; var reminder = pEntry[calendars.REMINDER_DURATION]; diff --git a/entity/Appointment_entity/recordcontainers/jdito/onDelete.js b/entity/Appointment_entity/recordcontainers/jdito/onDelete.js index 4e0e5c7a5c1..6f6249aee33 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/onDelete.js +++ b/entity/Appointment_entity/recordcontainers/jdito/onDelete.js @@ -1,20 +1,30 @@ +import("system.logging"); import("Sql_lib"); import("system.neon"); import("system.calendars"); import("system.vars"); -if (vars.exists("$param.Entry_param")) +var uid; + +if (vars.get("$param.Entry_param") != null) { var entry = JSON.parse(vars.getString("$param.Entry_param")); var reccurenceid = entry[calendars.RECURRENCEID]; + if (reccurenceid == undefined) reccurenceid = null; - calendars.removeEntryByUID(calendars.VEVENT, entry[calendars.USER2]["cn"], entry[calendars.ID], reccurenceid) + uid = entry[calendars.ID]; + calendars.removeEntryByUID(calendars.VEVENT, entry[calendars.USER2]["cn"], uid, reccurenceid); +} +else if(vars.get("$field.OWNER")) +{ + uid = vars.get("$field.UID"); + calendars.removeEntryByUID(calendars.VEVENT, JSON.parse(vars.get("$field.OWNER"))["cn"], uid, vars.get("$field.RECURRENCEID")); +} /** * Deletes ApointmentLinks referring to the deleted Appointment. */ - newWhereIfSet("AB_APPOINTMENTLINK.APPOINTMENT_ID", entry[calendars.ID]) - .deleteData(); -} \ No newline at end of file + newWhereIfSet("AB_APPOINTMENTLINK.APPOINTMENT_ID", uid) + .deleteData(); \ No newline at end of file -- GitLab From d676a03a3eff380362f5a5728889de9ccd6ef1a4 Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Mon, 2 Nov 2020 09:38:22 +0000 Subject: [PATCH 056/184] Revert Revert #1060919 Calendar Fixes (cherry picked from commit 3ca44156d01cd9b6ccad122de1506fedc4bb74f0) --- .../Appointment_entity/grantDeleteProcess.js | 8 ++++++-- .../Appointment_entity/grantUpdateProcess.js | 10 ++++++++-- .../recordcontainers/jdito/contentProcess.js | 3 ++- .../recordcontainers/jdito/onDelete.js | 20 ++++++++++++++----- 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/entity/Appointment_entity/grantDeleteProcess.js b/entity/Appointment_entity/grantDeleteProcess.js index 4caa2d99cfd..aef302f1112 100644 --- a/entity/Appointment_entity/grantDeleteProcess.js +++ b/entity/Appointment_entity/grantDeleteProcess.js @@ -2,6 +2,10 @@ import("system.vars"); import("system.result"); import("system.calendars"); import("system.text"); +import("system.tools"); -var owner = text.decodeMS(JSON.parse(vars.get("$param.Entry_param"))["h"])[1].split(":")[1]; -result.string(calendars.hasPermission([owner], calendars.VEVENT, "WRITE")); \ No newline at end of file + +var user = tools.getCurrentUser(); +var calUser = calendars.getCalendarUser(user["title"]); +var calUserCn = text.decodeMS(calUser)[1].split(":")[1]; +result.string(calendars.hasPermission(calUserCn, calendars.VEVENT, "WRITE")); \ No newline at end of file diff --git a/entity/Appointment_entity/grantUpdateProcess.js b/entity/Appointment_entity/grantUpdateProcess.js index 3562ea4a6c4..e6ac4c8426c 100644 --- a/entity/Appointment_entity/grantUpdateProcess.js +++ b/entity/Appointment_entity/grantUpdateProcess.js @@ -2,7 +2,13 @@ import("system.vars"); import("system.result"); import("system.calendars"); import("system.text"); +import("system.tools"); +import("system.logging"); -var owner = text.decodeMS(JSON.parse(vars.get("$param.Entry_param"))["h"])[1].split(":")[1]; -result.string(calendars.hasPermission([owner], calendars.VEVENT, "WRITE")); +var user = tools.getCurrentUser(); +var calUser = calendars.getCalendarUser(user["title"]); +var calUserCn = text.decodeMS(calUser)[1].split(":")[1]; +var permitted = calendars.hasPermission(calUserCn, calendars.VEVENT, "WRITE"); + +result.string(permitted); diff --git a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js index e56415a0faf..3d5ff22eafe 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js @@ -9,6 +9,7 @@ import("system.datetime"); import("system.eMath"); import("system.util"); import("system.neon"); +import("system.text"); var appointmentSelect = newSelect("APPOINTMENT_ID").from("AB_APPOINTMENTLINK"); var appointmentUids; @@ -77,7 +78,7 @@ function buildEntry(pEntry, pMasterentry) if(pEntry[calendars.ORGANIZER2] != undefined) var organizer = pEntry[calendars.ORGANIZER2]["paramvalue"]; if(pEntry[calendars.USER2] != undefined) - var owner = pEntry[calendars.USER2]["paramvalue"]; + var owner = JSON.stringify(pEntry[calendars.USER2]); var status = pEntry[calendars.STATUS]; var location = pEntry[calendars.LOCATION]; var reminder = pEntry[calendars.REMINDER_DURATION]; diff --git a/entity/Appointment_entity/recordcontainers/jdito/onDelete.js b/entity/Appointment_entity/recordcontainers/jdito/onDelete.js index 4e0e5c7a5c1..6f6249aee33 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/onDelete.js +++ b/entity/Appointment_entity/recordcontainers/jdito/onDelete.js @@ -1,20 +1,30 @@ +import("system.logging"); import("Sql_lib"); import("system.neon"); import("system.calendars"); import("system.vars"); -if (vars.exists("$param.Entry_param")) +var uid; + +if (vars.get("$param.Entry_param") != null) { var entry = JSON.parse(vars.getString("$param.Entry_param")); var reccurenceid = entry[calendars.RECURRENCEID]; + if (reccurenceid == undefined) reccurenceid = null; - calendars.removeEntryByUID(calendars.VEVENT, entry[calendars.USER2]["cn"], entry[calendars.ID], reccurenceid) + uid = entry[calendars.ID]; + calendars.removeEntryByUID(calendars.VEVENT, entry[calendars.USER2]["cn"], uid, reccurenceid); +} +else if(vars.get("$field.OWNER")) +{ + uid = vars.get("$field.UID"); + calendars.removeEntryByUID(calendars.VEVENT, JSON.parse(vars.get("$field.OWNER"))["cn"], uid, vars.get("$field.RECURRENCEID")); +} /** * Deletes ApointmentLinks referring to the deleted Appointment. */ - newWhereIfSet("AB_APPOINTMENTLINK.APPOINTMENT_ID", entry[calendars.ID]) - .deleteData(); -} \ No newline at end of file + newWhereIfSet("AB_APPOINTMENTLINK.APPOINTMENT_ID", uid) + .deleteData(); \ No newline at end of file -- GitLab From 6184e711b1ae6a5f4f342f3459c1ec59fce31319 Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Tue, 3 Nov 2020 15:07:17 +0100 Subject: [PATCH 057/184] #1068152 Calendar: PermissionCheck on linked Appointments --- .../Appointment_entity/Appointment_entity.aod | 15 +- .../erroronpermissiondenied/valueProcess.js | 3 + .../recordcontainers/jdito/contentProcess.js | 84 +--- .../recordcontainers/jdito/rowCountProcess.js | 7 +- .../Organisation_entity.aod | 440 +++++++++--------- .../erroronpermissiondenied/valueProcess.js | 3 + entity/Person_entity/Person_entity.aod | 402 ++++++++-------- .../erroronpermissiondenied/valueProcess.js | 3 + process/Calendar_lib/process.js | 109 +++++ 9 files changed, 563 insertions(+), 503 deletions(-) create mode 100644 entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js create mode 100644 entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js create mode 100644 entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js diff --git a/entity/Appointment_entity/Appointment_entity.aod b/entity/Appointment_entity/Appointment_entity.aod index 6f51538041f..2b98d6bd2c3 100644 --- a/entity/Appointment_entity/Appointment_entity.aod +++ b/entity/Appointment_entity/Appointment_entity.aod @@ -171,11 +171,6 @@ </entityParameter> <entityConsumer> <name>AppointmentLinks</name> - <dependency> - <name>dependency</name> - <entityName>AppointmentLink_entity</entityName> - <fieldName>Links</fieldName> - </dependency> <children> <entityParameter> <name>AppointmentId_param</name> @@ -187,6 +182,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AppointmentLink_entity</entityName> + <fieldName>Links</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>deleteSeries</name> @@ -254,6 +254,11 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityParameter> + <name>ErrorOnPermissionDenied</name> + <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js b/entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js new file mode 100644 index 00000000000..e5bfa3bbe7f --- /dev/null +++ b/entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("true"); \ No newline at end of file diff --git a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js index 3d5ff22eafe..c533370a334 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,4 @@ +import("Calendar_lib"); import("Employee_lib"); import("system.tools"); import("system.db"); @@ -28,14 +29,14 @@ if(vars.exists("$param.Entry_param") && vars.get("$param.Entry_param")) //@TODO Icon result.object([ - buildEntry(entry, masterEntry) + CalendarUtil.buildEntry(entry, masterEntry) ]); } else if(vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$local.idvalues") != null && vars.get("$local.idvalues") != "") { var selectedids = vars.get("$local.idvalues"); - result.object([buildEntry(calendars.getEntry(selectedids, null, null), null)]); + result.object([CalendarUtil.buildEntry(calendars.getEntry(selectedids, null, null), null)]); } else if(vars.getString("$param.LinkedAppointmentsFromDashlet_param")) @@ -43,7 +44,7 @@ else if(vars.getString("$param.LinkedAppointmentsFromDashlet_param")) var contactid = EmployeeUtils.getCurrentContactId(); appointmentSelect.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", contactid) - result.object(buildEntriesFromUids(appointmentSelect.table())); + result.object(CalendarUtil.buildEntriesFromUids(appointmentSelect.table())); } /** @@ -52,78 +53,5 @@ else if(vars.getString("$param.LinkedAppointmentsFromDashlet_param")) else if(vars.getString("$param.LinkedObjectId_param") != undefined) { appointmentSelect.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", "$param.LinkedObjectId_param") - result.object(buildEntriesFromUids(appointmentSelect.table())); -} - -function buildEntriesFromUids(appointmentUids) -{ - var entryArray = new Array(appointmentUids.length); - - for(var i = 0; i < appointmentUids.length; i++) - entryArray[i] = buildEntry(calendars.getEntry(appointmentUids[i], null, null), null); - - return entryArray; -} - - -function buildEntry(pEntry, pMasterentry) -{ - var uid = pEntry[calendars.ID]; - var summary = pEntry[calendars.SUMMARY]; - var attendees = pEntry[calendars.AFFECTEDUSERS]; - var startdate = pEntry[calendars.DTSTART]; - var enddate = pEntry[calendars.DTEND]; - var links = pEntry[calendars.LINKS]; - var description = pEntry[calendars.DESCRIPTION]; - if(pEntry[calendars.ORGANIZER2] != undefined) - var organizer = pEntry[calendars.ORGANIZER2]["paramvalue"]; - if(pEntry[calendars.USER2] != undefined) - var owner = JSON.stringify(pEntry[calendars.USER2]); - var status = pEntry[calendars.STATUS]; - var location = pEntry[calendars.LOCATION]; - var reminder = pEntry[calendars.REMINDER_DURATION]; - var remindercheck = pEntry[calendars.HASREMINDER] - var classification = pEntry[calendars.CLASSIFICATION]; - var transparency = pEntry[calendars.TRANSPARENCY]; - var categories = pEntry[calendars.CATEGORIES]; - var isAllDay = pEntry["X-ADITO-ISALLDAYEVENT"] != null ? pEntry["X-ADITO-ISALLDAYEVENT"] : "FALSE"; - - var masterBegin = pMasterentry != null ? pMasterentry[calendars.DTSTART] : null - var masterEnd = pMasterentry != null ? pMasterentry[calendars.DTEND] : null - - // Recurrence - var recurrenceID = pEntry[calendars.RECURRENCEID]; - var rrule = null; - if (pMasterentry != null) { // Entry is a recurrence exception, therefore get rrule from master - rrule = pMasterentry[calendars.RRULE] != null ? pMasterentry[calendars.RRULE][0] : null; - } else { - rrule = pEntry[calendars.RRULE] != null ? pEntry[calendars.RRULE][0] : null; - } - - return [ - uid, - attendees.length, - startdate, - enddate, - summary, - organizer, - owner, - attendees, - status, - description, - location, - '', - isAllDay, - classification, - transparency, - categories, - reminder, - remindercheck, - rrule, - recurrenceID, - null, - masterBegin, - masterEnd, - null - ]; -} + result.object(CalendarUtil.buildEntriesFromUids(appointmentSelect.table())); +} \ No newline at end of file diff --git a/entity/Appointment_entity/recordcontainers/jdito/rowCountProcess.js b/entity/Appointment_entity/recordcontainers/jdito/rowCountProcess.js index afff252f743..d6495461f94 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/rowCountProcess.js +++ b/entity/Appointment_entity/recordcontainers/jdito/rowCountProcess.js @@ -1,3 +1,4 @@ +import("Calendar_lib"); import("system.db"); import("Employee_lib"); import("Sql_lib"); @@ -5,7 +6,7 @@ import("system.vars"); import("system.result"); var rowCount = "0"; -var cond = newSelect("count(APPOINTMENT_ID)") +var cond = newSelect("APPOINTMENT_ID") .from("AB_APPOINTMENTLINK"); if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) @@ -13,7 +14,7 @@ if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) else if (vars.getString("$param.LinkedAppointmentsFromDashlet_param")) { cond.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", EmployeeUtils.getCurrentContactId()); - rowCount = cond.cell(); + rowCount = CalendarUtil.countEntriesFromUids(cond.table()); } /** @@ -22,7 +23,7 @@ else if (vars.getString("$param.LinkedAppointmentsFromDashlet_param")) else if (vars.getString("$param.LinkedObjectId_param") != undefined) { cond.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", "$param.LinkedObjectId_param"); - rowCount = cond.cell(); + rowCount = CalendarUtil.countEntriesFromUids(cond.table()); } /** * Will be used, if the user is operating the calendar. diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index 4d5db6ed1a8..0287eb1d381 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -71,11 +71,6 @@ </entityField> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -86,21 +81,26 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Contact</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>OrganisationRelated</fieldName> - </dependency> <children> <entityParameter> <name>OrgId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/contact/children/orgid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>OrganisationRelated</fieldName> + </dependency> </entityConsumer> <entityFieldGroup> <name>CUSTOMERCODE_DISPLAY_fieldGroup</name> @@ -114,6 +114,36 @@ <name>Organisations</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/organisations/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>WithPrivate_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ExcludeOrganisationsByPersonId</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ExcludedContactIds_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>AttributeKeyId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>AttributeId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>DuplicateActionsControl_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>DuplicateCurrentContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>85aa363e-d8ba-4df5-8422-bf7aff86a4f8</name> @@ -152,44 +182,9 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>WithPrivate_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ExcludeOrganisationsByPersonId</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ExcludedContactIds_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>AttributeKeyId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>AttributeId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>DuplicateActionsControl_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>DuplicateCurrentContactId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>Addresses</name> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAddresses</fieldName> - </dependency> <children> <entityParameter> <name>DefaultAddressId_param</name> @@ -201,6 +196,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>ADDRESS_ID</name> @@ -211,11 +211,6 @@ </entityField> <entityConsumer> <name>Communications</name> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>AllCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -227,15 +222,15 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/communications/children/contactsmaincountry_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>AllCommunications</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Contracts</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Contract_entity</entityName> - <fieldName>Contracts</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -244,14 +239,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Productprices</name> <dependency> <name>dependency</name> - <entityName>Productprice_entity</entityName> - <fieldName>Productprices</fieldName> + <entityName>Contract_entity</entityName> + <fieldName>Contracts</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Productprices</name> <children> <entityParameter> <name>ContactId_param</name> @@ -260,6 +255,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Productprice_entity</entityName> + <fieldName>Productprices</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER</name> @@ -300,11 +300,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -315,6 +310,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityField> <name>STANDARD_EMAIL_COMMUNICATION</name> @@ -330,11 +330,6 @@ </entityField> <entityConsumer> <name>PhoneCommunications</name> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>PhoneCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -342,14 +337,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>EmailCommunications</name> <dependency> <name>dependency</name> <entityName>Communication_entity</entityName> - <fieldName>EmailCommunications</fieldName> + <fieldName>PhoneCommunications</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>EmailCommunications</name> <children> <entityParameter> <name>ContactId_param</name> @@ -357,6 +352,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>EmailCommunications</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Countries</name> @@ -369,11 +369,6 @@ <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Organisation_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -385,14 +380,14 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordContactStates</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordContactStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -400,14 +395,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordOrganisationTypes</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordOrganisationTypes</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -415,6 +410,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -426,11 +426,6 @@ </entityConsumer> <entityConsumer> <name>KeywordPricePolitics</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -438,14 +433,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordWeaknesses</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordWeaknesses</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -453,14 +448,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStrenghts</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStrenghts</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -468,14 +463,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salesprojects</name> <dependency> <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Salesprojects</fieldName> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salesprojects</name> <children> <entityParameter> <name>ContactId_param</name> @@ -484,14 +479,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Offers</name> <dependency> <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> + <entityName>Salesproject_entity</entityName> + <fieldName>Salesprojects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Offers</name> <children> <entityParameter> <name>ContactId_param</name> @@ -500,14 +495,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Tasks</name> <dependency> <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Tasks</name> <children> <entityParameter> <name>RowId_param</name> @@ -518,6 +513,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>WithPrivate_param</name> @@ -528,11 +528,6 @@ </entityParameter> <entityConsumer> <name>ObjectTrees</name> - <dependency> - <name>dependency</name> - <entityName>ObjectTree_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectIds_param</name> @@ -543,14 +538,14 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/objecttrees/children/objecttypes_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>ObjectTree_entity</entityName> + <fieldName>TreeProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> @@ -559,14 +554,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>360DegreeObjects</name> <dependency> <name>dependency</name> - <entityName>360Degree_entity</entityName> - <fieldName>OrganisationObjects</fieldName> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>360DegreeObjects</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -577,6 +572,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/360degreeobjects/children/objectstatus_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>360Degree_entity</entityName> + <fieldName>OrganisationObjects</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> @@ -587,26 +587,6 @@ <entityProvider> <name>WithPersonIdFilter</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/withpersonidfilter/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>5a456b04-f0ca-4a45-9c1f-bdfdf074434a</name> - <entityName>Contact_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>a80c3db0-29db-433c-8f7c-4ebf6639ad6d</name> - <entityName>Person_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>748a3083-89c2-41b4-a233-3fd5364396e9</name> - <entityName>Competition_entity</entityName> - <fieldName>Organisation</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> @@ -639,6 +619,26 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>5a456b04-f0ca-4a45-9c1f-bdfdf074434a</name> + <entityName>Contact_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>a80c3db0-29db-433c-8f7c-4ebf6639ad6d</name> + <entityName>Person_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>748a3083-89c2-41b4-a233-3fd5364396e9</name> + <entityName>Competition_entity</entityName> + <fieldName>Organisation</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>AttributeId_param</name> @@ -653,20 +653,6 @@ <entityProvider> <name>WithAttribute</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/withattribute/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>10480df2-f0b6-4cb6-8bfb-4a468b994996</name> - <entityName>Competition_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>f368be61-1a15-449f-b37c-b1343069412c</name> - <entityName>Product_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>AttributeId_param</name> @@ -698,6 +684,20 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>10480df2-f0b6-4cb6-8bfb-4a468b994996</name> + <entityName>Competition_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>f368be61-1a15-449f-b37c-b1343069412c</name> + <entityName>Product_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>ExcludedContactIds_param</name> @@ -706,11 +706,6 @@ </entityParameter> <entityConsumer> <name>AttributeTree</name> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -721,6 +716,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>DATE_NEW</name> @@ -772,11 +772,6 @@ <entityConsumer> <name>AttributeConditions</name> <onValidation>%aditoprj%/entity/Organisation_entity/entityfields/attributeconditions/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -799,20 +794,29 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributeconditions/children/showempty_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LinkedAppointments</name> <dependency> <name>dependency</name> - <entityName>Appointment_entity</entityName> - <fieldName>LinkedAppointments</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LinkedAppointments</name> <children> <entityParameter> <name>LinkedObjectId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/linkedappointments/children/linkedobjectid_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>ErrorOnPermissionDenied</name> + <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js</valueProcess> + </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Appointment_entity</entityName> + <fieldName>LinkedAppointments</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Products</name> @@ -1083,11 +1087,6 @@ </entityParameter> <entityConsumer> <name>SelfDuplicatesUncached</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>SelfDuplicates</fieldName> - </dependency> <children> <entityParameter> <name>DuplicateActionsControl_param</name> @@ -1107,20 +1106,25 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/excludedcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>CommRestrictions</name> <dependency> <name>dependency</name> - <entityName>CommRestriction_Entity</entityName> - <fieldName>CommRestrictions</fieldName> + <entityName>Organisation_entity</entityName> + <fieldName>SelfDuplicates</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>CommRestrictions</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/commrestrictions/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CommRestriction_Entity</entityName> + <fieldName>CommRestrictions</fieldName> + </dependency> </entityConsumer> <entityField> <name>COMMRESTRICTIONS_ACTIVE</name> @@ -1175,11 +1179,6 @@ <entityConsumer> <name>Classifications</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>Classification_entity</entityName> - <fieldName>Classifications</fieldName> - </dependency> <children> <entityParameter> <name>ClassificationType_param</name> @@ -1197,6 +1196,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Classification_entity</entityName> + <fieldName>Classifications</fieldName> + </dependency> </entityConsumer> <entityField> <name>COUNT</name> @@ -1217,14 +1221,6 @@ <name>OrganisationsViaIndex</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/organisationsviaindex/documentation.adoc</documentation> <recordContainer>index</recordContainer> - <dependencies> - <entityDependency> - <name>e60b8983-166d-4280-a1a5-f990ad77eeb9</name> - <entityName>AroundLocation_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> @@ -1267,6 +1263,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>e60b8983-166d-4280-a1a5-f990ad77eeb9</name> + <entityName>AroundLocation_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityActionField> <name>openAroundLocation</name> @@ -1337,17 +1341,17 @@ </entityProvider> <entityConsumer> <name>DistrictResponsibles</name> - <dependency> - <name>dependency</name> - <entityName>DistrictResponsible_entity</entityName> - <fieldName>OrganisationResponsibles</fieldName> - </dependency> <children> <entityParameter> <name>OrgUid_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/districtresponsibles/children/orguid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DistrictResponsible_entity</entityName> + <fieldName>OrganisationResponsibles</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>FilterPreSet_param</name> @@ -1356,14 +1360,6 @@ <entityProvider> <name>NonselfDuplicates</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/nonselfduplicates/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>2e410b9e-5ebc-48ea-9562-da386202d7e8</name> - <entityName>Duplicates_entity</entityName> - <fieldName>DuplicateOrganisationsConsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>AttributeKeyId_param</name> @@ -1386,6 +1382,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>2e410b9e-5ebc-48ea-9562-da386202d7e8</name> + <entityName>Duplicates_entity</entityName> + <fieldName>DuplicateOrganisationsConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityActionGroup> <name>orgReportDispatch</name> @@ -1402,11 +1406,6 @@ </entityActionGroup> <entityConsumer> <name>AttributesFilter</name> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>FilterProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -1417,6 +1416,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributesfilter/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>FilterProvider</fieldName> + </dependency> </entityConsumer> </entityFields> <recordContainers> diff --git a/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js b/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js new file mode 100644 index 00000000000..15b1f8d0322 --- /dev/null +++ b/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("false"); \ No newline at end of file diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index c66ce949329..4a393db4dab 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -89,11 +89,6 @@ </entityFieldGroup> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -108,6 +103,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityField> <name>CONTACTID</name> @@ -118,14 +118,6 @@ <name>OrganisationRelated</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/organisationrelated/documentation.adoc</documentation> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>41952879-c2f0-411f-8ca1-36c38914a629</name> - <entityName>Organisation_entity</entityName> - <fieldName>Contact</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -144,6 +136,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>41952879-c2f0-411f-8ca1-36c38914a629</name> + <entityName>Organisation_entity</entityName> + <fieldName>Contact</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>PERSON_ID</name> @@ -161,11 +161,6 @@ </entityField> <entityConsumer> <name>PersAddresses</name> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>ContactAddresses</fieldName> - </dependency> <children> <entityParameter> <name>DefaultAddressId_param</name> @@ -185,14 +180,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/persaddresses/children/replacestandardaddress_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Communications</name> <dependency> <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>AllCommunications</fieldName> + <entityName>Address_entity</entityName> + <fieldName>ContactAddresses</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Communications</name> <children> <entityParameter> <name>ContactId_param</name> @@ -210,29 +205,29 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/communications/children/contactsmaincountry_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>AllCommunications</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Organisations</name> <selectionMode>SINGLE</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>WithPersonIdFilter</fieldName> - </dependency> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Contracts</name> <dependency> <name>dependency</name> - <entityName>Contract_entity</entityName> - <fieldName>Contracts</fieldName> + <entityName>Organisation_entity</entityName> + <fieldName>WithPersonIdFilter</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Contracts</name> <children> <entityParameter> <name>ContactId_param</name> @@ -241,16 +236,16 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Contract_entity</entityName> + <fieldName>Contracts</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Pricelists</name> <state>AUTO</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/pricelists/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Productprice_entity</entityName> - <fieldName>Productprices</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -259,6 +254,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Productprice_entity</entityName> + <fieldName>Productprices</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Genders</name> @@ -313,11 +313,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -332,6 +327,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/documents/children/disallowcreate_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> @@ -356,14 +356,6 @@ <name>Contact</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/contact/documentation.adoc</documentation> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>f925c8e6-b096-4093-bd39-c9cd30a6a71a</name> - <entityName>Lead_entity</entityName> - <fieldName>ContactId</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>OrgId_param</name> @@ -391,16 +383,19 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>f925c8e6-b096-4093-bd39-c9cd30a6a71a</name> + <entityName>Lead_entity</entityName> + <fieldName>ContactId</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>OrgAddresses</name> <state>READONLY</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/orgaddresses/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAddressesByContact</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -412,6 +407,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/orgaddresses/children/defaultaddressid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAddressesByContact</fieldName> + </dependency> </entityConsumer> <entityField> <name>STANDARD_EMAIL_COMMUNICATION</name> @@ -428,11 +428,6 @@ <entityConsumer> <name>PhoneCommunications</name> <description>Used for standard communication</description> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>PhoneCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -442,15 +437,15 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>EmailCommunications</name> - <description>Used for standard communication</description> <dependency> <name>dependency</name> <entityName>Communication_entity</entityName> - <fieldName>EmailCommunications</fieldName> + <fieldName>PhoneCommunications</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>EmailCommunications</name> + <description>Used for standard communication</description> <children> <entityParameter> <name>ContactId_param</name> @@ -460,6 +455,11 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>EmailCommunications</fieldName> + </dependency> </entityConsumer> <entityField> <name>ADDRESS_ID</name> @@ -471,11 +471,6 @@ </entityField> <entityConsumer> <name>KeywordGenders</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -483,6 +478,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -494,40 +494,35 @@ </entityConsumer> <entityConsumer> <name>Offers</name> - <dependency> - <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salutations</name> <dependency> <name>dependency</name> - <entityName>SalutationDistinct_entity</entityName> - <fieldName>Salutations</fieldName> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salutations</name> <children> <entityParameter> <name>Language_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/salutations/children/language_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>SalutationDistinct_entity</entityName> + <fieldName>Salutations</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Person_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -542,14 +537,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributes/children/showdsgvomessage_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>SalutationTitles</name> <dependency> <name>dependency</name> - <entityName>SalutationTitleDistinct_entity</entityName> - <fieldName>SalutationTitles</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>SalutationTitles</name> <children> <entityParameter> <name>Salutation_param</name> @@ -560,15 +555,15 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/salutationtitles/children/language_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>SalutationTitleDistinct_entity</entityName> + <fieldName>SalutationTitles</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Tasks</name> <state>EDITABLE</state> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -583,14 +578,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ObjectTrees</name> <dependency> <name>dependency</name> - <entityName>ObjectTree_entity</entityName> - <fieldName>TreeProvider</fieldName> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ObjectTrees</name> <children> <entityParameter> <name>ObjectIds_param</name> @@ -601,6 +596,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/objecttrees/children/objecttypes_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ObjectTree_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>STATUS</name> @@ -612,25 +612,20 @@ </entityField> <entityConsumer> <name>KeywordContactStates</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ContactAndOrganisationAddresses</name> <dependency> <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAndContactAddresses</fieldName> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ContactAndOrganisationAddresses</name> <children> <entityParameter> <name>ContactId_param</name> @@ -641,6 +636,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/contactandorganisationaddresses/children/organisationid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAndContactAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>DEPARTMENT</name> @@ -663,11 +663,6 @@ </entityField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> @@ -676,14 +671,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>OtherContacts</name> <dependency> <name>dependency</name> - <entityName>Contact_entity</entityName> - <fieldName>PersonsContactsExceptOwn</fieldName> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>OtherContacts</name> <children> <entityParameter> <name>OwnContactId_param</name> @@ -694,6 +689,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/othercontacts/children/languagekey_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Contact_entity</entityName> + <fieldName>PersonsContactsExceptOwn</fieldName> + </dependency> </entityConsumer> <entityField> <name>ORGANISATION_NAME</name> @@ -706,20 +706,6 @@ <entityProvider> <name>Contacts</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/contacts/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>c98da62f-d6b2-4ddb-9101-92e9a60abdfb</name> - <entityName>VisitPlanEmployeeWeek_entity</entityName> - <fieldName>Persons</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>f56b1378-138d-4f88-b9df-274adce9f90c</name> - <entityName>VisitPlanEntry_entity</entityName> - <fieldName>Persons</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -746,14 +732,23 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>c98da62f-d6b2-4ddb-9101-92e9a60abdfb</name> + <entityName>VisitPlanEmployeeWeek_entity</entityName> + <fieldName>Persons</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>f56b1378-138d-4f88-b9df-274adce9f90c</name> + <entityName>VisitPlanEntry_entity</entityName> + <fieldName>Persons</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>360DegreeObjects</name> - <dependency> - <name>dependency</name> - <entityName>360Degree_entity</entityName> - <fieldName>PersonObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -764,14 +759,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/360degreeobjects/children/objectstatus_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> <dependency> <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <entityName>360Degree_entity</entityName> + <fieldName>PersonObjects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -786,6 +781,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributetree/children/showdsgvomessage_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>DATE_NEW</name> @@ -845,46 +845,50 @@ </entityParameter> <entityConsumer> <name>CommRestrictions</name> - <dependency> - <name>dependency</name> - <entityName>CommRestriction_Entity</entityName> - <fieldName>CommRestrictions</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/commrestrictions/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CommRestriction_Entity</entityName> + <fieldName>CommRestrictions</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>DSGVOEntries</name> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/dsgvoentries/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>DSGVO_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/dsgvoentries/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Appointments</name> <dependency> <name>dependency</name> - <entityName>Appointment_entity</entityName> - <fieldName>LinkedAppointments</fieldName> + <entityName>DSGVO_entity</entityName> + <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Appointments</name> <children> <entityParameter> <name>LinkedObjectId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/appointments/children/linkedobjectid_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>ErrorOnPermissionDenied</name> + <valueProcess>%aditoprj%/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js</valueProcess> + </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Appointment_entity</entityName> + <fieldName>LinkedAppointments</fieldName> + </dependency> </entityConsumer> <entityField> <name>OpenTasks</name> @@ -921,11 +925,6 @@ </entityField> <entityConsumer> <name>SelfDuplicatesUncached</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>SelfDuplicates</fieldName> - </dependency> <children> <entityParameter> <name>DuplicateActionsControl_param</name> @@ -944,6 +943,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/selfduplicatesuncached/children/excludedcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>SelfDuplicates</fieldName> + </dependency> </entityConsumer> <entityField> <name>LEAD_LEADID</name> @@ -974,14 +978,6 @@ <name>QuickEntryContacts</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/quickentrycontacts/documentation.adoc</documentation> <titlePlural>Additional Contacts</titlePlural> - <dependencies> - <entityDependency> - <name>6d137850-63ba-4be0-9ca5-1464e71d4f77</name> - <entityName>QuickEntry_entity</entityName> - <fieldName>Contacts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -1004,6 +1000,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>6d137850-63ba-4be0-9ca5-1464e71d4f77</name> + <entityName>QuickEntry_entity</entityName> + <fieldName>Contacts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityActionField> <name>openEditDefaultsView</name> @@ -1249,14 +1253,6 @@ <entityProvider> <name>IdFilteredActiveContacts</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/idfilteredactivecontacts/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>511f3e4c-7493-4a31-a136-0ba80ba2ec85</name> - <entityName>Member_entity</entityName> - <fieldName>Contacts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ExcludedContactIds_param</name> @@ -1291,6 +1287,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>511f3e4c-7493-4a31-a136-0ba80ba2ec85</name> + <entityName>Member_entity</entityName> + <fieldName>Contacts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>COUNT</name> @@ -1325,29 +1329,21 @@ <name>Districts</name> <state>INVISIBLE</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/districts/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>District_entity</entityName> - <fieldName>ResponsibleDistricts</fieldName> - </dependency> <children> <entityParameter> <name>DistrictsByContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districts/children/districtsbycontactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>District_entity</entityName> + <fieldName>ResponsibleDistricts</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>NonselfDuplicates</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/nonselfduplicates/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>3a4352e2-9686-4c52-9d01-dbfad8c68ea7</name> - <entityName>Duplicates_entity</entityName> - <fieldName>DuplicatePersonsConsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -1370,22 +1366,30 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>3a4352e2-9686-4c52-9d01-dbfad8c68ea7</name> + <entityName>Duplicates_entity</entityName> + <fieldName>DuplicatePersonsConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>DistrictResponsibles</name> <state>INVISIBLE</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>DistrictResponsible_entity</entityName> - <fieldName>OrganisationResponsibles</fieldName> - </dependency> <children> <entityParameter> <name>OrgUid_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/children/orguid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DistrictResponsible_entity</entityName> + <fieldName>OrganisationResponsibles</fieldName> + </dependency> </entityConsumer> </entityFields> <recordContainers> diff --git a/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js b/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js new file mode 100644 index 00000000000..15b1f8d0322 --- /dev/null +++ b/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("false"); \ No newline at end of file diff --git a/process/Calendar_lib/process.js b/process/Calendar_lib/process.js index 0a9a4b99e7c..bc056c2d02c 100644 --- a/process/Calendar_lib/process.js +++ b/process/Calendar_lib/process.js @@ -538,4 +538,113 @@ CalendarUtil.getCalendarSystemType = function(pScope) // Everything is none return calendars.BACKEND_NONE; +} + +CalendarUtil.buildEntriesFromUids = function(appointmentUids) +{ + var entryArray = new Array(appointmentUids.length); + + for(var i = 0; i < appointmentUids.length; i++) + { + var hasPermission = true; + + if(vars.getString("$param.ErrorOnPermissionDenied") && vars.get("$param.ErrorOnPermissionDenied") == "false") + hasPermission = hasUserPermissionForReadingEntry(getEntryOwnerCn(appointmentUids[i])); + + if(hasPermission) + entryArray[i] = CalendarUtil.buildEntry(calendars.getEntry(appointmentUids[i], null, null), null); + } + + //filter out all null + var filteredEntryArray = entryArray.filter(function (el) { + return el != null; + }); + + return filteredEntryArray; +} + + +CalendarUtil.countEntriesFromUids = function(appointmentUids) +{ + return CalendarUtil.buildEntriesFromUids(appointmentUids).length; +} + +CalendarUtil.buildEntry = function (pEntry, pMasterentry) +{ + var uid = pEntry[calendars.ID]; + var summary = pEntry[calendars.SUMMARY]; + var attendees = pEntry[calendars.AFFECTEDUSERS]; + var startdate = pEntry[calendars.DTSTART]; + var enddate = pEntry[calendars.DTEND]; + var links = pEntry[calendars.LINKS]; + var description = pEntry[calendars.DESCRIPTION]; + if(pEntry[calendars.ORGANIZER2] != undefined) + var organizer = pEntry[calendars.ORGANIZER2]["paramvalue"]; + if(pEntry[calendars.USER2] != undefined) + var owner = JSON.stringify(pEntry[calendars.USER2]); + var status = pEntry[calendars.STATUS]; + var location = pEntry[calendars.LOCATION]; + var reminder = pEntry[calendars.REMINDER_DURATION]; + var remindercheck = pEntry[calendars.HASREMINDER] + var classification = pEntry[calendars.CLASSIFICATION]; + var transparency = pEntry[calendars.TRANSPARENCY]; + var categories = pEntry[calendars.CATEGORIES]; + var isAllDay = pEntry["X-ADITO-ISALLDAYEVENT"] != null ? pEntry["X-ADITO-ISALLDAYEVENT"] : "FALSE"; + + var masterBegin = pMasterentry != null ? pMasterentry[calendars.DTSTART] : null + var masterEnd = pMasterentry != null ? pMasterentry[calendars.DTEND] : null + + // Recurrence + var recurrenceID = pEntry[calendars.RECURRENCEID]; + var rrule = null; + if (pMasterentry != null) { // Entry is a recurrence exception, therefore get rrule from master + rrule = pMasterentry[calendars.RRULE] != null ? pMasterentry[calendars.RRULE][0] : null; + } else { + rrule = pEntry[calendars.RRULE] != null ? pEntry[calendars.RRULE][0] : null; + } + + return [ + uid, + attendees.length, + startdate, + enddate, + summary, + organizer, + owner, + attendees, + status, + description, + location, + '', + isAllDay, + classification, + transparency, + categories, + reminder, + remindercheck, + rrule, + recurrenceID, + null, + masterBegin, + masterEnd, + null + ]; +} + + +function hasUserPermissionForReadingEntry(calUserCn) +{ + return calendars.hasPermission(calUserCn, calendars.VEVENT, "READ"); +} + +function getEntryOwnerCn(appointmentUid) +{ + + var owner = newSelect("ASYS_CALENDARBACKEND.OWNER", "_____SYSTEMALIAS") + .from("ASYS_CALENDARBACKEND") + .whereIfSet("ASYS_CALENDARBACKEND.ELEMENTUID", appointmentUid) + .cell(true); + + var ownerArr = text.decodeMS(owner); + return ownerArr[1].split(":")[1]; } \ No newline at end of file -- GitLab From 3e8ed424c8a1a4911c0967ca7b7cb6ccfef380ae Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Tue, 3 Nov 2020 16:01:58 +0100 Subject: [PATCH 058/184] #1068152 Calendar: Dashlet-Fix --- process/Calendar_lib/process.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/process/Calendar_lib/process.js b/process/Calendar_lib/process.js index bc056c2d02c..e9f96a4a908 100644 --- a/process/Calendar_lib/process.js +++ b/process/Calendar_lib/process.js @@ -548,9 +548,9 @@ CalendarUtil.buildEntriesFromUids = function(appointmentUids) { var hasPermission = true; - if(vars.getString("$param.ErrorOnPermissionDenied") && vars.get("$param.ErrorOnPermissionDenied") == "false") + if(vars.get("$param.ErrorOnPermissionDenied") == "false" || vars.getString("$param.LinkedAppointmentsFromDashlet_param")) hasPermission = hasUserPermissionForReadingEntry(getEntryOwnerCn(appointmentUids[i])); - + if(hasPermission) entryArray[i] = CalendarUtil.buildEntry(calendars.getEntry(appointmentUids[i], null, null), null); } -- GitLab From 2119941a8b72ff15b96045646502a671349d0792 Mon Sep 17 00:00:00 2001 From: Benjamin Ulrich <b.ulrich@adito.de> Date: Wed, 4 Nov 2020 13:26:21 +0000 Subject: [PATCH 059/184] 1065877 fix order report incorrect spelling --- language/_____LANGUAGE_de/_____LANGUAGE_de.aod | 2 +- process/Order_lib/process.js | 3 ++- report/Reminder_report/reportData.jrxml | 17 +++++++++-------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index b563a3076d2..6fe54793874 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -6568,7 +6568,7 @@ </entry> <entry> <key>Print reminder</key> - <value>Mahnung drucken</value> + <value>Mahnung anzeigen</value> </entry> <entry> <key>Rech.-Betrag</key> diff --git a/process/Order_lib/process.js b/process/Order_lib/process.js index d6938458c59..bcb1b842869 100644 --- a/process/Order_lib/process.js +++ b/process/Order_lib/process.js @@ -545,7 +545,8 @@ OrderUtils.buildReminderReport = function (pOrderID) "Ordernumber": translate.text("Order number",language), "Orderdate": translate.text("Order date",language), "Orderamount": translate.text("Order amount",language), - "Dunninglevel": translate.text("Dunning level",language) + "Dunninglevel": translate.text("Dunning level",language), + "OutstandingAmount": translate.text("Outstanding Amount",language) }; diff --git a/report/Reminder_report/reportData.jrxml b/report/Reminder_report/reportData.jrxml index ca529152a3f..1347b1ef959 100644 --- a/report/Reminder_report/reportData.jrxml +++ b/report/Reminder_report/reportData.jrxml @@ -2,7 +2,7 @@ <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Mahnung" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e7a916c8-3f9a-497d-84bb-3909b15271ea"> <property name="ireport.zoom" value="2.1435888100000016"/> <property name="ireport.x" value="0"/> - <property name="ireport.y" value="57"/> + <property name="ireport.y" value="0"/> <parameter name="myAddr" class="java.lang.String"/> <parameter name="Kontenabstimmung" class="java.lang.String"/> <parameter name="Rech.-Nr" class="java.lang.String"/> @@ -22,6 +22,7 @@ <parameter name="Due" class="java.lang.String"/> <parameter name="DUEDATE" class="java.lang.String"/> <parameter name="Dunninglevel" class="java.lang.String"/> + <parameter name="OutstandingAmount" class="java.lang.String"/> <field name="PAYED" class="java.lang.String"/> <field name="RELATION_ID" class="java.lang.String"/> <field name="CURRENCY" class="java.lang.String"/> @@ -59,13 +60,6 @@ </textElement> <textFieldExpression><![CDATA[$P{DueDate}]]></textFieldExpression> </textField> - <textField> - <reportElement x="408" y="0" width="103" height="15" uuid="62a0909f-ef03-4242-969a-8a9532d1aa9a"/> - <textElement textAlignment="Right"> - <font size="8"/> - </textElement> - <textFieldExpression><![CDATA[$P{Outstanding Amount}]]></textFieldExpression> - </textField> <line> <reportElement x="13" y="33" width="527" height="1" uuid="d5108302-191f-4e27-8920-fcd330d335e8"/> </line> @@ -125,6 +119,13 @@ </textElement> <textFieldExpression><![CDATA[$R{Rechnungsbetrag}]]></textFieldExpression> </textField> + <textField> + <reportElement x="430" y="0" width="81" height="15" uuid="8eee46c0-f3c3-4563-b1b1-746aeb7e73c6"/> + <textElement> + <font size="8"/> + </textElement> + <textFieldExpression><![CDATA[$P{OutstandingAmount}]]></textFieldExpression> + </textField> </band> </groupHeader> </group> -- GitLab From 8fcd36c76d70718dbc71eb5fab4cfe949c999696 Mon Sep 17 00:00:00 2001 From: "b.ulrich" <b.ulrich@adito.de> Date: Mon, 2 Nov 2020 13:28:31 +0000 Subject: [PATCH 060/184] [Projekt: Entwicklung - xRM][TicketNr.: 1061035][Serienmail - Testen - Fehler im Serverlog] (cherry picked from commit d2e307981c0f62579c4b9c93ce166d3c41b003aa) --- language/_____LANGUAGE_de/_____LANGUAGE_de.aod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 6fe54793874..c75f227a0ed 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -6628,7 +6628,7 @@ </entry> <entry> <key>This error should never appear - contact administrator (PermissionDetail_entity.PermissionAction.onValidation).</key> - <value>Dieser Fehler sollte nie erscheinen - kontaktieren sie einen Administrator (PermissionDetail_entity.PermissionAction.onValidation).</value> + <value>Dieser Fehler sollte nie erscheinen - kontaktieren Sie einen Administrator (PermissionDetail_entity.PermissionAction.onValidation).</value> </entry> <entry> <key>Empty actions are invalid!</key> -- GitLab From ce6de6dc3ca6ae0be8f1b5b63219fe2da5c238c3 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 4 Nov 2020 10:10:56 +0100 Subject: [PATCH 061/184] #1065236 marketing automation workflow --- .../BulkMailRecipient_entity.aod | 6 ++++ .../onActionProcess.js | 34 ++++++++++++++++++ .../CampaignParticipant_entity.aod | 6 ++++ .../onActionProcess.js | 36 +++++++++++++++++++ .../DocumentTemplate_entity.aod | 1 + .../onValidation.js | 14 ++++++++ .../MarketingWorkflowLauncher_entity.aod | 1 + .../processvariables_param/valueProcess.js | 2 +- .../children/targets_param/valueProcess.js | 8 +++-- .../Organisation_entity.aod | 12 +++++++ .../onActionProcess.js | 9 +++++ entity/Person_entity/Person_entity.aod | 2 +- .../onActionProcess.js | 1 + entity/WorkflowTask_entity/afterSave.js | 4 +-- .../MarketingWorkflowLauncher.aod | 2 +- .../OrganisationFilter_view.aod | 2 ++ .../WorkflowLauncherEdit_view.aod | 4 +++ process/FilterViewAction_lib/process.js | 5 ++- process/SendEmail_workflowService/process.js | 2 +- 19 files changed, 142 insertions(+), 9 deletions(-) create mode 100644 entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js create mode 100644 entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js create mode 100644 entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js create mode 100644 entity/Organisation_entity/entityfields/workflowactions/children/startmarketingworkflows/onActionProcess.js diff --git a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod index bae83161b6a..d60c6ae8ced 100644 --- a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod +++ b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod @@ -121,6 +121,12 @@ <iconId>VAADIN:BAN</iconId> <tooltipProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/removewithcommrestriction/tooltipProcess.js</tooltipProcess> </entityActionField> + <entityActionField> + <name>startMarketingWorkflows</name> + <title>Start marketing workflow</title> + <onActionProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + </entityActionField> </children> </entityActionGroup> <entityField> diff --git a/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js b/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js new file mode 100644 index 00000000000..cbe91449e5c --- /dev/null +++ b/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js @@ -0,0 +1,34 @@ +import("Util_lib"); +import("system.entities"); +import("Context_lib"); +import("system.vars"); +import("system.neon"); + +var rows = vars.get("$sys.selectionRows"); +var filter = vars.get("$sys.filter").filter; +var targets = []; + +if (Utils.isNullOrEmpty(rows)) +{ + let loadConfig = entities.createConfigForLoadingRows() + .entity("BulkMailRecipient_entity") + .provider("BulkMailRecipients") + .fields(["CONTACT_ID", "TARGETCONTEXT"]) + .addParameter("BulkMailId_param", vars.get("$param.BulkMailId_param")); + + if (filter) + loadConfig.filter(JSON.stringify(filter)); + + rows = entities.getRows(loadConfig); +} + +rows = rows.map(function (row) +{ + return [row["CONTACT_ID"], row["TARGETCONTEXT"]]; +}); + + +neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { + "ObjectIds_param": JSON.stringify(rows), + "ObjectType_param": ContextUtils.getCurrentContextId() +}); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod index 3c8e5a5655f..2ecc8752c73 100644 --- a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod +++ b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod @@ -177,6 +177,12 @@ <tooltip>Update campaign step</tooltip> <tooltipProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/tooltipProcess.js</tooltipProcess> </entityActionField> + <entityActionField> + <name>startMarketingWorkflows</name> + <title>Start marketing workflow</title> + <onActionProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + </entityActionField> </children> </entityActionGroup> <entityField> diff --git a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js new file mode 100644 index 00000000000..40e60ff20d2 --- /dev/null +++ b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js @@ -0,0 +1,36 @@ +import("Util_lib"); +import("system.entities"); +import("Context_lib"); +import("system.vars"); +import("system.neon"); + +var rows = vars.get("$sys.selectionRows"); +var filter = vars.get("$sys.filter").filter; +var targets = []; + +if (Utils.isNullOrEmpty(rows)) +{ + let loadConfig = entities.createConfigForLoadingRows() + .entity("CampaignParticipant_entity") + .provider("CampaignParticipantsProvider") + .fields(["CONTACT_ID", "CONTACTCONTEXT"]) + .addParameter("CampaignId_param", vars.get("$param.CampaignId_param")) + .addParameter("CampaignStepId_param", vars.get("$param.CampaignStepId_param")) + .addParameter("ContactId_param", vars.get("$param.ContactId_param")); + + if (filter) + loadConfig.filter(JSON.stringify(filter)); + + rows = entities.getRows(loadConfig); +} + +rows = rows.map(function (row) +{ + return [row["CONTACT_ID"], row["CONTACTCONTEXT"]]; +}); + + +neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { + "ObjectIds_param": JSON.stringify(rows), + "ObjectType_param": ContextUtils.getCurrentContextId() +}); \ No newline at end of file diff --git a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod index 9cf1d9cca30..dbb9e49a3b6 100644 --- a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod +++ b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod @@ -321,6 +321,7 @@ <entityConsumer> <name>DocumentTemplatePlaceOfUse</name> <stateProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/stateProcess.js</stateProcess> + <onValidation>%aditoprj%/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js</onValidation> <dependency> <name>dependency</name> <entityName>DocumentTemplatePlaceOfUse_entity</entityName> diff --git a/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js b/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js new file mode 100644 index 00000000000..a40be7eb7d8 --- /dev/null +++ b/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js @@ -0,0 +1,14 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("Entity_lib"); + +var usages = EntityConsumerRowsHelper.getCurrentConsumerRows("DocumentTemplatePlaceOfUse", ["PLACEOFUSE"]); +var hasMarketingWorkflowUsage = usages.some(function (usage) +{ + return usage["PLACEOFUSE"] == "MarketingWorkflowLauncher"; +}); +if (hasMarketingWorkflowUsage && !vars.get("$field.Content").includes("{@workflowActionLink@}")) +{ + result.string(translate.text("The template must contain the placeholder for the worklow-link to use it with the marketing workflow")); +} diff --git a/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod index 40b9b39c899..f387fc2eca7 100644 --- a/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod +++ b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod @@ -80,6 +80,7 @@ <recordContainers> <datalessRecordContainer> <name>dataLess</name> + <alias>Data_alias</alias> </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js index b81df3d4fb9..3855fc6c443 100644 --- a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js @@ -2,6 +2,6 @@ import("system.vars"); import("system.result"); var variables = { - documentTemplate: vars.get("$field.DOCUMENTTEMPLATE_ID") + documentTemplateId: vars.get("$field.DOCUMENTTEMPLATE_ID") }; result.string(JSON.stringify(variables)); \ No newline at end of file diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js index 6a28aafa528..cca5f0e8d7c 100644 --- a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js @@ -1,13 +1,17 @@ import("Util_lib"); import("system.vars"); import("system.result"); +import("FilterViewAction_lib"); var context = vars.get("$param.ObjectType_param"); -var targets = Utils.parseJSON(vars.get("$param.ObjectIds_param")) || []; -targets = targets.map(function (targetId) +var targets = Utils.parseJSON(vars.get("$param.ObjectIds_param")); +var filter = Utils.parseJSON(vars.get("$param.ObjectFilter_param")); + +targets = FilterViewActionUtils.getUidsBySelectionOrFilter(context, targets, filter).map(function (targetId) { if (Utils.isString(targetId)) return [targetId, context]; //todo: context dynamic (eg for participants) return targetId; }); + result.string(JSON.stringify(targets)); \ No newline at end of file diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index 0287eb1d381..bfd5e70a02a 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -1422,6 +1422,18 @@ <fieldName>FilterProvider</fieldName> </dependency> </entityConsumer> + <entityActionGroup> + <name>workflowActions</name> + <title>Workflow</title> + <children> + <entityActionField> + <name>startMarketingWorkflows</name> + <title>Start marketing workflow</title> + <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/workflowactions/children/startmarketingworkflows/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + </entityActionField> + </children> + </entityActionGroup> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Organisation_entity/entityfields/workflowactions/children/startmarketingworkflows/onActionProcess.js b/entity/Organisation_entity/entityfields/workflowactions/children/startmarketingworkflows/onActionProcess.js new file mode 100644 index 00000000000..2b04867cc90 --- /dev/null +++ b/entity/Organisation_entity/entityfields/workflowactions/children/startmarketingworkflows/onActionProcess.js @@ -0,0 +1,9 @@ +import("Context_lib"); +import("system.vars"); +import("system.neon"); + +neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { + "ObjectIds_param": JSON.stringify(vars.get("$sys.selection")), + "ObjectFilter_param": JSON.stringify(vars.get("$sys.filter")), + "ObjectType_param": ContextUtils.getCurrentContextId() +}); \ No newline at end of file diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index 4a393db4dab..24d78e6da4f 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -1103,7 +1103,7 @@ </entityActionField> <entityActionField> <name>startMarketingWorkflows</name> - <title>Marketing Workflow</title> + <title>Start marketing workflow</title> <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> </entityActionField> diff --git a/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js b/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js index 3e462ab4498..2b04867cc90 100644 --- a/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js +++ b/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js @@ -4,5 +4,6 @@ import("system.neon"); neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { "ObjectIds_param": JSON.stringify(vars.get("$sys.selection")), + "ObjectFilter_param": JSON.stringify(vars.get("$sys.filter")), "ObjectType_param": ContextUtils.getCurrentContextId() }); \ No newline at end of file diff --git a/entity/WorkflowTask_entity/afterSave.js b/entity/WorkflowTask_entity/afterSave.js index 383331b295d..61b54c53434 100644 --- a/entity/WorkflowTask_entity/afterSave.js +++ b/entity/WorkflowTask_entity/afterSave.js @@ -30,9 +30,9 @@ if (entityData["FORMRESULT"]) else { var params = { - "TaskTitle_param" : rowData["NAME"] + "TaskTitle_param": entityData["NAME"] }; //if you try to open the task now, it will display "Task done" - neon.openContext("WorkflowTask", "WorkflowTaskPreview_view", [rowData["UID"]], neon.OPERATINGSTATE_VIEW, params); + neon.openContext("WorkflowTask", "WorkflowTaskPreview_view", [entityData["UID"]], neon.OPERATINGSTATE_VIEW, params); } } \ No newline at end of file diff --git a/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod b/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod index bad0c038509..e200a8a70f8 100644 --- a/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod +++ b/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>MarketingWorkflowLauncher</name> - <title>f</title> + <title>Marketing workflow</title> <majorModelMode>DISTRIBUTED</majorModelMode> <entity>MarketingWorkflowLauncher_entity</entity> <references> diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod index 1cbde0c5309..7f17a0e1a0f 100644 --- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod +++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod @@ -51,6 +51,7 @@ <name>Organisations</name> <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1> <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2> + <favoriteActionGroup3>workflowActions</favoriteActionGroup3> <subtitleField>CUSTOMERCODE_DISPLAY_fieldGroup</subtitleField> <entityField>#ENTITY</entityField> <linkedColumns> @@ -100,6 +101,7 @@ <name>Treetable</name> <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1> <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2> + <favoriteActionGroup3>workflowActions</favoriteActionGroup3> <entityField>#ENTITY</entityField> <linkedColumns> <element>NAME</element> diff --git a/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod b/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod index 8445a151ff6..8f7e944084f 100644 --- a/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod +++ b/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod @@ -23,6 +23,10 @@ <name>14de7f56-44cf-4c9e-89a7-59f84e482fd9</name> <entityField>NAME</entityField> </entityFieldLink> + <entityFieldLink> + <name>fd4252cf-e137-4068-a91b-732708f5ee1c</name> + <entityField>workflowTargets</entityField> + </entityFieldLink> </fields> </genericViewTemplate> <dynamicFormViewTemplate> diff --git a/process/FilterViewAction_lib/process.js b/process/FilterViewAction_lib/process.js index b0fa04291d0..8615c426d6d 100644 --- a/process/FilterViewAction_lib/process.js +++ b/process/FilterViewAction_lib/process.js @@ -52,7 +52,10 @@ FilterViewActionUtils.getUidsByEntityFilter = function (pContext, pFilter) var loadRowsConfig = entities.createConfigForLoadingRows() .entity(ContextUtils.getEntity(pContext)) .fields(["#UID"]) - .filter(JSON.stringify(pFilter.filter || pFilter)); + if (pFilter.filter) + loadRowsConfig.filter(JSON.stringify(pFilter.filter)); + else if (pFilter) + loadRowsConfig.filter(JSON.stringify(pFilter)); return entities.getRows(loadRowsConfig).map(function (row) { diff --git a/process/SendEmail_workflowService/process.js b/process/SendEmail_workflowService/process.js index 6ccbfe3e760..ded2b169e19 100644 --- a/process/SendEmail_workflowService/process.js +++ b/process/SendEmail_workflowService/process.js @@ -10,7 +10,7 @@ import("Workflow_lib"); var processInstanceId = vars.get("$local.uid"); var variables = JSON.parse(vars.get("$local.value")); -var recipientContactId = variables.recipientContactId; +var recipientContactId = variables.recipientContactId || variables.targetId; var documentTemplateId = variables.documentTemplateId; var senderName = variables.senderName; var mailSubject = variables.mailSubject; -- GitLab From 4446c7d6df37eab0bf1fd4e6e719d9959c09309d Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 4 Nov 2020 10:39:24 +0100 Subject: [PATCH 062/184] #1065236 marketing automation workflow set adito url --- .../processvariables_param/valueProcess.js | 3 ++- .../Organisation_entity.aod | 18 ++++++------------ .../startmarketingworkflows/onActionProcess.js | 0 .../WorkflowLauncher_entity.aod | 2 ++ .../OrganisationFilter_view.aod | 2 -- process/FilterViewAction_lib/process.js | 2 +- process/SendEmail_workflowService/process.js | 13 +++++++++---- 7 files changed, 20 insertions(+), 20 deletions(-) rename entity/Organisation_entity/entityfields/{workflowactions => filterviewactiongroup}/children/startmarketingworkflows/onActionProcess.js (100%) diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js index 3855fc6c443..cea637a710a 100644 --- a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js @@ -2,6 +2,7 @@ import("system.vars"); import("system.result"); var variables = { - documentTemplateId: vars.get("$field.DOCUMENTTEMPLATE_ID") + documentTemplateId: vars.get("$field.DOCUMENTTEMPLATE_ID"), + originUrl: vars.get("$sys.origin") }; result.string(JSON.stringify(variables)); \ No newline at end of file diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index bfd5e70a02a..d428c6f4de9 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -959,6 +959,12 @@ <tooltip>Export fields of this table</tooltip> <tooltipProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/tooltipProcess.js</tooltipProcess> </entityActionField> + <entityActionField> + <name>startMarketingWorkflows</name> + <title>Start marketing workflow</title> + <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + </entityActionField> </children> </entityActionGroup> <entityActionField> @@ -1422,18 +1428,6 @@ <fieldName>FilterProvider</fieldName> </dependency> </entityConsumer> - <entityActionGroup> - <name>workflowActions</name> - <title>Workflow</title> - <children> - <entityActionField> - <name>startMarketingWorkflows</name> - <title>Start marketing workflow</title> - <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/workflowactions/children/startmarketingworkflows/onActionProcess.js</onActionProcess> - <isObjectAction v="false" /> - </entityActionField> - </children> - </entityActionGroup> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Organisation_entity/entityfields/workflowactions/children/startmarketingworkflows/onActionProcess.js b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js similarity index 100% rename from entity/Organisation_entity/entityfields/workflowactions/children/startmarketingworkflows/onActionProcess.js rename to entity/Organisation_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js diff --git a/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod index f1640dc1aac..4ac6aa0edf3 100644 --- a/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod +++ b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod @@ -31,6 +31,7 @@ <name>KEY</name> <title>Key</title> <consumer>WorkflowDefinitions</consumer> + <mandatory v="true" /> <state>EDITABLE</state> </entityField> <entityActionField> @@ -88,6 +89,7 @@ <recordContainers> <datalessRecordContainer> <name>dataLess</name> + <alias>Data_alias</alias> </datalessRecordContainer> </recordContainers> </entity> diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod index 7f17a0e1a0f..1cbde0c5309 100644 --- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod +++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod @@ -51,7 +51,6 @@ <name>Organisations</name> <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1> <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2> - <favoriteActionGroup3>workflowActions</favoriteActionGroup3> <subtitleField>CUSTOMERCODE_DISPLAY_fieldGroup</subtitleField> <entityField>#ENTITY</entityField> <linkedColumns> @@ -101,7 +100,6 @@ <name>Treetable</name> <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1> <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2> - <favoriteActionGroup3>workflowActions</favoriteActionGroup3> <entityField>#ENTITY</entityField> <linkedColumns> <element>NAME</element> diff --git a/process/FilterViewAction_lib/process.js b/process/FilterViewAction_lib/process.js index 8615c426d6d..afd89d4d6d4 100644 --- a/process/FilterViewAction_lib/process.js +++ b/process/FilterViewAction_lib/process.js @@ -40,7 +40,7 @@ FilterViewActionUtils.getUidsByEntityFilter = function (pContext, pFilter) { return new SqlBuilder() .selectDistinct("CONTACT.CONTACTID") - .from("PERSON") + .from("ORGANISATION") .join("CONTACT", newWhere("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID").and("CONTACT.PERSON_ID is null")) .leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID") .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID") diff --git a/process/SendEmail_workflowService/process.js b/process/SendEmail_workflowService/process.js index ded2b169e19..14247ad4e4b 100644 --- a/process/SendEmail_workflowService/process.js +++ b/process/SendEmail_workflowService/process.js @@ -14,15 +14,20 @@ var recipientContactId = variables.recipientContactId || variables.targetId; var documentTemplateId = variables.documentTemplateId; var senderName = variables.senderName; var mailSubject = variables.mailSubject; +var aditoUrl = variables.originUrl; var actionParams = Utils.clone(variables); actionParams.processInstanceId = processInstanceId; -var linkPlaceholder = new Placeholder("workflowActionLink", Placeholder.types.CALLBACKFUNCTION, function () +var additionalPlaceholders = []; +if (aditoUrl) { - return WorkflowLinkActions.getActionLink("https://localhost:8443", actionParams.linkActionType, actionParams.redirectLink, actionParams); -}); + additionalPlaceholders.push(linkPlaceholder = new Placeholder("workflowActionLink", Placeholder.types.CALLBACKFUNCTION, function () + { + return WorkflowLinkActions.getActionLink(aditoUrl, actionParams.linkActionType, actionParams.redirectLink, actionParams); + })); +} -var email = Email.fromTemplate(documentTemplateId, recipientContactId, null, [linkPlaceholder]); +var email = Email.fromTemplate(documentTemplateId, recipientContactId, null, additionalPlaceholders); email.subject = mailSubject; email.toRecipients = [CommUtil.getStandardMail(recipientContactId)]; -- GitLab From dcf5daf57b39f65750adc20fb140d17becae1ae3 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 4 Nov 2020 16:42:22 +0100 Subject: [PATCH 063/184] #1065236 launch marketing workflow --- .../BulkMailRecipient_entity.aod | 3 +- .../CampaignParticipant_entity.aod | 3 +- .../MarketingWorkflowLauncher_entity.aod | 2 +- .../Organisation_entity.aod | 439 +++++++++--------- entity/Person_entity/Person_entity.aod | 401 ++++++++-------- .../WorkflowLauncher_entity.aod | 1 - .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 4 + .../WorkflowLauncherEdit_view.aod | 4 - 8 files changed, 430 insertions(+), 427 deletions(-) diff --git a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod index d60c6ae8ced..60d85496e22 100644 --- a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod +++ b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod @@ -123,9 +123,10 @@ </entityActionField> <entityActionField> <name>startMarketingWorkflows</name> - <title>Start marketing workflow</title> + <title>Start marketing mailing</title> <onActionProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> + <iconId>VAADIN:ENVELOPES</iconId> </entityActionField> </children> </entityActionGroup> diff --git a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod index 2ecc8752c73..4d3b86ba02c 100644 --- a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod +++ b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod @@ -179,9 +179,10 @@ </entityActionField> <entityActionField> <name>startMarketingWorkflows</name> - <title>Start marketing workflow</title> + <title>Start marketing mailing</title> <onActionProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> + <iconId>VAADIN:ENVELOPES</iconId> </entityActionField> </children> </entityActionGroup> diff --git a/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod index f387fc2eca7..791b08d72b2 100644 --- a/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod +++ b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod @@ -14,7 +14,7 @@ </entityProvider> <entityField> <name>DOCUMENTTEMPLATE_ID</name> - <title>Document template</title> + <title>Document Template</title> <consumer>EmailTemplates</consumer> <mandatory v="true" /> <state>EDITABLE</state> diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index d428c6f4de9..50afcd2e322 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -71,6 +71,11 @@ </entityField> <entityConsumer> <name>Activities</name> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -81,26 +86,21 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Contact</name> <selectionMode>MULTI</selectionMode> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>OrganisationRelated</fieldName> + </dependency> <children> <entityParameter> <name>OrgId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/contact/children/orgid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>OrganisationRelated</fieldName> - </dependency> </entityConsumer> <entityFieldGroup> <name>CUSTOMERCODE_DISPLAY_fieldGroup</name> @@ -114,36 +114,6 @@ <name>Organisations</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/organisations/documentation.adoc</documentation> <recordContainer>db</recordContainer> - <children> - <entityParameter> - <name>WithPrivate_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ExcludeOrganisationsByPersonId</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ExcludedContactIds_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>AttributeKeyId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>AttributeId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>DuplicateActionsControl_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>DuplicateCurrentContactId_param</name> - <expose v="false" /> - </entityParameter> - </children> <dependencies> <entityDependency> <name>85aa363e-d8ba-4df5-8422-bf7aff86a4f8</name> @@ -182,9 +152,44 @@ <isConsumer v="false" /> </entityDependency> </dependencies> + <children> + <entityParameter> + <name>WithPrivate_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ExcludeOrganisationsByPersonId</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ExcludedContactIds_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>AttributeKeyId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>AttributeId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>DuplicateActionsControl_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>DuplicateCurrentContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> </entityProvider> <entityConsumer> <name>Addresses</name> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAddresses</fieldName> + </dependency> <children> <entityParameter> <name>DefaultAddressId_param</name> @@ -196,11 +201,6 @@ <expose v="false" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAddresses</fieldName> - </dependency> </entityConsumer> <entityField> <name>ADDRESS_ID</name> @@ -211,6 +211,11 @@ </entityField> <entityConsumer> <name>Communications</name> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>AllCommunications</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -222,15 +227,15 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/communications/children/contactsmaincountry_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>AllCommunications</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Contracts</name> <selectionMode>MULTI</selectionMode> + <dependency> + <name>dependency</name> + <entityName>Contract_entity</entityName> + <fieldName>Contracts</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -239,14 +244,14 @@ <mandatory v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Contract_entity</entityName> - <fieldName>Contracts</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Productprices</name> + <dependency> + <name>dependency</name> + <entityName>Productprice_entity</entityName> + <fieldName>Productprices</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -255,11 +260,6 @@ <mandatory v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Productprice_entity</entityName> - <fieldName>Productprices</fieldName> - </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER</name> @@ -300,6 +300,11 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -310,11 +315,6 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> </entityConsumer> <entityField> <name>STANDARD_EMAIL_COMMUNICATION</name> @@ -330,6 +330,11 @@ </entityField> <entityConsumer> <name>PhoneCommunications</name> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>PhoneCommunications</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -337,14 +342,14 @@ <expose v="false" /> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>EmailCommunications</name> <dependency> <name>dependency</name> <entityName>Communication_entity</entityName> - <fieldName>PhoneCommunications</fieldName> + <fieldName>EmailCommunications</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>EmailCommunications</name> <children> <entityParameter> <name>ContactId_param</name> @@ -352,11 +357,6 @@ <expose v="false" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>EmailCommunications</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Countries</name> @@ -369,6 +369,11 @@ <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Organisation_entity/entityfields/attributes/onValidation.js</onValidation> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -380,14 +385,14 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>KeywordContactStates</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -395,14 +400,14 @@ <expose v="false" /> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>KeywordOrganisationTypes</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>KeywordOrganisationTypes</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -410,11 +415,6 @@ <expose v="false" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -426,6 +426,11 @@ </entityConsumer> <entityConsumer> <name>KeywordPricePolitics</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -433,14 +438,14 @@ <expose v="false" /> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>KeywordWeaknesses</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>KeywordWeaknesses</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -448,14 +453,14 @@ <expose v="false" /> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>KeywordStrenghts</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>KeywordStrenghts</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -463,14 +468,14 @@ <expose v="false" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Salesprojects</name> + <dependency> + <name>dependency</name> + <entityName>Salesproject_entity</entityName> + <fieldName>Salesprojects</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -479,14 +484,14 @@ <mandatory v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Salesprojects</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Offers</name> + <dependency> + <name>dependency</name> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -495,14 +500,14 @@ <mandatory v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Tasks</name> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -513,11 +518,6 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> </entityConsumer> <entityParameter> <name>WithPrivate_param</name> @@ -528,6 +528,11 @@ </entityParameter> <entityConsumer> <name>ObjectTrees</name> + <dependency> + <name>dependency</name> + <entityName>ObjectTree_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> <children> <entityParameter> <name>ObjectIds_param</name> @@ -538,14 +543,14 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/objecttrees/children/objecttypes_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>ObjectTree_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>LogHistories</name> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> <children> <entityParameter> <name>tablenames_param</name> @@ -554,14 +559,14 @@ <mandatory v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>360DegreeObjects</name> + <dependency> + <name>dependency</name> + <entityName>360Degree_entity</entityName> + <fieldName>OrganisationObjects</fieldName> + </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -572,11 +577,6 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/360degreeobjects/children/objectstatus_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>360Degree_entity</entityName> - <fieldName>OrganisationObjects</fieldName> - </dependency> </entityConsumer> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> @@ -587,6 +587,26 @@ <entityProvider> <name>WithPersonIdFilter</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/withpersonidfilter/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>5a456b04-f0ca-4a45-9c1f-bdfdf074434a</name> + <entityName>Contact_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>a80c3db0-29db-433c-8f7c-4ebf6639ad6d</name> + <entityName>Person_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>748a3083-89c2-41b4-a233-3fd5364396e9</name> + <entityName>Competition_entity</entityName> + <fieldName>Organisation</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> @@ -619,26 +639,6 @@ <expose v="false" /> </entityParameter> </children> - <dependencies> - <entityDependency> - <name>5a456b04-f0ca-4a45-9c1f-bdfdf074434a</name> - <entityName>Contact_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>a80c3db0-29db-433c-8f7c-4ebf6639ad6d</name> - <entityName>Person_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>748a3083-89c2-41b4-a233-3fd5364396e9</name> - <entityName>Competition_entity</entityName> - <fieldName>Organisation</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityParameter> <name>AttributeId_param</name> @@ -653,6 +653,20 @@ <entityProvider> <name>WithAttribute</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/withattribute/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>10480df2-f0b6-4cb6-8bfb-4a468b994996</name> + <entityName>Competition_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>f368be61-1a15-449f-b37c-b1343069412c</name> + <entityName>Product_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> <children> <entityParameter> <name>AttributeId_param</name> @@ -684,20 +698,6 @@ <expose v="false" /> </entityParameter> </children> - <dependencies> - <entityDependency> - <name>10480df2-f0b6-4cb6-8bfb-4a468b994996</name> - <entityName>Competition_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>f368be61-1a15-449f-b37c-b1343069412c</name> - <entityName>Product_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityParameter> <name>ExcludedContactIds_param</name> @@ -706,6 +706,11 @@ </entityParameter> <entityConsumer> <name>AttributeTree</name> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -716,11 +721,6 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> </entityConsumer> <entityField> <name>DATE_NEW</name> @@ -772,6 +772,11 @@ <entityConsumer> <name>AttributeConditions</name> <onValidation>%aditoprj%/entity/Organisation_entity/entityfields/attributeconditions/onValidation.js</onValidation> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -794,14 +799,14 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributeconditions/children/showempty_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>LinkedAppointments</name> + <dependency> + <name>dependency</name> + <entityName>Appointment_entity</entityName> + <fieldName>LinkedAppointments</fieldName> + </dependency> <children> <entityParameter> <name>LinkedObjectId_param</name> @@ -812,11 +817,6 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Appointment_entity</entityName> - <fieldName>LinkedAppointments</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Products</name> @@ -961,9 +961,10 @@ </entityActionField> <entityActionField> <name>startMarketingWorkflows</name> - <title>Start marketing workflow</title> + <title>Start marketing mailing</title> <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> + <iconId>VAADIN:ENVELOPES</iconId> </entityActionField> </children> </entityActionGroup> @@ -1093,6 +1094,11 @@ </entityParameter> <entityConsumer> <name>SelfDuplicatesUncached</name> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>SelfDuplicates</fieldName> + </dependency> <children> <entityParameter> <name>DuplicateActionsControl_param</name> @@ -1112,25 +1118,20 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/excludedcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>SelfDuplicates</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>CommRestrictions</name> + <dependency> + <name>dependency</name> + <entityName>CommRestriction_Entity</entityName> + <fieldName>CommRestrictions</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/commrestrictions/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>CommRestriction_Entity</entityName> - <fieldName>CommRestrictions</fieldName> - </dependency> </entityConsumer> <entityField> <name>COMMRESTRICTIONS_ACTIVE</name> @@ -1185,6 +1186,11 @@ <entityConsumer> <name>Classifications</name> <refreshParent v="true" /> + <dependency> + <name>dependency</name> + <entityName>Classification_entity</entityName> + <fieldName>Classifications</fieldName> + </dependency> <children> <entityParameter> <name>ClassificationType_param</name> @@ -1202,11 +1208,6 @@ <expose v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Classification_entity</entityName> - <fieldName>Classifications</fieldName> - </dependency> </entityConsumer> <entityField> <name>COUNT</name> @@ -1227,6 +1228,14 @@ <name>OrganisationsViaIndex</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/organisationsviaindex/documentation.adoc</documentation> <recordContainer>index</recordContainer> + <dependencies> + <entityDependency> + <name>e60b8983-166d-4280-a1a5-f990ad77eeb9</name> + <entityName>AroundLocation_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> @@ -1269,14 +1278,6 @@ <expose v="true" /> </entityParameter> </children> - <dependencies> - <entityDependency> - <name>e60b8983-166d-4280-a1a5-f990ad77eeb9</name> - <entityName>AroundLocation_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityActionField> <name>openAroundLocation</name> @@ -1347,17 +1348,17 @@ </entityProvider> <entityConsumer> <name>DistrictResponsibles</name> + <dependency> + <name>dependency</name> + <entityName>DistrictResponsible_entity</entityName> + <fieldName>OrganisationResponsibles</fieldName> + </dependency> <children> <entityParameter> <name>OrgUid_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/districtresponsibles/children/orguid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>DistrictResponsible_entity</entityName> - <fieldName>OrganisationResponsibles</fieldName> - </dependency> </entityConsumer> <entityParameter> <name>FilterPreSet_param</name> @@ -1366,6 +1367,14 @@ <entityProvider> <name>NonselfDuplicates</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/nonselfduplicates/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>2e410b9e-5ebc-48ea-9562-da386202d7e8</name> + <entityName>Duplicates_entity</entityName> + <fieldName>DuplicateOrganisationsConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> <children> <entityParameter> <name>AttributeKeyId_param</name> @@ -1388,14 +1397,6 @@ <expose v="false" /> </entityParameter> </children> - <dependencies> - <entityDependency> - <name>2e410b9e-5ebc-48ea-9562-da386202d7e8</name> - <entityName>Duplicates_entity</entityName> - <fieldName>DuplicateOrganisationsConsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityActionGroup> <name>orgReportDispatch</name> @@ -1412,6 +1413,11 @@ </entityActionGroup> <entityConsumer> <name>AttributesFilter</name> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>FilterProvider</fieldName> + </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -1422,11 +1428,6 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributesfilter/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>FilterProvider</fieldName> - </dependency> </entityConsumer> </entityFields> <recordContainers> diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index 24d78e6da4f..42f436e7093 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -89,6 +89,11 @@ </entityFieldGroup> <entityConsumer> <name>Activities</name> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -103,11 +108,6 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> </entityConsumer> <entityField> <name>CONTACTID</name> @@ -118,6 +118,14 @@ <name>OrganisationRelated</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/organisationrelated/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <dependencies> + <entityDependency> + <name>41952879-c2f0-411f-8ca1-36c38914a629</name> + <entityName>Organisation_entity</entityName> + <fieldName>Contact</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -136,14 +144,6 @@ <expose v="false" /> </entityParameter> </children> - <dependencies> - <entityDependency> - <name>41952879-c2f0-411f-8ca1-36c38914a629</name> - <entityName>Organisation_entity</entityName> - <fieldName>Contact</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityField> <name>PERSON_ID</name> @@ -161,6 +161,11 @@ </entityField> <entityConsumer> <name>PersAddresses</name> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>ContactAddresses</fieldName> + </dependency> <children> <entityParameter> <name>DefaultAddressId_param</name> @@ -180,14 +185,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/persaddresses/children/replacestandardaddress_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>ContactAddresses</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Communications</name> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>AllCommunications</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -205,29 +210,29 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/communications/children/contactsmaincountry_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>AllCommunications</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Organisations</name> <selectionMode>SINGLE</selectionMode> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>WithPersonIdFilter</fieldName> + </dependency> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>WithPersonIdFilter</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Contracts</name> + <dependency> + <name>dependency</name> + <entityName>Contract_entity</entityName> + <fieldName>Contracts</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -236,16 +241,16 @@ <mandatory v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Contract_entity</entityName> - <fieldName>Contracts</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Pricelists</name> <state>AUTO</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/pricelists/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>Productprice_entity</entityName> + <fieldName>Productprices</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -254,11 +259,6 @@ <mandatory v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Productprice_entity</entityName> - <fieldName>Productprices</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Genders</name> @@ -313,6 +313,11 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -327,11 +332,6 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/documents/children/disallowcreate_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> @@ -356,6 +356,14 @@ <name>Contact</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/contact/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <dependencies> + <entityDependency> + <name>f925c8e6-b096-4093-bd39-c9cd30a6a71a</name> + <entityName>Lead_entity</entityName> + <fieldName>ContactId</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> <children> <entityParameter> <name>OrgId_param</name> @@ -383,19 +391,16 @@ <expose v="false" /> </entityParameter> </children> - <dependencies> - <entityDependency> - <name>f925c8e6-b096-4093-bd39-c9cd30a6a71a</name> - <entityName>Lead_entity</entityName> - <fieldName>ContactId</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityConsumer> <name>OrgAddresses</name> <state>READONLY</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/orgaddresses/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAddressesByContact</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -407,11 +412,6 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/orgaddresses/children/defaultaddressid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAddressesByContact</fieldName> - </dependency> </entityConsumer> <entityField> <name>STANDARD_EMAIL_COMMUNICATION</name> @@ -428,6 +428,11 @@ <entityConsumer> <name>PhoneCommunications</name> <description>Used for standard communication</description> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>PhoneCommunications</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -437,15 +442,15 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>PhoneCommunications</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>EmailCommunications</name> <description>Used for standard communication</description> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>EmailCommunications</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -455,11 +460,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>EmailCommunications</fieldName> - </dependency> </entityConsumer> <entityField> <name>ADDRESS_ID</name> @@ -471,6 +471,11 @@ </entityField> <entityConsumer> <name>KeywordGenders</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -478,11 +483,6 @@ <expose v="false" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -494,35 +494,40 @@ </entityConsumer> <entityConsumer> <name>Offers</name> + <dependency> + <name>dependency</name> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Salutations</name> + <dependency> + <name>dependency</name> + <entityName>SalutationDistinct_entity</entityName> + <fieldName>Salutations</fieldName> + </dependency> <children> <entityParameter> <name>Language_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/salutations/children/language_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>SalutationDistinct_entity</entityName> - <fieldName>Salutations</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Person_entity/entityfields/attributes/onValidation.js</onValidation> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -537,14 +542,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributes/children/showdsgvomessage_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>SalutationTitles</name> + <dependency> + <name>dependency</name> + <entityName>SalutationTitleDistinct_entity</entityName> + <fieldName>SalutationTitles</fieldName> + </dependency> <children> <entityParameter> <name>Salutation_param</name> @@ -555,15 +560,15 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/salutationtitles/children/language_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>SalutationTitleDistinct_entity</entityName> - <fieldName>SalutationTitles</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Tasks</name> <state>EDITABLE</state> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -578,14 +583,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>ObjectTrees</name> + <dependency> + <name>dependency</name> + <entityName>ObjectTree_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> <children> <entityParameter> <name>ObjectIds_param</name> @@ -596,11 +601,6 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/objecttrees/children/objecttypes_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>ObjectTree_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> </entityConsumer> <entityField> <name>STATUS</name> @@ -612,20 +612,25 @@ </entityField> <entityConsumer> <name>KeywordContactStates</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>ContactAndOrganisationAddresses</name> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAndContactAddresses</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -636,11 +641,6 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/contactandorganisationaddresses/children/organisationid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAndContactAddresses</fieldName> - </dependency> </entityConsumer> <entityField> <name>DEPARTMENT</name> @@ -663,6 +663,11 @@ </entityField> <entityConsumer> <name>LogHistories</name> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> <children> <entityParameter> <name>tablenames_param</name> @@ -671,14 +676,14 @@ <mandatory v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>OtherContacts</name> + <dependency> + <name>dependency</name> + <entityName>Contact_entity</entityName> + <fieldName>PersonsContactsExceptOwn</fieldName> + </dependency> <children> <entityParameter> <name>OwnContactId_param</name> @@ -689,11 +694,6 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/othercontacts/children/languagekey_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Contact_entity</entityName> - <fieldName>PersonsContactsExceptOwn</fieldName> - </dependency> </entityConsumer> <entityField> <name>ORGANISATION_NAME</name> @@ -706,6 +706,20 @@ <entityProvider> <name>Contacts</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/contacts/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>c98da62f-d6b2-4ddb-9101-92e9a60abdfb</name> + <entityName>VisitPlanEmployeeWeek_entity</entityName> + <fieldName>Persons</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>f56b1378-138d-4f88-b9df-274adce9f90c</name> + <entityName>VisitPlanEntry_entity</entityName> + <fieldName>Persons</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -732,23 +746,14 @@ <expose v="false" /> </entityParameter> </children> - <dependencies> - <entityDependency> - <name>c98da62f-d6b2-4ddb-9101-92e9a60abdfb</name> - <entityName>VisitPlanEmployeeWeek_entity</entityName> - <fieldName>Persons</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>f56b1378-138d-4f88-b9df-274adce9f90c</name> - <entityName>VisitPlanEntry_entity</entityName> - <fieldName>Persons</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityConsumer> <name>360DegreeObjects</name> + <dependency> + <name>dependency</name> + <entityName>360Degree_entity</entityName> + <fieldName>PersonObjects</fieldName> + </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -759,14 +764,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/360degreeobjects/children/objectstatus_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>360Degree_entity</entityName> - <fieldName>PersonObjects</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>AttributeTree</name> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -781,11 +786,6 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributetree/children/showdsgvomessage_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> </entityConsumer> <entityField> <name>DATE_NEW</name> @@ -845,35 +845,40 @@ </entityParameter> <entityConsumer> <name>CommRestrictions</name> + <dependency> + <name>dependency</name> + <entityName>CommRestriction_Entity</entityName> + <fieldName>CommRestrictions</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/commrestrictions/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>CommRestriction_Entity</entityName> - <fieldName>CommRestrictions</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>DSGVOEntries</name> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/dsgvoentries/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>DSGVO_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/dsgvoentries/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>DSGVO_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Appointments</name> + <dependency> + <name>dependency</name> + <entityName>Appointment_entity</entityName> + <fieldName>LinkedAppointments</fieldName> + </dependency> <children> <entityParameter> <name>LinkedObjectId_param</name> @@ -884,11 +889,6 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Appointment_entity</entityName> - <fieldName>LinkedAppointments</fieldName> - </dependency> </entityConsumer> <entityField> <name>OpenTasks</name> @@ -925,6 +925,11 @@ </entityField> <entityConsumer> <name>SelfDuplicatesUncached</name> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>SelfDuplicates</fieldName> + </dependency> <children> <entityParameter> <name>DuplicateActionsControl_param</name> @@ -943,11 +948,6 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/selfduplicatesuncached/children/excludedcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>SelfDuplicates</fieldName> - </dependency> </entityConsumer> <entityField> <name>LEAD_LEADID</name> @@ -978,6 +978,14 @@ <name>QuickEntryContacts</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/quickentrycontacts/documentation.adoc</documentation> <titlePlural>Additional Contacts</titlePlural> + <dependencies> + <entityDependency> + <name>6d137850-63ba-4be0-9ca5-1464e71d4f77</name> + <entityName>QuickEntry_entity</entityName> + <fieldName>Contacts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -1000,14 +1008,6 @@ <expose v="false" /> </entityParameter> </children> - <dependencies> - <entityDependency> - <name>6d137850-63ba-4be0-9ca5-1464e71d4f77</name> - <entityName>QuickEntry_entity</entityName> - <fieldName>Contacts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityActionField> <name>openEditDefaultsView</name> @@ -1103,9 +1103,10 @@ </entityActionField> <entityActionField> <name>startMarketingWorkflows</name> - <title>Start marketing workflow</title> + <title>Start marketing mailing</title> <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> + <iconId>VAADIN:ENVELOPES</iconId> </entityActionField> </children> </entityActionGroup> @@ -1253,6 +1254,14 @@ <entityProvider> <name>IdFilteredActiveContacts</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/idfilteredactivecontacts/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>511f3e4c-7493-4a31-a136-0ba80ba2ec85</name> + <entityName>Member_entity</entityName> + <fieldName>Contacts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> <children> <entityParameter> <name>ExcludedContactIds_param</name> @@ -1287,14 +1296,6 @@ <expose v="false" /> </entityParameter> </children> - <dependencies> - <entityDependency> - <name>511f3e4c-7493-4a31-a136-0ba80ba2ec85</name> - <entityName>Member_entity</entityName> - <fieldName>Contacts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityField> <name>COUNT</name> @@ -1329,21 +1330,29 @@ <name>Districts</name> <state>INVISIBLE</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/districts/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>District_entity</entityName> + <fieldName>ResponsibleDistricts</fieldName> + </dependency> <children> <entityParameter> <name>DistrictsByContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districts/children/districtsbycontactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>District_entity</entityName> - <fieldName>ResponsibleDistricts</fieldName> - </dependency> </entityConsumer> <entityProvider> <name>NonselfDuplicates</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/nonselfduplicates/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>3a4352e2-9686-4c52-9d01-dbfad8c68ea7</name> + <entityName>Duplicates_entity</entityName> + <fieldName>DuplicatePersonsConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -1366,30 +1375,22 @@ <expose v="false" /> </entityParameter> </children> - <dependencies> - <entityDependency> - <name>3a4352e2-9686-4c52-9d01-dbfad8c68ea7</name> - <entityName>Duplicates_entity</entityName> - <fieldName>DuplicatePersonsConsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityConsumer> <name>DistrictResponsibles</name> <state>INVISIBLE</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>DistrictResponsible_entity</entityName> + <fieldName>OrganisationResponsibles</fieldName> + </dependency> <children> <entityParameter> <name>OrgUid_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/children/orguid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>DistrictResponsible_entity</entityName> - <fieldName>OrganisationResponsibles</fieldName> - </dependency> </entityConsumer> </entityFields> <recordContainers> diff --git a/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod index 4ac6aa0edf3..e5749fe5101 100644 --- a/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod +++ b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod @@ -31,7 +31,6 @@ <name>KEY</name> <title>Key</title> <consumer>WorkflowDefinitions</consumer> - <mandatory v="true" /> <state>EDITABLE</state> </entityField> <entityActionField> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index c75f227a0ed..d68c0ad4d76 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -2795,6 +2795,10 @@ <key>new</key> <value>neu</value> </entry> + <entry> + <key>Start marketing mailing</key> + <value>Marketing Mailing starten</value> + </entry> <entry> <key>Adviser</key> <value>Berater</value> diff --git a/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod b/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod index 8f7e944084f..8445a151ff6 100644 --- a/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod +++ b/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod @@ -23,10 +23,6 @@ <name>14de7f56-44cf-4c9e-89a7-59f84e482fd9</name> <entityField>NAME</entityField> </entityFieldLink> - <entityFieldLink> - <name>fd4252cf-e137-4068-a91b-732708f5ee1c</name> - <entityField>workflowTargets</entityField> - </entityFieldLink> </fields> </genericViewTemplate> <dynamicFormViewTemplate> -- GitLab From dea6ce655ddaa685e82176e201ef8751765598dd Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Mon, 9 Nov 2020 14:26:21 +0100 Subject: [PATCH 064/184] Copy Offer action refactor --- .../entityfields/copyoffer/onActionProcess.js | 24 ++++----- .../recordcontainers/db/onDBInsert.js | 17 ++++--- process/Neon_lib/process.js | 33 +++--------- process/Offer_lib/process.js | 51 +++++++++---------- 4 files changed, 55 insertions(+), 70 deletions(-) diff --git a/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js b/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js index 17cc41af886..d610943f340 100644 --- a/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js +++ b/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js @@ -1,19 +1,19 @@ import("system.vars"); -import("system.neon"); import("Offer_lib"); -var contactId = vars.getString("$field.CONTACT_ID"); -var currency = vars.getString("$field.CURRENCY"); -var language = vars.getString("$field.ISOLANGUAGE"); -var header = vars.getString("$field.HEADER"); -var footer = vars.getString("$field.FOOTER"); var offerId = vars.getString("$field.OFFERID"); -var deliveryTerm = vars.getString("$field.DELIVERYTERMS"); -var paymentTerm = vars.getString("$field.PAYMENTTERMS"); -var rowId = vars.getString("$field.OBJECT_ROWID"); -var objectType = vars.getString("$field.OBJECT_TYPE"); +var fieldValues = { + contactId: vars.getString("$field.CONTACT_ID"), + language: vars.getString("$field.ISOLANGUAGE"), + currency: vars.getString("$field.CURRENCY"), + header: vars.getString("$field.HEADER"), + footer: vars.getString("$field.FOOTER"), + deliveryTerm: vars.getString("$field.DELIVERYTERMS"), + paymentTerm: vars.getString("$field.PAYMENTTERMS"), + objectRowId: vars.getString("$field.OBJECT_ROWID"), + objectType: vars.getString("$field.OBJECT_TYPE") +}; - -OfferUtils.copyOffer(offerId, contactId, language, currency, header, footer, deliveryTerm, paymentTerm, objectType, rowId); +OfferUtils.copyOffer(offerId, fieldValues); \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/db/onDBInsert.js b/entity/Offer_entity/recordcontainers/db/onDBInsert.js index 086ca1c5598..da551808a8c 100644 --- a/entity/Offer_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Offer_entity/recordcontainers/db/onDBInsert.js @@ -1,23 +1,28 @@ +import("Context_lib"); import("system.workflow"); import("Workflow_lib"); -import("system.db"); import("system.datetime"); -import("system.util"); import("system.neon"); import("system.vars"); import("Offer_lib"); +import("Sql_lib"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) { + var offerId = vars.get("$local.uid"); if (vars.exists("$param.OfferOriginal_Id_param")) - OfferUtils.copyOfferItems(vars.getString("$param.OfferOriginal_Id_param"), vars.get("$local.uid")); + OfferUtils.copyOfferItems(vars.getString("$param.OfferOriginal_Id_param"), offerId); var activityId = vars.get("$param.ActivityId_param"); if (activityId) { - var activityLinkColumns = ["ACTIVITYLINKID", "ACTIVITY_ID", "DATE_NEW", "USER_NEW", "OBJECT_TYPE", "OBJECT_ROWID"]; - var activityLinkValues = [util.getNewUUID(), activityId, datetime.date(), vars.get("$sys.user"), "Offer", vars.get("$field.OFFERID")]; - db.insertData("ACTIVITYLINK", activityLinkColumns, null, activityLinkValues); + new SqlBuilder().insertFields({ + "ACTIVITY_ID": activityId, + "DATE_NEW": datetime.date(), + "USER_NEW": vars.get("$sys.user"), + "OBJECT_TYPE": ContextUtils.getCurrentContextId(), + "OBJECT_ROWID": offerId + }, "ACTIVITYLINK", "ACTIVITYLINKID"); } } diff --git a/process/Neon_lib/process.js b/process/Neon_lib/process.js index b758e7db586..4d7d910d5d9 100644 --- a/process/Neon_lib/process.js +++ b/process/Neon_lib/process.js @@ -177,12 +177,11 @@ CopyModuleUtils.copyModule = function(pInputMapping) var ModuleColumnsStructure = AliasDefinitionStructure.tables[pModule].columns; var cols = Object.keys(ModuleColumnsStructure); - - var condition = "1=1"; + var dataQuery = newSelect(cols).from(pModule); if(pCondition != undefined) - condition = pCondition; + dataQuery.where(pCondition) - var dbData = newSelect(cols).from(pModule).where(condition).table(); + var dbData = dataQuery.table(); //map 2d-Array to Object { $rowNumber$: { $columnName$: { value: "valueInDB" } } } var DataObj = {}; @@ -304,23 +303,15 @@ CopyModuleUtils.copyModule = function(pInputMapping) } break; case "OFFERLINK": - { - - } default: { - } - - + } } return ModuleRowMapping; } - - - function _columnMapping(pNewValue, pOldValue, pDestinationColumn) { return { @@ -329,7 +320,6 @@ CopyModuleUtils.copyModule = function(pInputMapping) destinationColumn: pDestinationColumn }; } - } /** @@ -356,33 +346,26 @@ CopyModuleUtils.copyModule = function(pInputMapping) for(var subModule in pMapping.SubModules) { - for(var row in pMapping.SubModules[subModule].DataRows) { statements.push(_statement(pMapping.SubModules[subModule].DataRows[row])); } - _subordinatedStatements(pMapping.SubModules[subModule]); } - } function _statement(pRowMapping) { - var cols = []; - var vals = []; + var fieldValues = new Map(); var destTable = pRowMapping.ModuleMapping.destinationModuleName; var colMapping = pRowMapping.ColumnMapping; - for(var col in colMapping) + for (let col in colMapping) { - cols.push(colMapping[col].destinationColumn); - vals.push(colMapping[col].newValue.toString()); + fieldValues.set(colMapping[col].destinationColumn, colMapping[col].newValue) } - var colTypes = db.getColumnTypes(destTable, cols)//load once for better performance - - return [destTable, cols, colTypes, vals]; + return new SqlBuilder().buildInsertStatement(fieldValues, destTable); } } } diff --git a/process/Offer_lib/process.js b/process/Offer_lib/process.js index f5a8cd0138d..78ea329bfc0 100644 --- a/process/Offer_lib/process.js +++ b/process/Offer_lib/process.js @@ -319,29 +319,24 @@ OfferUtils.openOfferReport = function (pOfferID) * opens an offer in NEW mode with values from an offer * * @param {String} pOfferId of the offer - * @param {String} pContactId - * @param {String} pLanguage - * @param {String} [pCurrency=""] - * @param {String} [pHeader=""] - * @param {String} [pFooter=""] - * @param {String} [pDeliveryTerm=""] - * @param {String} [pPaymentTerm=""] - * @param {String} [pObjectType=""] - * @param {String} [pRowId=""] + * @param {Object} [pOfferData={}] additional offer properties: + * contactId, language, currency, header, footer, deliveryTerm, paymentTerm, objectType, objectRowId */ -OfferUtils.copyOffer = function (pOfferId, pContactId, pLanguage, pCurrency, pHeader, pFooter, pDeliveryTerm, pPaymentTerm, pObjectType, pRowId) +OfferUtils.copyOffer = function (pOfferId, pOfferData) { + if (!pOfferData) + pOfferData = {}; var params = { - "ContactId_param" : pContactId, - "OfferLanguage_param" : pLanguage, - "OfferOriginal_Id_param" : pOfferId, - "OfferCurrency_param" : pCurrency || "", - "OfferHeader_param" : pHeader || "", - "OfferFooter_param" : pFooter || "", - "OfferDeliveryTerm_param" : pDeliveryTerm || "", - "OfferPaymentTerm_param" : pPaymentTerm || "", - "ObjectType_param" : pObjectType || "", - "ObjectRowId_param" : pRowId || "" + "OfferOriginal_Id_param": pOfferId, + "ContactId_param": pOfferData.contactId, + "OfferLanguage_param": pOfferData.language, + "OfferCurrency_param": pOfferData.currency || "", + "OfferHeader_param": pOfferData.header || "", + "OfferFooter_param": pOfferData.footer || "", + "OfferDeliveryTerm_param": pOfferData.deliveryTerm || "", + "OfferPaymentTerm_param": pOfferData.paymentTerm || "", + "ObjectType_param": pOfferData.objectType || "", + "ObjectRowId_param": pOfferData.objectRowId || "" }; neon.openContext("Offer", null, null, neon.OPERATINGSTATE_NEW, params); } @@ -354,24 +349,26 @@ OfferUtils.copyOffer = function (pOfferId, pContactId, pLanguage, pCurrency, pHe */ OfferUtils.copyOfferItems = function (pSourceOfferId, pTargetOfferId) { - var InputMapping = { + var inputMapping = { "OFFERITEM": { - condition: newWhereIfSet("OFFERITEM.OFFER_ID", pSourceOfferId).orderBy("ITEMSORT").toString(SqlBuilder.NORESULT_CONDITION(), true), + condition: newWhere("OFFERITEM.OFFER_ID", pSourceOfferId), ValueMapping: { - "OFFER_ID" : pTargetOfferId + "OFFER_ID": pTargetOfferId } } }; - CopyModuleUtils.copyModule(InputMapping); + CopyModuleUtils.copyModule(inputMapping); var oiUtils = new OfferItemUtils(pTargetOfferId); //update order price - cols = ["NET", "VAT"]; - var vals = oiUtils.getNetAndVat(); + var [netPrice, vat] = oiUtils.getNetAndVat(); newWhere("OFFER.OFFERID", pTargetOfferId) - .updateData(true, "OFFER", cols, null, vals); + .updateFields({ + "NET": netPrice, + "VAT": vat + }); } /** -- GitLab From b9ba11d3b1cdfe6442bb9489f60d338a978aa428 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Mon, 9 Nov 2020 16:05:54 +0100 Subject: [PATCH 065/184] #1062892 CampaignParticipant filter --- .../AnyContact_entity/AnyContact_entity.aod | 43 ++++++----- .../CampaignParticipant_entity.aod | 75 +++++++++++-------- .../advertisingban_icon/colorProcess.js | 15 +--- .../displayValueProcess.js | 11 +-- .../children/campaignid_param/valueProcess.js | 7 +- .../hasadvertisingban/dropDownProcess.js | 7 ++ .../advertisingban_icon.value/expression.js | 11 --- .../anycontacts/filterConditionProcess.js | 10 +++ .../hasadvertisingban.value/expression.js | 11 +++ .../expression.js | 0 .../expression.js | 0 process/Contact_lib/process.js | 20 +++++ 12 files changed, 129 insertions(+), 81 deletions(-) create mode 100644 entity/CampaignParticipant_entity/entityfields/hasadvertisingban/dropDownProcess.js delete mode 100644 entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/advertisingban_icon.value/expression.js create mode 100644 entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js create mode 100644 entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js rename entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/{standard_email_communication.displayvalue => standard_email_communication.value}/expression.js (100%) rename entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/{standard_phone_communication.displayvalue => standard_phone_communication.value}/expression.js (100%) diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod index 0d0c5d1d960..3b3b3c3e989 100644 --- a/entity/AnyContact_entity/AnyContact_entity.aod +++ b/entity/AnyContact_entity/AnyContact_entity.aod @@ -3,6 +3,7 @@ <name>AnyContact_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/AnyContact_entity/documentation.adoc</documentation> + <title>Contact</title> <contentTitleProcess>%aditoprj%/entity/AnyContact_entity/contentTitleProcess.js</contentTitleProcess> <initFilterProcess>%aditoprj%/entity/AnyContact_entity/initFilterProcess.js</initFilterProcess> <imageProcess>%aditoprj%/entity/AnyContact_entity/imageProcess.js</imageProcess> @@ -29,12 +30,6 @@ <fieldName>AnyContacts</fieldName> <isConsumer v="false" /> </entityDependency> - <entityDependency> - <name>336fdc6b-05f8-40bc-89ba-d4ab98bd6948</name> - <entityName>CampaignParticipant_entity</entityName> - <fieldName>AnyContacts</fieldName> - <isConsumer v="false" /> - </entityDependency> <entityDependency> <name>b2895709-2ebf-46ec-a46d-6b2e9a4575a3</name> <entityName>BulkMailRecipient_entity</entityName> @@ -77,11 +72,23 @@ <fieldName>Contacts</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>ea7c855e-dccd-4c05-9efb-a1303f37dab8</name> + <entityName>CampaignParticipant_entity</entityName> + <fieldName>AnyContacts</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityProvider> <name>ContactsByIds</name> <documentation>%aditoprj%/entity/AnyContact_entity/entityfields/contactsbyids/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>0206f7a8-fd58-47e8-8b7a-5ff4531e56fb</name> @@ -90,12 +97,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ContactIds_param</name> @@ -108,6 +109,7 @@ </entityField> <entityField> <name>LANGUAGE</name> + <title>Language</title> </entityField> <entityField> <name>ORGANISATION_ID</name> @@ -157,9 +159,11 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description> </entityField> <entityField> <name>PERSON_TITLE</name> + <title>Title</title> </entityField> <entityField> <name>PERSON_SALUTATION</name> + <title>Salutation</title> </entityField> <entityField> <name>PERSON_FULL_NAME</name> @@ -173,6 +177,13 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description> <entityProvider> <name>OnlySameCompany</name> <documentation>%aditoprj%/entity/AnyContact_entity/entityfields/onlysamecompany/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>28b19d6b-237c-4268-b6c6-323df408c94a</name> @@ -181,13 +192,6 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description> <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>WithPrivatePersons_param</name> @@ -248,6 +252,7 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description> <dbRecordFieldMapping> <name>LANGUAGE.value</name> <recordfield>CONTACT.ISOLANGUAGE</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>ORGANISATION_ID.value</name> diff --git a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod index 4d3b86ba02c..42f0af8d639 100644 --- a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod +++ b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod @@ -21,20 +21,6 @@ <targetContextField>CONTACTCONTEXT</targetContextField> <targetIdField>CONTACT_ID</targetIdField> <documentation>%aditoprj%/entity/CampaignParticipant_entity/entityfields/campaignparticipantsprovider/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>f28945cd-4613-4dfa-91f7-a7d9d64cef58</name> - <entityName>Campaign_entity</entityName> - <fieldName>CampaignParticipants</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>7ad08378-b36f-4512-8891-db727c6ddcd7</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignParticipantsConsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -49,6 +35,20 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>f28945cd-4613-4dfa-91f7-a7d9d64cef58</name> + <entityName>Campaign_entity</entityName> + <fieldName>CampaignParticipants</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>7ad08378-b36f-4512-8891-db727c6ddcd7</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignParticipantsConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>CampaignStepId_param</name> @@ -145,11 +145,6 @@ <entityConsumer> <name>CampaignSteps</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> @@ -157,6 +152,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> </entityConsumer> <entityField> <name>CONTACTCONTEXT</name> @@ -212,17 +212,17 @@ </entityConsumer> <entityConsumer> <name>CommRestrictionIcon</name> - <dependency> - <name>dependency</name> - <entityName>KeywordAttribute_entity</entityName> - <fieldName>SpecificContainerKeyword</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/commrestrictionicon/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordAttribute_entity</entityName> + <fieldName>SpecificContainerKeyword</fieldName> + </dependency> </entityConsumer> <entityField> <name>STANDARD_EMAIL_COMMUNICATION</name> @@ -238,6 +238,12 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>HASADVERTISINGBAN</name> + <title>Advertising ban</title> + <contentType>BOOLEAN</contentType> + <dropDownProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/hasadvertisingban/dropDownProcess.js</dropDownProcess> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -267,6 +273,7 @@ <dbRecordFieldMapping> <name>CAMPAIGNSTEP_ID.value</name> <recordfield>CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>CONTACT_ID.value</name> @@ -293,16 +300,24 @@ <recordfield>CAMPAIGNPARTICIPANT.CAMPAIGNPARTICIPANTID</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> - <name>STANDARD_PHONE_COMMUNICATION.displayValue</name> - <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.displayvalue/expression.js</expression> + <name>STANDARD_EMAIL_COMMUNICATION.value</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.value/expression.js</expression> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> - <name>STANDARD_EMAIL_COMMUNICATION.displayValue</name> - <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.displayvalue/expression.js</expression> + <name>STANDARD_PHONE_COMMUNICATION.value</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.value/expression.js</expression> </dbRecordFieldMapping> + <consumerMapping> + <name>AnyContacts</name> + <filterConditionProcess>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js</filterConditionProcess> + <isFilterable v="true" /> + <filtertype>BASIC</filtertype> + </consumerMapping> <dbRecordFieldMapping> - <name>ADVERTISINGBAN_ICON.value</name> - <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/advertisingban_icon.value/expression.js</expression> + <name>HASADVERTISINGBAN.value</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js</expression> + <isFilterable v="true" /> </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> diff --git a/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/colorProcess.js b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/colorProcess.js index 1bcf3daac52..f322e15de7a 100644 --- a/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/colorProcess.js +++ b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/colorProcess.js @@ -1,16 +1,7 @@ +import("Util_lib"); import("system.result"); -import("Sql_lib"); -import("system.db"); import("system.vars"); import("system.neon"); -import("Campaign_lib"); -if(vars.get("$field.ADVERTISINGBAN_ICON") > 0) -{ - result.string(neon.PRIORITY_MEDIUM_COLOR); -} -else -{ - result.string(neon.PRIORITY_LOW_COLOR); -} - +var hasAdvertisingBan = Utils.toBoolean(vars.get("$field.HASADVERTISINGBAN")); +result.string(hasAdvertisingBan ? neon.PRIORITY_MEDIUM_COLOR : neon.PRIORITY_LOW_COLOR); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/displayValueProcess.js b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/displayValueProcess.js index 837878d3b76..7ff3faa94c8 100644 --- a/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/displayValueProcess.js +++ b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/displayValueProcess.js @@ -1,12 +1,7 @@ +import("Util_lib"); import("system.result"); import("system.vars"); // Now show warning always, if any commrestriction exists. No matter which medium the current step has. -if (vars.get("$field.ADVERTISINGBAN_ICON") == 0) -{ - result.string("VAADIN:CHECK"); -} -else -{ - result.string("VAADIN:WARNING"); -} \ No newline at end of file +var hasAdvertisingBan = Utils.toBoolean(vars.get("$field.HASADVERTISINGBAN")); +result.string(hasAdvertisingBan ? "VAADIN:WARNING" : "VAADIN:CHECK"); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js index 90d07eb4d8a..a22fac8bd53 100644 --- a/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js +++ b/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js @@ -1,3 +1,8 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.CAMPAIGN_ID")); \ No newline at end of file +import("system.neon"); + +if (vars.get("$sys.viewmode") == neon.FRAME_VIEWMODE_TABLE) + result.string(vars.get("$param.CampaignId_param")); +else + result.string(vars.get("$field.CAMPAIGN_ID")); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/hasadvertisingban/dropDownProcess.js b/entity/CampaignParticipant_entity/entityfields/hasadvertisingban/dropDownProcess.js new file mode 100644 index 00000000000..3373b8a886d --- /dev/null +++ b/entity/CampaignParticipant_entity/entityfields/hasadvertisingban/dropDownProcess.js @@ -0,0 +1,7 @@ +import("system.translate"); +import("system.result"); + +result.object([ + ["1", translate.text("Yes")], + ["0", translate.text("No")] +]); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/advertisingban_icon.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/advertisingban_icon.value/expression.js deleted file mode 100644 index 27052d9123b..00000000000 --- a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/advertisingban_icon.value/expression.js +++ /dev/null @@ -1,11 +0,0 @@ -import("system.vars"); -import("Contact_lib"); -import("Sql_lib"); -import("system.result"); - -// Now show warning always, if any commrestriction exists. No matter which medium the current step has. -result.string("(" + newSelect("count(*)") - .from("CONTACT") - .where("CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID") - .and(newWhere(ContactUtils.getCommRestrictionCondition(undefined, false, vars.get("$sys.date")))) // TODO: the newWhere can be removed when getCommRestrictionCondition returns a sqlBuilder instead of a SqlCondition - .toString() + ")"); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js new file mode 100644 index 00000000000..c37a5f4a9b9 --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js @@ -0,0 +1,10 @@ +import("system.result"); +import("system.vars"); +import("Contact_lib"); +import("Sql_lib"); + +var condition = newWhere(null, ContactUtils.getFullContactSqlBuilder("CONTACTID") + .where("CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID") + .and(vars.get("$local.condition")), SqlBuilder.EXISTS()); + +result.string(condition.toString()); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js new file mode 100644 index 00000000000..b1292f54399 --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js @@ -0,0 +1,11 @@ +import("system.vars"); +import("Contact_lib"); +import("Sql_lib"); +import("system.result"); + +var commRestrictionContactSubSql = newSelect("CONTACT.CONTACTID") + .from("CONTACT") + .where("CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID") + .and(ContactUtils.getCommRestrictionCondition()); + +result.string(SqlBuilder.caseWhen(null, commRestrictionContactSubSql, SqlBuilder.EXISTS()).thenString("1").elseString("0").toString()); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.value/expression.js similarity index 100% rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.displayvalue/expression.js rename to entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.value/expression.js diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.value/expression.js similarity index 100% rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.displayvalue/expression.js rename to entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.value/expression.js diff --git a/process/Contact_lib/process.js b/process/Contact_lib/process.js index 4d53dde63a7..05d3069f863 100644 --- a/process/Contact_lib/process.js +++ b/process/Contact_lib/process.js @@ -434,6 +434,26 @@ ContactUtils.getFullContactString = function() + " left join ADDRESS on ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID"; } +/** + * Returns a SqlBuilder for selecting a contact with organisation, person and address. + * + * @param {String|Array|SqlBuilder} [pSelectFields] The select-part to set for the query, if it is omitted, no select will be set. + * @return {SqlBuilder} + */ +ContactUtils.getFullContactSqlBuilder = function (pSelectFields) +{ + var sql = new SqlBuilder() + .from("CONTACT") + .join("ORGANISATION", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") + .leftJoin("PERSON", "PERSON.PERSONID = CONTACT.PERSON_ID") + .leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID"); + + if (pSelectFields) + sql.select(pSelectFields); + + return sql; +} + /** * get the addressid of the default address * -- GitLab From 35f4e271dbf9b9b5b43c06953c561b25ed76df81 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Mon, 9 Nov 2020 17:08:23 +0100 Subject: [PATCH 066/184] #1063444 Communication address placeholder --- .../Data_alias/basic/2020.2.2/changelog.xml | 5 ++ ...insert_commMediumTitleKeywordAttribute.xml | 55 ++++++++++++ .liquibase/Data_alias/changelog.xml | 1 + .../Communication_entity.aod | 87 ++++++++++--------- .../entityfields/addr/titleProcess.js | 10 +++ .../_____LANGUAGE_EXTRA.aod | 3 + .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 4 + .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 3 + 8 files changed, 125 insertions(+), 43 deletions(-) create mode 100644 .liquibase/Data_alias/basic/2020.2.2/changelog.xml create mode 100644 .liquibase/Data_alias/basic/2020.2.2/insert_commMediumTitleKeywordAttribute.xml create mode 100644 entity/Communication_entity/entityfields/addr/titleProcess.js diff --git a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml new file mode 100644 index 00000000000..c4de83cc615 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml @@ -0,0 +1,5 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <include relativeToChangelogFile="true" file="insert_commMediumTitleKeywordAttribute.xml"/> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/insert_commMediumTitleKeywordAttribute.xml b/.liquibase/Data_alias/basic/2020.2.2/insert_commMediumTitleKeywordAttribute.xml new file mode 100644 index 00000000000..e67d1cc992d --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/insert_commMediumTitleKeywordAttribute.xml @@ -0,0 +1,55 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="s.listl" id="deb46cd2-c2e7-424b-93a1-052cd0a5aef7"> + <insert tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_ATTRIBUTEID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="CONTAINER" value="CommunicationMedium"/> + <column name="KIND" value="CHAR_VALUE"/> + <column name="NAME" value="placeholderTitle"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="ebf5a52c-34db-4394-9fc1-21dfbdc3c6ea"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="cc16d938-b95f-4e07-a3b4-73f8524bb664"/> + <column name="CHAR_VALUE" value="Phone number"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="5a2bb861-31c8-471d-8fb9-a3c28d589b9f"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="66950de5-fa8b-465c-8db1-4eb7aac98bd3"/> + <column name="CHAR_VALUE" value="Email address"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="c860637f-4182-4cc4-9879-7ed3d009aee4"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="aa2b9cc9-3e87-4fe9-98a2-a4e417a3324f"/> + <column name="CHAR_VALUE" value="Phone number"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="def9c03f-4f8b-4158-9f9c-4f2c6f1f52be"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="cfebe176-0a64-428d-b0ec-bba454d2ca3e"/> + <column name="CHAR_VALUE" value="URL"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="bf7be765-ebcc-409f-9c81-66665b6b55f6"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="d80c3689-7e0a-45ac-801d-91d199c08bd5"/> + <column name="CHAR_VALUE" value="URL"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="9fc7f919-b04c-40f3-8124-9e1d4d8198f5"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="e6c36792-763d-44f8-8afe-157c8f158ef8"/> + <column name="CHAR_VALUE" value="URL"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="5d64759f-acd2-4dbc-9df3-c38bceaf8f6b"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="7abf7fc5-08a1-4bae-b0ca-ec5e406d154c"/> + <column name="CHAR_VALUE" value="URL"/> + </insert> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index 9d1ca6c5576..3f25ca1dbb1 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -17,6 +17,7 @@ <include relativeToChangelogFile="true" file="basic/2020.1.3/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.2.0/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.2.1/changelog.xml"/> + <include relativeToChangelogFile="true" file="basic/2020.2.2/changelog.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>--> diff --git a/entity/Communication_entity/Communication_entity.aod b/entity/Communication_entity/Communication_entity.aod index dbc7bf89b31..f931c15531a 100644 --- a/entity/Communication_entity/Communication_entity.aod +++ b/entity/Communication_entity/Communication_entity.aod @@ -13,6 +13,7 @@ <title>${COMM_ADDRESS}</title> <contentTypeProcess>%aditoprj%/entity/Communication_entity/entityfields/addr/contentTypeProcess.js</contentTypeProcess> <mandatory v="true" /> + <titleProcess>%aditoprj%/entity/Communication_entity/entityfields/addr/titleProcess.js</titleProcess> <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/addr/valueProcess.js</valueProcess> <onValidation>%aditoprj%/entity/Communication_entity/entityfields/addr/onValidation.js</onValidation> </entityField> @@ -62,6 +63,27 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <name>AllCommunications</name> <documentation>%aditoprj%/entity/Communication_entity/entityfields/allcommunications/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>CommCategory_param</name> + <expose v="true" /> + <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> + </entityParameter> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + <description>This parameter is used for specifing a related "CONTACTID" to a COMMUNICATION-entry. +Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> + </entityParameter> + <entityParameter> + <name>Address_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>AdditionalContactIds_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>070b2457-3766-4c8a-b43f-a2bf7c9ef638</name> @@ -88,10 +110,16 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <isConsumer v="false" /> </entityDependency> </dependencies> + </entityProvider> + <entityProvider> + <name>PhoneCommunications</name> + <documentation>%aditoprj%/entity/Communication_entity/entityfields/phonecommunications/documentation.adoc</documentation> + <recordContainer>db</recordContainer> <children> <entityParameter> <name>CommCategory_param</name> - <expose v="true" /> + <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/phonecommunications/children/commcategory_param/valueProcess.js</valueProcess> + <expose v="false" /> <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> </entityParameter> <entityParameter> @@ -102,18 +130,14 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact </entityParameter> <entityParameter> <name>Address_param</name> - <expose v="false" /> + <expose v="true" /> + <mandatory v="false" /> </entityParameter> <entityParameter> <name>AdditionalContactIds_param</name> <expose v="false" /> </entityParameter> </children> - </entityProvider> - <entityProvider> - <name>PhoneCommunications</name> - <documentation>%aditoprj%/entity/Communication_entity/entityfields/phonecommunications/documentation.adoc</documentation> - <recordContainer>db</recordContainer> <dependencies> <entityDependency> <name>7382242a-aa18-4a31-ab77-69a79f2b97b8</name> @@ -128,10 +152,16 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <isConsumer v="false" /> </entityDependency> </dependencies> + </entityProvider> + <entityProvider> + <name>EmailCommunications</name> + <documentation>%aditoprj%/entity/Communication_entity/entityfields/emailcommunications/documentation.adoc</documentation> + <recordContainer>db</recordContainer> <children> <entityParameter> <name>CommCategory_param</name> - <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/phonecommunications/children/commcategory_param/valueProcess.js</valueProcess> + <title></title> + <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/emailcommunications/children/commcategory_param/valueProcess.js</valueProcess> <expose v="false" /> <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> </entityParameter> @@ -143,19 +173,13 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact </entityParameter> <entityParameter> <name>Address_param</name> - <expose v="true" /> - <mandatory v="false" /> + <expose v="false" /> </entityParameter> <entityParameter> <name>AdditionalContactIds_param</name> <expose v="false" /> </entityParameter> </children> - </entityProvider> - <entityProvider> - <name>EmailCommunications</name> - <documentation>%aditoprj%/entity/Communication_entity/entityfields/emailcommunications/documentation.adoc</documentation> - <recordContainer>db</recordContainer> <dependencies> <entityDependency> <name>ecfbf518-fe92-4661-8ebe-e2d3c8d259e1</name> @@ -182,29 +206,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>CommCategory_param</name> - <title></title> - <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/emailcommunications/children/commcategory_param/valueProcess.js</valueProcess> - <expose v="false" /> - <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> - </entityParameter> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - <description>This parameter is used for specifing a related "CONTACTID" to a COMMUNICATION-entry. -Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> - </entityParameter> - <entityParameter> - <name>Address_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>AdditionalContactIds_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>CommCategory_param</name> @@ -218,11 +219,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact </entityParameter> <entityConsumer> <name>KeywordMediums</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -230,6 +226,11 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>USER_NEW</name> diff --git a/entity/Communication_entity/entityfields/addr/titleProcess.js b/entity/Communication_entity/entityfields/addr/titleProcess.js new file mode 100644 index 00000000000..8bacbaa9a70 --- /dev/null +++ b/entity/Communication_entity/entityfields/addr/titleProcess.js @@ -0,0 +1,10 @@ +import("system.translate"); +import("system.result"); +import("KeywordRegistry_basic"); +import("Keyword_lib"); +import("system.vars"); + +var commMedium = vars.get("$field.MEDIUM_ID"); +var keywordAttributes = KeywordUtils.getAttributeRelationsByKey(commMedium, $KeywordRegistry.communicationMedium()); +if (keywordAttributes && keywordAttributes.placeholderTitle) + result.string(translate.text(keywordAttributes.placeholderTitle)); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 3439544cfe8..7b27a5c7418 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -7296,6 +7296,9 @@ <entry> <key>Outstanding Amount</key> </entry> + <entry> + <key>Start marketing mailing</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index d68c0ad4d76..e1b810a066f 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -3071,6 +3071,10 @@ <key>Kgs</key> <value>Kg</value> </entry> + <entry> + <key>Email address</key> + <value>E-Mail Adresse</value> + </entry> <entry> <key>Australia</key> <value>Australien</value> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index cf8d0df31f4..221f4b4a721 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -7377,6 +7377,9 @@ <entry> <key>Outstanding Amount</key> </entry> + <entry> + <key>Start marketing mailing</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> -- GitLab From 37f1d76922b681d380d0229ebe00108e98e37c1d Mon Sep 17 00:00:00 2001 From: Erik Pollinger <e.pollinger@yahoo.de> Date: Tue, 10 Nov 2020 01:48:34 +0100 Subject: [PATCH 067/184] Implemented KnowledgeManagement --- .../changelog_knowledgeManagement.xml | 14 + .../Knowledgemanagement/data/blobs/git.css | 450 +++++++ .../data/blobs/standard.css | 138 ++ .../data/knowledgeKeywords.xml | 87 ++ .../Knowledgemanagement/data/knowledgeTag.xml | 10 + .../struct/create_KnowledgeRoles.xml | 13 + .../struct/knowledgeDiscussion_table.xml | 20 + .../struct/knowledgeGitInterface_table.xml | 17 + .../struct/knowledgeLink_table.xml | 18 + .../struct/knowledgeManagement_table.xml | 29 + .../struct/knowledgeTagLink_table.xml | 17 + .../struct/knowledgeTagModeration_table.xml | 13 + .../struct/knowledgeTag_table.xml | 17 + .liquibase/Data_alias/changelog.xml | 4 +- aliasDefinition/Data_alias/Data_alias.aod | 1028 +++++++++++++- .../_____SYSTEM_APPLICATION_NEON.aod | 22 + .../KnowledgeDiscussion_entity.aod | 219 +++ .../KnowledgeDiscussion_entity/afterUiInit.js | 7 + .../entityfields/author/valueProcess.js | 8 + .../entityfields/date_edit/valueProcess.js | 7 + .../entityfields/date_new/valueProcess.js | 7 + .../addanswer_action/onActionProcess.js | 9 + .../children/showall_action/iconIdProcess.js | 7 + .../showall_action/onActionProcess.js | 12 + .../onActionProcess.js | 12 + .../knowledgemanagement_id/valueProcess.js | 7 + .../parentid_param/valueProcess.js | 4 + .../entityfields/status/valueProcess.js | 7 + .../containername_param/valueProcess.js | 4 + .../onlyactives_param/valueProcess.js | 3 + .../withclosed_param/valueProcess.js | 5 + .../grantCreateProcess.js | 18 + .../grantDeleteProcess.js | 24 + .../grantUpdateProcess.js | 30 + .../iconIdProcess.js | 4 + .../contentProcess.js | 23 + .../onDelete.js | 6 + .../onInsert.js | 9 + .../onUpdate.js | 8 + .../rowCountProcess.js | 25 + .../KnowledgeLink_entity.aod | 177 +++ .../entityfields/date_edit/valueProcess.js | 6 + .../entityfields/date_new/valueProcess.js | 6 + .../knowledgemanagement_id/valueProcess.js | 13 + .../object_type/displayValueProcess.js | 7 + .../children/contactid_param/valueProcess.js | 7 + .../children/objecttype_param/valueProcess.js | 4 + .../row_id/displayValueProcess.js | 11 + .../row_id/linkedContextProcess.js | 5 + .../entityfields/user_edit/valueProcess.js | 6 + .../entityfields/user_new/valueProcess.js | 6 + entity/KnowledgeLink_entity/iconIdProcess.js | 5 + .../recordcontainers/db/conditionProcess.js | 16 + .../KnowledgeManagementTagList_entity.aod | 48 + .../contentTitleProcess.js | 4 + .../jdito_taglist/contentProcess.js | 8 + .../KnowledgeManagementTags_entity.aod | 93 ++ .../entityfields/listtitle/valueProcess.js | 3 + .../entityfields/tag/displayValueProcess.js | 5 + .../contentProcess.js | 12 + .../onDelete.js | 8 + .../onInsert.js | 17 + .../onUpdate.js | 13 + .../KnowledgeManagement_entity.aod | 499 +++++++ .../afterOperatingState.js | 52 + .../contentTitleProcess.js | 3 + .../author_contact_id/displayValueProcess.js | 10 + .../author_contact_id/valueProcess.js | 8 + .../contentdecoded/valueProcess.js | 5 + .../entityfields/date_edit/valueProcess.js | 12 + .../entityfields/date_new/valueProcess.js | 9 + .../knowledgeid_param/valueProcess.js | 4 + .../exporthtml_action/onActionProcess.js | 5 + .../entityfields/htmlview/valueProcess.js | 12 + .../entityfields/isnewsmark/valueProcess.js | 35 + .../containername_param/valueProcess.js | 4 + .../containername_param/valueProcess.js | 4 + .../valueProcess.js | 2 + .../knowledgemanagement_param/valueProcess.js | 4 + .../publishlevelroles_param/valueProcess.js | 28 + .../knowledgeroles/onValidation.js | 15 + .../knowledgeroles/stateProcess.js | 11 + .../assignmentrowid_param/valueProcess.js | 4 + .../assignmenttable_param/valueProcess.js | 3 + .../valueProcess.js | 4 + .../children/tablenames_param/valueProcess.js | 8 + .../notificationmark/stateProcess.js | 8 + .../openentryasmail/onActionProcess.js | 10 + .../publish/displayValueProcess.js | 7 + .../entityfields/publish/valueProcess.js | 8 + .../displayValueProcess.js | 12 + .../responsible_contact_id/valueProcess.js | 8 + .../valueProcess.js | 4 + .../children/objectid_param/valueProcess.js | 4 + .../presetlinks_param/valueProcess.js | 5 + .../children/rowid_param/valueProcess.js | 4 + .../entityfields/type/valueProcess.js | 8 + .../entityfields/user_edit/valueProcess.js | 8 + .../entityfields/user_new/valueProcess.js | 8 + .../grantDeleteProcess.js | 9 + .../grantUpdateProcess.js | 9 + .../iconIdProcess.js | 6 + .../recordcontainers/db/conditionProcess.js | 32 + .../tagfilter/filterConditionProcess.js | 44 + .../tagfilter/filterValuesProcess.js | 6 + .../recordcontainers/db/onDBInsert.js | 17 + .../recordcontainers/db/onDBUpdate.js | 17 + .../recordcontainers/db/orderClauseProcess.js | 6 + .../expression.js | 7 + .../knowledgeroles/filterConditionProcess.js | 4 + .../lastchange.value/expression.js | 6 + .../publish.displayvalue/expression.js | 4 + .../expression.js | 7 + .../type.displayvalue/expression.js | 4 + .../indexsearchknowledgebase/affectedIds.js | 25 + .../patternExtensionProcess.js | 11 + .../indexsearchknowledgebase/query.js | 42 + .../indexsearchknowledgebase/subProcess.js | 7 + .../KnowledgeNewsFeed_entity.aod | 33 + .../documentation.adoc | 3 + .../entityfields/htmlcontent/valueProcess.js | 34 + .../KnowledgeRole_entity.aod | 110 ++ .../knowledgemanagment_id/valueProcess.js | 5 + .../excluderoles_param/valueProcess.js | 12 + .../entityfields/roles/displayValueProcess.js | 13 + .../targetcontext/valueProcess.js | 3 + .../recordcontainers/db/conditionProcess.js | 6 + .../roles.displayvalue/expression.js | 7 + entity/Role_entity/Role_entity.aod | 4 + .../KnowledgeDiscussion.aod | 24 + neonContext/KnowledgeLink/KnowledgeLink.aod | 27 + .../KnowledgeManagement.aod | 48 + .../KnowledgeManagementTagList.aod | 6 + .../KnowledgeManagementTags.aod | 16 + .../KnowledgeNewsFeed/KnowledgeNewsFeed.aod | 14 + neonContext/KnowledgeRole/KnowledgeRole.aod | 13 + .../KnowledgeDiscussionEdit_view.aod | 27 + .../KnowledgeDiscussionPreview_view.aod | 37 + .../KnowledgeDiscussionTree_view.aod | 33 + .../KnowledgeLinkActionList_view.aod | 19 + .../KnowledgeLinkEdit_view.aod | 31 + .../KnowledgeLinkLookup_view.aod | 27 + .../KnowledgeLinkMultiEdit_view.aod | 29 + .../KnowledgeManagementDetails_view.aod | 58 + .../KnowledgeManagementEdit_view.aod | 86 ++ .../KnowledgeManagementFilter_view.aod | 50 + .../KnowledgeManagementLookup_view.aod | 34 + .../KnowledgeManagementMain_view.aod | 42 + .../KnowledgeManagementPreview_view.aod | 17 + .../KnowledgeManagementRole_view.aod | 33 + .../KnowledgeManagementTimeline_view.aod | 44 + .../KnowledgeNewsFeed_view.aod | 42 + .../KnowledgeRoleEdit_view.aod | 30 + .../KnowledgeTagList_GenMult_view.aod | 27 + .../KnowledgeTagList_view.aod | 25 + process/Html_lib/Html_lib.aod | 9 + process/Html_lib/process.js | 149 +++ process/KeywordRegistry_basic/process.js | 13 + .../KnowledgeManagement_lib.aod | 10 + process/KnowledgeManagement_lib/process.js | 1179 +++++++++++++++++ process/NewsSystem_lib/NewsSystem_lib.aod | 9 + process/NewsSystem_lib/process.js | 91 ++ process/Sql_lib/process.js | 27 + process/Util_lib/process.js | 7 + 164 files changed, 6495 insertions(+), 8 deletions(-) create mode 100644 .liquibase/Data_alias/basic/Knowledgemanagement/changelog_knowledgeManagement.xml create mode 100644 .liquibase/Data_alias/basic/Knowledgemanagement/data/blobs/git.css create mode 100644 .liquibase/Data_alias/basic/Knowledgemanagement/data/blobs/standard.css create mode 100644 .liquibase/Data_alias/basic/Knowledgemanagement/data/knowledgeKeywords.xml create mode 100644 .liquibase/Data_alias/basic/Knowledgemanagement/data/knowledgeTag.xml create mode 100644 .liquibase/Data_alias/basic/Knowledgemanagement/struct/create_KnowledgeRoles.xml create mode 100644 .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeDiscussion_table.xml create mode 100644 .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeGitInterface_table.xml create mode 100644 .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeLink_table.xml create mode 100644 .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeManagement_table.xml create mode 100644 .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTagLink_table.xml create mode 100644 .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTagModeration_table.xml create mode 100644 .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTag_table.xml create mode 100644 entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod create mode 100644 entity/KnowledgeDiscussion_entity/afterUiInit.js create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/author/valueProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/date_edit/valueProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/date_new/valueProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/addanswer_action/onActionProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/iconIdProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/onActionProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/knowledgemanagement_id/valueProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/parentid_param/valueProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/status/valueProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/onlyactives_param/valueProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/withclosed_param/valueProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/grantCreateProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/grantDeleteProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/grantUpdateProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/iconIdProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js create mode 100644 entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onDelete.js create mode 100644 entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onInsert.js create mode 100644 entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onUpdate.js create mode 100644 entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js create mode 100644 entity/KnowledgeLink_entity/KnowledgeLink_entity.aod create mode 100644 entity/KnowledgeLink_entity/entityfields/date_edit/valueProcess.js create mode 100644 entity/KnowledgeLink_entity/entityfields/date_new/valueProcess.js create mode 100644 entity/KnowledgeLink_entity/entityfields/knowledgemanagement_id/valueProcess.js create mode 100644 entity/KnowledgeLink_entity/entityfields/object_type/displayValueProcess.js create mode 100644 entity/KnowledgeLink_entity/entityfields/objects/children/contactid_param/valueProcess.js create mode 100644 entity/KnowledgeLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js create mode 100644 entity/KnowledgeLink_entity/entityfields/row_id/displayValueProcess.js create mode 100644 entity/KnowledgeLink_entity/entityfields/row_id/linkedContextProcess.js create mode 100644 entity/KnowledgeLink_entity/entityfields/user_edit/valueProcess.js create mode 100644 entity/KnowledgeLink_entity/entityfields/user_new/valueProcess.js create mode 100644 entity/KnowledgeLink_entity/iconIdProcess.js create mode 100644 entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js create mode 100644 entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod create mode 100644 entity/KnowledgeManagementTagList_entity/contentTitleProcess.js create mode 100644 entity/KnowledgeManagementTagList_entity/recordcontainers/jdito_taglist/contentProcess.js create mode 100644 entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod create mode 100644 entity/KnowledgeManagementTags_entity/entityfields/listtitle/valueProcess.js create mode 100644 entity/KnowledgeManagementTags_entity/entityfields/tag/displayValueProcess.js create mode 100644 entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/contentProcess.js create mode 100644 entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onDelete.js create mode 100644 entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onInsert.js create mode 100644 entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onUpdate.js create mode 100644 entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod create mode 100644 entity/KnowledgeManagement_entity/afterOperatingState.js create mode 100644 entity/KnowledgeManagement_entity/contentTitleProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/contentdecoded/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/date_edit/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/date_new/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/discussionsbyknowledgeid/children/knowledgeid_param/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/exporthtml_action/onActionProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/htmlview/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/isnewsmark/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/keywordknowledgetype/children/containername_param/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/keywordpublish/children/containername_param/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/knowledgemanagement_objecttype/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/knowledgemanagement_param/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/publishlevelroles_param/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/knowledgeroles/onValidation.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/knowledgeroles/stateProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmentrowid_param/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmenttable_param/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/linksbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/notificationmark/stateProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/openentryasmail/onActionProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/publish/displayValueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/publish/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/tasks/children/objectid_param/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/tasks/children/rowid_param/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/type/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/user_edit/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/entityfields/user_new/valueProcess.js create mode 100644 entity/KnowledgeManagement_entity/grantDeleteProcess.js create mode 100644 entity/KnowledgeManagement_entity/grantUpdateProcess.js create mode 100644 entity/KnowledgeManagement_entity/iconIdProcess.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterValuesProcess.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/db/onDBInsert.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/db/onDBUpdate.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/author_contact_id.displayvalue/expression.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgeroles/filterConditionProcess.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/lastchange.value/expression.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/publish.displayvalue/expression.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/affectedIds.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/patternExtensionProcess.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js create mode 100644 entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/subProcess.js create mode 100644 entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod create mode 100644 entity/KnowledgeNewsFeed_entity/documentation.adoc create mode 100644 entity/KnowledgeNewsFeed_entity/entityfields/htmlcontent/valueProcess.js create mode 100644 entity/KnowledgeRole_entity/KnowledgeRole_entity.aod create mode 100644 entity/KnowledgeRole_entity/entityfields/knowledgemanagment_id/valueProcess.js create mode 100644 entity/KnowledgeRole_entity/entityfields/newsrole/children/excluderoles_param/valueProcess.js create mode 100644 entity/KnowledgeRole_entity/entityfields/roles/displayValueProcess.js create mode 100644 entity/KnowledgeRole_entity/entityfields/targetcontext/valueProcess.js create mode 100644 entity/KnowledgeRole_entity/recordcontainers/db/conditionProcess.js create mode 100644 entity/KnowledgeRole_entity/recordcontainers/db/recordfieldmappings/roles.displayvalue/expression.js create mode 100644 neonContext/KnowledgeDiscussion/KnowledgeDiscussion.aod create mode 100644 neonContext/KnowledgeLink/KnowledgeLink.aod create mode 100644 neonContext/KnowledgeManagement/KnowledgeManagement.aod create mode 100644 neonContext/KnowledgeManagementTagList/KnowledgeManagementTagList.aod create mode 100644 neonContext/KnowledgeManagementTags/KnowledgeManagementTags.aod create mode 100644 neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod create mode 100644 neonContext/KnowledgeRole/KnowledgeRole.aod create mode 100644 neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod create mode 100644 neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod create mode 100644 neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod create mode 100644 neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod create mode 100644 neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod create mode 100644 neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod create mode 100644 neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod create mode 100644 neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod create mode 100644 neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod create mode 100644 neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod create mode 100644 neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod create mode 100644 neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod create mode 100644 neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod create mode 100644 neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod create mode 100644 neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod create mode 100644 neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod create mode 100644 neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod create mode 100644 neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod create mode 100644 neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod create mode 100644 process/Html_lib/Html_lib.aod create mode 100644 process/Html_lib/process.js create mode 100644 process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod create mode 100644 process/KnowledgeManagement_lib/process.js create mode 100644 process/NewsSystem_lib/NewsSystem_lib.aod create mode 100644 process/NewsSystem_lib/process.js diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/changelog_knowledgeManagement.xml b/.liquibase/Data_alias/basic/Knowledgemanagement/changelog_knowledgeManagement.xml new file mode 100644 index 00000000000..06a974df46b --- /dev/null +++ b/.liquibase/Data_alias/basic/Knowledgemanagement/changelog_knowledgeManagement.xml @@ -0,0 +1,14 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <include file="struct/knowledgeManagement_table.xml" relativeToChangelogFile="true" /> + <include file="struct/knowledgeTagModeration_table.xml" relativeToChangelogFile="true" /> + <include file="struct/knowledgeDiscussion_table.xml" relativeToChangelogFile="true" /> + <include file="struct/knowledgeGitInterface_table.xml" relativeToChangelogFile="true" /> + <include file="struct/knowledgeLink_table.xml" relativeToChangelogFile="true" /> + <include file="data/knowledgeKeywords.xml" relativeToChangelogFile="true" /> + <include file="struct/create_KnowledgeRoles.xml" relativeToChangelogFile="true" /> + <include file="struct/knowledgeTag_table.xml" relativeToChangelogFile="true" /> + <include file="struct/knowledgeTagLink_table.xml" relativeToChangelogFile="true" /> + <include file="data/knowledgeTag.xml" relativeToChangelogFile="true" /> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/data/blobs/git.css b/.liquibase/Data_alias/basic/Knowledgemanagement/data/blobs/git.css new file mode 100644 index 00000000000..cb1b3ff2ef3 --- /dev/null +++ b/.liquibase/Data_alias/basic/Knowledgemanagement/data/blobs/git.css @@ -0,0 +1,450 @@ +/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */ +/* Uncomment @import statement below to use as custom stylesheet */ +/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/ +article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block} +audio,canvas,video{display:inline-block} +audio:not([controls]){display:none;height:0} +script{display:none!important} +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%} +a{background:transparent} +a:focus{outline:thin dotted} +a:active,a:hover{outline:0} +h1{font-size:2em;margin:.67em 0} +abbr[title]{border-bottom:1px dotted} +b,strong{font-weight:bold} +dfn{font-style:italic} +hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0} +mark{background:#ff0;color:#000} +code,kbd,pre,samp{font-family:monospace;font-size:1em} +pre{white-space:pre-wrap} +q{quotes:"\201C" "\201D" "\2018" "\2019"} +small{font-size:80%} +sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sup{top:-.5em} +sub{bottom:-.25em} +img{border:0} +svg:not(:root){overflow:hidden} +figure{margin:0} +fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em} +legend{border:0;padding:0} +button,input,select,textarea{font-family:inherit;font-size:100%;margin:0} +button,input{line-height:normal} +button,select{text-transform:none} +button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer} +button[disabled],html input[disabled]{cursor:default} +input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0} +button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0} +textarea{overflow:auto;vertical-align:top} +table{border-collapse:collapse;border-spacing:0} +*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box} +html,body{font-size:100%} +body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased} +a:hover{cursor:pointer} +img,object,embed{max-width:100%;height:auto} +object,embed{height:100%} +img{-ms-interpolation-mode:bicubic} +.left{float:left!important} +.right{float:right!important} +.text-left{text-align:left!important} +.text-right{text-align:right!important} +.text-center{text-align:center!important} +.text-justify{text-align:justify!important} +.hide{display:none} +img,object,svg{display:inline-block;vertical-align:middle} +textarea{height:auto;min-height:50px} +select{width:100%} +.center{margin-left:auto;margin-right:auto} +.stretch{width:100%} +.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em} +div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr} +a{color:#2156a5;text-decoration:underline;line-height:inherit} +a:hover,a:focus{color:#1d4b8f} +a img{border:none} +p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility} +p aside{font-size:.875em;line-height:1.35;font-style:italic} +h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em} +h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0} +h1{font-size:2.125em} +h2{font-size:1.6875em} +h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em} +h4,h5{font-size:1.125em} +h6{font-size:1em} +hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0} +em,i{font-style:italic;line-height:inherit} +strong,b{font-weight:bold;line-height:inherit} +small{font-size:60%;line-height:inherit} +code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)} +ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} +ul,ol{margin-left:1.5em} +ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em} +ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit} +ul.square{list-style-type:square} +ul.circle{list-style-type:circle} +ul.disc{list-style-type:disc} +ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} +dl dt{margin-bottom:.3125em;font-weight:bold} +dl dd{margin-bottom:1.25em} +abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help} +abbr{text-transform:none} +blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd} +blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)} +blockquote cite::before{content:"\2014 \0020"} +blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)} +blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)} +@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2} +h1{font-size:2.75em} +h2{font-size:2.3125em} +h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em} +h4{font-size:1.4375em}} +table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede} +table thead,table tfoot{background:#f7f8f7} +table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left} +table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)} +table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7} +table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6} +h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em} +h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400} +.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table} +.clearfix::after,.float-group::after{clear:both} +*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word} +*:not(pre)>code.nobreak{word-wrap:normal} +*:not(pre)>code.nowrap{white-space:nowrap} +pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed} +em em{font-style:normal} +strong strong{font-weight:400} +.keyseq{color:rgba(51,51,51,.8)} +kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap} +.keyseq kbd:first-child{margin-left:0} +.keyseq kbd:last-child{margin-right:0} +.menuseq,.menuref{color:#000} +.menuseq b:not(.caret),.menuref{font-weight:inherit} +.menuseq{word-spacing:-.02em} +.menuseq b.caret{font-size:1.25em;line-height:.8} +.menuseq i.caret{font-weight:bold;text-align:center;width:.45em} +b.button::before,b.button::after{position:relative;top:-1px;font-weight:400} +b.button::before{content:"[";padding:0 3px 0 2px} +b.button::after{content:"]";padding:0 2px 0 3px} +p a>code:hover{color:rgba(0,0,0,.9)} +#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;/*max-width:62.5em;*/*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em} +#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table} +#header::after,#content::after,#footnotes::after,#footer::after{clear:both} +#content{margin-top:1.25em} +#content::before{content:none} +#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0} +#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8} +#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px} +#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap} +#header .details span:first-child{margin-left:-.125em} +#header .details span.email a{color:rgba(0,0,0,.85)} +#header .details br{display:none} +#header .details br+span::before{content:"\00a0\2013\00a0"} +#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)} +#header .details br+span#revremark::before{content:"\00a0|\00a0"} +#header #revnumber{text-transform:capitalize} +#header #revnumber::after{content:"\00a0"} +#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem} +#toc{border-bottom:1px solid #efefed;padding-bottom:.5em} +#toc>ul{margin-left:.125em} +#toc ul.sectlevel0>li>a{font-style:italic} +#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0} +#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none} +#toc li{line-height:1.3334;margin-top:.3334em} +#toc a{text-decoration:none} +#toc a:active{text-decoration:underline} +#toctitle{color:#7a2518;font-size:1.2em} +@media screen and (min-width:768px){#toctitle{font-size:1.375em} +body.toc2{padding-left:15em;padding-right:0} +#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto} +#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em} +#toc.toc2>ul{font-size:.9em;margin-bottom:0} +#toc.toc2 ul ul{margin-left:0;padding-left:1em} +#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em} +body.toc2.toc-right{padding-left:0;padding-right:15em} +body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}} +@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0} +#toc.toc2{width:20em} +#toc.toc2 #toctitle{font-size:1.375em} +#toc.toc2>ul{font-size:.95em} +#toc.toc2 ul ul{padding-left:1.25em} +body.toc2.toc-right{padding-left:0;padding-right:20em}} +#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} +#content #toc>:first-child{margin-top:0} +#content #toc>:last-child{margin-bottom:0} +#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em} +#footer-text{color:rgba(255,255,255,.8);line-height:1.44} +#content{margin-bottom:.625em} +.sect1{padding-bottom:.625em} +@media screen and (min-width:768px){#content{margin-bottom:1.25em} +.sect1{padding-bottom:1.25em}} +.sect1:last-child{padding-bottom:0} +.sect1+.sect1{border-top:1px solid #efefed} +#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400} +#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em} +#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible} +#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none} +#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221} +.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em} +.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic} +table.tableblock.fit-content>caption.title{white-space:nowrap;width:0} +.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)} +table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit} +.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%} +.admonitionblock>table td.icon{text-align:center;width:80px} +.admonitionblock>table td.icon img{max-width:none} +.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase} +.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)} +.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0} +.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px} +.exampleblock>.content>:first-child{margin-top:0} +.exampleblock>.content>:last-child{margin-bottom:0} +.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} +.sidebarblock>:first-child{margin-top:0} +.sidebarblock>:last-child{margin-bottom:0} +.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center} +.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0} +.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8} +.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1} +.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em} +.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal} +@media screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}} +@media screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}} +.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)} +.listingblock pre.highlightjs{padding:0} +.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px} +.listingblock pre.prettyprint{border-width:0} +.listingblock>.content{position:relative} +.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999} +.listingblock:hover code[data-lang]::before{display:block} +.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:#999} +.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"} +table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none} +table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45} +table.pyhltable td.code{padding-left:.75em;padding-right:0} +pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8} +pre.pygments .lineno{display:inline-block;margin-right:.25em} +table.pyhltable .linenodiv{background:none!important;padding-right:0!important} +.quoteblock{margin:0 1em 1.25em 1.5em;display:table} +.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em} +.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify} +.quoteblock blockquote{margin:0;padding:0;border:0} +.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)} +.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0} +.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right} +.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)} +.quoteblock .quoteblock blockquote{padding:0 0 0 .75em} +.quoteblock .quoteblock blockquote::before{display:none} +.verseblock{margin:0 1em 1.25em} +.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility} +.verseblock pre strong{font-weight:400} +.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex} +.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic} +.quoteblock .attribution br,.verseblock .attribution br{display:none} +.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)} +.quoteblock.abstract{margin:0 1em 1.25em;display:block} +.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center} +.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{word-spacing:0;line-height:1.6} +.quoteblock.abstract blockquote::before,.quoteblock.abstract p::before{display:none} +table.tableblock{max-width:100%;border-collapse:separate} +p.tableblock:last-child{margin-bottom:0} +td.tableblock>.content{margin-bottom:-1.25em} +table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede} +table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0} +table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0} +table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0} +table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px} +table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0} +table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0} +table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0} +table.frame-all{border-width:1px} +table.frame-sides{border-width:0 1px} +table.frame-topbot,table.frame-ends{border-width:1px 0} +table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd){background:#f8f8f7} +table.stripes-none tr,table.stripes-odd tr:nth-of-type(even){background:none} +th.halign-left,td.halign-left{text-align:left} +th.halign-right,td.halign-right{text-align:right} +th.halign-center,td.halign-center{text-align:center} +th.valign-top,td.valign-top{vertical-align:top} +th.valign-bottom,td.valign-bottom{vertical-align:bottom} +th.valign-middle,td.valign-middle{vertical-align:middle} +table thead th,table tfoot th{font-weight:bold} +tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7} +tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold} +p.tableblock>code:only-child{background:none;padding:0} +p.tableblock{font-size:1em} +td>div.verse{white-space:pre} +ol{margin-left:1.75em} +ul li ol{margin-left:1.5em} +dl dd{margin-left:1.125em} +dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0} +ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em} +ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none} +ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em} +ul.unstyled,ol.unstyled{margin-left:0} +ul.checklist{margin-left:.625em} +ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em} +ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em} +ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em} +ul.inline>li{margin-left:1.25em} +.unstyled dl dt{font-weight:400;font-style:normal} +ol.arabic{list-style-type:decimal} +ol.decimal{list-style-type:decimal-leading-zero} +ol.loweralpha{list-style-type:lower-alpha} +ol.upperalpha{list-style-type:upper-alpha} +ol.lowerroman{list-style-type:lower-roman} +ol.upperroman{list-style-type:upper-roman} +ol.lowergreek{list-style-type:lower-greek} +.hdlist>table,.colist>table{border:0;background:none} +.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none} +td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em} +td.hdlist1{font-weight:bold;padding-bottom:1.25em} +.literalblock+.colist,.listingblock+.colist{margin-top:-.5em} +.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top} +.colist td:not([class]):first-child img{max-width:none} +.colist td:not([class]):last-child{padding:.25em 0} +.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd} +.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0} +.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em} +.imageblock>.title{margin-bottom:0} +.imageblock.thumb,.imageblock.th{border-width:6px} +.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em} +.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0} +.image.left{margin-right:.625em} +.image.right{margin-left:.625em} +a.image{text-decoration:none;display:inline-block} +a.image object{pointer-events:none} +sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super} +sup.footnote a,sup.footnoteref a{text-decoration:none} +sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline} +#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em} +#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0} +#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em} +#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em} +#footnotes .footnote:last-of-type{margin-bottom:0} +#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0} +.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0} +.gist .file-data>table td.line-data{width:99%} +div.unbreakable{page-break-inside:avoid} +.big{font-size:larger} +.small{font-size:smaller} +.underline{text-decoration:underline} +.overline{text-decoration:overline} +.line-through{text-decoration:line-through} +.aqua{color:#00bfbf} +.aqua-background{background-color:#00fafa} +.black{color:#000} +.black-background{background-color:#000} +.blue{color:#0000bf} +.blue-background{background-color:#0000fa} +.fuchsia{color:#bf00bf} +.fuchsia-background{background-color:#fa00fa} +.gray{color:#606060} +.gray-background{background-color:#7d7d7d} +.green{color:#006000} +.green-background{background-color:#007d00} +.lime{color:#00bf00} +.lime-background{background-color:#00fa00} +.maroon{color:#600000} +.maroon-background{background-color:#7d0000} +.navy{color:#000060} +.navy-background{background-color:#00007d} +.olive{color:#606000} +.olive-background{background-color:#7d7d00} +.purple{color:#600060} +.purple-background{background-color:#7d007d} +.red{color:#bf0000} +.red-background{background-color:#fa0000} +.silver{color:#909090} +.silver-background{background-color:#bcbcbc} +.teal{color:#006060} +.teal-background{background-color:#007d7d} +.white{color:#bfbfbf} +.white-background{background-color:#fafafa} +.yellow{color:#bfbf00} +.yellow-background{background-color:#fafa00} +span.icon>.fa{cursor:default} +a span.icon>.fa{cursor:inherit} +.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} +.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c} +.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111} +.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900} +.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400} +.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000} +.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold} +.conum[data-value] *{color:#fff!important} +.conum[data-value]+b{display:none} +.conum[data-value]::after{content:attr(data-value)} +pre .conum[data-value]{position:relative;top:-.125em} +b.conum *{color:inherit!important} +.conum:not([data-value]):empty{display:none} +dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility} +h1,h2,p,td.content,span.alt{letter-spacing:-.01em} +p strong,td.content strong,div.footnote strong{letter-spacing:-.005em} +p,blockquote,dt,td.content,span.alt{font-size:1.0625rem} +p{margin-bottom:1.25rem} +.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em} +.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc} +.print-only{display:none!important} +@page{margin:1.25cm .75cm} +@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important} +html{font-size:80%} +a{color:inherit!important;text-decoration:underline!important} +a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important} +a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em} +abbr[title]::after{content:" (" attr(title) ")"} +pre,blockquote,tr,img,object,svg{page-break-inside:avoid} +thead{display:table-header-group} +svg{max-width:100%} +p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3} +h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid} +#toc,.sidebarblock,.exampleblock>.content{background:none!important} +#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important} +body.book #header{text-align:center} +body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em} +body.book #header .details{border:0!important;display:block;padding:0!important} +body.book #header .details span:first-child{margin-left:0!important} +body.book #header .details br{display:block} +body.book #header .details br+span::before{content:none!important} +body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important} +body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always} +.listingblock code[data-lang]::before{display:block} +#footer{padding:0 .9375em} +.hide-on-print{display:none!important} +.print-only{display:block!important} +.hide-for-print{display:none!important} +.show-for-print{display:inherit!important}} +@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem} +.sect1{padding:0!important} +.sect1+.sect1{border:0} +#footer{background:none} +#footer-text{color:rgba(0,0,0,.6);font-size:.9em}} +@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}} + +.topcorner { +font-family: Calibri, Verdana; +font-size: 16px; +float:right; +top:100px; +right: 100px; +width: 300px; +height: auto; +background-color: #EBEBEB; +border-width: 1px; +border-color: #666666; +border-style: dotted; +padding: 3px; +box-shadow: 3px 3px 7px #AAAAAA; +} + +.topcorner p { + font-family:inherit;font-weight:400;font-size:1em;text-rendering:optimizeLegibility +} + +.stitletext { +/*font-family: Calibri, Verdana;*/ +color:#ba3925; +font-size: 30px; +padding-top: 4px; +padding-bottom: 4px; +border-bottom: medium solid #000000; +font-weight: bold; +} \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/data/blobs/standard.css b/.liquibase/Data_alias/basic/Knowledgemanagement/data/blobs/standard.css new file mode 100644 index 00000000000..3ca3c40a41e --- /dev/null +++ b/.liquibase/Data_alias/basic/Knowledgemanagement/data/blobs/standard.css @@ -0,0 +1,138 @@ +h1 { +font-family: Calibri, Verdana; +color: #E60048; +font-size: 25px; +} + +h2 { +font-family: Calibri, Verdana; +color: #E60048; +font-size: 20px; +} + +h3 { +font-family: Calibri, Verdana; +font-style: italic; +color: #E60048; +font-size: 20px; +} + +h4 { +font-family: Calibri, Verdana; +font-style: italic; +color: #0095B8; +font-size: 20px; +} + +div { +font-family: Calibri, Verdana; +color: #000000; +font-size: 16px; +} + +p { +font-family: Calibri, Verdana; +color: #000000; +font-size: 18px; +} + +li { +font-family: Calibri, Verdana; +color: #000000; +font-size: 18px; +} + +hr { + border: 0; + height: 1px; + background-image: linear-gradient(to right, #22BBFF, #0095B8, #22BBFF); +} + +table { + border-collapse: collapse; +} + +tr:first-child { + background-color: #8EE1FF; +} + +table, th, td { + border: 1px solid #0095B8; +} + +.stitletext { +font-family: Calibri, Verdana; +font-size: 30px; +padding-top: 4px; +padding-bottom: 4px; +color: #E60048; +border-bottom: medium dotted #0095B8; +font-weight: bold; +} + +.proptext { +font-family: Calibri, Verdana; +font-size: 16px; +padding-top: 2px; +padding-bottom: 2px; +color: #E60048; +font-weight: bold; +} + +.liketext { +font-family: Calibri, Verdana; +font-size: 18px; +padding-top: 2px; +padding-bottom: 2px; +color: #e50047; +font-weight: bold; +} + +.hashtag { +font-family: Calibri, Verdana; +font-size: 12px; +font-style: italic; +color: #666666; +} + +.personas { +font-family: Calibri, Verdana; +font-size: 12px; +color: #666666; +font-weight: bold; +} + +.topcorner { +font-family: Calibri, Verdana; +font-size: 16px; +float:right; +top:100px; +right: 100px; +width: 300px; +height: auto; +background-color: #EBEBEB; +border-width: 1px; +border-color: #666666; +border-style: dotted; +padding: 3px; +box-shadow: 3px 3px 7px #AAAAAA; +} + +.amenub { +color: #0095B8; +text-decoration: underline;} + +.processDesc { +float:left; +} + +.mainDiv { + width:100%; + height:100%; +} + +.businessProcess { + margin-top:30px; + width:100%; + height:100%; +} \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/data/knowledgeKeywords.xml b/.liquibase/Data_alias/basic/Knowledgemanagement/data/knowledgeKeywords.xml new file mode 100644 index 00000000000..10bb6c90408 --- /dev/null +++ b/.liquibase/Data_alias/basic/Knowledgemanagement/data/knowledgeKeywords.xml @@ -0,0 +1,87 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="e.pollinger" id="6c1bb89e-60db-4a50-ba77-c81a8ec82d2c"> + <!-- KEYWORD ENTRIES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> + <!-- Keywords for discussion status --> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="DISCUSSIONACTIVE"/> + <column name="KEYID" value="ACTIVE"/> + <column name="TITLE" value="active"/> + <column name="CONTAINER" value="DiscussionStatus"/> + <column name="SORTING" valueNumeric="1"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="DISCUSSIONCLOSED"/> + <column name="KEYID" value="CLOSED"/> + <column name="TITLE" value="closed"/> + <column name="CONTAINER" value="DiscussionStatus"/> + <column name="SORTING" valueNumeric="2"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <!-- Keywords for knowledge type --> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="KNOWLEDGEBASE"/> + <column name="KEYID" value="KNOWLEDGEBASE"/> + <column name="TITLE" value="Knowledgebase"/> + <column name="CONTAINER" value="KnowledgeType"/> + <column name="SORTING" valueNumeric="1"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="EDITORIAL"/> + <column name="KEYID" value="EDITORIAL"/> + <column name="TITLE" value="Editorial"/> + <column name="CONTAINER" value="KnowledgeType"/> + <column name="SORTING" valueNumeric="2"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <!-- Keywords for publishing level --> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="INTERNAL"/> + <column name="KEYID" value="INTERNAL"/> + <column name="TITLE" value="Internal"/> + <column name="CONTAINER" value="KnowledgePublishLevel"/> + <column name="SORTING" valueNumeric="1"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="PARTNER"/> + <column name="KEYID" value="PARTNER"/> + <column name="TITLE" value="Partner"/> + <column name="CONTAINER" value="KnowledgePublishLevel"/> + <column name="SORTING" valueNumeric="2"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="PUBLIC"/> + <column name="KEYID" value="PUBLIC"/> + <column name="TITLE" value="Public"/> + <column name="CONTAINER" value="KnowledgePublishLevel"/> + <column name="SORTING" valueNumeric="3"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <!-- KEYWORD ATTRIBUTES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> + <insert tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_ATTRIBUTEID" value="b03f93a2-3b87-4a98-b3f9-9ed2358abdfe"/> + <column name="NAME" value="contentCssStylesheet"/> + <column name="KIND" value="LONG_CHAR_VALUE"/> + <column name="CONTAINER" value="KnowledgeType"/> + </insert> + <!-- KEYWORD ATTRIBUTE RELATIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> + <!-- Knowledge type stylesheets--> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="d65d9988-2a50-42ed-8235-e1073d7a035e"/> + <column name="AB_KEYWORD_ENTRY_ID" value="KNOWLEDGEBASE"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="b03f93a2-3b87-4a98-b3f9-9ed2358abdfe"/> + <column name="LONG_CHAR_VALUE" valueClobFile="blobs/standard.css"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="5c8293eb-2ea2-4de3-a4eb-40e1785c9785"/> + <column name="AB_KEYWORD_ENTRY_ID" value="EDITORIAL"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="b03f93a2-3b87-4a98-b3f9-9ed2358abdfe"/> + <column name="LONG_CHAR_VALUE" valueClobFile="blobs/git.css"/> + </insert> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/data/knowledgeTag.xml b/.liquibase/Data_alias/basic/Knowledgemanagement/data/knowledgeTag.xml new file mode 100644 index 00000000000..4a17a2ef636 --- /dev/null +++ b/.liquibase/Data_alias/basic/Knowledgemanagement/data/knowledgeTag.xml @@ -0,0 +1,10 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="e.pollinger" id="9c1bb89e-60db-4a50-ba77-c81a8ec82d2c"> + <insert tableName="KNOWLEDGETAG"> + <column name="KNOWLEDGETAGID" value="9c1bb89e-60db-4a50-ba77-c81a8ec82d2c"/> + <column name="TAG" value="News"/> + </insert> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/create_KnowledgeRoles.xml b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/create_KnowledgeRoles.xml new file mode 100644 index 00000000000..7a44ef7aefa --- /dev/null +++ b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/create_KnowledgeRoles.xml @@ -0,0 +1,13 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="f.adler" id="eea7595b-3908-449b-8976-6e822aa1923c"> + <createTable tableName="KNOWLEDGEROLES"> + <column name="KNOWLEDGEROLESID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGEROLES_KNOWLEDGEROLESID"/> + </column> + <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"></column> + <column name="ROLENAME" type="VARCHAR(100)"/> + </createTable> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeDiscussion_table.xml b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeDiscussion_table.xml new file mode 100644 index 00000000000..c4b9698f688 --- /dev/null +++ b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeDiscussion_table.xml @@ -0,0 +1,20 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="e.pollinger" id="1261195c-ffc1-4abb-a31f-0732823ee0cb"> + <createTable tableName="KNOWLEDGEDISCUSSION"> + <column name="KNOWLEDGEDISCUSSIONID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGEDISCUSSION_KNOWLEDGEDISCUSSIONID"/> + </column> + <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"></column> + <column name="DATE_NEW" type="DATETIME2"/> + <column name="DATE_EDIT" type="DATETIME2"/> + <column name="USER_NEW" type="NVARCHAR(50)"/> + <column name="USER_EDIT" type="NVARCHAR(50)"/> + <column name="STATUS" type="VARCHAR(36)"/> + <column name="AUTHOR" type="NVARCHAR(50)"/> + <column name="DISCUSSIONTEXT" type="LONGTEXT"/> + <column name="PARENTENTRY" type="CHAR(36)"/> + </createTable> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeGitInterface_table.xml b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeGitInterface_table.xml new file mode 100644 index 00000000000..8440cd20fdf --- /dev/null +++ b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeGitInterface_table.xml @@ -0,0 +1,17 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="e.pollinger" id="9e24c875-c592-4839-94aa-3de4269b6fe7"> + <createTable tableName="KNOWLEDGEGITINTERFACE"> + <column name="KNOWLEDGEGITINTERFACEID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGEGITINTERFACE_KNOWLEDGEGITINTERFACEID"/> + </column> + <column name="GITCOMMIT" type="NVARCHAR(200)"/> + <column name="SYSTEMNAME" type="NVARCHAR(50)"/> + <column name="DATE_NEW" type="DATETIME2"/> + <column name="DATE_EDIT" type="DATETIME2"/> + <column name="USER_NEW" type="NVARCHAR(50)"/> + <column name="USER_EDIT" type="NVARCHAR(50)"/> + </createTable> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeLink_table.xml b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeLink_table.xml new file mode 100644 index 00000000000..cdf69919e23 --- /dev/null +++ b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeLink_table.xml @@ -0,0 +1,18 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="e.pollinger" id="1261195c-ffc1-4abb-a31f-0732823ee0cb"> + <createTable tableName="KNOWLEDGELINK"> + <column name="KNOWLEDGELINKID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGELINK_KNOWLEDGELINKID"/> + </column> + <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"></column> + <column name="DATE_NEW" type="DATETIME2"/> + <column name="DATE_EDIT" type="DATETIME2"/> + <column name="USER_NEW" type="NVARCHAR(50)"/> + <column name="USER_EDIT" type="NVARCHAR(50)"/> + <column name="ROW_ID" type="CHAR(36)"/> + <column name="OBJECT_TYPE" type="NVARCHAR(100)"/> + </createTable> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeManagement_table.xml b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeManagement_table.xml new file mode 100644 index 00000000000..14747dd37ea --- /dev/null +++ b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeManagement_table.xml @@ -0,0 +1,29 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="e.pollinger" id="9a0aaba2-c114-4648-ab1e-15acf489f19d"> + <createTable tableName="KNOWLEDGEMANAGEMENT"> + <column name="KNOWLEDGEMANAGEMENTID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGEMANAGEMENT_KNOWLEDGEMANAGEMENTID"/> + </column> + <column name="AUTHOR_CONTACT_ID" type="CHAR(36)"></column> + <column name="RESPONSIBLE_CONTACT_ID" type="CHAR(36)"></column> + <column name="USER_NEW" type="NVARCHAR(63)"></column> + <column name="DATE_NEW" type="DATETIME2"></column> + <column name="USER_EDIT" type="NVARCHAR(63)"></column> + <column name="DATE_EDIT" type="DATETIME2"></column> + <column name="TITLE" type="NVARCHAR(255)"></column> + <column name="CONTENT" type="LONGTEXT"></column> + <column name="CONTENTDECODED" type="LONGTEXT"></column> + <column name="PUBLISH" type="CHAR(36)"></column> + <column name="TYPE" type="CHAR(36)"></column> + </createTable> + + <createIndex tableName="KNOWLEDGEMANAGEMENT" indexName="IDX_KNOWLEDGEMANAGEMENT_TITLE"> + <column name="TITLE"/> + </createIndex> + <createIndex tableName="KNOWLEDGEMANAGEMENT" indexName="IDX_KNOWLEDGEMANAGEMENT_TYPE"> + <column name="TYPE"/> + </createIndex> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTagLink_table.xml b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTagLink_table.xml new file mode 100644 index 00000000000..a6b9b631d5d --- /dev/null +++ b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTagLink_table.xml @@ -0,0 +1,17 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="e.pollinger" id="dc0b71e9-616b-4b5a-ad74-1725f0278a15"> + <createTable tableName="KNOWLEDGETAGLINK"> + <column name="KNOWLEDGETAGLINKID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGETAGLINK_KNOWLEDGETAGLINKID"/> + </column> + <column name="KNOWLEDGETAG_ID" type="CHAR(36)"/> + <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"/> + <column name="DATE_NEW" type="TIMESTAMP"/> + <column name="DATE_EDIT" type="TIMESTAMP"/> + <column name="USER_NEW" type="nvarchar(50)"/> + <column name="USER_EDIT" type="nvarchar(50)"/> + </createTable> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTagModeration_table.xml b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTagModeration_table.xml new file mode 100644 index 00000000000..e15b8473605 --- /dev/null +++ b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTagModeration_table.xml @@ -0,0 +1,13 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="e.pollinger" id="50ea4ad8-c864-489e-a121-92f4738e0a7f"> + <createTable tableName="KNOWLEDGEMANAGEMENTTAGMODERATION"> + <column name="KNOWLEDGEMANAGEMENTTAGMODERATIONID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_TAGMODERATION_KNOWLEDGEMANAGEMENTTAGMODERATIONID"/> + </column> + <column name="AB_ATTRIBUTE_ID" type="CHAR(36)"></column> + <column name="STATUS" type="CHAR(36)"/> + </createTable> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTag_table.xml b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTag_table.xml new file mode 100644 index 00000000000..aa0b15c81bb --- /dev/null +++ b/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTag_table.xml @@ -0,0 +1,17 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="e.pollinger" id="95eabecf-82f8-49c8-87b2-594c338d3c15"> + <createTable tableName="KNOWLEDGETAG"> + <column name="KNOWLEDGETAGID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGETAG_KNOWLEDGETAGID"/> + </column> + <column name="TAG" type="VARCHAR(50)"/> + <column name="STATUS" type="CHAR(36)"/> + <column name="DATE_NEW" type="TIMESTAMP"/> + <column name="DATE_EDIT" type="TIMESTAMP"/> + <column name="USER_NEW" type="nvarchar(50)"/> + <column name="USER_EDIT" type="nvarchar(50)"/> + </createTable> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index 9d1ca6c5576..222dd9fae4c 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -17,7 +17,9 @@ <include relativeToChangelogFile="true" file="basic/2020.1.3/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.2.0/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.2.1/changelog.xml"/> + + <include relativeToChangelogFile="true" file="basic/Knowledgemanagement/changelog_knowledgeManagement.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> - <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>--> + <include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/> </databaseChangeLog> \ No newline at end of file diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 96738b18065..14f83a38728 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -10889,8 +10889,8 @@ <name>RECIPIENTS</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> - <size v="4000" /> + <columnType v="2005" /> + <size v="2147483647" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -11711,8 +11711,8 @@ <name>SCAN_PATTERN</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> - <size v="4000" /> + <columnType v="2005" /> + <size v="2147483647" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -13883,6 +13883,34 @@ <title></title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>P_COMMINTERNET</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="254" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>O_COMMINTERNET</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="254" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -14134,7 +14162,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="true" /> + <index v="false" /> <documentation></documentation> <title></title> <description></description> @@ -14460,7 +14488,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="true" /> + <index v="false" /> <documentation></documentation> <title></title> <description></description> @@ -14515,7 +14543,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="true" /> + <index v="false" /> <documentation></documentation> <title></title> <description></description> @@ -15737,6 +15765,992 @@ </entityFieldDb> </entityFields> </entityDb> + <entityDb> + <name>KNOWLEDGEDISCUSSION</name> + <dbName></dbName> + <idColumn>KNOWLEDGEDISCUSSIONID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>PARENTENTRY</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>STATUS</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DISCUSSIONTEXT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="2005" /> + <size v="2147483647" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DATE_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGEDISCUSSIONID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGEMANAGEMENT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>AUTHOR</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DATE_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>KNOWLEDGELINK</name> + <dbName></dbName> + <idColumn>KNOWLEDGELINKID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>KNOWLEDGELINKID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DATE_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGEMANAGEMENT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DATE_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>OBJECT_TYPE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="100" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>ROW_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>KNOWLEDGEMANAGEMENT</name> + <dbName></dbName> + <idColumn>KNOWLEDGEMANAGEMENTID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>DATE_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGEMANAGEMENTID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>AUTHOR_CONTACT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + <customProperties> + <customBooleanProperty> + <name>log</name> + <global v="false" /> + <property v="true" /> + </customBooleanProperty> + </customProperties> + </entityFieldDb> + <entityFieldDb> + <name>PUBLISH</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="63" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>CONTENTDECODED</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="2005" /> + <size v="2147483647" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>TITLE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="255" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + <customProperties> + <customBooleanProperty> + <name>log</name> + <global v="false" /> + <property v="true" /> + </customBooleanProperty> + </customProperties> + </entityFieldDb> + <entityFieldDb> + <name>CONTENT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="2005" /> + <size v="2147483647" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + <customProperties> + <customBooleanProperty> + <name>log</name> + <global v="false" /> + <property v="true" /> + </customBooleanProperty> + </customProperties> + </entityFieldDb> + <entityFieldDb> + <name>DATE_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="63" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>RESPONSIBLE_CONTACT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + <customProperties> + <customBooleanProperty> + <name>log</name> + <global v="false" /> + <property v="true" /> + </customBooleanProperty> + </customProperties> + </entityFieldDb> + <entityFieldDb> + <name>TYPE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>KNOWLEDGEROLES</name> + <dbName></dbName> + <idColumn>KNOWLEDGEROLESID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>KNOWLEDGEROLESID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGEMANAGEMENT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>ROLENAME</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="100" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>KNOWLEDGEGITINTERFACE</name> + <dbName></dbName> + <idColumn>KNOWLEDGEGITINTERFACEID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>DATE_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGEGITINTERFACEID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>GITCOMMIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="200" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DATE_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>SYSTEMNAME</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>KNOWLEDGEMANAGEMENTTAGMODERATION</name> + <dbName></dbName> + <idColumn>KNOWLEDGEMANAGEMENTTAGMODERATIONID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>STATUS</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>AB_ATTRIBUTE_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGEMANAGEMENTTAGMODERATIONID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>KNOWLEDGETAG</name> + <dbName></dbName> + <idColumn>KNOWLEDGETAGID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>KNOWLEDGETAGID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>STATUS</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DATE_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DATE_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>TAG</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>KNOWLEDGETAGLINK</name> + <dbName></dbName> + <idColumn>KNOWLEDGETAGLINKID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>DATE_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGEMANAGEMENT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGETAGLINKID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DATE_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGETAG_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> </entities> </entityGroup> </aliasDefDb> diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index 2de36e83409..66bb73bc2f0 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -247,6 +247,28 @@ </entityNode> </childNodes> </entityNode> + <entityNode> + <name>Group</name> + <kind v="123" /> + <title>Knowledgemanagement</title> + <icon>VAADIN:ACADEMY_CAP</icon> + <childNodes> + <entityNode> + <name>Group5</name> + <kind v="123" /> + <childNodes> + <entityNode> + <name>INTERNAL_EVERYONE</name> + <kind v="159" /> + </entityNode> + <entityNode> + <name>KnowledgeManagement</name> + <kind v="10077" /> + </entityNode> + </childNodes> + </entityNode> + </childNodes> + </entityNode> <entityNode> <name>Administration</name> <kind v="123" /> diff --git a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod new file mode 100644 index 00000000000..0c7fab8b6d8 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod @@ -0,0 +1,219 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> + <name>KnowledgeDiscussion_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <title>Discussion</title> + <grantCreateProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantCreateProcess.js</grantCreateProcess> + <grantUpdateProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantUpdateProcess.js</grantUpdateProcess> + <grantDeleteProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantDeleteProcess.js</grantDeleteProcess> + <afterUiInit>%aditoprj%/entity/KnowledgeDiscussion_entity/afterUiInit.js</afterUiInit> + <iconIdProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/iconIdProcess.js</iconIdProcess> + <titlePlural>Discussions</titlePlural> + <recordContainer>JDito_KnowledgeDiscussionContainer</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>DISCUSSIONTEXT</name> + <title>Discussion</title> + <contentType>LONG_TEXT</contentType> + </entityField> + <entityField> + <name>KNOWLEDGEMANAGEMENT_ID</name> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/knowledgemanagement_id/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>AUTHOR</name> + <title>Author</title> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/author/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>STATUS</name> + <consumer>StatusKeyword</consumer> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/status/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>USER_NEW</name> + </entityField> + <entityField> + <name>USER_EDIT</name> + </entityField> + <entityField> + <name>DATE_NEW</name> + <title>new</title> + <contentType>DATE</contentType> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/date_new/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>DATE_EDIT</name> + <title>edited</title> + <contentType>DATE</contentType> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/date_edit/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>PARENTENTRY</name> + </entityField> + <entityField> + <name>ICON</name> + <title>Icon</title> + <contentType>IMAGE</contentType> + </entityField> + <entityConsumer> + <name>StatusKeyword</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/onlyactives_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityProvider> + <name>ByKnowledgeId</name> + <dependencies> + <entityDependency> + <name>fbacb136-2690-495a-82c5-b6ab1576d3f9</name> + <entityName>KnowledgeManagement_entity</entityName> + <fieldName>DiscussionsByKnowledgeId</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityParameter> + <name>KnowledgeId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>WithClosed_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/withclosed_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + <entityActionGroup> + <name>Edit_ActionGroup</name> + <title>Bearbeiten</title> + <children> + <entityActionField> + <name>addAnswer_action</name> + <onActionProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/addanswer_action/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <isSelectionAction v="true" /> + <iconId>VAADIN:COMMENT_O</iconId> + <tooltip>Adds an answer to the selected discussion</tooltip> + </entityActionField> + <entityActionField> + <name>showAll_action</name> + <onActionProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <iconIdProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/iconIdProcess.js</iconIdProcess> + <tooltip>Toggles view between "show only open discussions" and "show all discussions"</tooltip> + </entityActionField> + <entityActionField> + <name>toggleDiscussionStatus_action</name> + <onActionProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <isSelectionAction v="true" /> + <iconId>VAADIN:LOCK</iconId> + <tooltip>Toggles the status of selected discussion between open and closed</tooltip> + </entityActionField> + </children> + </entityActionGroup> + <entityParameter> + <name>ParentId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/parentid_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>RowCount_param</name> + </entityParameter> + <entityField> + <name>nodeType</name> + </entityField> + <entityField> + <name>showAll</name> + <contentType>BOOLEAN</contentType> + </entityField> + <entityField> + <name>discussionTitle</name> + <title>Created / Edited</title> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>JDito_KnowledgeDiscussionContainer</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isPageable v="false" /> + <isFilterable v="false" /> + <isRequireContainerFiltering v="true" /> + <isSortable v="false" /> + <contentProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js</contentProcess> + <rowCountProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js</rowCountProcess> + <hasDependentRecords v="true" /> + <onInsert>%aditoprj%/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onInsert.js</onInsert> + <onUpdate>%aditoprj%/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onUpdate.js</onUpdate> + <onDelete>%aditoprj%/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onDelete.js</onDelete> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>PARENTENTRY.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>KNOWLEDGEMANAGEMENT_ID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>AUTHOR.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>DISCUSSIONTEXT.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>STATUS.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>STATUS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>DATE_NEW.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>DATE_EDIT.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>USER_NEW.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>USER_EDIT.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>AUTHOR.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ICON.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>nodeType.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>discussionTitle.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeDiscussion_entity/afterUiInit.js b/entity/KnowledgeDiscussion_entity/afterUiInit.js new file mode 100644 index 00000000000..2b7ba120e62 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/afterUiInit.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.neon"); + +if(vars.exists("$param.WithClosed_param") && vars.get("$param.WithClosed_param")) + vars.set("$context.showAll", vars.get("$param.WithClosed_param")) +//else if(!vars.exists("$context.showAll")) +// vars.set("$context.showAll", "false"); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/author/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/author/valueProcess.js new file mode 100644 index 00000000000..2301fca2d43 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/author/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$this.value") === null && vars.get("$sys.recordstate") === neon.OPERATINGSTATE_NEW) +{ + result.string(vars.get("$sys.user")); +} \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/date_edit/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/date_edit/valueProcess.js new file mode 100644 index 00000000000..090ae91afea --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/date_edit/valueProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); +import("system.datetime"); + +if(vars.get("$sys.recordstate") === neon.OPERATINGSTATE_EDIT) + result.string(datetime.date()); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/date_new/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/date_new/valueProcess.js new file mode 100644 index 00000000000..cb4f3c1d5a1 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/date_new/valueProcess.js @@ -0,0 +1,7 @@ +import("system.datetime"); +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.recordstate") === neon.OPERATINGSTATE_NEW) + result.string(datetime.date()); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/addanswer_action/onActionProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/addanswer_action/onActionProcess.js new file mode 100644 index 00000000000..014090f103f --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/addanswer_action/onActionProcess.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("system.neon"); + +var params = { + "KnowledgeId_param":vars.get("$param.KnowledgeId_param") + ,"ParentId_param":vars.get("$field.UID") +} + +neon.openContext("KnowledgeDiscussion", "KnowledgeDiscussionEdit_view", null, neon.OPERATINGSTATE_NEW, params); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/iconIdProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/iconIdProcess.js new file mode 100644 index 00000000000..925dab4fbb0 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/iconIdProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +var ret = (vars.exists("$context.showAll") && vars.get("$context.showAll") == "true") ? "VAADIN:CLIPBOARD_CHECK" : "VAADIN:CLIPBOARD"; + +result.string(ret); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/onActionProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/onActionProcess.js new file mode 100644 index 00000000000..10b70730e23 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/onActionProcess.js @@ -0,0 +1,12 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(!vars.exists("$context.showAll")) + vars.set("$context.showAll", "true"); +else if((vars.exists("$context.showAll") && vars.get("$context.showAll") == "true")) + vars.set("$context.showAll", "false"); +else + vars.set("$context.showAll", "true"); + +neon.refreshAll(); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js new file mode 100644 index 00000000000..b2bac85e2f6 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js @@ -0,0 +1,12 @@ +import("KnowledgeManagement_lib"); +import("KeywordRegistry_basic"); +import("system.vars"); +import("system.neon"); + +var status = (vars.get("$field.STATUS") == $KeywordRegistry.discussionStatus$acitve()) + ? $KeywordRegistry.discussionStatus$closed() + : $KeywordRegistry.discussionStatus$acitve(); + +KnowledgeDiscussion.getInstance(vars.get("$param.KnowledgeId_param")) + .setDiscussionStatus(vars.get("$field.UID"), status); +neon.refreshAll(); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/knowledgemanagement_id/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/knowledgemanagement_id/valueProcess.js new file mode 100644 index 00000000000..3204947cd26 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/knowledgemanagement_id/valueProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); + +if(vars.exists("$param.KnowledgeId_param") + && vars.get("$param.KnowledgeId_param") + && vars.get("$this.value") === null) + result.string(vars.get("$param.KnowledgeId_param")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/parentid_param/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/parentid_param/valueProcess.js new file mode 100644 index 00000000000..ed69697cc20 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/parentid_param/valueProcess.js @@ -0,0 +1,4 @@ +//import("system.vars"); +//import("system.result"); + +//result.string(vars.exists("$sys.selection") && vars.get("$sys.selection")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/status/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/status/valueProcess.js new file mode 100644 index 00000000000..051fa1deb28 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/status/valueProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); +import("KeywordRegistry_basic"); + +if(vars.get("$this.value") === null && vars.get("$sys.recordstate") === neon.OPERATINGSTATE_NEW) + result.string($KeywordRegistry.discussionStatus$acitve()); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js new file mode 100644 index 00000000000..10532b30b86 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js @@ -0,0 +1,4 @@ +import("KeywordRegistry_basic"); +import("system.result"); + +result.string($KeywordRegistry.discussionStatus()); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/onlyactives_param/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/onlyactives_param/valueProcess.js new file mode 100644 index 00000000000..40effa01784 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/onlyactives_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string(true); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/withclosed_param/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/withclosed_param/valueProcess.js new file mode 100644 index 00000000000..77e47923de2 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/withclosed_param/valueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); + +if(vars.exists("$context.showAll")) + result.string(vars.get("$context.showAll")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/grantCreateProcess.js b/entity/KnowledgeDiscussion_entity/grantCreateProcess.js new file mode 100644 index 00000000000..241a88da0b5 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/grantCreateProcess.js @@ -0,0 +1,18 @@ +import("system.logging"); +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); +import("KeywordRegistry_basic"); + +var status = KnowledgeUtils.trimAndUp(vars.get("$field.STATUS")); +var parent = vars.exists("$param.ParentId_param") && vars.get("$param.ParentId_param"); + +var cond = ( + ( + status == KnowledgeUtils.trimAndUp($KeywordRegistry.discussionStatus$acitve()) + || + status == "" + ) +); + +result.string(cond); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/grantDeleteProcess.js b/entity/KnowledgeDiscussion_entity/grantDeleteProcess.js new file mode 100644 index 00000000000..b76b609eeb1 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/grantDeleteProcess.js @@ -0,0 +1,24 @@ +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); +import("KeywordRegistry_basic"); + +var hasChildren = KnowledgeDiscussion.hasChildren(vars.get("$field.UID")); +var status = vars.get("$field.STATUS"); +var user = vars.get("$sys.user"); +var author = vars.get("$field.AUTHOR"); +//As long as it doesn't have children AND ( ((author == user) and status == active) OR user is academy) +var cond = ( + !hasChildren + && + ( + ( + KnowledgeUtils.trimAndUp(author) === KnowledgeUtils.trimAndUp(user) + && ( KnowledgeUtils.trimAndUp(status) === KnowledgeUtils.trimAndUp($KeywordRegistry.discussionStatus$acitve().slice(0))) + ) + || + KnowledgeUtils.isAcademy(user) + ) +); + +result.string(cond); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/grantUpdateProcess.js b/entity/KnowledgeDiscussion_entity/grantUpdateProcess.js new file mode 100644 index 00000000000..07664375a4d --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/grantUpdateProcess.js @@ -0,0 +1,30 @@ +import("system.vars"); +import("system.result"); +import("KeywordRegistry_basic"); +import("KnowledgeManagement_lib"); + +var user = vars.get("$sys.user"); +var author = vars.get("$field.AUTHOR"); +var status = vars.get("$field.STATUS"); + + + +//if (author == user and status == active) OR user is of role "academy" allow edit +var cond = ( + ( + KnowledgeUtils.trimAndUp(author) === KnowledgeUtils.trimAndUp(user) + && ( KnowledgeUtils.trimAndUp(status) === KnowledgeUtils.trimAndUp($KeywordRegistry.discussionStatus$acitve().slice(0))) + ) + || + KnowledgeUtils.isAcademy(user) +); + +/* + * ( + author === user + && + status === $KeywordRegistry.discussionStatus$acitve() +); + */ + +result.string(cond); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/iconIdProcess.js b/entity/KnowledgeDiscussion_entity/iconIdProcess.js new file mode 100644 index 00000000000..f86b12ac2a9 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/iconIdProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.ICON")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js new file mode 100644 index 00000000000..b607e1b91ea --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js @@ -0,0 +1,23 @@ +import("system.logging"); +import("KnowledgeManagement_lib"); +import("system.vars"); +import("system.result"); +import("system.neon"); + +var wClosedParam = null; +if(vars.exists("$param.WithClosed_param")) + wClosedParam = vars.get("$param.WithClosed_param"); + +var kId = vars.exists("$param.KnowledgeId_param") && vars.get("$param.KnowledgeId_param"); +var withClosed = vars.exists("$context.showAll") && vars.get("$context.showAll"); + +if(wClosedParam == "true") + withClosed = wClosedParam; + +logging.log(withClosed); + +var idValues = vars.exists("$local.idvalues") && vars.get("$local.idvalues"); + +var discussions = KnowledgeDiscussion.getInstance(kId); +var retData = discussions.buildCompleteTree(KnowledgeDiscussion.getMode(withClosed), idValues).data; +result.object(retData); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onDelete.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onDelete.js new file mode 100644 index 00000000000..8493a27873b --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onDelete.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); + +KnowledgeDiscussion.getInstance(vars.get("$field.KNOWLEDGEMANAGEMENT_ID")) + .deleteDiscussion(vars.get("$local.uid")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onInsert.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onInsert.js new file mode 100644 index 00000000000..350267a4b06 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onInsert.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); + +var parent = vars.exists("$param.ParentId_param") && vars.get("$param.ParentId_param"); + +KnowledgeDiscussion.getInstance(vars.get("$param.KnowledgeId_param")) + .addDiscussion(parent + ,vars.get("$local.rowdata")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onUpdate.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onUpdate.js new file mode 100644 index 00000000000..dbd17c4439f --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onUpdate.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); + +KnowledgeDiscussion.getInstance(vars.get("$field.KNOWLEDGEMANAGEMENT_ID")) + .editDiscussion(vars.get("$local.uid") + , vars.get("$local.rowdata") + , vars.get("$local.changed")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js new file mode 100644 index 00000000000..4f9f77ea5e4 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js @@ -0,0 +1,25 @@ +import("system.logging"); +import("KnowledgeManagement_lib"); +import("system.vars"); +import("system.result"); +import("system.neon"); + + +var wClosedParam = null; +if(vars.exists("$param.WithClosed_param")) + wClosedParam = vars.get("$param.WithClosed_param"); + +var kId = vars.exists("$param.KnowledgeId_param") && vars.get("$param.KnowledgeId_param"); +var withClosed = vars.exists("$context.showAll") && vars.get("$context.showAll"); +if(wClosedParam == "true") + withClosed = wClosedParam; + +var idValues = vars.exists("$local.idvalues") && vars.get("$local.idvalues"); + +if(kId) +{ + var discussions = KnowledgeDiscussion.getInstance(kId); + var retData = discussions.getDatasetCount(KnowledgeDiscussion.getMode(withClosed), idValues); + //logging.log("DATA: " + JSON.stringify([retData,idValues],null,"\t")); + result.object(retData); +} \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod b/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod new file mode 100644 index 00000000000..6ebca6010ae --- /dev/null +++ b/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod @@ -0,0 +1,177 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> + <name>KnowledgeLink_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <title>Verknüpfung</title> + <iconIdProcess>%aditoprj%/entity/KnowledgeLink_entity/iconIdProcess.js</iconIdProcess> + <titlePlural>Verknüpfungen</titlePlural> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>KNOWLEDGELINKID</name> + <usePermissions v="false" /> + </entityField> + <entityField> + <name>ROW_ID</name> + <title>Dataset</title> + <consumer>Objects</consumer> + <linkedContextProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/row_id/linkedContextProcess.js</linkedContextProcess> + <displayValueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/row_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>OBJECT_TYPE</name> + <title>Type</title> + <consumer>Contexts</consumer> + <displayValueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>KNOWLEDGEMANAGEMENT_ID</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/knowledgemanagement_id/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>DATE_NEW</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/date_new/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>DATE_EDIT</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/date_edit/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>USER_NEW</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/user_new/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>USER_EDIT</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/user_edit/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>Contexts</name> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>ActivityLinkable</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>Objects</name> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> + <children> + <entityParameter> + <name>ObjectType_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ContactId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/objects/children/contactid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <expose v="true" /> + </entityParameter> + <entityProvider> + <name>ByKnowledgeId</name> + <targetContextField>OBJECT_TYPE</targetContextField> + <targetIdField>ROW_ID</targetIdField> + <dependencies> + <entityDependency> + <name>c3ed10c1-db55-4e55-9c18-2b8d400df033</name> + <entityName>KnowledgeManagement_entity</entityName> + <fieldName>LinksByKnowledgeId</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + <children> + <entityParameter> + <name>ObjectType_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>RowId_param</name> + <expose v="false" /> + </entityParameter> + </children> + </entityProvider> + <entityProvider> + <name>ByLink</name> + <targetContextField>OBJECT_TYPE</targetContextField> + <targetIdField>ROW_ID</targetIdField> + <children> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <expose v="false" /> + </entityParameter> + </children> + </entityProvider> + <entityParameter> + <name>RowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <conditionProcess>%aditoprj%/entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <linkInformation> + <linkInformation> + <name>aea9524a-589e-47df-87d7-5f79519eb135</name> + <tableName>KNOWLEDGELINK</tableName> + <primaryKey>KNOWLEDGELINKID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>DATE_EDIT.value</name> + <recordfield>KNOWLEDGELINK.DATE_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>KNOWLEDGELINK.DATE_NEW</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>KNOWLEDGELINKID.value</name> + <recordfield>KNOWLEDGELINK.KNOWLEDGELINKID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>KNOWLEDGEMANAGEMENT_ID.value</name> + <recordfield>KNOWLEDGELINK.KNOWLEDGEMANAGEMENT_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OBJECT_TYPE.value</name> + <recordfield>KNOWLEDGELINK.OBJECT_TYPE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ROW_ID.value</name> + <recordfield>KNOWLEDGELINK.ROW_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_EDIT.value</name> + <recordfield>KNOWLEDGELINK.USER_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_NEW.value</name> + <recordfield>KNOWLEDGELINK.USER_NEW</recordfield> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeLink_entity/entityfields/date_edit/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/date_edit/valueProcess.js new file mode 100644 index 00000000000..f9bd2052348 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/date_edit/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.exists("$this.value") && vars.get("$this.value") == null) + result.string(vars.get("$sys.date")); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/date_new/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/date_new/valueProcess.js new file mode 100644 index 00000000000..2fc9c2258e7 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/date_new/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$this.value") && vars.get("$this.value") == null) + result.string(vars.get("$sys.date")); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/knowledgemanagement_id/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/knowledgemanagement_id/valueProcess.js new file mode 100644 index 00000000000..d21371587c7 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/knowledgemanagement_id/valueProcess.js @@ -0,0 +1,13 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +result.string( + ( + vars.exists("$param.KnowledgeManagementId_param") + && vars.get("$this.value") == null + && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW + ) + ? vars.getString("$param.KnowledgeManagementId_param") + : "" +); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/object_type/displayValueProcess.js b/entity/KnowledgeLink_entity/entityfields/object_type/displayValueProcess.js new file mode 100644 index 00000000000..3922264dc37 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/object_type/displayValueProcess.js @@ -0,0 +1,7 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); +import("Context_lib"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.get("$field.OBJECT_TYPE")) + result.string(ContextUtils.getTitle(vars.get("$field.OBJECT_TYPE"))); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/objects/children/contactid_param/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/objects/children/contactid_param/valueProcess.js new file mode 100644 index 00000000000..f781937a2a2 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/objects/children/contactid_param/valueProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); + +var rowId = vars.get("$field.ROW_ID"); + +if(rowId != null && rowId != "") + result.string(rowId); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js new file mode 100644 index 00000000000..03654e9e879 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.OBJECT_TYPE")); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/row_id/displayValueProcess.js b/entity/KnowledgeLink_entity/entityfields/row_id/displayValueProcess.js new file mode 100644 index 00000000000..3dbbcf620a1 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/row_id/displayValueProcess.js @@ -0,0 +1,11 @@ +import("system.neon"); +import("system.vars"); +import("system.db"); +import("system.result"); +import("Context_lib"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.ROW_ID")) { + result.string(""); +} else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { + result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.ROW_ID")))); +} \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/row_id/linkedContextProcess.js b/entity/KnowledgeLink_entity/entityfields/row_id/linkedContextProcess.js new file mode 100644 index 00000000000..d868fe097f2 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/row_id/linkedContextProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("Context_lib"); + +result.string(ContextUtils.getContextName(vars.get("$field.OBJECT_TYPE"))) \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/user_edit/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/user_edit/valueProcess.js new file mode 100644 index 00000000000..d0d7b9894d5 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/user_edit/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.exists("$this.value") && vars.get("$this.value") == null) + result.string(vars.get("$sys.user")); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/user_new/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/user_new/valueProcess.js new file mode 100644 index 00000000000..44409408024 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/user_new/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$this.value") && vars.get("$this.value") == null) + result.string(vars.get("$sys.user")); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/iconIdProcess.js b/entity/KnowledgeLink_entity/iconIdProcess.js new file mode 100644 index 00000000000..07e66a14ebd --- /dev/null +++ b/entity/KnowledgeLink_entity/iconIdProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("Context_lib"); + +result.string("TEXT:" + ContextUtils.getContextName(vars.get("$field.OBJECT_TYPE"))) \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js b/entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 00000000000..3adf64f1274 --- /dev/null +++ b/entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,16 @@ +import("system.vars"); +import("system.result"); + +var id = (vars.exists("$param.KnowledgeManagementId_param")) ? vars.get("$param.KnowledgeManagementId_param") : null; +var localId = (vars.exists("$local.idvalue")) ? vars.get("$local.idvalue") : null; + + +var cond = ""; +cond += (id) ? "KNOWLEDGEMANAGEMENT_ID = '" + id + "'" : ""; +cond += (cond.length && localId) ? " and " : ""; +cond += (localId) ? "KNOWLEDGELINKID = '" + localId + "'" : ""; + +if(cond.length) + result.string(cond); +else + result.string("1=2"); \ No newline at end of file diff --git a/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod b/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod new file mode 100644 index 00000000000..c7b24df7f14 --- /dev/null +++ b/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> + <name>KnowledgeManagementTagList_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <contentTitleProcess>%aditoprj%/entity/KnowledgeManagementTagList_entity/contentTitleProcess.js</contentTitleProcess> + <recordContainer>JDito_TagList</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>UID</name> + </entityField> + <entityField> + <name>NAME</name> + </entityField> + <entityProvider> + <name>CompleteList</name> + <dependencies> + <entityDependency> + <name>85925baa-5edc-4908-804e-f7ec4c5a2a0c</name> + <entityName>KnowledgeManagementTags_entity</entityName> + <fieldName>CompleteTagList</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>JDito_TagList</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/KnowledgeManagementTagList_entity/recordcontainers/jdito_taglist/contentProcess.js</contentProcess> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>NAME.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeManagementTagList_entity/contentTitleProcess.js b/entity/KnowledgeManagementTagList_entity/contentTitleProcess.js new file mode 100644 index 00000000000..28fd67de270 --- /dev/null +++ b/entity/KnowledgeManagementTagList_entity/contentTitleProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.NAME")); \ No newline at end of file diff --git a/entity/KnowledgeManagementTagList_entity/recordcontainers/jdito_taglist/contentProcess.js b/entity/KnowledgeManagementTagList_entity/recordcontainers/jdito_taglist/contentProcess.js new file mode 100644 index 00000000000..65e0462c8e4 --- /dev/null +++ b/entity/KnowledgeManagementTagList_entity/recordcontainers/jdito_taglist/contentProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.logging"); +import("KnowledgeManagement_lib"); +import("system.result"); + +var res = KnowledgeManagementTagsModel.getInstance().getPossibleTags(KnowledgeUtils.getLocalIdValue()).array; + +result.object(res); \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod new file mode 100644 index 00000000000..4e7cf8e9b74 --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> + <name>KnowledgeManagementTags_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>JDito_KnowledgeManagementKeywords</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <expose v="true" /> + </entityParameter> + <entityProvider> + <name>ByKnowledgeManagementId</name> + <dependencies> + <entityDependency> + <name>8d86a61b-0fe3-44c4-a512-e044c990fded</name> + <entityName>KnowledgeManagement_entity</entityName> + <fieldName>TagsByKnowledgeId</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + <children> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <mandatory v="true" /> + </entityParameter> + </children> + </entityProvider> + <entityField> + <name>TAG</name> + <title>Tag</title> + <consumer>CompleteTagList</consumer> + <textInputAllowed v="true" /> + <displayValueProcess>%aditoprj%/entity/KnowledgeManagementTags_entity/entityfields/tag/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityConsumer> + <name>CompleteTagList</name> + <state>EDITABLE</state> + <dependency> + <name>dependency</name> + <entityName>KnowledgeManagementTagList_entity</entityName> + <fieldName>CompleteList</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>ListTitle</name> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/KnowledgeManagementTags_entity/entityfields/listtitle/valueProcess.js</valueProcess> + </entityField> + <entityActionField> + <name>ActionField1</name> + <title>a1</title> + </entityActionField> + <entityActionField> + <name>ActionField2</name> + <title>a2</title> + </entityActionField> + <entityActionField> + <name>ActionField3</name> + <title>a3</title> + </entityActionField> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>JDito_KnowledgeManagementKeywords</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onInsert.js</onInsert> + <onUpdate>%aditoprj%/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onUpdate.js</onUpdate> + <onDelete>%aditoprj%/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onDelete.js</onDelete> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>TAG.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>TAG.displayValue</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeManagementTags_entity/entityfields/listtitle/valueProcess.js b/entity/KnowledgeManagementTags_entity/entityfields/listtitle/valueProcess.js new file mode 100644 index 00000000000..2c6c244e954 --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/entityfields/listtitle/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("Tag:"); \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/entityfields/tag/displayValueProcess.js b/entity/KnowledgeManagementTags_entity/entityfields/tag/displayValueProcess.js new file mode 100644 index 00000000000..674ac1a4a17 --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/entityfields/tag/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("Sql_lib"); + +result.string(new SqlBuilder().select("TAG").from("KNOWLEDGETAG").where("KNOWLEDGETAGID = '" + vars.get("$field.TAG") + "'").cell()); \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/contentProcess.js b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/contentProcess.js new file mode 100644 index 00000000000..d48540b541b --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/contentProcess.js @@ -0,0 +1,12 @@ +import("system.vars"); +import("system.result"); +import("system.db"); +import("KnowledgeManagement_lib"); +import("system.text"); +import("system.net"); + +var idValue = vars.exists("$local.idvalues") && vars.get("$local.idvalues"); + +result.object(KnowledgeManagementTagsModel.getInstance() + .collectTags(vars.get("$param.KnowledgeManagementId_param"), idValue) + .data); \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onDelete.js b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onDelete.js new file mode 100644 index 00000000000..8d94951f966 --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onDelete.js @@ -0,0 +1,8 @@ +import("system.logging"); +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); + +KnowledgeManagementTagsController + .getInstance(vars.get("$param.KnowledgeManagementId_param")) + .deleteTag(vars.get("$local.uid"), vars.get("$local.rowdata")) \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onInsert.js b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onInsert.js new file mode 100644 index 00000000000..410d6308daf --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onInsert.js @@ -0,0 +1,17 @@ +import("system.db"); +import("system.neon"); +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); +//You have to access this object in Array notation, cause the Keys are like "FIELD.value", +//if you do variable.FIELD.value, you get an error "Cannot find property value of undefined" +//Because FIELD doesn't exist within the object, but "FIELD.value" does... +var rowData = vars.get("$local.rowdata"); + +//UID of this entity is being used for the attribute relation +var attrRelationId = vars.get("$local.uid"); +var knowledgeId = vars.get("$param.KnowledgeManagementId_param"); + +KnowledgeManagementTagsController + .getInstance(knowledgeId) + .addTag(attrRelationId, rowData); \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onUpdate.js b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onUpdate.js new file mode 100644 index 00000000000..e60c40d6f32 --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onUpdate.js @@ -0,0 +1,13 @@ +import("system.db"); +import("KnowledgeManagement_lib"); +import("system.logging"); +import("system.vars"); +import("system.result"); +import("Sql_lib"); + +var data = vars.get("$local.rowdata"); +var knowledgeId = vars.get("$param.KnowledgeManagementId_param"); + +KnowledgeManagementTagsController + .getInstance(knowledgeId) + .editTag(data["UID.value"], data); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod new file mode 100644 index 00000000000..2f6b2699aa9 --- /dev/null +++ b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod @@ -0,0 +1,499 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> + <name>KnowledgeManagement_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:ACADEMY_CAP</icon> + <title>Knowledge</title> + <grantUpdateProcess>%aditoprj%/entity/KnowledgeManagement_entity/grantUpdateProcess.js</grantUpdateProcess> + <grantDeleteProcess>%aditoprj%/entity/KnowledgeManagement_entity/grantDeleteProcess.js</grantDeleteProcess> + <contentTitleProcess>%aditoprj%/entity/KnowledgeManagement_entity/contentTitleProcess.js</contentTitleProcess> + <afterOperatingState>%aditoprj%/entity/KnowledgeManagement_entity/afterOperatingState.js</afterOperatingState> + <useFavorites v="true" /> + <iconIdProcess>%aditoprj%/entity/KnowledgeManagement_entity/iconIdProcess.js</iconIdProcess> + <usePermissions v="true" /> + <titlePlural>Knowledge entries</titlePlural> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>KNOWLEDGEMANAGEMENTID</name> + </entityField> + <entityField> + <name>TITLE</name> + <title>Title</title> + <mandatory v="true" /> + </entityField> + <entityField> + <name>CONTENT</name> + <title>Content</title> + <contentType>HTML</contentType> + <outputFormat></outputFormat> + <mandatory v="true" /> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> + </entityField> + <entityField> + <name>CONTENTDECODED</name> + <title>Text content</title> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/contentdecoded/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>AUTHOR_CONTACT_ID</name> + <title>Author</title> + <consumer>PersonContacts</consumer> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>DATE_NEW</name> + <title>Created on</title> + <contentType>DATE</contentType> + <resolution>SECOND</resolution> + <outputFormat>dd.MM.yyyy HH:mm</outputFormat> + <inputFormat>dd.MM.yyyy HH:mm</inputFormat> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/date_new/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>DATE_EDIT</name> + <title>Edited on</title> + <contentType>DATE</contentType> + <resolution>SECOND</resolution> + <outputFormat>dd.MM.yyyy HH:mm</outputFormat> + <inputFormat>dd.MM.yyyy HH:mm</inputFormat> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/date_edit/valueProcess.js</valueProcess> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> + </entityField> + <entityField> + <name>USER_NEW</name> + <title>Created by</title> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/user_new/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>USER_EDIT</name> + <title>Edited by</title> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/user_edit/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>TYPE</name> + <title>Type</title> + <consumer>KeywordKnowledgeType</consumer> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/type/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>htmlView</name> + <title>Content</title> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/htmlview/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>TagsByKnowledgeId</name> + <refreshParent v="true" /> + <state>EDITABLE</state> + <dependency> + <name>dependency</name> + <entityName>KnowledgeManagementTags_entity</entityName> + <fieldName>ByKnowledgeManagementId</fieldName> + </dependency> + <children> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>DiscussionsByKnowledgeId</name> + <refreshParent v="true" /> + <dependency> + <name>dependency</name> + <entityName>KnowledgeDiscussion_entity</entityName> + <fieldName>ByKnowledgeId</fieldName> + </dependency> + <children> + <entityParameter> + <name>KnowledgeId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/discussionsbyknowledgeid/children/knowledgeid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityProvider> + <name>Provider</name> + </entityProvider> + <entityConsumer> + <name>PersonContacts</name> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>Contacts</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordKnowledgeType</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/keywordknowledgetype/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>KeywordPublish</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/keywordpublish/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>indexTag</name> + </entityField> + <entityConsumer> + <name>LinkedDocuments</name> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> + <children> + <entityParameter> + <name>AssignmentTable_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmenttable_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>AssignmentRowId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmentrowid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityActionField> + <name>openEntryAsMail</name> + <title>send as mail</title> + <onActionProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/openentryasmail/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isSelectionAction v="true" /> + <state>INVISIBLE</state> + </entityActionField> + <entityConsumer> + <name>LinksByKnowledgeId</name> + <refreshParent v="true" /> + <dependency> + <name>dependency</name> + <entityName>KnowledgeLink_entity</entityName> + <fieldName>ByKnowledgeId</fieldName> + </dependency> + <children> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linksbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>LastChange</name> + <title>Last change</title> + <contentType>DATE</contentType> + </entityField> + <entityConsumer> + <name>LogHistories</name> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> + <children> + <entityParameter> + <name>tablenames_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityActionField> + <name>exportHTML_action</name> + <title>Export HTML</title> + <onActionProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/exporthtml_action/onActionProcess.js</onActionProcess> + <iconId>NEON:EXPORT</iconId> + <tooltip>Exports the knowledge entry as a html file</tooltip> + </entityActionField> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityField> + <name>KNOWLEDGEMANAGEMENT_OBJECTTYPE</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgemanagement_objecttype/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>binaryContents</name> + <contentType>FILE</contentType> + </entityField> + <entityField> + <name>isNewsMark</name> + <title>News</title> + <contentType>BOOLEAN</contentType> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/isnewsmark/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>notificationMark</name> + <title>Notification</title> + <description>Oh Hi Mark</description> + <contentType>BOOLEAN</contentType> + <stateProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/notificationmark/stateProcess.js</stateProcess> + </entityField> + <entityParameter> + <name>isDashlet_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>KnowledgeRoles</name> + <stateProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/stateProcess.js</stateProcess> + <onValidation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/onValidation.js</onValidation> + <dependency> + <name>dependency</name> + <entityName>KnowledgeRole_entity</entityName> + <fieldName>KnowledgeRole</fieldName> + </dependency> + <children> + <entityParameter> + <name>KnowledgeManagement_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/knowledgemanagement_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>PublishLevelRoles_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/publishlevelroles_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>Tasks</name> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> + <children> + <entityParameter> + <name>ObjectId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>RowId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>PresetLinks_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>RESPONSIBLE_CONTACT_ID</name> + <title>Responsible</title> + <consumer>PersonContacts</consumer> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>PUBLISH</name> + <title>Publishing level</title> + <consumer>KeywordPublish</consumer> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/publish/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/publish/displayValueProcess.js</displayValueProcess> + </entityField> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <isRequireContainerFiltering v="true" /> + <conditionProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <orderClauseProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> + <onDBInsert>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/onDBInsert.js</onDBInsert> + <onDBUpdate>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> + <linkInformation> + <linkInformation> + <name>9d4a7198-a4d1-45b3-867f-bf12cd558274</name> + <tableName>KNOWLEDGEMANAGEMENT</tableName> + <primaryKey>KNOWLEDGEMANAGEMENTID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>AUTHOR_CONTACT_ID.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.AUTHOR_CONTACT_ID</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTENT.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.CONTENT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTENTDECODED.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.CONTENTDECODED</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_EDIT.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.DATE_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.DATE_NEW</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>KNOWLEDGEMANAGEMENTID.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>TITLE.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.TITLE</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>TYPE.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.TYPE</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_EDIT.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.USER_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_NEW.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.USER_NEW</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>AUTHOR_CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/author_contact_id.displayvalue/expression.js</expression> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>LastChange.value</name> + <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/lastchange.value/expression.js</expression> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>TYPE.displayValue</name> + <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <consumerMapping> + <name>KnowledgeRoles</name> + <filterConditionProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgeroles/filterConditionProcess.js</filterConditionProcess> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + <filtertype>BASIC</filtertype> + </consumerMapping> + <dbRecordFieldMapping> + <name>RESPONSIBLE_CONTACT_ID.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.RESPONSIBLE_CONTACT_ID</recordfield> + <columnAlias></columnAlias> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>RESPONSIBLE_CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js</expression> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PUBLISH.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.PUBLISH</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PUBLISH.displayValue</name> + <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/publish.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + </recordFieldMappings> + <filterExtensions> + <filterExtension> + <name>TagFilter</name> + <title>Tag</title> + <contentType>TEXT</contentType> + <filterValuesProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterValuesProcess.js</filterValuesProcess> + <filterConditionProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js</filterConditionProcess> + <filtertype>BASIC</filtertype> + </filterExtension> + </filterExtensions> + </dbRecordContainer> + <indexRecordContainer> + <name>indexSearchKnowledgebase</name> + <configMode>INDEXGROUP_DEFINITION</configMode> + <patternExtensionProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/patternExtensionProcess.js</patternExtensionProcess> + <indexRecordAlias>Data_alias</indexRecordAlias> + <query>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js</query> + <subProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/subProcess.js</subProcess> + <affectedTables> + <element>KNOWLEDGEMANAGEMENT</element> + <element>KNOWLEDGETAGLINK</element> + </affectedTables> + <affectedIds>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/affectedIds.js</affectedIds> + <title>Knowledgebase</title> + <indexFieldMappings> + <indexRecordSystemFieldMapping> + <name>#UID</name> + </indexRecordSystemFieldMapping> + <indexRecordMultilingualSystemFieldMapping> + <name>#TITLE</name> + </indexRecordMultilingualSystemFieldMapping> + <indexRecordMultilingualSystemFieldMapping> + <name>#DESCRIPTION</name> + </indexRecordMultilingualSystemFieldMapping> + <indexRecordFieldMapping> + <name>KNOWLEDGEMANAGEMENTID.value</name> + <systemField>UID</systemField> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>TITLE.value</name> + <indexFieldType>TEXT</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTENTDECODED.value</name> + <indexFieldType>TEXT</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>indexTag.value</name> + </indexRecordFieldMapping> + <indexRecordSystemFieldMapping> + <name>#SUB_GROUP</name> + </indexRecordSystemFieldMapping> + <indexRecordFieldMapping> + <name>binaryContents.value</name> + <isStored v="false" /> + <isMultiValued v="true" /> + </indexRecordFieldMapping> + </indexFieldMappings> + </indexRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeManagement_entity/afterOperatingState.js b/entity/KnowledgeManagement_entity/afterOperatingState.js new file mode 100644 index 00000000000..e94e7d52721 --- /dev/null +++ b/entity/KnowledgeManagement_entity/afterOperatingState.js @@ -0,0 +1,52 @@ +import("Util_lib"); +import("system.tools"); +import("system.neon"); +import("system.entities"); +import("NewsSystem_lib"); +import("system.vars"); + +if(vars.exists("$field.isNewsMark") && Utils.toBoolean(vars.get("$field.isNewsMark"))) +{ + if(vars.exists("$context.setNotificationMark") + && vars.get("$context.setNotificationMark")) + { + var roles = []; + + /* + * We need a solution for the following problem: + * we need every child role of a parent Role like PROJECT_ADITO because nobody has PROJECT_ADITO but the rest is a child of the parent. + * Maybe a tools. method to get them. Currently I don't know how it translates to the prod system. + * Testing locally works. + */ + + + + var config = entities.createConfigForLoadingConsumerRows() + .consumer("KnowledgeRoles") + .fields(["ROLES"]); + + var roleData = entities.getRows(config); //get the rows of the consumer + + if(roleData) + { + roles = roleData.map(function(row) //check each role of this object and push it into an array + { + return row["ROLES"]; + }); + } + + var users = NewsSystem.getUsersWithRoles(roles); //get users with the given role(s) + + var content = vars.get("$field.CONTENTDECODED"); + if (content.length > 72) + content = content.substring(0, 69) + " ..."; + if(users.length > 0) + NewsSystem.createNewsNotification(content //create notification + ,vars.get("$field.TITLE") + ,users + ,vars.get("$field.KNOWLEDGEMANAGEMENTID") + ); + } + + vars.set("$context.setNotificationMark", false); //set it 'false' so that it doesn't trigger again if it shouldn't +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/contentTitleProcess.js b/entity/KnowledgeManagement_entity/contentTitleProcess.js new file mode 100644 index 00000000000..e3e512ab73c --- /dev/null +++ b/entity/KnowledgeManagement_entity/contentTitleProcess.js @@ -0,0 +1,3 @@ +import("system.result"); +import("system.vars"); +result.string(vars.get("$field.TITLE")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js b/entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js new file mode 100644 index 00000000000..0929d5fdbe0 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js @@ -0,0 +1,10 @@ +import("Sql_lib"); +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value")) + result.query("select " + new SqlMaskingUtils().concat(["PERSON.FIRSTNAME","PERSON.LASTNAME"], " ", true) + +" from PERSON " + +" join CONTACT on PERSON.PERSONID = CONTACT.PERSON_ID " + +" where CONTACT.CONTACTID = '" + vars.get("$this.value") + "'"); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js new file mode 100644 index 00000000000..48206583bee --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("system.tools"); + +if(vars.exists("$this.value") && vars.get("$this.value") == null) +{ + result.string(tools.getUser(vars.get("$sys.user"))[tools.PARAMS][tools.CONTACTID]); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/contentdecoded/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/contentdecoded/valueProcess.js new file mode 100644 index 00000000000..818f75bf6ec --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/contentdecoded/valueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("system.text"); + +result.string(text.html2text(vars.get("$field.CONTENT"))); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/date_edit/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/date_edit/valueProcess.js new file mode 100644 index 00000000000..6942583568e --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/date_edit/valueProcess.js @@ -0,0 +1,12 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); +import("system.datetime"); + +//if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) +//{ +// result.string(datetime.date()); +//} + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) + result.string(vars.get("$sys.date")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/date_new/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/date_new/valueProcess.js new file mode 100644 index 00000000000..6f4ffab7ba7 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/date_new/valueProcess.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); +import("system.datetime"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.DATE_NEW")) +{ + result.string(datetime.date()); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/discussionsbyknowledgeid/children/knowledgeid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/discussionsbyknowledgeid/children/knowledgeid_param/valueProcess.js new file mode 100644 index 00000000000..78c1da18583 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/discussionsbyknowledgeid/children/knowledgeid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/exporthtml_action/onActionProcess.js b/entity/KnowledgeManagement_entity/entityfields/exporthtml_action/onActionProcess.js new file mode 100644 index 00000000000..942f98b2ed4 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/exporthtml_action/onActionProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.neon"); +import("system.util"); + +neon.download(util.encodeBase64String(vars.get("$field.htmlView")), vars.get("$field.TITLE").replace(/\s/gi,"_") + ".html"); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/htmlview/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/htmlview/valueProcess.js new file mode 100644 index 00000000000..245543678a5 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/htmlview/valueProcess.js @@ -0,0 +1,12 @@ +import("KnowledgeManagement_lib"); +import("Html_lib"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); +import("system.vars"); +import("system.result"); + +var ret = KnowledgeManagementModel.getInstance(vars.getString("$field.CONTENT"), vars.get("$field.KNOWLEDGEMANAGEMENTID")) + .style(KeywordUtils.getAttributeRelation(vars.get("$field.TYPE"), $KeywordRegistry.knowledgeType(), "contentCssStylesheet")) + .replaceAditoLinks().buildHTML(); + +result.string(ret); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/isnewsmark/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/isnewsmark/valueProcess.js new file mode 100644 index 00000000000..a7273ea0f5d --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/isnewsmark/valueProcess.js @@ -0,0 +1,35 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); +import("Sql_lib"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && !vars.getString("$this.value")) +{ +// var config = entities.createConfigForLoadingConsumerRows() +// .consumer("TagsByKnowledgeId") +// .fields(["TAG"]) +// +// var entityData = entities.getRows(config); + var knowledgeId = vars.get("$field.KNOWLEDGEMANAGEMENTID"); + + var isTagSet = newSelect("'1'") + .from("KNOWLEDGETAGLINK") + .join("KNOWLEDGETAG on KNOWLEDGETAG.KNOWLEDGETAGID = KNOWLEDGETAGLINK.KNOWLEDGETAG_ID") + .where("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID = '" + knowledgeId + "'") + .and("KNOWLEDGETAG.TAG = 'News'") + .cell(); + + +// if(entityData) +// { +// entityData.map(function(row) +// { +// if(row["TAG.displayValue"] == "News") +// { +// isTagSet = 1; +// return; +// } +// }); +// } + result.string(isTagSet ? 1 : 0); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/keywordknowledgetype/children/containername_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/keywordknowledgetype/children/containername_param/valueProcess.js new file mode 100644 index 00000000000..777264ed660 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/keywordknowledgetype/children/containername_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("KeywordRegistry_basic"); + +result.string($KeywordRegistry.knowledgeType()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/keywordpublish/children/containername_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/keywordpublish/children/containername_param/valueProcess.js new file mode 100644 index 00000000000..ecc5b27a744 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/keywordpublish/children/containername_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("KeywordRegistry_basic"); + +result.string($KeywordRegistry.knowledgePublishLevel()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgemanagement_objecttype/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagement_objecttype/valueProcess.js new file mode 100644 index 00000000000..c437e7b5c35 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagement_objecttype/valueProcess.js @@ -0,0 +1,2 @@ +import("system.result"); +result.string("KnowledgeManagement"); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/knowledgemanagement_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/knowledgemanagement_param/valueProcess.js new file mode 100644 index 00000000000..78c1da18583 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/knowledgemanagement_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/publishlevelroles_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/publishlevelroles_param/valueProcess.js new file mode 100644 index 00000000000..08d815d9cd5 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/publishlevelroles_param/valueProcess.js @@ -0,0 +1,28 @@ +import("KeywordRegistry_basic"); +import("system.vars"); +import("system.result"); + +//return a one dimensional array for the excluded roles from the publish level +//$KeywordRegistry.knowledgePublishLevel$internal() + +var level = vars.get("$field.PUBLISH"); + +var res = _getExcludedRoles() + +result.object(res); + + +function _getExcludedRoles() +{ + switch (level) + { + case $KeywordRegistry.knowledgePublishLevel$internal(): + return ["PROJECT_Partner", "PROJECT_Subcontractor", "PROJECT_ExternMitarbeiter"]; + case $KeywordRegistry.knowledgePublishLevel$partner(): + return ["PROJECT_ExternMitarbeiter"]; + case $KeywordRegistry.knowledgePublishLevel$public(): + return [""]; + default: + return ["PROJECT_Partner", "PROJECT_Subcontractor", "PROJECT_ExternMitarbeiter"]; + } +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/onValidation.js b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/onValidation.js new file mode 100644 index 00000000000..d9426aaf288 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/onValidation.js @@ -0,0 +1,15 @@ +import("system.translate"); +import("Util_lib"); +import("system.result"); +import("system.logging"); +import("system.vars"); +import("Entity_lib"); + +vars.get("$field.KnowledgeRoles.insertedRows"); +vars.get("$field.KnowledgeRoles.changedRows"); +vars.get("$field.KnowledgeRoles.deletedRows"); + +var data = EntityConsumerRowsHelper.getCurrentConsumerRows("KnowledgeRoles", ["ROLES"]) + +if(Utils.toBoolean(vars.get("$field.isNewsMark")) && data[0].ROLES == "" ) + result.string(translate.text("No role(s) selected")) \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/stateProcess.js b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/stateProcess.js new file mode 100644 index 00000000000..8a02cf00398 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/stateProcess.js @@ -0,0 +1,11 @@ +import("Util_lib"); +import("system.vars"); +import("system.result"); +import("system.neon"); + +//make invisible if no news +if(!Utils.toBoolean(vars.get("$field.isNewsMark"))) + result.string(neon.COMPONENTSTATE_INVISIBLE); +else + result.string(neon.COMPONENTSTATE_EDITABLE); + diff --git a/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmentrowid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmentrowid_param/valueProcess.js new file mode 100644 index 00000000000..78c1da18583 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmentrowid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmenttable_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmenttable_param/valueProcess.js new file mode 100644 index 00000000000..3057b0f452d --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmenttable_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("KNOWLEDGEMANAGEMENT"); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/linksbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/linksbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js new file mode 100644 index 00000000000..78c1da18583 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/linksbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js new file mode 100644 index 00000000000..d31541c503b --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); + +var res = []; +res.push({id: vars.get("$field.KNOWLEDGEMANAGEMENTID"), tableNames: ["KNOWLEDGEMANAGEMENT","AB_ATTRIBUTERELATION","KNOWLEDGEDISCUSSION"]}); + +res = JSON.stringify(res);//currently only strings can be passed as param +result.object(res); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/notificationmark/stateProcess.js b/entity/KnowledgeManagement_entity/entityfields/notificationmark/stateProcess.js new file mode 100644 index 00000000000..1c027a16a26 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/notificationmark/stateProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); +//make invisible if no news +if(vars.get("$field.isNewsMark") == false) + result.string(neon.COMPONENTSTATE_INVISIBLE); +else + result.string(neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/openentryasmail/onActionProcess.js b/entity/KnowledgeManagement_entity/entityfields/openentryasmail/onActionProcess.js new file mode 100644 index 00000000000..069f4e90fe0 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/openentryasmail/onActionProcess.js @@ -0,0 +1,10 @@ +import("system.tools"); +import("Email_lib"); +import("system.vars"); +import("system.result"); + +var toSend = new Email(vars.get("$field.CONTENT")); + +toSend.setSender(tools.getUser(vars.get("$sys.user"))[tools.PARAMS][tools.CONTACTID]); +toSend.subject = "Wissen: " + vars.get("$field.TITLE"); +toSend.openMail(); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/publish/displayValueProcess.js b/entity/KnowledgeManagement_entity/entityfields/publish/displayValueProcess.js new file mode 100644 index 00000000000..f3b04d35862 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/publish/displayValueProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); +import("Keyword_lib"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(KeywordUtils.getViewValue("KnowledgePublishLevel", vars.get("$this.value"))); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/publish/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/publish/valueProcess.js new file mode 100644 index 00000000000..3ee4bee4554 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/publish/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("KeywordRegistry_basic"); + +if(vars.get("$this.value") == null) +{ + result.string($KeywordRegistry.knowledgePublishLevel$internal()); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js b/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js new file mode 100644 index 00000000000..7ffc6898e2e --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js @@ -0,0 +1,12 @@ +import("Sql_lib"); +import("system.neon"); +import("system.vars"); +import("system.result"); + +var x = 0; + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value")) + result.query("select " + new SqlMaskingUtils().concat(["PERSON.FIRSTNAME","PERSON.LASTNAME"], " ", true) + +" from PERSON " + +" join CONTACT on PERSON.PERSONID = CONTACT.PERSON_ID " + +" where CONTACT.CONTACTID = '" + vars.get("$this.value") + "'"); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js new file mode 100644 index 00000000000..48206583bee --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("system.tools"); + +if(vars.exists("$this.value") && vars.get("$this.value") == null) +{ + result.string(tools.getUser(vars.get("$sys.user"))[tools.PARAMS][tools.CONTACTID]); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js new file mode 100644 index 00000000000..78c1da18583 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/tasks/children/objectid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/tasks/children/objectid_param/valueProcess.js new file mode 100644 index 00000000000..cc6924394ae --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/tasks/children/objectid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("Context_lib"); +import("system.result"); + +result.string(ContextUtils.getCurrentContextId()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js new file mode 100644 index 00000000000..a540967e165 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js @@ -0,0 +1,5 @@ +import("Context_lib"); +import("system.result"); +import("system.vars"); + +result.object([[ContextUtils.getCurrentContextId(),vars.get("$field.KNOWLEDGEMANAGEMENTID")]]); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/tasks/children/rowid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/tasks/children/rowid_param/valueProcess.js new file mode 100644 index 00000000000..78c1da18583 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/tasks/children/rowid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/type/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/type/valueProcess.js new file mode 100644 index 00000000000..534409e0c3a --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/type/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("KeywordRegistry_basic"); + +if(vars.get("$this.value") == null) +{ + result.string($KeywordRegistry.knowledgeType$knowledgeBase()); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/user_edit/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/user_edit/valueProcess.js new file mode 100644 index 00000000000..101f9115ca7 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/user_edit/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) +{ + result.string(vars.get("$sys.user")); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/user_new/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/user_new/valueProcess.js new file mode 100644 index 00000000000..6dbbcb8ffdc --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/user_new/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.USER_NEW")) +{ + result.string(vars.get("$sys.user")); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/grantDeleteProcess.js b/entity/KnowledgeManagement_entity/grantDeleteProcess.js new file mode 100644 index 00000000000..b91bca7d674 --- /dev/null +++ b/entity/KnowledgeManagement_entity/grantDeleteProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("KeywordRegistry_basic"); +import("system.vars"); + +var type = vars.getString("$field.TYPE"); + +var ret = (type != $KeywordRegistry.knowledgeType$editorial()); + +result.string(ret); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/grantUpdateProcess.js b/entity/KnowledgeManagement_entity/grantUpdateProcess.js new file mode 100644 index 00000000000..b91bca7d674 --- /dev/null +++ b/entity/KnowledgeManagement_entity/grantUpdateProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("KeywordRegistry_basic"); +import("system.vars"); + +var type = vars.getString("$field.TYPE"); + +var ret = (type != $KeywordRegistry.knowledgeType$editorial()); + +result.string(ret); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/iconIdProcess.js b/entity/KnowledgeManagement_entity/iconIdProcess.js new file mode 100644 index 00000000000..385d0165847 --- /dev/null +++ b/entity/KnowledgeManagement_entity/iconIdProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); + +var type = vars.get("$field.TYPE.displayValue"); + +result.string("TEXT:" + type); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 00000000000..8f2514f13ee --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,32 @@ +import("system.logging"); +import("AttributeRegistry_basic"); +import("Sql_lib"); +import("system.vars"); +import("system.tools"); +import("system.result"); + +//var cond = ["knowledgemanagement.TYPE != '3'"] +//if(tools.hasRole(vars.get("$sys.user"), "PROJECT_Support")) +// cond.push("knowledgemanagement.PUBLISH in ('2','3')"); + +var cond = []; + +if(vars.exists("$param.isDashlet_param") && vars.get("$param.isDashlet_param")) //check if the parameter exists and is filled +{ + var userRoles = tools.getRoles(vars.get("$sys.user")); //get all Roles from the current User + var res = newWhere(null //create a new condition where we check if any data sets exists with the given parameters + ,newSelect("KNOWLEDGEROLES.ROLENAME") //create a subselect for all data sets with the current user roles + .from("KNOWLEDGEROLES") + .where("KNOWLEDGEROLES.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID") + .and("KNOWLEDGEROLES.ROLENAME", userRoles, SqlBuilder.IN()), SqlBuilder.EXISTS()) + .and(null + ,newSelect("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID") + .from("KNOWLEDGETAGLINK") + .where("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID") + .and("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", "1f035a33-e5a3-48e4-bda6-6d8b320177e4"), SqlBuilder.EXISTS()) + .build(); + + cond.push(SqlUtils.translateConditionWithQuotes(res)); //db RecordContainer can't use preparedStatements +} + +result.string(cond.join(" and ")) \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js new file mode 100644 index 00000000000..4c0d2b4fae7 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js @@ -0,0 +1,44 @@ +import("system.result"); +import("system.vars"); + +var op = vars.get("$local.comparison"); +var val = vars.get("$local.rawvalue"); + +var condition = ""; + +switch(op) +{ + case "EQUAL": + condition = " KNOWLEDGEMANAGEMENTID in " + + " (select KNOWLEDGEMANAGEMENT_ID " + + " from KNOWLEDGETAGLINK " + + " where KNOWLEDGETAG_ID = '" + val + "')"; + break; + + case "NOT_EQUAL": + condition = " KNOWLEDGEMANAGEMENTID not in " + + " (select KNOWLEDGEMANAGEMENT_ID " + + " from KNOWLEDGETAGLINK " + + " where KNOWLEDGETAG_ID = '" + val + "')"; + break; + + case "ISNULL": + condition = " not exists " + + " (select KNOWLEDGEMANAGEMENT_ID " + + " from KNOWLEDGETAGLINK " + + " where KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID)"; + break; + + case "ISNOTNULL": + condition = " exists " + + " (select KNOWLEDGEMANAGEMENT_ID " + + " from KNOWLEDGETAGLINK " + + " where KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID)"; + break; + + default: + condition = " 1 = 2 "; +} + + +result.string(condition); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterValuesProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterValuesProcess.js new file mode 100644 index 00000000000..5ed258348a7 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterValuesProcess.js @@ -0,0 +1,6 @@ +import("system.db"); +import("system.result"); + +result.object( + db.table("select distinct KNOWLEDGETAGID, TAG from KNOWLEDGETAG order by TAG") +); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/onDBInsert.js b/entity/KnowledgeManagement_entity/recordcontainers/db/onDBInsert.js new file mode 100644 index 00000000000..091635be044 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/onDBInsert.js @@ -0,0 +1,17 @@ +import("system.neon"); +import("system.vars"); +import("NewsSystem_lib"); +import("Util_lib"); + +var bool = Utils.toBoolean; //Alias Utils.toBoolean to bool for easier reading + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW + && vars.exists("$field.isNewsMark") + && bool(vars.get("$field.isNewsMark"))) +{ + NewsSystem.setAsNews( + vars.get("$field.KNOWLEDGEMANAGEMENTID") + , bool(vars.get("$field.notificationMark")) + , bool(vars.get("$field.isNewsMark")) + ); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/onDBUpdate.js b/entity/KnowledgeManagement_entity/recordcontainers/db/onDBUpdate.js new file mode 100644 index 00000000000..091635be044 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/onDBUpdate.js @@ -0,0 +1,17 @@ +import("system.neon"); +import("system.vars"); +import("NewsSystem_lib"); +import("Util_lib"); + +var bool = Utils.toBoolean; //Alias Utils.toBoolean to bool for easier reading + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW + && vars.exists("$field.isNewsMark") + && bool(vars.get("$field.isNewsMark"))) +{ + NewsSystem.setAsNews( + vars.get("$field.KNOWLEDGEMANAGEMENTID") + , bool(vars.get("$field.notificationMark")) + , bool(vars.get("$field.isNewsMark")) + ); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js new file mode 100644 index 00000000000..937b8f6eee3 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js @@ -0,0 +1,6 @@ +import("system.db"); +import("system.result"); + +result.object({ + "COALESCE(KNOWLEDGEMANAGEMENT.DATE_EDIT, KNOWLEDGEMANAGEMENT.DATE_NEW)": db.DESCENDING +}) \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/author_contact_id.displayvalue/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/author_contact_id.displayvalue/expression.js new file mode 100644 index 00000000000..3c7655ed448 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/author_contact_id.displayvalue/expression.js @@ -0,0 +1,7 @@ +import("system.result"); +import("Sql_lib"); + +result.string("select " + new SqlMaskingUtils().concat(["PERSON.FIRSTNAME","PERSON.LASTNAME"], " ", true) + +" from PERSON " + +" join CONTACT on PERSON.PERSONID = CONTACT.PERSON_ID " + +" where CONTACT.CONTACTID = KNOWLEDGEMANAGEMENT.AUTHOR_CONTACT_ID"); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgeroles/filterConditionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgeroles/filterConditionProcess.js new file mode 100644 index 00000000000..75a22c1e5af --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgeroles/filterConditionProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string("KNOWLEDGEMANAGEMENTID in (select KNOWLEDGEROLES.KNOWLEDGEMANAGEMENT_ID from KNOWLEDGEROLES where " + vars.get("$local.condition") + " )"); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/lastchange.value/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/lastchange.value/expression.js new file mode 100644 index 00000000000..c62b1991496 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/lastchange.value/expression.js @@ -0,0 +1,6 @@ +import("system.result"); +import("Sql_lib"); + +var maskUtil = new SqlMaskingUtils(); + +result.string( maskUtil.coalesce(["DATE_EDIT","DATE_NEW"]) ); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/publish.displayvalue/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/publish.displayvalue/expression.js new file mode 100644 index 00000000000..caefc84ff51 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/publish.displayvalue/expression.js @@ -0,0 +1,4 @@ +import("Keyword_lib"); +import("system.result"); + +result.string(KeywordUtils.getResolvedTitleSqlPart("KnowledgePublishLevel", "knowledgemanagement.PUBLISH")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js new file mode 100644 index 00000000000..d56b5495f60 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js @@ -0,0 +1,7 @@ +import("system.result"); +import("Sql_lib"); + +result.string("select " + new SqlMaskingUtils().concat(["PERSON.FIRSTNAME","PERSON.LASTNAME"], " ", true) + +" from PERSON " + +" join CONTACT on PERSON.PERSONID = CONTACT.PERSON_ID " + +" where CONTACT.CONTACTID = KNOWLEDGEMANAGEMENT.RESPONSIBLE_CONTACT_ID"); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js new file mode 100644 index 00000000000..3f4fde9ce6d --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js @@ -0,0 +1,4 @@ +import("Keyword_lib"); +import("system.result"); + +result.string(KeywordUtils.getResolvedTitleSqlPart("KnowledgeType", "knowledgemanagement.TYPE")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/affectedIds.js b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/affectedIds.js new file mode 100644 index 00000000000..0a323b07c09 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/affectedIds.js @@ -0,0 +1,25 @@ +import("system.db"); +import("system.result"); +import("system.vars"); +import("IndexSearch_lib"); +import("Sql_lib"); + +var infoContainer, onUpdFn, tableName, res; + +tableName = vars.get("$local.table"); +idValue = vars.get("$local.idvalue"); + +switch (tableName) +{ + case "KNOWLEDGEMANAGEMENT": + res = [idValue]; + break; + case "KNOWLEDGETAGLINK": + res = db.array(db.COLUMN, "select KNOWLEDGEMANAGEMENT_ID from KNOWLEDGETAGLINK where KNOWLEDGETAGLINKID = '" + idValue + "'"); + break; +} + +if (res) { + result.object(res); +} + \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/patternExtensionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/patternExtensionProcess.js new file mode 100644 index 00000000000..ad39e57e9cd --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/patternExtensionProcess.js @@ -0,0 +1,11 @@ +import("system.logging"); +import("system.result"); +import("system.db"); +import("system.vars"); +import("system.tools"); + +if(tools.hasRole(vars.get("$sys.user"), "PROJECT_Support")) +{ + var filter = "( +_index_group_:KNOWLEDGE_KNOWLEDGEBASE + ( (publish_value: 2)) ) OR ( -_index_group_:KNOWLEDGE_KNOWLEDGEBASE )"; + result.string(filter) +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js new file mode 100644 index 00000000000..d35d47bbda4 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js @@ -0,0 +1,42 @@ +import("system.vars"); +import("system.result"); +import("KeywordRegistry_basic"); +import("Sql_lib"); +import("system.SQLTYPES"); + +var condition = ""; +if ( vars.exists("$local.idvalue") ) +{ + var ids = vars.get("$local.idvalue"); + condition = " where km1.KNOWLEDGEMANAGEMENTID in ('" + ids.join("', '") + "')"; +} +// the case when construct is used to decide, to which sub group the entry belongs +var sql = "select km1.KNOWLEDGEMANAGEMENTID, km1.TITLE, " + new SqlMaskingUtils().castLob("CONTENTDECODED", 255) + + ", km1.KNOWLEDGEMANAGEMENTID, km1.TITLE, km1.CONTENTDECODED, KNOWLEDGETAG.TAG, " + + "case when exists( \ + select '1' \ + from KNOWLEDGEMANAGEMENT \ + join KNOWLEDGETAGLINK on KNOWLEDGEMANAGEMENTID = KNOWLEDGEMANAGEMENT_ID \ + join KNOWLEDGETAG on KNOWLEDGETAGID = KNOWLEDGETAG_ID \ + where KNOWLEDGETAG.TAG = 'News' \ + and KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = km1.KNOWLEDGEMANAGEMENTID \ + ) \ + then 'News' \ + else case when GITPATH is null and TYPE = 1 \ + then 'Knowledgebase' \ + else case when GITPATH is not null and TYPE = 2 \ + then 'Editorial' \ + else case when TYPE = 3 \ + then 'Business process' \ + end \ + end \ + end \ + end " + + ", ''" + + " from KNOWLEDGEMANAGEMENT km1 " + + " left join KNOWLEDGETAGLINK on KNOWLEDGEMANAGEMENTID = KNOWLEDGEMANAGEMENT_ID" + + " left join KNOWLEDGETAG on KNOWLEDGETAGID = KNOWLEDGETAG_ID" + + condition + + " order by KNOWLEDGEMANAGEMENTID" + +result.string(sql); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/subProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/subProcess.js new file mode 100644 index 00000000000..197f0230b50 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/subProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); + +var res = KnowledgeIndexHelper.getInstance(vars.get("$local.idvalue"),vars.get("$local.data")).getDocumentsFromContent().data; + +result.object(res); \ No newline at end of file diff --git a/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod b/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod new file mode 100644 index 00000000000..289c14e605d --- /dev/null +++ b/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> + <name>KnowledgeNewsFeed_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeNewsFeed_entity/documentation.adoc</documentation> + <title>Feed</title> + <recordContainer>recordContainer</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>HTMLContent</name> + <title>Content</title> + <contentType>HTML</contentType> + <valueProcess>%aditoprj%/entity/KnowledgeNewsFeed_entity/entityfields/htmlcontent/valueProcess.js</valueProcess> + </entityField> + <entityParameter> + <name>Parameter</name> + <expose v="true" /> + </entityParameter> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <datalessRecordContainer> + <name>recordContainer</name> + <alias>Data_alias</alias> + </datalessRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeNewsFeed_entity/documentation.adoc b/entity/KnowledgeNewsFeed_entity/documentation.adoc new file mode 100644 index 00000000000..32d6227c662 --- /dev/null +++ b/entity/KnowledgeNewsFeed_entity/documentation.adoc @@ -0,0 +1,3 @@ += Knowledge Newsfeed + +This entity is used for the creation of the newsfeed in ADITO. A HTML is generated and will be displayed in the client \ No newline at end of file diff --git a/entity/KnowledgeNewsFeed_entity/entityfields/htmlcontent/valueProcess.js b/entity/KnowledgeNewsFeed_entity/entityfields/htmlcontent/valueProcess.js new file mode 100644 index 00000000000..ed8c1c9f315 --- /dev/null +++ b/entity/KnowledgeNewsFeed_entity/entityfields/htmlcontent/valueProcess.js @@ -0,0 +1,34 @@ +import("KeywordRegistry_basic"); +import("system.vars"); +import("Keyword_lib"); +import("Html_lib"); +import("system.entities"); +import("system.result"); + +var config = entities.createConfigForLoadingRows() + .addParameter("isDashlet_param", true) + .entity("KnowledgeManagement_entity") + .fields(["TITLE", "CONTENT", "AUTHOR_CONTACT_ID.displayValue", "AUTHOR_CONTACT_ID"]) + .ignorePermissions(true) + .count(10); + +var data = entities.getRows(config); + +var htmlContent = ""; + +if(data) +{ + data.forEach(function(row) + { + htmlContent += "<H2>" + row["TITLE"] + "</H2>\n"; + htmlContent += "<h3>" + row["AUTHOR_CONTACT_ID.displayValue"] + "</h3>"; + htmlContent += "<p>" + row["CONTENT"] + "</p>\n"; + htmlContent += "<hr>\n"; + }); +} + +var css = KeywordUtils.getAttributeRelation($KeywordRegistry.knowledgeType$knowledgeBase(), $KeywordRegistry.knowledgeType(), "contentCssStylesheet"); + +var htmlBody = SimpleHtmlObject.getInstance().body(htmlContent).style(css).toString(); + +result.string(htmlBody); diff --git a/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod b/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod new file mode 100644 index 00000000000..cec4b2173e0 --- /dev/null +++ b/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> + <name>KnowledgeRole_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>ROLES</name> + <title>Roles</title> + <consumer>NewsRole</consumer> + <displayValueProcess>%aditoprj%/entity/KnowledgeRole_entity/entityfields/roles/displayValueProcess.js</displayValueProcess> + </entityField> + <entityConsumer> + <name>NewsRole</name> + <dependency> + <name>dependency</name> + <entityName>Role_entity</entityName> + <fieldName>FilterRolesWithoutPermission</fieldName> + </dependency> + <children> + <entityParameter> + <name>ExcludeRoles_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeRole_entity/entityfields/newsrole/children/excluderoles_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityProvider> + <name>KnowledgeRole</name> + <lookupIdfield>ROLES</lookupIdfield> + <titlePlural>KnowledgeRoles</titlePlural> + <recordContainer>db</recordContainer> + <dependencies> + <entityDependency> + <name>404bd92c-6222-4b58-95b4-d7f657b62c82</name> + <entityName>KnowledgeManagement_entity</entityName> + <fieldName>KnowledgeRoles</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityField> + <name>KNOWLEDGEROLEID</name> + </entityField> + <entityField> + <name>KNOWLEDGEMANAGMENT_ID</name> + <state>INVISIBLE</state> + <valueProcess>%aditoprj%/entity/KnowledgeRole_entity/entityfields/knowledgemanagment_id/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>TARGETCONTEXT</name> + <valueProcess>%aditoprj%/entity/KnowledgeRole_entity/entityfields/targetcontext/valueProcess.js</valueProcess> + </entityField> + <entityParameter> + <name>KnowledgeManagement_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>CurrentRoles_param</name> + </entityParameter> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityParameter> + <name>PublishLevelRoles_param</name> + <expose v="true" /> + </entityParameter> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <hasDependentRecords v="true" /> + <conditionProcess>%aditoprj%/entity/KnowledgeRole_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <title>Knowledge Roles</title> + <linkInformation> + <linkInformation> + <name>16e6127e-67c6-4dce-b2e9-4b2b951dbcd4</name> + <tableName>KNOWLEDGEROLES</tableName> + <primaryKey>KNOWLEDGEROLESID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>ROLES.value</name> + <recordfield>KNOWLEDGEROLES.ROLENAME</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>KNOWLEDGEROLEID.value</name> + <recordfield>KNOWLEDGEROLES.KNOWLEDGEROLESID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>KNOWLEDGEMANAGMENT_ID.value</name> + <recordfield>KNOWLEDGEROLES.KNOWLEDGEMANAGEMENT_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ROLES.displayValue</name> + <expression>%aditoprj%/entity/KnowledgeRole_entity/recordcontainers/db/recordfieldmappings/roles.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeRole_entity/entityfields/knowledgemanagment_id/valueProcess.js b/entity/KnowledgeRole_entity/entityfields/knowledgemanagment_id/valueProcess.js new file mode 100644 index 00000000000..10f790fb648 --- /dev/null +++ b/entity/KnowledgeRole_entity/entityfields/knowledgemanagment_id/valueProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +result.string(vars.get("$param.KnowledgeManagement_param")); \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/entityfields/newsrole/children/excluderoles_param/valueProcess.js b/entity/KnowledgeRole_entity/entityfields/newsrole/children/excluderoles_param/valueProcess.js new file mode 100644 index 00000000000..937bc3cba44 --- /dev/null +++ b/entity/KnowledgeRole_entity/entityfields/newsrole/children/excluderoles_param/valueProcess.js @@ -0,0 +1,12 @@ +import("system.vars"); +import("system.result"); + +//RIP Richy +var roles = JSON.parse(vars.get("$param.PublishLevelRoles_param")); +var roleArray = ["XMPP_OK", "INTERNAL_WEBSERVICE", "INTERNAL_CANARY", "INTERNAL_EVERYONE", "INTERNAL_GROUPWARE", "INTERNAL_SNMP", "INTERNAL_DESIGNER", "INTERNAL_TECHNICAL", "INTERNAL_DASHBOARDSTOREADMIN", ] + .concat(roles); //concat the excluded roles with the other roles +var res = JSON.stringify(roleArray); //stringify the array + + + +result.string(res); //return \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/entityfields/roles/displayValueProcess.js b/entity/KnowledgeRole_entity/entityfields/roles/displayValueProcess.js new file mode 100644 index 00000000000..6890d68fc5d --- /dev/null +++ b/entity/KnowledgeRole_entity/entityfields/roles/displayValueProcess.js @@ -0,0 +1,13 @@ +import("system.result"); +import("system.vars"); +import("system.tools"); + +var allRoles = tools.getAllRoles(["PROJECT", "CUSTOM"], true); +var roleTitle = vars.get("$field.ROLES"); + +if (roleTitle in allRoles) +{ + roleTitle = allRoles[roleTitle][0]; +} + +result.string(roleTitle); \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/entityfields/targetcontext/valueProcess.js b/entity/KnowledgeRole_entity/entityfields/targetcontext/valueProcess.js new file mode 100644 index 00000000000..c9d54057e5a --- /dev/null +++ b/entity/KnowledgeRole_entity/entityfields/targetcontext/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("KnowledgeManagement"); \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/recordcontainers/db/conditionProcess.js b/entity/KnowledgeRole_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 00000000000..9148537a0db --- /dev/null +++ b/entity/KnowledgeRole_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("Sql_lib"); + +var cond = newWhereIfSet("KNOWLEDGEROLES.KNOWLEDGEMANAGEMENT_ID", "$param.KnowledgeManagement_param"); + +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/recordcontainers/db/recordfieldmappings/roles.displayvalue/expression.js b/entity/KnowledgeRole_entity/recordcontainers/db/recordfieldmappings/roles.displayvalue/expression.js new file mode 100644 index 00000000000..c694956db20 --- /dev/null +++ b/entity/KnowledgeRole_entity/recordcontainers/db/recordfieldmappings/roles.displayvalue/expression.js @@ -0,0 +1,7 @@ +import("system.result"); +import("NewsSystem_lib"); + +var resultSubSQL = NewsSystem.getDisplayValue(); + +result.string(resultSubSQL); + diff --git a/entity/Role_entity/Role_entity.aod b/entity/Role_entity/Role_entity.aod index b1e75e67c1d..6bff89e164d 100644 --- a/entity/Role_entity/Role_entity.aod +++ b/entity/Role_entity/Role_entity.aod @@ -173,6 +173,10 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityProvider> + <name>FilterRolesWithoutPermission</name> + <usePermissions v="false" /> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/neonContext/KnowledgeDiscussion/KnowledgeDiscussion.aod b/neonContext/KnowledgeDiscussion/KnowledgeDiscussion.aod new file mode 100644 index 00000000000..4c1a61df497 --- /dev/null +++ b/neonContext/KnowledgeDiscussion/KnowledgeDiscussion.aod @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>KnowledgeDiscussion</name> + <title>Discussion</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterView>KnowledgeDiscussionTree_view</filterView> + <editView>KnowledgeDiscussionEdit_view</editView> + <previewView>KnowledgeDiscussionPreview_view</previewView> + <entity>KnowledgeDiscussion_entity</entity> + <references> + <neonViewReference> + <name>a400341e-5b6b-4952-a0fe-1f88c3e55027</name> + <view>KnowledgeDiscussionTree_view</view> + </neonViewReference> + <neonViewReference> + <name>fbb4d64f-5167-4d8f-b9ac-4cdb4f1ceb59</name> + <view>KnowledgeDiscussionPreview_view</view> + </neonViewReference> + <neonViewReference> + <name>05aa5ff8-7204-4949-b19c-f6fd15dc24fd</name> + <view>KnowledgeDiscussionEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/KnowledgeLink/KnowledgeLink.aod b/neonContext/KnowledgeLink/KnowledgeLink.aod new file mode 100644 index 00000000000..e7b3b4c531d --- /dev/null +++ b/neonContext/KnowledgeLink/KnowledgeLink.aod @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>KnowledgeLink</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterView>KnowledgeLinkLookup_view</filterView> + <editView>KnowledgeLinkEdit_view</editView> + <lookupView>KnowledgeLinkLookup_view</lookupView> + <entity>KnowledgeLink_entity</entity> + <references> + <neonViewReference> + <name>04a5480c-7327-46e8-8835-db77de3c6994</name> + <view>KnowledgeLinkLookup_view</view> + </neonViewReference> + <neonViewReference> + <name>7c4b7964-6668-4cfb-a2b3-9ca63dc10741</name> + <view>KnowledgeLinkActionList_view</view> + </neonViewReference> + <neonViewReference> + <name>51436b95-a74b-406a-8029-ab5113eedfa3</name> + <view>KnowledgeLinkEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>051675e5-f526-4588-9b5c-72d9b4de00ab</name> + <view>KnowledgeLinkMultiEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/KnowledgeManagement/KnowledgeManagement.aod b/neonContext/KnowledgeManagement/KnowledgeManagement.aod new file mode 100644 index 00000000000..b6caadef74f --- /dev/null +++ b/neonContext/KnowledgeManagement/KnowledgeManagement.aod @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>KnowledgeManagement</name> + <title>Knowledgemanagement</title> + <description><null value></description> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:ACADEMY_CAP</icon> + <mainView>KnowledgeManagementMain_view</mainView> + <filterView>KnowledgeManagementFilter_view</filterView> + <editView>KnowledgeManagementEdit_view</editView> + <previewView>KnowledgeManagementPreview_view</previewView> + <lookupView>KnowledgeManagementLookup_view</lookupView> + <entity>KnowledgeManagement_entity</entity> + <references> + <neonViewReference> + <name>37f60641-26b3-4fbd-b2fa-b69169de0cfe</name> + <view>KnowledgeManagementMain_view</view> + </neonViewReference> + <neonViewReference> + <name>aa5aab07-8093-4c3f-802e-3c5e2f15a307</name> + <view>KnowledgeManagementFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>1c97f522-d463-42ce-ae31-2973b48f9be4</name> + <view>KnowledgeManagementPreview_view</view> + </neonViewReference> + <neonViewReference> + <name>3977743f-ab3a-472e-bb80-cea475f48aaa</name> + <view>KnowledgeManagementEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>d6960882-2d57-40e1-b5bf-bf317e0ca9f4</name> + <view>KnowledgeManagementDetails_view</view> + </neonViewReference> + <neonViewReference> + <name>d94d09f3-b02c-4b8d-849e-c15d3fcbb393</name> + <view>KnowledgeManagementLookup_view</view> + </neonViewReference> + <neonViewReference> + <name>d94d09f3-b02c-4b8d-849e-c15d3fcbb394</name> + <view>KnowledgeManagementTimeline_view</view> + </neonViewReference> + <neonViewReference> + <name>4e903d37-f2ac-4368-99aa-aee2492a03dc</name> + <view>KnowledgeManagementRole_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/KnowledgeManagementTagList/KnowledgeManagementTagList.aod b/neonContext/KnowledgeManagementTagList/KnowledgeManagementTagList.aod new file mode 100644 index 00000000000..979843a0d36 --- /dev/null +++ b/neonContext/KnowledgeManagementTagList/KnowledgeManagementTagList.aod @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>KnowledgeManagementTagList</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>KnowledgeManagementTagList_entity</entity> +</neonContext> diff --git a/neonContext/KnowledgeManagementTags/KnowledgeManagementTags.aod b/neonContext/KnowledgeManagementTags/KnowledgeManagementTags.aod new file mode 100644 index 00000000000..038ba14e387 --- /dev/null +++ b/neonContext/KnowledgeManagementTags/KnowledgeManagementTags.aod @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>KnowledgeManagementTags</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>KnowledgeManagementTags_entity</entity> + <references> + <neonViewReference> + <name>019050b1-db8f-4900-9ad1-d412cc9ec5b5</name> + <view>KnowledgeTagList_view</view> + </neonViewReference> + <neonViewReference> + <name>82e1dc21-123d-41f1-b9b7-cdd0a3c3d4c9</name> + <view>KnowledgeTagList_GenMult_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod b/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod new file mode 100644 index 00000000000..f9bc4fdec87 --- /dev/null +++ b/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>KnowledgeNewsFeed</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <mainView>KnowledgeNewsFeed_view</mainView> + <filterView>KnowledgeNewsFeed_view</filterView> + <entity>KnowledgeNewsFeed_entity</entity> + <references> + <neonViewReference> + <name>a6965156-ab52-4520-a3be-1351eacd863d</name> + <view>KnowledgeNewsFeed_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/KnowledgeRole/KnowledgeRole.aod b/neonContext/KnowledgeRole/KnowledgeRole.aod new file mode 100644 index 00000000000..68bba633d72 --- /dev/null +++ b/neonContext/KnowledgeRole/KnowledgeRole.aod @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>KnowledgeRole</name> + <title>Knowledgerole</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>KnowledgeRole_entity</entity> + <references> + <neonViewReference> + <name>d36e2044-65ed-4055-89ad-e8488f43123d</name> + <view>KnowledgeRoleEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod b/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod new file mode 100644 index 00000000000..8982a135812 --- /dev/null +++ b/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeDiscussionEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Generic</name> + <editMode v="true" /> + <drawerCaption>Discussion</drawerCaption> + <fixedDrawer v="true" /> + <hideLabels v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>c87217ce-184e-4436-9b58-0d20b218c864</name> + <entityField>DISCUSSIONTEXT</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod b/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod new file mode 100644 index 00000000000..e98045a42c2 --- /dev/null +++ b/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeDiscussionPreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Text</name> + <editMode v="false" /> + <drawerCaption>Discussion</drawerCaption> + <fixedDrawer v="true" /> + <hideLabels v="true" /> + <entityField>#ENTITY</entityField> + <title>Discussion</title> + <devices> + <element>MOBILE</element> + <element>TABLET</element> + <element>DESKTOP</element> + </devices> + <fields> + <entityFieldLink> + <name>672eae9f-abfb-4256-879b-6ceb945bff4d</name> + <entityField>discussionTitle</entityField> + </entityFieldLink> + <entityFieldLink> + <name>c0ff5819-7bb6-4e7b-b051-bb4d74fe10c1</name> + <entityField>DISCUSSIONTEXT</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod b/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod new file mode 100644 index 00000000000..601327c7d5b --- /dev/null +++ b/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeDiscussionTree_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <treeTableViewTemplate> + <name>Treetable</name> + <parentField>PARENTENTRY</parentField> + <favoriteActionGroup1>Edit_ActionGroup</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <title>Discussions</title> + <columns> + <neonTreeTableColumn> + <name>0462213d-ce08-44e8-9a78-8fd761ca13ce</name> + <entityField>#ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>be38dc3a-7295-407b-afa3-a409348985c8</name> + <entityField>DISCUSSIONTEXT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>924ee584-22b6-4fa8-9b7d-a22b45e05c10</name> + <entityField>discussionTitle</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod b/neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod new file mode 100644 index 00000000000..23ed8823319 --- /dev/null +++ b/neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeLinkActionList_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <actionListViewTemplate> + <name>ActionList</name> + <titleField>ROW_ID</titleField> + <descriptionField>OBJECT_TYPE</descriptionField> + <iconField>#ICON</iconField> + <entityField>#ENTITY</entityField> + </actionListViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod b/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod new file mode 100644 index 00000000000..34e51015d71 --- /dev/null +++ b/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeLinkEdit_view</name> + <title>Links</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Edit</name> + <editMode v="true" /> + <drawerCaption>Link</drawerCaption> + <hideEmptyFields v="false" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>4dce246e-8ac8-491f-bc77-fc2d6ef9f62d</name> + <entityField>OBJECT_TYPE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>7fedd111-a1d3-4159-b206-11d11d80c769</name> + <entityField>ROW_ID</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod b/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod new file mode 100644 index 00000000000..49df3025f21 --- /dev/null +++ b/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeLinkLookup_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>TableLooukup</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>5e32fe5d-6932-4c68-b5fd-2c995ba8fbd2</name> + <entityField>OBJECT_TYPE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>a180c48b-1e09-4e84-ad4d-92aeeb4b6542</name> + <entityField>ROW_ID</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod b/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod new file mode 100644 index 00000000000..0b3448b225c --- /dev/null +++ b/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeLinkMultiEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + <autoHeight v="true" /> + </boxLayout> + </layout> + <children> + <genericMultipleViewTemplate> + <name>MultiEdit</name> + <entityField>#ENTITY</entityField> + <title>Verknüpfungen</title> + <columns> + <neonGenericMultipleTableColumn> + <name>eb1bc3cb-3cf0-479c-901f-906a7ddde485</name> + <entityField>OBJECT_TYPE</entityField> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>331a348d-efdd-4a1b-a140-2c0b2adc27f0</name> + <entityField>ROW_ID</entityField> + </neonGenericMultipleTableColumn> + </columns> + </genericMultipleViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod b/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod new file mode 100644 index 00000000000..992ac0b7ffb --- /dev/null +++ b/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeManagementDetails_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <headerFooterLayout> + <name>layout</name> + <header>KnowledgeDetails</header> + </headerFooterLayout> + </layout> + <children> + <cardViewTemplate> + <name>KnowledgeDetails</name> + <iconField>#ICON</iconField> + <titleField>TITLE</titleField> + <entityField>#ENTITY</entityField> + <isEditable v="false" /> + </cardViewTemplate> + <favoriteViewTemplate> + <name>favorites</name> + <objectType>KNOWLEDGEMANAGEMENT_OBJECTTYPE</objectType> + <rowId>#UID</rowId> + <entityField>#ENTITY</entityField> + <title>Favoriten</title> + </favoriteViewTemplate> + <genericViewTemplate> + <name>Details</name> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>2ed87edf-4aed-42cd-9ebe-f206810c86a7</name> + <entityField>AUTHOR_CONTACT_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>e9d5fe54-9261-4ca4-9c20-c839c8d26395</name> + <entityField>RESPONSIBLE_CONTACT_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>1248f0fc-e370-42e5-8d64-6d89da366580</name> + <entityField>DATE_NEW</entityField> + </entityFieldLink> + <entityFieldLink> + <name>59c020ac-3b20-45b4-83ce-d0e7bb9372ad</name> + <entityField>DATE_EDIT</entityField> + </entityFieldLink> + <entityFieldLink> + <name>6252c147-e35f-4c54-8e9c-f65eee2d5283</name> + <entityField>PUBLISH</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>9322369a-d82b-402e-aaff-dedac00d1971</name> + <entityField>TagsByKnowledgeId</entityField> + <view>KnowledgeTagList_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod b/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod new file mode 100644 index 00000000000..5d41560c646 --- /dev/null +++ b/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeManagementEdit_view</name> + <title>Knowledge</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:ACADEMY_CAP</icon> + <size>NORMAL</size> + <quickEntry v="6" /> + <layout> + <boxLayout> + <name>layout</name> + <autoHeight v="true" /> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Details</name> + <editMode v="true" /> + <drawerCaption></drawerCaption> + <entityField>#ENTITY</entityField> + <title></title> + <devices> + <element>MOBILE</element> + <element>TABLET</element> + <element>DESKTOP</element> + </devices> + <fields> + <entityFieldLink> + <name>7be58130-991a-47e3-89d7-d01fc531ddd6</name> + <entityField>TITLE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>59c18990-a0e2-4cbd-b728-f156a421081f</name> + <entityField>CONTENT</entityField> + </entityFieldLink> + <entityFieldLink> + <name>781765cb-93a4-431e-bc92-9bef2a17e39f</name> + <entityField>AUTHOR_CONTACT_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>776ee39f-b666-4168-a758-0c17a3ed41a5</name> + <entityField>RESPONSIBLE_CONTACT_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>bfa39723-52e1-45e5-945c-cc1db1c81b81</name> + <entityField>PUBLISH</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>a62e4251-76b5-427c-b758-ae57bcdf5956</name> + <entityField>TagsByKnowledgeId</entityField> + <view>KnowledgeTagList_GenMult_view</view> + </neonViewReference> + <neonViewReference> + <name>6ac6f960-eaf3-4196-acc8-f516184215f1</name> + <entityField>LinksByKnowledgeId</entityField> + <view>KnowledgeLinkMultiEdit_view</view> + </neonViewReference> + <genericViewTemplate> + <name>genericc</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>a753ed28-28fa-402e-a98f-5fa0301158b2</name> + <entityField>isNewsMark</entityField> + </entityFieldLink> + <entityFieldLink> + <name>54f5adf2-800e-4dae-a4a0-7a9fb16ed083</name> + <entityField>notificationMark</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>2649f436-3025-4f0b-bbd4-580e5dcf2cba</name> + <entityField>KnowledgeRoles</entityField> + <view>KnowledgeRoleEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>ed706714-6290-4d6b-9e59-7e8833e8936f</name> + <entityField>LinkedDocuments</entityField> + <view>DocumentMultipleEdit_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod new file mode 100644 index 00000000000..28f846c0a6c --- /dev/null +++ b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeManagementFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> + <dashletConfigurations> + <neonDashletConfiguration> + <name>Wissen</name> + <title>Wissen</title> + <description>Alle Wissensbeiträge</description> + <fragment>KnowledgeManagement/filter</fragment> + <icon>VAADIN:ACADEMY_CAP</icon> + <categories> + <neonDashletCategory> + <name>knowledge</name> + <title>Knowledge</title> + </neonDashletCategory> + </categories> + </neonDashletConfiguration> + </dashletConfigurations> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>FilterTable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>6536f7bc-b655-4011-b8ce-20b27fb0f656</name> + <entityField>#ICON</entityField> + </neonTableColumn> + <neonTableColumn> + <name>6a5fd77d-537b-4f27-a372-93838a76ff2e</name> + <entityField>TITLE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>69905c5d-27c4-49aa-a10c-589fee93b67b</name> + <entityField>AUTHOR_CONTACT_ID</entityField> + </neonTableColumn> + <neonTableColumn> + <name>6f9daef0-872f-486c-8d1b-19fbde27efff</name> + <entityField>LastChange</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod b/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod new file mode 100644 index 00000000000..8b9981d87da --- /dev/null +++ b/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeManagementLookup_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>LookupTable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>5a7ab4ba-48a5-47bf-95e9-5631938af5b2</name> + <entityField>#IMAGE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>b715bc0e-a6b7-478d-9aaf-9bc212812650</name> + <entityField>ViewKnowledgeNumber</entityField> + </neonTableColumn> + <neonTableColumn> + <name>4176e200-836f-475c-bc35-ae9c27bf1ed9</name> + <entityField>TITLE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>0afc1762-3889-4eb5-bef9-4c14cd648eb6</name> + <entityField>CONTENTDECODED</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod b/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod new file mode 100644 index 00000000000..33c43a3158a --- /dev/null +++ b/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeManagementMain_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <masterSlaveLayout> + <name>layout</name> + <master>88686b9f-0333-4f8b-a24d-c1018bcf394b</master> + </masterSlaveLayout> + </layout> + <children> + <neonViewReference> + <name>88686b9f-0333-4f8b-a24d-c1018bcf394b</name> + <entityField>#ENTITY</entityField> + <view>KnowledgeManagementDetails_view</view> + </neonViewReference> + <webContentViewTemplate> + <name>Content</name> + <entityField>htmlView</entityField> + </webContentViewTemplate> + <neonViewReference> + <name>79fcef8e-c0ba-4463-a239-6faf332b6bc9</name> + <entityField>DiscussionsByKnowledgeId</entityField> + <view>KnowledgeDiscussionTree_view</view> + </neonViewReference> + <neonViewReference> + <name>914652b1-891f-4d79-a9e8-766a792da539</name> + <entityField>LinkedDocuments</entityField> + <view>DocumentFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>b03ac69f-ed82-4a90-87b0-89d1822c749a</name> + <entityField>LinksByKnowledgeId</entityField> + <view>KnowledgeLinkLookup_view</view> + </neonViewReference> + <neonViewReference> + <name>40b21927-4fb9-46f3-8e99-682b1a114d19</name> + <entityField>LogHistories</entityField> + <view>LogHistoryFilter_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod b/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod new file mode 100644 index 00000000000..e8ae6cd155b --- /dev/null +++ b/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeManagementPreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <headerFooterLayout> + <name>layout</name> + </headerFooterLayout> + </layout> + <children> + <webContentViewTemplate> + <name>PreviewHTML</name> + <height v="6000" /> + <entityField>htmlView</entityField> + </webContentViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod b/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod new file mode 100644 index 00000000000..ef4ea428e85 --- /dev/null +++ b/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeManagementRole_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + <autoHeight v="true" /> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Roles</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>f339bf74-1d3e-4584-8961-eebb730221dd</name> + <entityField>isNewsMark</entityField> + </entityFieldLink> + <entityFieldLink> + <name>6c6c1ee1-421c-4102-9ed4-a2770f8cc58c</name> + <entityField>notificationMark</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>15f19382-186c-4ca7-b3f6-e7efa11a7edb</name> + <entityField>KnowledgeRoles</entityField> + <view>KnowledgeRoleEdit_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod b/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod new file mode 100644 index 00000000000..06766542b7e --- /dev/null +++ b/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeManagementTimeline_view</name> + <title>Newsfeed (Preview)</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <dashletConfigurations> + <neonDashletConfiguration> + <name>timelineDashletConfig</name> + <title>Newsfeed (Preview)</title> + <fragment>KnowledgeManagement/filter</fragment> + <categories> + <neonDashletCategory> + <name>knowledge</name> + <title>Knowledge</title> + </neonDashletCategory> + </categories> + <parameters> + <neonDashletParameter> + <name>isDashlet_param</name> + <value>true</value> + </neonDashletParameter> + </parameters> + </neonDashletConfiguration> + </dashletConfigurations> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <timelineViewTemplate> + <name>time</name> + <dateField>LastChange</dateField> + <titleField>TITLE</titleField> + <descriptionField>CONTENT</descriptionField> + <subdescriptionField>AUTHOR_CONTACT_ID</subdescriptionField> + <entityField>#ENTITY</entityField> + <isDeletable v="false" /> + <isEditable v="false" /> + <title>Newsfeed Timeline</title> + <isCreatable v="false" /> + </timelineViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod b/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod new file mode 100644 index 00000000000..4f9bd988b14 --- /dev/null +++ b/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeNewsFeed_view</name> + <title>Newsfeed (Complete Article)</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <dashletConfigurations> + <neonDashletConfiguration> + <name>knowledgeNewsFeed_dashletConfig</name> + <title>Newsfeed (Complete Article)</title> + <fragment>KnowledgeNewsFeed/filter</fragment> + <icon>VAADIN:NEWSPAPER</icon> + <categories> + <neonDashletCategory> + <name>knowledge</name> + <title>Knowledge</title> + </neonDashletCategory> + </categories> + <parameters> + <neonDashletParameter> + <name>Parameter</name> + <value>tre</value> + </neonDashletParameter> + </parameters> + </neonDashletConfiguration> + </dashletConfigurations> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <webContentViewTemplate> + <name>WebContent</name> + <entityField>HTMLContent</entityField> + <devices> + <element>MOBILE</element> + <element>TABLET</element> + <element>DESKTOP</element> + </devices> + </webContentViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod b/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod new file mode 100644 index 00000000000..5d6473c3512 --- /dev/null +++ b/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeRoleEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + <autoHeight v="true" /> + </boxLayout> + </layout> + <children> + <genericMultipleViewTemplate> + <name>GenericMultiple</name> + <entityField>#ENTITY</entityField> + <title>Roles</title> + <columns> + <neonGenericMultipleTableColumn> + <name>8fc4c848-f071-4c9d-b764-8d03e750937a</name> + <entityField>ROLES</entityField> + <fullWidth v="true" /> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>23bbcd15-8d81-4d82-82c8-890a0091ccff</name> + <entityField>KNOWLEDGEMANAGMENT_ID</entityField> + <fullWidth v="false" /> + </neonGenericMultipleTableColumn> + </columns> + </genericMultipleViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod b/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod new file mode 100644 index 00000000000..15748243a68 --- /dev/null +++ b/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeTagList_GenMult_view</name> + <title>Tags</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + <autoHeight v="true" /> + </boxLayout> + </layout> + <children> + <genericMultipleViewTemplate> + <name>TagList</name> + <entityField>#ENTITY</entityField> + <title>Tags</title> + <columns> + <neonGenericMultipleTableColumn> + <name>7a59bcdd-e807-44db-9b5e-7b389ab10db8</name> + <entityField>TAG</entityField> + <fullWidth v="true" /> + </neonGenericMultipleTableColumn> + </columns> + </genericMultipleViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod b/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod new file mode 100644 index 00000000000..20b683b7634 --- /dev/null +++ b/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeTagList_view</name> + <title>Tags</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <titledListViewTemplate> + <name>TagList</name> + <titleField>ListTitle</titleField> + <entityField>#ENTITY</entityField> + <title>Tags</title> + <columns> + <neonTitledListTableColumn> + <name>4522858e-7bcb-43e3-b542-410898a8b90a</name> + <entityField>TAG</entityField> + </neonTitledListTableColumn> + </columns> + </titledListViewTemplate> + </children> +</neonView> diff --git a/process/Html_lib/Html_lib.aod b/process/Html_lib/Html_lib.aod new file mode 100644 index 00000000000..98ca38b6fb0 --- /dev/null +++ b/process/Html_lib/Html_lib.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>Html_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/Html_lib/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/Html_lib/process.js b/process/Html_lib/process.js new file mode 100644 index 00000000000..b12525e1ad2 --- /dev/null +++ b/process/Html_lib/process.js @@ -0,0 +1,149 @@ +function SimpleHtmlObject(pHtmlString, pUpdateFunc, pUpdateId) +{ + this.htmlObj = {head:{headers:"",style:""}, body:{content:""}}; + this.updateFunc = pUpdateFunc || null; + this.updateId = pUpdateId || null; + + if(pHtmlString && typeof pHtmlString === "string") + this.readHTML(pHtmlString); +} + +SimpleHtmlObject.getInstance = function(pHtmlString, pUpdateFunc, pUpdateId) +{ + return new SimpleHtmlObject(pHtmlString, pUpdateFunc, pUpdateId); +} + +SimpleHtmlObject.prototype.style = function(pCss) +{ + this.htmlObj.head.style = (pCss) ? pCss : ""; + return this; +} + +SimpleHtmlObject.prototype.body = function(pContent) +{ + this.htmlObj.body.content = (pContent) ? pContent : ""; + return this; +} + +SimpleHtmlObject.prototype.headers = function(pHeaders) +{ + this.htmlObj.head.headers = (pHeaders) ? pHeaders : ""; + return this; +} + +SimpleHtmlObject.prototype.readTagContent = function (pIn, pTag) +{ + var ret = null; + var openTag = new RegExp("<" + pTag + ">","i"); + var closeTag = new RegExp("<\\/" + pTag + ">","i"); + //If for some reason + if(pIn.search(new RegExp("<" + pTag + ".*\\/>","i")) > 0) + ret = ""; + else + { + var start = pIn.search(openTag); + var end = pIn.search(closeTag); + if(start > -1 && end > -1) + ret = pIn.substring(start+(pTag.length+2), end); + } + + return ret; +} + +SimpleHtmlObject.prototype.accumulateStyleTags = function(pIn) +{ + var htmlString = pIn; + var matches = htmlString.match(/<STYLE.*>.*<\/STYLE>/gi); + + var styles = ""; + + for(let i = 0; matches && i < matches.length; i++) + { + styles += this.readTagContent(matches[i], "STYLE") + "\n"; + } + + return styles; +} + +SimpleHtmlObject.prototype.readHTML = function(pInput) +{ + var htmlString = pInput; + //if no HTML opening Tag is present, assume its pure body content + try + { + if(htmlString.search(/<HTML>/gi) < 0) + this.body(htmlString); + else + { + this.htmlObj.body.content = this.readTagContent(htmlString, "BODY"); + //Getting Headers without style info, because we store them seperately + this.htmlObj.head.headers = this.readTagContent(htmlString, "HEAD").replace(/<STYLE.*>.*<\/STYLE>/gi,""); + this.htmlObj.head.style = this.accumulateStyleTags(htmlString); + } + + return + } + catch(ex) + { + var fixedHTML = HtmlFixer.getInstance(pInput).fixHtml(); + if(this.updateFunc && typeof this.updateFunc == "function" && this.updateId) + this.updateFunc(fixedHTML, this.updateId); + + this.readHTML(fixedHTML); + return + } +} + +SimpleHtmlObject.prototype.toString = function() +{ + return "<HTML>\n" + + "<HEAD>\n" + + this.htmlObj.head.headers + (this.htmlObj.head.headers.length > 0 ? "\n" : "") + + "<STYLE type='text/css'>" + this.htmlObj.head.style + "</STYLE>" + "\n" + + "</HEAD>\n" + + "<BODY>\n" + + this.htmlObj.body.content + "\n" + + "</BODY>\n" + +"</HTML>"; +} + +SimpleHtmlObject.prototype.getBody = function() +{ + return this.htmlObj.body.content.slice(0); +} + +SimpleHtmlObject.prototype.getStyle = function() +{ + return this.htmlObj.head.style.slice(0); +} + + +function HtmlFixer(pIn) +{ + this.htmlString = pIn || ""; +} + +HtmlFixer.getInstance = function(pIn) +{ + return new HtmlFixer(pIn); +} + +HtmlFixer.prototype.fixHtml = function() +{ + var htmlObj = SimpleHtmlObject.getInstance(); + var readTag = htmlObj.readTagContent; //borrow a function from another Object, so i don't have to code the same thing twice + + //get a copy of the HTML, so we can modify it without chainging the original + var toFix = this.htmlString.slice(0); + + var style = readTag(toFix,"STYLE"); + var head = readTag(toFix,"HEAD"); + var body = readTag(toFix,"BODY"); + + if(!body) + { + body = toFix.replace(/<HEAD>.*<\/HEAD>/gi,"").replace(/(<HTML>|<\/HTML>)/gi,""); + } + + return htmlObj.headers(head).style(style).body(body).toString(); +} \ No newline at end of file diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js index aa1c2042a60..eaa206920ca 100644 --- a/process/KeywordRegistry_basic/process.js +++ b/process/KeywordRegistry_basic/process.js @@ -296,3 +296,16 @@ $KeywordRegistry.workflowCategory = function(){return "WorkflowCategory";}; $KeywordRegistry.notificationState = function(){ return "NotificationState";}; $KeywordRegistry.notificationState$unseen = function(){return "UNSEEN";}; $KeywordRegistry.notificationState$seen = function(){return "SEEN";}; + +$KeywordRegistry.discussionStatus = function(){return "DiscussionStatus";} +$KeywordRegistry.discussionStatus$acitve = function(){return "ACTIVE";} +$KeywordRegistry.discussionStatus$closed = function(){return "CLOSED";} + +$KeywordRegistry.knowledgeType = function(){return "KnowledgeType";} +$KeywordRegistry.knowledgeType$knowledgeBase = function(){return "KNOWLEDGEBASE";} +$KeywordRegistry.knowledgeType$editorial = function(){return "EDITORIAL";} + +$KeywordRegistry.knowledgePublishLevel = function(){return "KnowledgePublishLevel";} +$KeywordRegistry.knowledgePublishLevel$internal = function(){return "INTERNAL";} +$KeywordRegistry.knowledgePublishLevel$partner = function(){return "PARTNER";} +$KeywordRegistry.knowledgePublishLevel$public = function(){return "PUBLIC";} \ No newline at end of file diff --git a/process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod b/process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod new file mode 100644 index 00000000000..7119bdb3846 --- /dev/null +++ b/process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>KnowledgeManagement_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/KnowledgeManagement_lib/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/KnowledgeManagement_lib/process.js b/process/KnowledgeManagement_lib/process.js new file mode 100644 index 00000000000..d2b23022b6a --- /dev/null +++ b/process/KnowledgeManagement_lib/process.js @@ -0,0 +1,1179 @@ +import("system.project"); +import("system.fileIO"); +import("system.translate"); +import("system.tools"); +import("system.util"); +import("system.datetime"); +import("system.vars"); +import("system.db"); +import("system.logging"); +import("Html_lib"); +import("Sql_lib"); +import("Attribute_lib"); +import("AttributeRegistry_basic"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); +import("Util_lib"); +import("system.tools"); +import("system.neon"); +import("system.text"); + +/** + * Object that contains function for displying the knowledge entries + * @param {String} pHtml HTML Script as string. + * @param {String} pKnowledgeId Id of the knowledge entry, that's represented by this object + */ +function KnowledgeManagementModel(pHtml, pKnowledgeId) +{ + this.knowledgeId = pKnowledgeId || null; + + var updFunc = function(pContent, pId) + { + cols = ["CONTENT", "CONTENTDECODED"]; + colTypes = db.getColumnTypes("KNOWLEDGEMANAGEMENT", cols); + db.updateData("KNOWLEDGEMANAGEMENT" + , cols + , colTypes + , [pContent, text.html2text(pContent)] + , "KNOWLEDGEMANAGEMENTID = '" + pId + "'"); + } + + //this turns a HTML String into an instance of SimpleHtmlObject for further processing + //or if an instance of SimpleHtmlObject is given in pHtml it uses the given Object + this.html = (typeof pHtml === "string") + ? SimpleHtmlObject.getInstance(pHtml, updFunc, this.knowledgeId) + : ( + (pHtml instanceof SimpleHtmlObject) + ? pHtml + : null + ); + //provides the knowledge entry with it's tags + this.knowledgeTagModel = KnowledgeManagementTagsModel.getInstance(this.knowledgeId); +} +/** + * Factory function of KnowledgeManagementModel + * @param {String} pHtml HTML Script as string. + * @param {String} pId Id of the knowledge entry, that's represented by this object + * + * @return {KnowledgeManagementModel} + */ +KnowledgeManagementModel.getInstance = function(pHtml, pId) +{ + return new KnowledgeManagementModel(pHtml, pId); +} + +/** + * Function for setting a CSS Stylesheet for the knowledge entry + * @param pStyle {String|function} This parameter takes either a string or a function + * the function has to return a CSS Stylesheet as String + * @param pArgs {Array} This parameter takes the arguments for calling a style function, Required if pStyle is of type function + * + * @return {this} return the instance of KnowledgeManagementModel to enable function chaining + */ +KnowledgeManagementModel.prototype.style = function(pStyle, pArgs) +{ + switch(typeof pStyle) + { + case "function": + let args = (pArgs && pArgs.length)? pArgs : []; + this.html.style(pStyle.apply(pStyle, args)); + break; + case "string": + this.html.style(pStyle); + break; + } + + return this; +} + +KnowledgeManagementModel.prototype.headers = function(pHeaders) +{ + this.html.headers(pHeaders); + + return this; +} + +/** + * Function for setting the content of the HTML Body for the knowledge entry + * @param pContent {String|function} This parameter takes either a string or a function + * the function has to return the content of the HTML Body as String + * @param pArgs {Array} This parameter takes the arguments for calling a function, Required if pStyle is of type function + * + * @return {this} return the instance of KnowledgeManagementModel to enable function chaining + */ +KnowledgeManagementModel.prototype.content = function(pContent, pArgs) +{ + switch(typeof pContent) + { + case "function": + let args = (pArgs && pArgs.length)? pArgs : []; + this.html.body(pContent.apply(pContent, args)); + break; + case "string": + this.html.body(pContent); + break; + } + + return this; +} +/** + * Wrapper for SimpleHtmlObject.prototype.toString, which is overridden so it provides a HTML Script + * containing the content and style set by the respective functions + * + * @return {String} HTML Script + */ +KnowledgeManagementModel.prototype.buildHTML = function() +{ + return this.html.toString(); +} +/** + * Returns the content of the HTML Body + * @return {String} + */ +KnowledgeManagementModel.prototype.getContent = function() +{ + return this.html.getBody(); +} +/** + * Returns the contents of the set Style Tag + * @return {String} + */ +KnowledgeManagementModel.prototype.getStyle = function() +{ + return this.html.getStyle(); +} + +KnowledgeManagementModel.getFrameMapping = function(pFrame) +{ + switch(pFrame.toUpperCase()) + { + case "KNOWLEDGEMANAGEMENT": + return "KnowledgeManagement"; + break; + default: + return null; + } +} +/** + * Function for replacing the http://adito/ and http://aditoknowledge links with links to the neon client + * @return {this} + */ +KnowledgeManagementModel.prototype.replaceAditoLinks = function() +{ + var clientUrl = project.getInstanceConfigValue("custom.aditoLink.clientUrl", ""); + var content = this.getContent(); + //RegExp for finding regular ADITO Links + var regExAditoLink = /href\s*=\s*["']http:\/\/adito\/(\w+)\/([\w-]{0,36})["']/gi; + //RegExp for finding aditoknowledge links + var regExEditorialLink = /href\s*=\s*["']http:\/\/aditoknowledge\/(.+?\.adoc)["']/gi; + + var match, frame, uid, gitPath; + + function _getNeonLink(pContext, pUid) + { + if(pContext) + return "href = '" + clientUrl + "client/" + pContext + "/full?id=" + pUid + "' target='_parent'"; + else + return "CONTEXT NOT MAPPED"; + } + + while ((match = regExAditoLink.exec(content)) !== null) + { + [match, frame, uid] = match; + content = content.replace(match, _getNeonLink(KnowledgeManagementModel.getFrameMapping(frame), uid)); + } + + var idSql; + + + while ((match = regExEditorialLink.exec(content)) !== null) + { + [match, gitPath] = match; + idSql = new SqlBuilder().select("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID") + .from("KNOWLEDGEMANAGEMENT") + .where("KNOWLEDGEMANAGEMENT.GITPATH", gitPath).cell(); + + content = content.replace( + match + , _getNeonLink("KnowledgeManagement" + , (idSql) ? idSql : "DOCUMENT-NOT-EXISTING" + ) + ); + } + + this.content(content); + + return this; +} +/** + * Object for gathering the tags of a knowledge entry + * @param {String} pKnowledgemanagementId Id of the knowledge entry for which the tags should be collected + */ +function KnowledgeManagementTagsModel(pKnowledgemanagementId) +{ + this.data = []; + this.existingTags = { + array:[], + ByIdMap:{}, + ByNameMap:{} + }; + this.knowledgeId = pKnowledgemanagementId || null; +} + +/** + * Factory function of KnowledgeManagementTagsModel + * @return {KnowledgeManagementTagsModel} + */ +KnowledgeManagementTagsModel.getInstance = function(pId) +{ + return new KnowledgeManagementTagsModel(pId); +} +/** + * Function for getting the list of already existing tags + * @param {String} pLocalUid If the id is given only one entry is loaded + * @return {Object} returns an object containing three keys: array, ByIdMap, ByNameMap + * the latter two are maps for quick lookup of TagIDs by Name or Name by Id + */ +KnowledgeManagementTagsModel.prototype.getPossibleTags = function(pLocalUid) +{ + this.existingTags.array = new SqlBuilder() + .select("KNOWLEDGETAGID, TAG") + .from("KNOWLEDGETAG") + .table(); + + for(let i in this.existingTags.array) + { + this.existingTags.ByIdMap[this.existingTags.array[i][0]] = this.existingTags.array[i][1]; + this.existingTags.ByNameMap[this.existingTags.array[i][1].toUpperCase()] = this.existingTags.array[i][0]; + //if a single id is requested, return only that specific dataset + if(pLocalUid && pLocalUid == this.existingTags.array[i][0]) + { + let singleReturn = { + array:[], + ByIdMap:{}, + ByNameMap:{} + }; + singleReturn.array = [this.existingTags.array[i]]; + singleReturn.ByIdMap[this.existingTags.array[i][0]] = this.existingTags.array[i][1]; + singleReturn.ByNameMap[this.existingTags.array[i][1].toUpperCase()] = this.existingTags.array[i][0] + + return singleReturn; + } + } + + return this.existingTags; +} +/** + * Function to collect the set tags of a knowledge entry + * If no Id is present in either the function parameter or the object itself, it returns an empty dataset + * + * @param {String} pKnowledgeId Id of the knowledge entry to gather the tags for. + * @param {Array} pIdValue If we get one id from the system, we only need to load this one dataset + * + * @return {this} + */ +KnowledgeManagementTagsModel.prototype.collectTags = function(pKnowledgeId, pIdValue) +{ + //if no ID is given either by pKnowledgeId or by the property of the this object + //it sets an empty dataset and returns this. + if(!pKnowledgeId && !this.knowledgeId) + { + this.data = db.createEmptyTable(3); + return this; + } + + if(!this.knowledgeId) + this.knowledgeId = pKnowledgeId.slice(0); + + var sqlString = new SqlBuilder() + .select("KNOWLEDGETAGLINKID, KNOWLEDGETAG_ID, TAG") + .from("KNOWLEDGETAGLINK") + .join("KNOWLEDGETAG on KNOWLEDGETAGID = KNOWLEDGETAG_ID") + .where("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId) + + if(pIdValue) + sqlString.and("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID", pIdValue, SqlBuilder.IN()); + + this.data = sqlString.table(); + + return this; +} +/** + * Object for handling tags. + * I.e. adding, editing and deleting tags of an knowledge entry + * + * @param {String} pKnowledgeId + * @param {KnowledgeManagementTagsModel} pTagsModel If you already have an instance of the Tags Model, you can give it to the function + * instead of creating a new instance + */ +function KnowledgeManagementTagsController(pKnowledgeId, pTagsModel) +{ + this.model = (pTagsModel instanceof KnowledgeManagementTagsModel) + ? pTagsModel + : KnowledgeManagementTagsModel.getInstance(pKnowledgeId); + + this.knowledgeId = pKnowledgeId || null; +} +/** + * Factory fucntion for KnowledgeManagementTagsController + * @return {KnowledgeManagementTagsController} + */ +KnowledgeManagementTagsController.getInstance = function(pId, pModel) +{ + return new KnowledgeManagementTagsController(pId, pModel); +} +/** + * This function is used to add a new tag to a knowledge entry + * If the tag is already used on the given entry, it does nothing + * If a completely new tag is entered, it gets created in the Tags Attribute and then it gets added to the knowledge entry + * + * @param {String} pIdValue, id of the new AttributeRelation typically read from $local.idvalue + * @param {Array} pRowData, data of the new tag, typically read from $local.rowdata + * + * @return {this} + */ +KnowledgeManagementTagsController.prototype.addTag = function(pIdValue, pRowData, pFromUpdate) +{ + if(!pRowData["TAG.value"] || !pIdValue) + return this; + //if we get an UUID, an existing tag was chosen and can be added directly + if(IdUtils.isUUID(pRowData["TAG.value"])) + _add.apply(this,[pIdValue, pRowData]); + else //else if get a new string, we have to create the tag in the attribute first + { + this.createNewTag(pIdValue, pRowData); + } + /** + * private function for adding the tag to the knowledge entry + * @param {String} pId, id of the new AttributeRelation typically read from $local.idvalue + * @param {Array} pData, data of the new tag, typically read from $local.rowdata + */ + function _add(pId, pData) + { + //get all possible tags, to make sure the new tag is already registered + var existingTags = this.model.getPossibleTags(); + + + var countSql = newSelect("count(*)") + .from("KNOWLEDGETAGLINK") + .where("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", pData["TAG.value"]) + .and("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId) + .cell(); + + // if the tag is registered and isn't already used on this knowledge entry, add a attribute relation + if(existingTags.ByIdMap[pData["TAG.value"]] && Number(countSql) === 0 && !pFromUpdate) + { + var fields = ["KNOWLEDGETAGLINKID","KNOWLEDGEMANAGEMENT_ID","KNOWLEDGETAG_ID","USER_NEW","DATE_NEW"];//["AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTE_ID", "OBJECT_ROWID", "OBJECT_TYPE", "ID_VALUE", "USER_NEW", "DATE_NEW"]; + var dataTypes = db.getColumnTypes("KNOWLEDGETAGLINK", fields); + var values = [pId, this.knowledgeId, pData["TAG.value"], vars.get("$sys.user"), datetime.date()]; + + db.insertData("KNOWLEDGETAGLINK", fields, dataTypes, values); + } + } + + return this; +} +/** + * Function for updating/editing an existing tag + * @param {String} pIdValue, id of the new AttributeRelation typically read from $local.idvalue + * @param {Array} pRowData, data of the new tag, typically read from $local.rowdata + * + * @return {this} + */ +KnowledgeManagementTagsController.prototype.editTag = function(pIdValue, pRowData) +{ + if(!pRowData["TAG.value"] || !pIdValue) + return this; + + var existingTags = this.model.getPossibleTags(); + //if we get an UUID and it is in the existing IDs Map, we can just update the database field + if(IdUtils.isUUID(data["TAG.value"]) && existingTags.ByIdMap[data["TAG.value"]]) + { + _update.apply(this,[pIdValue, pRowData]); + } + else // if we get text, we have to get the old tags id, create the new tag and then check if the old tag is used somewhere else + { // if it's not used anymore, it gets deleted from the attribute + var oldTag = new SqlBuilder() + .select("KNOWLEDGETAG_ID") + .from("KNOWLEDGETAGLINK") + .where("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID", pIdValue) + .cell(); + + var newTag = this.createNewTag(pIdValue, pRowData, true); + pRowData["TAG.value"] = newTag; + + _clear.apply(this,[oldTag]); + _update.apply(this, [pIdValue, pRowData]); + } + /** + * private function for updating an AttributeRelation with the new tag + */ + function _update(pId, pData) + { + var fields = ["KNOWLEDGETAG_ID", "USER_EDIT", "DATE_EDIT"]; + var dataTypes = db.getColumnTypes("KNOWLEDGETAGLINK", fields); + var values = [pData["TAG.value"], vars.get("$sys.user"), datetime.date()]; + var cond = newWhere("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID", pId).toString(); + + db.updateData("KNOWLEDGETAGLINK", fields, dataTypes, values, cond); + } + /** + * private function for checking, if an old tag is used anywhere else. If it's not used anymore, it gets deleted + */ + function _clear(pOldValue) + { + var count = new SqlBuilder() + .select("count(*)") + .from("KNOWLEDGETAGLINK") + .where("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", pOldValue) + .cell(); + if(count == 0) + { + db.deleteData("KNOWLEDGETAG", newWhere("KNOWLEDGETAG.KNOWLEDGETAGID", pOldValue).toString()); + } + } + + return this; +} +/** + * Function for deleting a tag from a knowledge entry + * If a tag isn't used anywhere else, it gets deleted from the list of existing tags + * + * @param {String} pIdValue Value of $local.idvalue in onDelete Process + * @param {[][]} pData Value of $local.rowdata in onDelete Process + * + * @return {this} + */ +KnowledgeManagementTagsController.prototype.deleteTag = function(pIdValue, pData) +{ + if(!pIdValue || !pData["TAG.value"]) + return this; + + db.deleteData("KNOWLEDGETAGLINK", newWhere("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID", pIdValue).toString()); + + var count = new SqlBuilder() + .select("count(*)") + .from("KNOWLEDGETAGLINK") + .where("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", pData["TAG.value"]) + .cell(); + + if(count == 0) + { + db.deleteData("KNOWLEDGETAG", newWhere("KNOWLEDGETAG.KNOWLEDGETAGID", pData["TAG.value"]).toString()); + } + + return this; +} +/** + * Function to clear all tags from an entry + * Used in the Git Interface, to get rid of all tags and then newly create them + * + * @return {KnowledgeManagementTagsController} Returns this for chaining + */ +KnowledgeManagementTagsController.prototype.clearTags = function() +{ + this.model.collectTags(this.knowledgeId).data.forEach( + function(item) + { + let rowData = {}; + rowData["TAG.value"] = item[1]; + + this.deleteTag(item[0], rowData); + } + ,this); + + return this; +} +/** + * Fucntion for adding a new tag to the list of existing tags + * It adds it also to the table KNOWLEDGEMANAGEMENTTAGMODERATION where all new tags are stored for further moderation + * + * @param {String} pIdValue typically the $local.idvalue of the onInsert process, it is being used, if for some reason the entered tag is already existing. + * then a new AttributeRelation is created instead of the tag. + * @param {[][]} pData typically the $local.rowdata of the onInsert or onUpdate process + * + * @return {String|null} returns the id of the new tag attribute or null, if it couldn't be created + */ +KnowledgeManagementTagsController.prototype.createNewTag = function(pIdValue, pData, pFromUpdate) +{ + if(!pData["TAG.value"] || !pIdValue) + throw "no Tag was passed or no pIdValue was passed"; + + var existingTags = this.model.getPossibleTags(); + var tagFields = ["KNOWLEDGETAGID" + ,"TAG" + ,"DATE_NEW" + ,"USER_NEW"]; + var tagColTypes = db.getColumnTypes("KNOWLEDGETAG", tagFields); + var newAttrId; + var tagValues; + + //If the user entered text without choosing a list entry, do a lookup on the existing tags by upper case and add tag by id, if it already exists + if(existingTags.ByNameMap[pData["TAG.value"].toUpperCase()]) + { + pData["TAG.value"] = existingTags.ByNameMap[pData["TAG.value"].toUpperCase()]; + this.addTag(pIdValue, pData); + } + else + { + newAttrId = util.getNewUUID(); + tagValues = [newAttrId, pData["TAG.value"], datetime.date(), vars.get("$sys.user")]; + + db.insertData("KNOWLEDGETAG", tagFields, tagColTypes, tagValues); + + pData["TAG.value"] = newAttrId; + + this.addTag(pIdValue, pData, pFromUpdate); + + return newAttrId; + } + + return null; +} +/** + * Object for handling the discussions + */ +function KnowledgeDiscussion(pKnowledgeId) +{ + this.knowledgeId = pKnowledgeId; + this.data = []; +} +/** + * Factory function of KnwoledgeDiscussion + * @param {String|null} pKnowledgeId UUID if only the discussion on on specific knowledge entry are needed, null if all discussions of all knowledge entries should be loaded. + */ +KnowledgeDiscussion.getInstance = function(pKnowledgeId) +{ + return new KnowledgeDiscussion(pKnowledgeId); +} +/** + * Function for getting the row count, uses less complex SQL and doesn't have the tree generation. + * It's used in the rowCountProcess of the RecordContainer of the KnowledgeDiscussion entity, to improve performance + * + * @param {KnowledgeDiscussion.WITHCLOSED|KnowledgeDiscussion.ONLYACTIVE} pMode Takes the value of one of the two mode constants + * @param {Array} pIdValues Takes an array of ids, typically one id with single selection, to only load the selected discusssion for the preview view + * + * @return {int} Total number of Datasets to load + */ +KnowledgeDiscussion.prototype.getDatasetCount = function(pMode, pIdValues) +{ + var knowledgeSql = newSelect("count(*)").from("KNOWLEDGEMANAGEMENT").join("KNOWLEDGEDISCUSSION", "KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID").where(); + + var knowledgeData = 0; + + var discussionSql = newSelect("count(*)").from("KNOWLEDGEDISCUSSION").where(); + + if(pMode == "true") + { + discussionSql.and("KNOWLEDGEDISCUSSION.STATUS", $KeywordRegistry.discussionStatus$acitve()); + knowledgeSql.and("KNOWLEDGEDISCUSSION.STATUS", $KeywordRegistry.discussionStatus$acitve()); + } + + if(pIdValues) + { + knowledgeSql.and("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID", pIdValues, SqlBuilder.IN()); + discussionSql.and("KNOWLEDGEDISCUSSION.KNOWLEDGEDISCUSSIONID", pIdValues, SqlBuilder.IN()); + } + + //if we have a specific knowledge, we don't need all knowledge entries. Otherwise load all knowledge entries that have discussions + if(this.knowledgeId) + discussionSql.and("KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId); + else + knowledgeData = knowledgeSql.table() + + + var discussionData = discussionSql.table() + + var sum = ((Number(knowledgeData) > 0) ? Number(knowledgeData) + Number(discussionData) : Number(discussionData)); + + return sum; +} + +/** + * Complex function to build the DiscussionTree. + * Loads the data depending on this.knowledgeId, pMode and pIdValues and builds the tree out of the data + * The tree always gets sorted by the date of the most recent action. Either a new answer to an discussion or an edit of an discussion + * Data is retireved by reading the data property of your instance of KnowledgeDiscussion after running buildCompleteTree + * + * @param {KnowledgeDiscussion.WITHCLOSED|KnowledgeDiscussion.ONLYACTIVE} pMode Takes the value of one of the two mode constants + * @param {Array} pIdValues Takes an array of ids, typically one id with single selection, to only load the selected discusssion for the preview view + * @param {Boolean} pGetAll Switch, which determines if all discussions on all knowledge entries should be loaded or only the discussion for one specific knowledge. + * + * @return {this} returns the now filled instance of the object. + */ +KnowledgeDiscussion.prototype.buildCompleteTree = function(pMode, pIdValues, pGetAll) +{ + var knowledgeSql = newSelect("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID, KNOWLEDGEMANAGEMENT.TITLE").from("KNOWLEDGEMANAGEMENT") + .join("KNOWLEDGEDISCUSSION", "KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID") + .where() + + var knowledgeData = null; + + var discussionSql = newSelect("KNOWLEDGEDISCUSSIONID,PARENTENTRY,KNOWLEDGEMANAGEMENT_ID ,AUTHOR,DISCUSSIONTEXT,STATUS,'InsertKEyowrdSubselecthere' ,DATE_NEW,DATE_EDIT,USER_NEW,USER_EDIT") + .from("KNOWLEDGEDISCUSSION").where() + + var iconMap = { + TOP:"VAADIN:PIN" + , + ANSWER:"VAADIN:COMMENT_O" + , + KNOWLEDGE:"VAADIN:ACADEMY_CAP" + , + TOP_CLOSED:"VAADIN:LOCK" + }; + + if(pMode == "true" && !(pIdValues && pIdValues.length == 1)) + { + discussionSql.and("KNOWLEDGEDISCUSSION.STATUS", $KeywordRegistry.discussionStatus$acitve()); + knowledgeSql.and("KNOWLEDGEDISCUSSION.STATUS", $KeywordRegistry.discussionStatus$acitve()); + } + + if(pIdValues) + { + discussionSql.and("KNOWLEDGEDISCUSSION.KNOWLEDGEDISCUSSIONID", pIdValues, SqlBuilder.IN()); + } + + //if we have a specific knowledge, we don't need all knowledge entries. Otherwise load all knowledge entries that have discussions + if(pGetAll) + knowledgeData = knowledgeSql.table() + else if(this.knowledgeId) + discussionSql.and("KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId); + + var discussionData = discussionSql.table() + var user, userTitle, discussionTitle; + + //adding firstname and lastname from employee as author displayvalue and add icon + for(var i = 0; i < discussionData.length; i++) + { + discussionData[i][4] = discussionData[i][4].trim(); + user = tools.getUser(discussionData[i][3]); + userTitle = _getNamefromUser(user); + //old icon code: KeywordUtils.getAttributeRelation(discussionData[i][5], "DiscussionStatus", "knowledgeDiscussionIcon") + discussionData[i].push(userTitle); + discussionData[i].push(_getIcon("D", discussionData[i][1].trim(), discussionData[i][5].trim())); + discussionData[i].push("D"); //Node type for discussions + + discussionTitle = userTitle; + if(discussionData[i][7]) + discussionTitle += " "+ translate.text("added on") +": " + datetime.toDate(discussionData[i][7], "dd.MM.yyyy"); + + + if(discussionData[i][8]) + { + if(discussionData[i][10] && discussionData[i][3] != discussionData[i][10]) + { + user = tools.getUser(discussionData[i][10]); + userTitle = _getNamefromUser(user); + } + discussionTitle += ", " + userTitle + " " + translate.text("edited on") +": " + datetime.toDate(discussionData[i][8], "dd.MM.yyyy"); + } + + discussionData[i].push(discussionTitle); + } + + //if something gets selected in the tree, only return those datasets + if(pIdValues && !this.knowledgeId && !discussionData.length) + { + this.data = knowledgeData; + return this; + } + else if(pIdValues && discussionData.length) + { + this.data = discussionData; + return this; + } + + var tempTree = []; + //if a specific knowledge is given, then use the empty tree to fill with top parents + //, otherwise insert knowledge entries into the tree first via _fillKnowledge() and then add top parents to those + tempTree = _fillTopParents(((this.knowledgeId) + ? tempTree + : _fillKnowledge(tempTree, knowledgeData)) + , discussionData + , this.knowledgeId); + //if we have a specific knowledgeId, we recursively add all children for each top parent. + if(this.knowledgeId) + { + for(let i = 0; i < tempTree.length; i++) + { + _fillInChildren(tempTree[i], discussionData, tempTree[i].id); + tempTree[i].date = _propagateMostRecentDate(tempTree[i]); + } + tempTree.sort(_sortByDateDesc); + } + else + { + for(let i = 0; i < tempTree.length; i++) // loop over knowledge + { + for(let ii = 0; ii < tempTree[i].children.length; ii++) // loop over opening threads + { + _fillInChildren(tempTree[i].children[ii], discussionData, tempTree[i].children[ii].id); //add children recursively to opening threads + tempTree[i].children[ii].date = _propagateMostRecentDate(tempTree[i].children[ii]); + } + tempTree[i].children.sort(_sortByDateDesc); + tempTree[i].date = tempTree[i].children[0].date; + } + tempTree.sort(_sortByDateDesc); + } + + this.data = _buildArrayFromTree.apply(this, [tempTree]); + + return this; + + function _getIcon(pNodeType, pParentId, pStatus) + { + if(pNodeType == "K") + return iconMap.KNOWLEDGE; + if(pNodeType == "D" && pStatus == $KeywordRegistry.discussionStatus$closed()) + return iconMap.TOP_CLOSED; + if(pNodeType == "D" && pParentId == "") + return iconMap.TOP; + if(pNodeType == "D" && pParentId != "") + return iconMap.ANSWER; + + return ""; + } + + function _getNamefromUser(pUser) + { + return ((pUser && pUser[tools.PARAMS]) ? pUser[tools.PARAMS][tools.FIRSTNAME] + " " + pUser[tools.PARAMS][tools.LASTNAME] : null); + } + + function _buildArrayFromTree(pTree) + { + var dataArray = []; + + function __runLayers(pBranch) + { + dataArray.push(pBranch.data); + + for(let i = 0; i < pBranch.children.length; i++) + { + __runLayers(pBranch.children[i]); + } + } + + for(let i = 0; i < pTree.length; i++) + { + __runLayers.apply(this, [pTree[i]]); + } + + return dataArray; + } + + function _sortByDateDesc(a,b) + { + return b.date - a.date; + } + + function _fillKnowledge(pTree, pData) + { + for(let i = 0; i < pData.length; i++) + { + pTree.push({ + id:pData[i][0] + , + parent:null + , + data:[ + pData[i][0] + ,null + ,null + ,null + ,pData[i][2] + ,null + ,null + ,null + ,null + ,null + ,null + ,null + ,"" + ,"K"] + , + children:[] + }); + pData.splice(i--,1); + } + + return pTree; + } + + function _fillTopParents(pTree, pData, pHasSpecificKnowledge) + { + function __addNode(pTree, pNodeData, pNodeIndex, pSetAsParentId) + { + if(!pNodeIndex && !pSetAsParentId) + { + pTree.push({ + id:pNodeData[0] + , + parent:null + , + data:pNodeData + , + nodeType:pNodeData[13] + , + children:[] + }); + } + else + { + pNodeData[1] = pSetAsParentId; + pTree[pNodeIndex].children.push({ + id:pNodeData[0] + , + parent:pSetAsParentId + , + data:pNodeData + , + nodeType:pNodeData[13] + , + children:[] + }); + } + } + + if(pHasSpecificKnowledge) + { + for(let i = 0; i < pData.length; i++) + { + if(!pData[i][1]) + { + __addNode(pTree, pData.splice(i--,1)[0]); + } + } + } + else + { + for(let i = 0; i < pTree.length; i++) + for(let ii = 0; ii < pData.length; ii++) + { + if(!pData[ii][1] && pData[ii][2] == pTree[i].id) + { + __addNode(pTree, pData.splice(ii--,1)[0], i, pTree[i].id); + } + } + } + + return pTree; + } + + function _fillInChildren(pNode, pData, pParentId) + { + var tempNodes = []; + for(let i = 0; i < pData.length; i++) + { + let tempData = null; + if(pData[i][1] == pParentId) + { + tempData = pData.splice(i--,1)[0]; + tempNodes.push({ + id:tempData[0] + , + parent:tempData[1] + , + data:tempData + , + children:[] + , + nodeType:tempData[13] + }); + } + } + + for(let i = 0; i < tempNodes.length; i++) + { + _fillInChildren(tempNodes[i], pData, tempNodes[i].id); + pNode.children.push(tempNodes[i]); + } + } + + function _propagateMostRecentDate(pNode) + { + //this funcion takes n arguments, sorts them numerically descending + //, so the biggest and therefore most recent timestamp is on the first index + //, which then gets returned + function __getMostRecentDate() + { + return [].slice.call(arguments).sort(function(a, b){ + return b - a; + })[0]; + } + + var propagatedDate = null; + //if we are on the last child, only get the most recent date of this child + if(!pNode.children.length) + propagatedDate = __getMostRecentDate(pNode.data[7], pNode.data[8]); + else + { + propagatedDate = [] + //if we have children, we need to get the most recent date from the children and our current node. + for(let i = 0; i < pNode.children.length; i++) + { + propagatedDate.push(__getMostRecentDate(_propagateMostRecentDate(pNode.children[i]), pNode.data[7], pNode.data[8])); + } + + propagatedDate = __getMostRecentDate.apply(null,propagatedDate); + } + //return the most recent date, which got propagated all the way through the tree branch + return propagatedDate; + } +} +/** + * Function for adding a new Discussion. + * Used in the onInsert process of the RecordContainer of the KnowledgeDiscussion entity + * + * @param {String} pDiscussionId $local.idvalue of the onInsert process + * @param {Array} pRowData $local.rowdata of the onInsert process + * + * @return {this} + */ +KnowledgeDiscussion.prototype.addDiscussion = function(pDiscussionId, pRowData) +{ + if(!pRowData["DISCUSSIONTEXT.value"]) + return this; + + if(!pDiscussionId) + pDiscussionId = ""; + + var fields = ["KNOWLEDGEDISCUSSIONID","PARENTENTRY" + ,"KNOWLEDGEMANAGEMENT_ID","DISCUSSIONTEXT" + ,"STATUS","AUTHOR" + ,"DATE_NEW","USER_NEW"]; + var types = db.getColumnTypes("KNOWLEDGEDISCUSSION", fields); + + var values = [ + pRowData["UID.value"] + ,pDiscussionId.trim() + ,this.knowledgeId.trim() + ,pRowData["DISCUSSIONTEXT.value"] + ,pRowData["STATUS.value"] + ,pRowData["AUTHOR.value"].trim() + ,datetime.date() + ,vars.get("$sys.user").trim() + ]; + + db.insertData("KNOWLEDGEDISCUSSION", fields, types, values); + + return this; +} +/** + * Function for editing an existing Discussion. + * Used in the onUpdate process of the RecordContainer of the KnowledgeDiscussion entity + * + * @param {String} pDiscussionId $local.idvalue of the onUpdate process + * @param {Array} pRowData $local.rowdata of the onUpdate process + * @param {Array} pChanged $local.changed of the onUpdate process + * + * @return {this} + */ +KnowledgeDiscussion.prototype.editDiscussion = function(pDiscussionId, pRowData, pChanged) +{ + if(!pDiscussionId) + return this; + + var i; + var fields = []; + var values = []; + var types = null; + + for(i = 0; i < pChanged.length; i++) + { + let field = pChanged[i]; + values.push(pRowData[field]); + fields.push(field.split(".")[0]); + } + + types = db.getColumnTypes("KNOWLEDGEDISCUSSION", fields); + + db.updateData("KNOWLEDGEDISCUSSION" + , fields + , types + , values + , newWhere("KNOWLEDGEDISCUSSION.KNOWLEDGEDISCUSSIONID", pDiscussionId) + .and("KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId).toString()); + + return this; +} +/** + * Function for deleting an existing Discussion. + * Used in the onUpdate process of the RecordContainer of the KnowledgeDiscussion entity + * + * @param {String} pDiscussionId $local.idvalue of the onUpdate process + * + * @return {this} + */ +KnowledgeDiscussion.prototype.deleteDiscussion = function(pDiscussionId) +{ + if(!pDiscussionId) + return this; + + db.deleteData("KNOWLEDGEDISCUSSION" + , newWhere("KNOWLEDGEDISCUSSION.KNOWLEDGEDISCUSSIONID", pDiscussionId) + .and("KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId).toString()); + + return this; +} +/** + * Static function for checking if a discussion has children below itself + * + * @param {String} pId Id of the discussion to check + * + * @return {Boolean} true if number of children is greater than 0 + */ +KnowledgeDiscussion.hasChildren = function(pId) +{ + return newSelect("count(*)").from("KNOWLEDGEDISCUSSION").where("KNOWLEDGEDISCUSSION.PARENTENTRY", pId).cell() > 0 +} + +KnowledgeDiscussion.getMode = function (pWithClosed) +{ + return ((pWithClosed == "true") ? "false" : "true"); +} +/** + * Function for setting the status of a discussion AND its children + * @param {String} pDiscussionId The id of the discussion + * @param {String} pStatus $KeywordRegistry.discussionStatus$acitve() or $KeywordRegistry.discussionStatus$closed() + * + * @return {this} + */ +KnowledgeDiscussion.prototype.setDiscussionStatus = function(pDiscussionId, pStatus) +{ + + if(!pDiscussionId || (pStatus !== $KeywordRegistry.discussionStatus$acitve() && pStatus !== $KeywordRegistry.discussionStatus$closed())) + return this; + + let table = "KNOWLEDGEDISCUSSION"; + let cols = ["STATUS"]; + let colTypes = db.getColumnTypes(table, cols); + let updates = []; + let updateTemplate = [table, cols, colTypes, [pStatus]]; + + _addChildrenToUpdates(pDiscussionId, pStatus); + let parentUpdate = [].slice.call(updateTemplate,0); + parentUpdate.push(table+"ID = '" + pDiscussionId + "'"); + updates.push(parentUpdate); + + db.updates(updates); + + function _addChildrenToUpdates(pId, pStatus) + { + var data = db.table("select KNOWLEDGEDISCUSSIONID, PARENTENTRY from KNOWLEDGEDISCUSSION where PARENTENTRY = '" + pId + "'"); + if(!data.length) + return; + + for(var i = 0; i < data.length; i++) + { + let upd = [].slice.call(updateTemplate,0); + upd.push(table+"ID = '" + data[i][0] + "'"); + updates.push(upd); + //db.updateData(table, cols, colTypes, [pStatus], table+"ID = '" + data[i][0] + "'"); + _addChildrenToUpdates(data[i][0], pStatus); + } + } + + return this; +} + +function KnowledgeIndexHelper(pKnowledgeId, pData) +{ + this.knowledgeId = pKnowledgeId || null; + this.data = pData || null; +} + +KnowledgeIndexHelper.getInstance = function(pId, pData) +{ + return new KnowledgeIndexHelper(pId, pData); +} + +KnowledgeIndexHelper.prototype.getDocumentsFromContent = function() +{ + var tempArray = []; + var content = db.cell("select content from KNOWLEDGEMANAGEMENT where knowledgemanagementid = '" + this.knowledgeId + "' "); + var invalidLink = false; + // the question mark quantifier is in (.*?) to make sure, that more than one file link can be present in one line! + var matches = content.match( new RegExp("<a href=\"file(.*?)((htm(l?))|(pdf)|(doc(x?)))\"", "gi") ); + var i = 0; + + if(matches) + matches.forEach( + function(match) + { + var data = null; + match = match.replace(/^(<a href="file:(\/*))/gi,"").replace(/"$/gi,""); + + if(vars.get("$sys.serveros").indexOf("windows") != -1) + { + match = match.replace(/[/\\]+FILER[/\\]publicshare\$/, "//filer/publicshare$", "gi").replace("S:", "//filer/publicshare$").replace(/\\/g, "/"); + } + else + { + match = match.replace(/[/\\]+FILER[/\\]publicshare\$/, "/mnt/filer_publicshare", "gi").replace("S:", "/mnt/filer_publicshare").replace(/\\/g, "/"); + } + + var decodedMatch = decodeURIComponent(match); + + if(fileIO.exists(decodedMatch)) + { + //only get data, if it's not a directory. getData on a directory fails with an exception + if(!fileIO.isDirectory(decodedMatch)) + { + data = fileIO.getData(decodeURIComponent(decodedMatch), util.DATA_BINARY); + } + } + else + { + invalidLink = true; + } + + if(data != null) + { + tempArray.push(data); + } + } + ,this); + + this.data[8] = tempArray; + // var keywordName = "Enthält ungültige Links"; + // if(invalidLink) + // { + // if (db.cell("select count(*) from knowledgemanagementkeyword where KNOWLEDGEMANAGEMENT_ID = '" + pId + "' and KEYWORD = '" + keywordName + "'") == 0) + // { + // var cols = ["KEYWORD", "KNOWLEDGEMANAGEMENTKEYWORDID", "KNOWLEDGEMANAGEMENT_ID"]; + // db.insertData("KNOWLEDGEMANAGEMENTKEYWORD", cols, db.getColumnTypes("KNOWLEDGEMANAGEMENTKEYWORD", cols), [keywordName, util.getNewUUID(), pId]); + // } + // } + // else + // { + // db.deleteData("KNOWLEDGEMANAGEMENTKEYWORD", "KNOWLEDGEMANAGEMENT_ID = '" + pId + "' and KEYWORD = '" + keywordName + "'"); + // } + + return this; +} + +function KnowledgeUtils(){} + +KnowledgeUtils.getLocalIdValue = function() +{ + var id = vars.exists("$local.idvalues") && vars.get("$local.idvalues"); + id = ( id && (typeof id == "object") && id.length == 1 ) ? id[0] : id; + + return id; +} + +KnowledgeUtils.isAcademy = function(pUser) +{ + let roles = tools.getRoles(pUser); + + for(let i = 0; i < roles.length; i++) + if(roles[i] == "PROJECT_Abt_Akademie") + return true; + + return false; +} + +KnowledgeUtils.trimAndUp = function(pIn) +{ + return pIn.trim().toUpperCase(); +} \ No newline at end of file diff --git a/process/NewsSystem_lib/NewsSystem_lib.aod b/process/NewsSystem_lib/NewsSystem_lib.aod new file mode 100644 index 00000000000..f4907ecd213 --- /dev/null +++ b/process/NewsSystem_lib/NewsSystem_lib.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>NewsSystem_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/NewsSystem_lib/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/NewsSystem_lib/process.js b/process/NewsSystem_lib/process.js new file mode 100644 index 00000000000..3a365fac90e --- /dev/null +++ b/process/NewsSystem_lib/process.js @@ -0,0 +1,91 @@ +import("system.vars"); +import("system.util"); +import("KnowledgeManagement_lib"); +import("system.entities"); +import("system.text"); +import("system.notification"); +import("system.tools"); + +function NewsSystem() {} + +/* + * Returns the selected users with the given role/s. + * + * @param {Array} roleArray req roles, that need to are selected. + * + * @return {Array} User internal name of user model. + */ +NewsSystem.getUsersWithRoles = function(roleArray) +{ + var users = tools.getUsers(tools.getUsersWithAnyRole(roleArray), tools.PROFILE_FULL); + var arr = []; + + for(var i = 0; i < users.length; i++) + { + arr.push(users[i][tools.NAME]); + } + + return arr; +} + +/* + * Creates a news notification for the selected users. + * + * @param {String} description req The description of the news. + * @param {String} caption req The title of the news. + * @param {Array} users req Selected users. + * @param {String} id req KnowledgemanagementID to connect the notification. + * + * @return {void} + */ +NewsSystem.createNewsNotification = function(description, caption, users, id) +{ + var config = notification.createConfig() + .notificationType("News") + .description(description) + .caption(caption) + .linkInfo(text.encodeMS(["KnowledgeManagement", id])) + .initialState(notification.STATE_UNSEEN) + .addUsersWithIds(users); + + notification.addNotificationWith(config); +} + +/* + * Returns a sub-sql for the translated Roles. + * + * @return {String} Returns a sub-sql for the translated Roles. + */ +NewsSystem.getDisplayValue = function() +{ + var resultSet = " case "; + var allRolesObject = tools.getAllRoles(); + + for each (currentRoleObject in allRolesObject) + { + resultSet += " when KNOWLEDGEROLES.ROLENAME = '" + currentRoleObject[3] + "' then '" + currentRoleObject[0] + "' "; + } + + resultSet += " end "; + + return resultSet; +} + +NewsSystem.setAsNews = function(pKnowledgeID, pNotification, pIsNews) +{ + if(pNotification) //check if the field "mark" is ticked + { + vars.set("$context.setNotificationMark", true); //set context variable true to trigger the afterOperatingState process + } + + if(pIsNews) //check if the field "isNewsMark" is ticked + { + var knowledgeId = pKnowledgeID; + var data = {}; + data["TAG.value"] = "News"; + + KnowledgeManagementTagsController + .getInstance(knowledgeId) + .addTag(util.getNewUUID(), data); //set the "news"-tag to the current data set + } +} diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index 75c6923e249..b5a7b0c686b 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -3766,6 +3766,33 @@ SqlMaskingUtils.prototype.yearFromDate = function(pField) } } +/** + * returns the first field, that is not null or empty + * masks the behaviour of coalesce with case when + * + * @param pFields {Array} Array of fieldnames. Has to be in the right order. It will be checked from 0 upwards + */ +SqlMaskingUtils.prototype.coalesce = function(pFields) +{ + var retSql = ""; + + if(pFields && typeof pFields == "object" && pFields.length) + { + retSql = "case "; + + for(let i = 0; i < pFields.length; i++) + { + retSql += " when (" + pFields[i] + " is not null or " + pFields[i] + " <> '') then " + pFields[i] + " " + } + + retSql += " else null end"; + } + else + throw {message:"The input to coalesce has to be an Array containing the column names"}; + + return retSql; +} + /** * functions for various Sql-actions * Do not create an instance of this! diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index 778e4ae46cb..697b1e2dd7b 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -1082,4 +1082,11 @@ ConsecutiveCodeUtils.setCode = function(pId, pTable, pIdCol, pCodeCol) newWhereIfSet(pTable + "." + pIdCol, pId) .updateData(true, pTable, [pCodeCol], null, [parseInt(max)+1]); +} + +function IdUtils() {} + +IdUtils.isUUID = function(pIn) +{ + return /\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/i.test(pIn); } \ No newline at end of file -- GitLab From a22088d97b6d52aea3f2d2a7da7da7021e34951d Mon Sep 17 00:00:00 2001 From: Erik Pollinger <e.pollinger@yahoo.de> Date: Tue, 10 Nov 2020 01:49:03 +0100 Subject: [PATCH 068/184] removed a logging --- .../jdito_knowledgediscussioncontainer/contentProcess.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js index b607e1b91ea..fa4fb2b67c3 100644 --- a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js @@ -14,8 +14,6 @@ var withClosed = vars.exists("$context.showAll") && vars.get("$context.showAll") if(wClosedParam == "true") withClosed = wClosedParam; -logging.log(withClosed); - var idValues = vars.exists("$local.idvalues") && vars.get("$local.idvalues"); var discussions = KnowledgeDiscussion.getInstance(kId); -- GitLab From 30289689cd941d6977daf874df8e380adcf50e80 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 10 Nov 2020 09:57:56 +0100 Subject: [PATCH 069/184] #1052649 Title spellings --- aliasDefinition/Data_alias/Data_alias.aod | 6 +-- entity/360Degree_entity/360Degree_entity.aod | 2 +- .../SalesprojectAnalyses_entity.aod | 6 +-- .../Salesproject_entity.aod | 2 +- entity/Salesproject_entity/onValidation.js | 2 +- .../_____LANGUAGE_EXTRA.aod | 39 ++++++++++--------- .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 36 ++++++++--------- .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 39 ++++++++++--------- .../ActivityFilter_view.aod | 4 +- .../CampaignCostChart_view.aod | 2 +- .../CampaignFilter_view.aod | 2 +- .../MyDashboardScoreCard_view.aod | 2 +- .../OfferFilter_view/OfferFilter_view.aod | 2 +- .../OrderFilter_view/OrderFilter_view.aod | 2 +- .../OrganisationFilter_view.aod | 6 +-- .../PersonFilter_view/PersonFilter_view.aod | 6 +-- .../SalesprojectAnalyses_view.aod | 2 +- .../SalesprojectConversionRate_view.aod | 2 +- .../SalesprojectEdit_view.aod | 2 +- .../SalesprojectFilter_view.aod | 4 +- .../SalesprojectScoreCard_view.aod | 2 +- .../SupportTicketFilter_view.aod | 2 +- neonView/TaskFilter_view/TaskFilter_view.aod | 2 +- .../UniversalFileProcessorDropzone_view.aod | 2 +- .../UnlinkedMailFilter_view.aod | 2 +- .../VisitPlanEntryFilter_view.aod | 2 +- .../WorkflowTaskOwn_view.aod | 2 +- 27 files changed, 94 insertions(+), 88 deletions(-) diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 96738b18065..ed77c7a5792 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -3611,7 +3611,7 @@ <notNull v="true" /> <isUnique v="true" /> <index v="true" /> - <title>Salesproject Id</title> + <title>Sales Project Id</title> <description></description> </entityFieldDb> <entityFieldDb> @@ -8091,7 +8091,7 @@ <isUnique v="false" /> <index v="true" /> <documentation></documentation> - <title>Salesproject Id</title> + <title>Sales Project Id</title> <description></description> <customProperties> <customBooleanProperty> @@ -8140,7 +8140,7 @@ <isUnique v="true" /> <index v="true" /> <documentation></documentation> - <title>Salesproject milestone Id</title> + <title>Sales Project milestone Id</title> <description></description> </entityFieldDb> <entityFieldDb> diff --git a/entity/360Degree_entity/360Degree_entity.aod b/entity/360Degree_entity/360Degree_entity.aod index e4125015133..62c86300ec6 100644 --- a/entity/360Degree_entity/360Degree_entity.aod +++ b/entity/360Degree_entity/360Degree_entity.aod @@ -126,7 +126,7 @@ </entityActionField> <entityActionField> <name>newSalesproject</name> - <title>Salesproject</title> + <title>Sales Project</title> <onActionProcess>%aditoprj%/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/onActionProcess.js</onActionProcess> <iconId>VAADIN:BOOK_DOLLAR</iconId> <stateProcess>%aditoprj%/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js</stateProcess> diff --git a/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod b/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod index 5b2898641b5..3c35c7cf030 100644 --- a/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod +++ b/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod @@ -3,7 +3,7 @@ <name>SalesprojectAnalyses_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/SalesprojectAnalyses_entity/documentation.adoc</documentation> - <title>Salesproject Analyses</title> + <title>Sales Project Analyses</title> <iconId>VAADIN:PIE_CHART</iconId> <recordContainer>jdito</recordContainer> <entityFields> @@ -41,14 +41,14 @@ </entityField> <entityField> <name>SENT_OFFERS</name> - <title>Sent offers</title> + <title>Sent Offers</title> <contentType>NUMBER</contentType> <state>READONLY</state> <valueProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/sent_offers/valueProcess.js</valueProcess> </entityField> <entityField> <name>OPEN_SALESPROJECTS</name> - <title>Open salesprojects</title> + <title>Open Salesprojects</title> <contentType>NUMBER</contentType> <state>READONLY</state> <valueProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/open_salesprojects/valueProcess.js</valueProcess> diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index f33a3391222..1191ebd36be 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -14,7 +14,7 @@ <useFavorites v="true" /> <iconId>VAADIN:BOOK_DOLLAR</iconId> <imageProcess>%aditoprj%/entity/Salesproject_entity/imageProcess.js</imageProcess> - <titlePlural>Sales Projects</titlePlural> + <titlePlural>Salesprojects</titlePlural> <recordContainer>db</recordContainer> <entityFields> <entityProvider> diff --git a/entity/Salesproject_entity/onValidation.js b/entity/Salesproject_entity/onValidation.js index c9618796815..ffe29cce81f 100644 --- a/entity/Salesproject_entity/onValidation.js +++ b/entity/Salesproject_entity/onValidation.js @@ -9,4 +9,4 @@ var endDate = vars.get("$field.ENDDATE"); if (!DateUtils.validateBeginnBeforeEnd(startDate, endDate)) result.string(DateUtils.getValidationFailString()); else if(!vars.get("$field.PROJECTTITLE") && vars.get("$field.PROJECTTYPE") && vars.exists("$param.PresetTitle_param")) - result.string(translate.text("The Sales Project can only be filled when a company has been specified")); \ No newline at end of file + result.string(translate.text("The Salesproject can only be filled when a company has been specified")); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 7b27a5c7418..c5139ee3b51 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -61,7 +61,7 @@ <key>Female</key> </entry> <entry> - <key>Contactmanagement</key> + <key>Contact Management</key> </entry> <entry> <key>Office address</key> @@ -646,7 +646,7 @@ <key>Orderitems</key> </entry> <entry> - <key>Sent receipts</key> + <key>Sent Receipts</key> </entry> <entry> <key>Copy receipt</key> @@ -664,7 +664,7 @@ <key>Turnover</key> </entry> <entry> - <key>Sent offers</key> + <key>Sent Offers</key> </entry> <entry> <key>Show all activities</key> @@ -733,7 +733,7 @@ <key>Show all salesprojects</key> </entry> <entry> - <key>Open salesprojects</key> + <key>Open Salesprojects</key> </entry> <entry> <key>July</key> @@ -2374,7 +2374,7 @@ <key>{$ADDRESS_IDENTIFIER}</key> </entry> <entry> - <key>Salesproject phases</key> + <key>Salesproject Phases</key> </entry> <entry> <key>Add to Campaign</key> @@ -2392,7 +2392,7 @@ <key>Add participants to Campaign</key> </entry> <entry> - <key>Key figures</key> + <key>Key Figures</key> </entry> <entry> <key>Delete all usage</key> @@ -4105,7 +4105,7 @@ <key>Show my campaigns</key> </entry> <entry> - <key>My campaigns</key> + <key>My Campaigns</key> </entry> <entry> <key>Add to Bulkmail</key> @@ -4297,7 +4297,7 @@ <key>Unknown incoming call from %0 to %1</key> </entry> <entry> - <key>All unlinked mails</key> + <key>All Unlinked Mails</key> </entry> <entry> <key>hour</key> @@ -4309,7 +4309,7 @@ <key>Incoming call from %0 (%1) to %2</key> </entry> <entry> - <key>import mails</key> + <key>Import Mails</key> </entry> <entry> <key>Unknown accepted call from %0 to %1, duration: %2</key> @@ -4546,7 +4546,7 @@ <key>Campaign management</key> </entry> <entry> - <key>Campaign costs</key> + <key>Campaign Costs</key> </entry> <entry> <key>Shows all campaigns</key> @@ -4777,7 +4777,7 @@ <key>Credit</key> </entry> <entry> - <key>My tickets</key> + <key>My Tickets</key> </entry> <entry> <key>Replacement name</key> @@ -4933,13 +4933,13 @@ <key>Show my contacts</key> </entry> <entry> - <key>My contacts</key> + <key>My Contacts</key> </entry> <entry> <key>Show my organisations</key> </entry> <entry> - <key>My organisations</key> + <key>My Organisations</key> </entry> <entry> <key>Custom template</key> @@ -5334,7 +5334,7 @@ <key>Mobility, Transport and Logistics</key> </entry> <entry> - <key>Sales Project</key> + <key>Salesproject</key> </entry> <entry> <key>Load data</key> @@ -5688,7 +5688,7 @@ <key>No letters</key> </entry> <entry> - <key>Own workflow tasks</key> + <key>My Workflow Tasks</key> </entry> <entry> <key>My workflow tasks</key> @@ -6066,7 +6066,7 @@ <key>Workflow management</key> </entry> <entry> - <key>my visit planning</key> + <key>My Visit Planning</key> </entry> <entry> <key>Update offer</key> @@ -6522,7 +6522,7 @@ <key>Full details</key> </entry> <entry> - <key>Sales Projects</key> + <key>Salesprojects</key> </entry> <entry> <key>set Read</key> @@ -6705,7 +6705,7 @@ <key>{SENT_MAIL}</key> </entry> <entry> - <key>The Sales Project can only be filled when a company has been specified</key> + <key>The Salesproject can only be filled when a company has been specified</key> </entry> <entry> <key>The workflow could not be deployed</key> @@ -7299,6 +7299,9 @@ <entry> <key>Start marketing mailing</key> </entry> + <entry> + <key>Email address</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index e1b810a066f..7de3c6423c0 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -83,7 +83,7 @@ <value>Keine E-Mails</value> </entry> <entry> - <key>My organisations</key> + <key>My Organisations</key> <value>Meine Firmen</value> </entry> <entry> @@ -259,7 +259,7 @@ <value>Eigenschaftsgruppen können nicht verwendet werden</value> </entry> <entry> - <key>My contacts</key> + <key>My Contacts</key> <value>Meine Kontakte</value> </entry> <entry> @@ -407,7 +407,7 @@ <value>Priorität</value> </entry> <entry> - <key>Salesproject phases</key> + <key>Salesproject Phases</key> <value>Vertriebsprojektphasen</value> </entry> <entry> @@ -1028,7 +1028,7 @@ <value>Teilnehmer/innen</value> </entry> <entry> - <key>Contactmanagement</key> + <key>Contact Management</key> <value>Kontaktmanagement</value> </entry> <entry> @@ -1763,7 +1763,7 @@ <value>Niedrigpreisstrategie</value> </entry> <entry> - <key>Sent offers</key> + <key>Sent Offers</key> <value>Versendete Angebote</value> </entry> <entry> @@ -1787,7 +1787,7 @@ <value>Vertriebsprojekte</value> </entry> <entry> - <key>Open salesprojects</key> + <key>Open Salesprojects</key> <value>Offene Vertriebsprojekte</value> </entry> <entry> @@ -2016,7 +2016,7 @@ <value>Belegposten</value> </entry> <entry> - <key>Sent receipts</key> + <key>Sent Receipts</key> <value>Versendete Belege</value> </entry> <entry> @@ -2200,7 +2200,7 @@ <value>Vertriebsdashboard</value> </entry> <entry> - <key>Key figures</key> + <key>Key Figures</key> <value>Kennzahlen</value> </entry> <entry> @@ -6150,7 +6150,7 @@ <value>Keine Kontakte ausgewählt</value> </entry> <entry> - <key>My campaigns</key> + <key>My Campaigns</key> <value>Meine Kampagnen</value> </entry> <entry> @@ -6243,7 +6243,7 @@ <value>eine Datei ignoriert</value> </entry> <entry> - <key>All unlinked mails</key> + <key>All Unlinked Mails</key> <value>Alle unverknüpften E-Mails</value> </entry> <entry> @@ -6259,7 +6259,7 @@ <value>Eingehender Anruf von %0 (%1) nach %2</value> </entry> <entry> - <key>import mails</key> + <key>Import Mails</key> <value>E-Mails importieren</value> </entry> <entry> @@ -6463,7 +6463,7 @@ <value>Kampagnenmanagement</value> </entry> <entry> - <key>Campaign costs</key> + <key>Campaign Costs</key> <value>Kampagnenkosten</value> </entry> <entry> @@ -6753,7 +6753,7 @@ <value>Vorlagen-Anhänge verwenden</value> </entry> <entry> - <key>My tickets</key> + <key>My Tickets</key> <value>Meine Tickets</value> </entry> <entry> @@ -6965,7 +6965,7 @@ <key>yyyyMMdd</key> </entry> <entry> - <key>Sales Project</key> + <key>Salesproject</key> <value>Vertriebsprojekt</value> </entry> <entry> @@ -7800,7 +7800,7 @@ Bitte Datumseingabe prüfen</value> <key>;</key> </entry> <entry> - <key>Own workflow tasks</key> + <key>My Workflow Tasks</key> <value>Meine Workflow Aufgaben</value> </entry> <entry> @@ -8218,7 +8218,7 @@ Bitte Datumseingabe prüfen</value> <value>Workflow management</value> </entry> <entry> - <key>my visit planning</key> + <key>My Visit Planning</key> <value>Meine Besuchsplanung</value> </entry> <entry> @@ -8754,7 +8754,7 @@ Bitte Datumseingabe prüfen</value> <value>Noch nicht erstellt</value> </entry> <entry> - <key>Sales Projects</key> + <key>Salesprojects</key> <value>Vertriebsprojekte</value> </entry> <entry> @@ -9273,7 +9273,7 @@ Bitte Datumseingabe prüfen</value> <value>Punkte</value> </entry> <entry> - <key>The Sales Project can only be filled when a company has been specified</key> + <key>The Salesproject can only be filled when a company has been specified</key> <value>vertriebsprojekt darf nur gefüllt sein wenn eine Firma festgelegt wurde.</value> </entry> <entry> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 221f4b4a721..df669706ecc 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -86,7 +86,7 @@ <key>Female</key> </entry> <entry> - <key>Contactmanagement</key> + <key>Contact Management</key> </entry> <entry> <key>Office address</key> @@ -679,7 +679,7 @@ <key>Orderitems</key> </entry> <entry> - <key>Sent receipts</key> + <key>Sent Receipts</key> </entry> <entry> <key>Copy receipt</key> @@ -697,7 +697,7 @@ <key>Turnover</key> </entry> <entry> - <key>Sent offers</key> + <key>Sent Offers</key> </entry> <entry> <key>Show all activities</key> @@ -766,7 +766,7 @@ <key>Show all salesprojects</key> </entry> <entry> - <key>Open salesprojects</key> + <key>Open Salesprojects</key> </entry> <entry> <key>July</key> @@ -2426,7 +2426,7 @@ <value>Identifier</value> </entry> <entry> - <key>Salesproject phases</key> + <key>Salesproject Phases</key> </entry> <entry> <key>Add to Campaign</key> @@ -2444,7 +2444,7 @@ <key>Add participants to Campaign</key> </entry> <entry> - <key>Key figures</key> + <key>Key Figures</key> </entry> <entry> <key>Hierarchy</key> @@ -4215,7 +4215,7 @@ <key>Show my campaigns</key> </entry> <entry> - <key>My campaigns</key> + <key>My Campaigns</key> </entry> <entry> <key>Add to Bulkmail</key> @@ -4374,7 +4374,7 @@ <key>Unknown incoming call from %0 to %1</key> </entry> <entry> - <key>All unlinked mails</key> + <key>All Unlinked Mails</key> </entry> <entry> <key>hour</key> @@ -4386,7 +4386,7 @@ <key>Incoming call from %0 (%1) to %2</key> </entry> <entry> - <key>import mails</key> + <key>Import Mails</key> </entry> <entry> <key>Unknown accepted call from %0 to %1, duration: %2</key> @@ -4623,7 +4623,7 @@ <key>Add the selection to a serial letter</key> </entry> <entry> - <key>Campaign costs</key> + <key>Campaign Costs</key> </entry> <entry> <key>Shows all campaigns</key> @@ -4869,7 +4869,7 @@ <key>Use template attachments</key> </entry> <entry> - <key>My tickets</key> + <key>My Tickets</key> </entry> <entry> <key>HTML template - Only for .html</key> @@ -5010,13 +5010,13 @@ <key>Show my contacts</key> </entry> <entry> - <key>My contacts</key> + <key>My Contacts</key> </entry> <entry> <key>Show my organisations</key> </entry> <entry> - <key>My organisations</key> + <key>My Organisations</key> </entry> <entry> <key>Custom template</key> @@ -5411,7 +5411,7 @@ <key>Mobility, Transport and Logistics</key> </entry> <entry> - <key>Sales Project</key> + <key>Salesproject</key> </entry> <entry> <key>Load data</key> @@ -5765,7 +5765,7 @@ <key>No letters</key> </entry> <entry> - <key>Own workflow tasks</key> + <key>My Workflow Tasks</key> </entry> <entry> <key>My workflow tasks</key> @@ -6134,7 +6134,7 @@ <key>Workflow management</key> </entry> <entry> - <key>my visit planning</key> + <key>My Visit Planning</key> </entry> <entry> <key>Update offer</key> @@ -6607,7 +6607,7 @@ <key>Invalid file type; only .html, .eml and .txt are allowed</key> </entry> <entry> - <key>Sales Projects</key> + <key>Salesprojects</key> </entry> <entry> <key>set Read</key> @@ -6788,7 +6788,7 @@ <key>Workflow Model</key> </entry> <entry> - <key>The Sales Project can only be filled when a company has been specified</key> + <key>The Salesproject can only be filled when a company has been specified</key> </entry> <entry> <key>{SEND_MAIL}</key> @@ -7380,6 +7380,9 @@ <entry> <key>Start marketing mailing</key> </entry> + <entry> + <key>Email address</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonView/ActivityFilter_view/ActivityFilter_view.aod b/neonView/ActivityFilter_view/ActivityFilter_view.aod index a94234cc3f8..3dff8e3ef36 100644 --- a/neonView/ActivityFilter_view/ActivityFilter_view.aod +++ b/neonView/ActivityFilter_view/ActivityFilter_view.aod @@ -16,7 +16,7 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> </neonDashletConfiguration> @@ -31,7 +31,7 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> <parameters> diff --git a/neonView/CampaignCostChart_view/CampaignCostChart_view.aod b/neonView/CampaignCostChart_view/CampaignCostChart_view.aod index 9c8daa4a4eb..24159367f94 100644 --- a/neonView/CampaignCostChart_view/CampaignCostChart_view.aod +++ b/neonView/CampaignCostChart_view/CampaignCostChart_view.aod @@ -5,7 +5,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>CampaignCostsChart</name> - <title>Campaign costs</title> + <title>Campaign Costs</title> <description>Shows campaing costs graphically processed</description> <fragment>Campaign/full</fragment> <singleton v="true" /> diff --git a/neonView/CampaignFilter_view/CampaignFilter_view.aod b/neonView/CampaignFilter_view/CampaignFilter_view.aod index 0dcb198305d..4d7c3aac1c1 100644 --- a/neonView/CampaignFilter_view/CampaignFilter_view.aod +++ b/neonView/CampaignFilter_view/CampaignFilter_view.aod @@ -8,7 +8,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>CurrentUsersOwnedCampaigns</name> - <title>My campaigns</title> + <title>My Campaigns</title> <description>Show my campaigns</description> <fragment>Campaign/filter</fragment> <singleton v="true" /> diff --git a/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod b/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod index 723a24964e2..2c2b62c43e2 100644 --- a/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod +++ b/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod @@ -13,7 +13,7 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> </neonDashletConfiguration> diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod index dcfe1e8da89..3e058b7c388 100644 --- a/neonView/OfferFilter_view/OfferFilter_view.aod +++ b/neonView/OfferFilter_view/OfferFilter_view.aod @@ -25,7 +25,7 @@ </neonDashletConfiguration> <neonDashletConfiguration> <name>SendOffersDashlet</name> - <title>Sent offers</title> + <title>Sent Offers</title> <description>Show all sent offers</description> <fragment>Offer/filter</fragment> <singleton v="true" /> diff --git a/neonView/OrderFilter_view/OrderFilter_view.aod b/neonView/OrderFilter_view/OrderFilter_view.aod index 31110f64b91..c2afbae5ef6 100644 --- a/neonView/OrderFilter_view/OrderFilter_view.aod +++ b/neonView/OrderFilter_view/OrderFilter_view.aod @@ -25,7 +25,7 @@ </neonDashletConfiguration> <neonDashletConfiguration> <name>SendOrdersDashlet</name> - <title>Sent receipts</title> + <title>Sent Receipts</title> <description>Show all sent receipts</description> <fragment>Order/filter?search=eyJ0eXBlIjoiZ3JvdXAiLCJvcGVyYXRvciI6IkFORCIsImNoaWxkcyI6W3sidHlwZSI6InJvdyIsIm5hbWUiOiJPUkRFUlNUQVRVUyIsIm9wZXJhdG9yIjoiQ09OVEFJTlMiLCJ2YWx1ZSI6IkphIiwia2V5IjoiMSIsImNvbnRlbnR0eXBlIjoiQk9PTEVBTiJ9XX0%3D</fragment> <singleton v="false" /> diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod index 1cbde0c5309..8fdf03af01d 100644 --- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod +++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod @@ -15,13 +15,13 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> </neonDashletConfiguration> <neonDashletConfiguration> <name>OwnSupervisedOrganisations</name> - <title>My organisations</title> + <title>My Organisations</title> <description>Show my organisations</description> <fragment>Organisation/filter</fragment> <singleton v="false" /> @@ -30,7 +30,7 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> <parameters> diff --git a/neonView/PersonFilter_view/PersonFilter_view.aod b/neonView/PersonFilter_view/PersonFilter_view.aod index 721f83815ee..7c17332f697 100644 --- a/neonView/PersonFilter_view/PersonFilter_view.aod +++ b/neonView/PersonFilter_view/PersonFilter_view.aod @@ -15,13 +15,13 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> </neonDashletConfiguration> <neonDashletConfiguration> <name>OwnSupervisedContacts</name> - <title>My contacts</title> + <title>My Contacts</title> <description>Show my contacts</description> <fragment>Person/filter</fragment> <singleton v="false" /> @@ -30,7 +30,7 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> <parameters> diff --git a/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod b/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod index 67c3c736904..8ed958a9952 100644 --- a/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod +++ b/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod @@ -6,7 +6,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>SalesprojectPhases</name> - <title>Salesproject phases</title> + <title>Sales Project Phases</title> <description>Shows how many sales projects are in the various sales phases</description> <fragment>Salesproject/filter?search=eyJ0eXBlIjoiZ3JvdXAiLCJvcGVyYXRvciI6IkFORCIsImNoaWxkcyI6W3sidHlwZSI6InJvdyIsIm5hbWUiOiJQSEFTRSIsIm9wZXJhdG9yIjoiTk9UX0VRVUFMIiwidmFsdWUiOiJOZWdvdGlhdGlvbiIsImtleSI6IlNBTFBST0pQSEFTRU5FR08iLCJjb250ZW50dHlwZSI6IlRFWFQifSx7InR5cGUiOiJyb3ciLCJuYW1lIjoiU1RBVFVTIiwib3BlcmF0b3IiOiJFUVVBTCIsInZhbHVlIjoiT2ZmZW4iLCJrZXkiOiJTQUxQUk9KU1RBVE9QRU4iLCJjb250ZW50dHlwZSI6IlRFWFQifV19&axes=COUNT&grouping=%23EXTENSION.Phase_filterExtention.Phase_filterExtention%23TEXT</fragment> <singleton v="true" /> diff --git a/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod b/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod index dfb2ef2e310..c17221595c4 100644 --- a/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod +++ b/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod @@ -6,7 +6,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>ConvertionRates</name> - <title>Salesproject Convertion Rates</title> + <title>Sales Project Convertion Rates</title> <description>Shows the different conversion rates of the sales project phases</description> <fragment>SalesprojectConversionRate/filter?search=eyJ0eXBlIjoiZ3JvdXAiLCJvcGVyYXRvciI6IkFORCIsImNoaWxkcyI6W3sidHlwZSI6InJvdyIsIm5hbWUiOiIjRVhURU5TSU9OLkRBVEVfU1RBUlQuREFURV9TVEFSVCNEQVRFIiwib3BlcmF0b3IiOiJUSU1FRlJBTUVfRVFVQUwiLCJ2YWx1ZSI6IkRpZXNlcyBKYWhyIiwia2V5IjoiUkVMPUFESlVTVEVEO1VOSVQ9WUVBUiIsImNvbnRlbnR0eXBlIjoiREFURSJ9XX0%3D&axes=conversionRate&grouping=AB_KEYWORD_ENTRYID_KEYID%2C%23EXTENSION.Month.Month%23NUMBER</fragment> <singleton v="true" /> diff --git a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod index afcbeee47f9..04b352527d9 100644 --- a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod +++ b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> <name>SalesprojectEdit_view</name> - <title>Salesproject</title> + <title>Sales Project</title> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:FILTER</icon> <quickEntry v="6" /> diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod index c055908d526..5a88276721b 100644 --- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod +++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod @@ -6,7 +6,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>AllSalesprojectDashlet</name> - <title>Salesprojects</title> + <title>Sales Projects</title> <description>Show all salesprojects</description> <fragment>Salesproject/filter</fragment> <singleton v="true" /> @@ -25,7 +25,7 @@ </neonDashletConfiguration> <neonDashletConfiguration> <name>OpenSalesprojectsDashlet</name> - <title>Open salesprojects</title> + <title>Open Salesprojects</title> <description>Show open salesprojects</description> <fragment>Salesproject/filter?search=eyJ0eXBlIjoiZ3JvdXAiLCJvcGVyYXRvciI6IkFORCIsImNoaWxkcyI6W3sidHlwZSI6InJvdyIsIm5hbWUiOiJTVEFUVVMiLCJvcGVyYXRvciI6IkVRVUFMIiwidmFsdWUiOiJPZmZlbiIsImtleSI6IlNBTFBST0pTVEFUT1BFTiAgICAgICAgICAgICAgICAgICAgICIsImNvbnRlbnR0eXBlIjoiVEVYVCJ9XX0%253D</fragment> <singleton v="true" /> diff --git a/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod b/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod index d56d4278c12..6a0e513a643 100644 --- a/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod +++ b/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod @@ -5,7 +5,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>KeyFigures</name> - <title>Key figures</title> + <title>Key Figures</title> <description>Most important salse key figures</description> <fragment>SalesprojectAnalyses/full</fragment> <singleton v="true" /> diff --git a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod index 6dc1c376ae6..7b5e818ce4f 100644 --- a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod +++ b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod @@ -6,7 +6,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>mytickets</name> - <title>My tickets</title> + <title>My Tickets</title> <description>Show tickets where I am the editor</description> <fragment>SupportTicket/filter</fragment> <singleton v="true" /> diff --git a/neonView/TaskFilter_view/TaskFilter_view.aod b/neonView/TaskFilter_view/TaskFilter_view.aod index e42baf0ab3d..77601cb3a2e 100644 --- a/neonView/TaskFilter_view/TaskFilter_view.aod +++ b/neonView/TaskFilter_view/TaskFilter_view.aod @@ -16,7 +16,7 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> <parameters> diff --git a/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod b/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod index 8072435ed1e..441059938ff 100644 --- a/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod +++ b/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod @@ -5,7 +5,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>MailDropzone</name> - <title>import mails</title> + <title>Import Mails</title> <description>Drop area for creating activities from mails</description> <fragment>UniversalFileProcessor/dropzone</fragment> <preview></preview> diff --git a/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod b/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod index 6b4b8b73154..fc53c28edde 100644 --- a/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod +++ b/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod @@ -5,7 +5,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>allUnlinkedMailsDashlet</name> - <title>All unlinked mails</title> + <title>All Unlinked Mails</title> <description>All mails that could not automatically linked are displayed here</description> <fragment>UnlinkedMail/filter</fragment> <icon>VAADIN:AT</icon> diff --git a/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod b/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod index 4233a419591..d98e4cb1e5a 100644 --- a/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod +++ b/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod @@ -6,7 +6,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>currentWeek</name> - <title>my visit planning</title> + <title>My Visit Planning</title> <description>show visit planning of the week</description> <fragment>VisitPlanEntry/filter</fragment> <singleton v="true" /> diff --git a/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod b/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod index 9e0e3392f95..a6c4dbff4e5 100644 --- a/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod +++ b/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod @@ -6,7 +6,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>OwnWorkflowTasks</name> - <title>Own workflow tasks</title> + <title>My Workflow Tasks</title> <description>My workflow tasks</description> <fragment>WorkflowTask/filter</fragment> <icon>VAADIN:CHECK_SQUARE_O</icon> -- GitLab From aefe0bad6f6d3948a660d6926b66ab0bfd8ef918 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 10 Nov 2020 14:45:02 +0100 Subject: [PATCH 070/184] #1067448 copy receipt --- .../recordcontainers/index/query.js | 4 +- .../recordcontainers/index/query.js | 4 +- entity/Order_entity/Order_entity.aod | 208 +++++++++--------- .../documentation.adoc | 0 .../entityfields/copyorder/onActionProcess.js | 30 +++ .../entityfields/neworder/onActionProcess.js | 26 --- .../recordcontainers/db/onDBInsert.js | 10 +- .../offer_id.displayvalue/expression.js | 2 +- .../recordcontainers/index/query.js | 4 +- .../recordcontainers/index/query.js | 16 +- entity/Person_entity/initFilterProcess.js | 1 + .../recordcontainers/index/query.js | 10 +- .../recordcontainers/index/query.js | 2 +- .../fromquantity.displayvalue/expression.js | 2 +- .../recordcontainers/index/query.js | 2 +- process/Contact_lib/process.js | 6 +- process/Context_lib/process.js | 35 +-- process/Order_lib/process.js | 84 +++++-- process/Placeholder_lib/process.js | 4 +- process/PostalAddress_lib/process.js | 2 +- process/Sql_lib/process.js | 81 ++++++- 21 files changed, 332 insertions(+), 201 deletions(-) rename entity/Order_entity/entityfields/{neworder => copyorder}/documentation.adoc (100%) create mode 100644 entity/Order_entity/entityfields/copyorder/onActionProcess.js delete mode 100644 entity/Order_entity/entityfields/neworder/onActionProcess.js diff --git a/entity/Contract_entity/recordcontainers/index/query.js b/entity/Contract_entity/recordcontainers/index/query.js index e12356c93b0..62196bdcbb7 100644 --- a/entity/Contract_entity/recordcontainers/index/query.js +++ b/entity/Contract_entity/recordcontainers/index/query.js @@ -10,8 +10,8 @@ import("KeywordRegistry_basic"); var sqlHelper = new SqlMaskingUtils(); var querySelect = newSelect([ "CONTRACTID", //#UID - sqlHelper.concat(["CONTRACTCODE", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractStatus(), "CONTRACTSTATUS")], " | "), //#TITLE - sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Type of contract") + ":'", + sqlHelper.concatWithSeparator(["CONTRACTCODE", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractStatus(), "CONTRACTSTATUS")], " | "), //#TITLE + sqlHelper.concatWithSeparator(["ORGANISATION.NAME", "'| " + translate.text("Type of contract") + ":'", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractType(), "CONTRACTTYPE")]), //#DESCRIPTION "CONTRACTCODE", "CONTACT.ORGANISATION_ID", //CONTACT_ORG_ID diff --git a/entity/Offer_entity/recordcontainers/index/query.js b/entity/Offer_entity/recordcontainers/index/query.js index 7d975c8bb3e..b2853b92f92 100644 --- a/entity/Offer_entity/recordcontainers/index/query.js +++ b/entity/Offer_entity/recordcontainers/index/query.js @@ -9,8 +9,8 @@ import("KeywordRegistry_basic"); var sqlHelper = new SqlMaskingUtils(); var querySelect = newSelect([ "OFFER.OFFERID", //#UID - sqlHelper.concat([sqlHelper.cast("OFFER.OFFERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.offerStatus(), "OFFER.STATUS")], " | "), //#TITLE - sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Description") + ":'", sqlHelper.castLob("OFFER.INFO", 250)]), //#DESCRIPTION + sqlHelper.concatWithSeparator([sqlHelper.cast("OFFER.OFFERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.offerStatus(), "OFFER.STATUS")], " | "), //#TITLE + sqlHelper.concatWithSeparator(["ORGANISATION.NAME", "'| " + translate.text("Description") + ":'", sqlHelper.castLob("OFFER.INFO", 250)]), //#DESCRIPTION "OFFER.OFFERCODE", "OFFER.CONTACT_ID", "CONTACT.ORGANISATION_ID", //CONTACT_ORG_ID diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod index 06389d921d5..ae39a7c4364 100644 --- a/entity/Order_entity/Order_entity.aod +++ b/entity/Order_entity/Order_entity.aod @@ -100,11 +100,6 @@ <entityConsumer> <name>Orderitems</name> <description></description> - <dependency> - <name>dependency</name> - <entityName>Orderitem_entity</entityName> - <fieldName>Orderitems</fieldName> - </dependency> <children> <entityParameter> <name>OrderId_param</name> @@ -130,6 +125,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Orderitem_entity</entityName> + <fieldName>Orderitems</fieldName> + </dependency> </entityConsumer> <entityField> <name>NET</name> @@ -191,11 +191,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -206,19 +201,16 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> - <entityParameter> - <name>AssignmentName_param</name> - </entityParameter> <entityParameter> <name>AssignmentRowId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmentrowid_param/valueProcess.js</valueProcess> @@ -228,28 +220,28 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salesprojects</name> <dependency> <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Salesprojects</fieldName> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salesprojects</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordCurrencies</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Salesproject_entity</entityName> + <fieldName>Salesprojects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordCurrencies</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -257,14 +249,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -272,6 +264,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -290,11 +287,6 @@ </entityParameter> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -309,6 +301,11 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityField> <name>OFFER_ID</name> @@ -322,11 +319,6 @@ <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -341,15 +333,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Order_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -360,15 +352,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/stateProcess.js</stateProcess> <children> <entityParameter> <name>ObjectType_param</name> @@ -379,20 +371,25 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>ORDERTYPE</name> @@ -470,31 +467,31 @@ </entityField> <entityConsumer> <name>KeywordOrderTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordordertypes/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDunningLevels</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDunningLevels</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddunninglevels/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>OBJECT_ROWID</name> @@ -522,11 +519,6 @@ </entityField> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -537,14 +529,14 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Contexts</name> <dependency> <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> + <entityName>Object_entity</entityName> + <fieldName>FilteredObjects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Contexts</name> <children> <entityParameter> <name>Blacklist_param</name> @@ -555,6 +547,11 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>PossibleConnectionTypes</name> @@ -607,46 +604,46 @@ </entityField> <entityConsumer> <name>KeywordPaymentTerms</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordpaymentterms/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDeliveryTerms</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDeliveryTerms</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddeliveryterms/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>PossibleAddresses</name> <documentation>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/documentation.adoc</documentation> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAndContactAddresses</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAndContactAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>NOTICE</name> @@ -663,25 +660,20 @@ </entityField> <entityConsumer> <name>Offers</name> - <dependency> - <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>DocumentTemplateTexHeader</name> <dependency> <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>DocumentTemplateTexHeader</name> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -692,14 +684,14 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexheader/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>DocumentTemplateTexFooter</name> <dependency> <name>dependency</name> <entityName>DocumentTemplate_entity</entityName> <fieldName>DocumentTemplateProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>DocumentTemplateTexFooter</name> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -710,6 +702,11 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexfooter/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>ChosenTexHeader</name> @@ -797,10 +794,10 @@ <title>Count</title> </entityAggregateField> <entityActionField> - <name>newOrder</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/neworder/documentation.adoc</documentation> + <name>copyOrder</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/copyorder/documentation.adoc</documentation> <title>Copy receipt</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/neworder/onActionProcess.js</onActionProcess> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/copyorder/onActionProcess.js</onActionProcess> <iconId>VAADIN:COPY</iconId> </entityActionField> <entityActionField> @@ -916,6 +913,11 @@ </entityActionField> </children> </entityActionGroup> + <entityParameter> + <name>SourceOrderId_param</name> + <expose v="true" /> + <description></description> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Order_entity/entityfields/neworder/documentation.adoc b/entity/Order_entity/entityfields/copyorder/documentation.adoc similarity index 100% rename from entity/Order_entity/entityfields/neworder/documentation.adoc rename to entity/Order_entity/entityfields/copyorder/documentation.adoc diff --git a/entity/Order_entity/entityfields/copyorder/onActionProcess.js b/entity/Order_entity/entityfields/copyorder/onActionProcess.js new file mode 100644 index 00000000000..57c33c7f014 --- /dev/null +++ b/entity/Order_entity/entityfields/copyorder/onActionProcess.js @@ -0,0 +1,30 @@ +import("system.vars"); +import("system.neon"); +import("Order_lib"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + + +var orderId = vars.get("$field.SALESORDERID"); +var fieldValues = { + contactId: vars.getString("$field.CONTACT_ID"), + currency: vars.getString("$field.CURRENCY"), + language: vars.getString("$field.ISOLANGUAGE"), + header: vars.getString("$field.HEADER"), + footer: vars.getString("$field.FOOTER"), + offerId: vars.getString("$field.OFFER_ID"), + deliveryTerm: vars.getString("$field.DELIVERYTERMS"), + paymentTerm: vars.getString("$field.PAYMENTTERMS"), + paymentAddress: vars.getString("$field.PAYMENTADDRESS"), + deliveryAddress: vars.getString("$field.DELIVERYADDRESS"), + objectRowId: vars.getString("$field.OBJECT_ROWID"), + objectType: vars.getString("$field.OBJECT_TYPE"), + dunningDate: vars.getString("$field.DUNNINGDATE"), + dunningLevel: vars.getString("$field.DUNNINGLEVEL"), + orderType: vars.getString("$field.ORDERTYPE"), + cancellation: vars.getString("$field.CANCELLATION"), + orderStatus:vars.getString("$field.ORDERSTATUS") +}; + +OrderUtils.copyOrder(orderId, fieldValues); + \ No newline at end of file diff --git a/entity/Order_entity/entityfields/neworder/onActionProcess.js b/entity/Order_entity/entityfields/neworder/onActionProcess.js deleted file mode 100644 index d73a39e61fe..00000000000 --- a/entity/Order_entity/entityfields/neworder/onActionProcess.js +++ /dev/null @@ -1,26 +0,0 @@ -import("system.vars"); -import("system.neon"); -import("Order_lib"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -var contactId = vars.getString("$field.CONTACT_ID"); -var currency = vars.getString("$field.CURRENCY"); -var language = vars.getString("$field.ISOLANGUAGE"); -var header = vars.getString("$field.HEADER"); -var footer = vars.getString("$field.FOOTER"); -var offerId = vars.getString("$field.OFFER_ID"); -var deliveryTerm = vars.getString("$field.DELIVERYTERMS"); -var paymentTerm = vars.getString("$field.PAYMENTTERMS"); -var paymentAddress = vars.getString("$field.PAYMENTADDRESS"); -var deliveryAddress = vars.getString("$field.DELIVERYADDRESS"); -var rowId = vars.getString("$field.OBJECT_ROWID"); -var objectType = vars.getString("$field.OBJECT_TYPE"); -var dunningDate = vars.getString("$field.DUNNINGDATE"); -var dunningLevel = vars.getString("$field.DUNNINGLEVEL"); -var orderType= vars.getString("$field.ORDERTYPE"); -var cancellation= vars.getString("$field.CANCELLATION"); -var orderStatus=vars.getString("$field.ORDERSTATUS"); - -OrderUtils.copyOrder(offerId, contactId, orderType, language, currency, header, footer, deliveryTerm, paymentTerm, paymentAddress, deliveryAddress, objectType, rowId, dunningDate, dunningLevel, cancellation, orderStatus); - \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/onDBInsert.js b/entity/Order_entity/recordcontainers/db/onDBInsert.js index 8e0f20e8575..bd3c2bb14b9 100644 --- a/entity/Order_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Order_entity/recordcontainers/db/onDBInsert.js @@ -4,7 +4,11 @@ import("system.neon"); import("system.vars"); //@TODO: OfferId_param is also set by 'copy order' -> the items of the offer are copied. What should happen? -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.OfferId_param")) - OrderUtils.copyOfferItemsToOrder(vars.getString("$param.OfferId_param"), vars.get("$local.rowdata")["SALESORDER.SALESORDERID"]); - +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + if (vars.exists("$param.OfferId_param") && vars.get("$param.OfferId_param")) + OrderUtils.copyOfferItemsToOrder(vars.get("$param.OfferId_param"), vars.get("$local.uid")); + if (vars.exists("$param.SourceOrderId_param") && vars.get("$param.SourceOrderId_param")) + OrderUtils.copyOrderItems(vars.get("$param.SourceOrderId_param"), vars.get("$local.uid")); +} WorkflowSignalSender.inserted(); \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js index 2aec63a8d1b..cb7fa7682e1 100644 --- a/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js +++ b/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js @@ -2,4 +2,4 @@ import("system.result"); import("Context_lib"); import("system.db"); -result.string(db.translateStatement(ContextUtils.getNameSql("Offer", "SALESORDER.OFFER_ID"))); \ No newline at end of file +result.string(db.translateStatement(ContextUtils.getNameSql("Offer", null, "SALESORDER.OFFER_ID"))); \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/index/query.js b/entity/Order_entity/recordcontainers/index/query.js index 75ed9d1999b..74db3c61d09 100644 --- a/entity/Order_entity/recordcontainers/index/query.js +++ b/entity/Order_entity/recordcontainers/index/query.js @@ -8,8 +8,8 @@ import("KeywordRegistry_basic"); var sqlHelper = new SqlMaskingUtils(); var querySelect = newSelect([ "SALESORDERID", //#UID - sqlHelper.concat([sqlHelper.cast("SALESORDERCODE", SQLTYPES.CHAR, 10)], " | "), //#TITLE - sqlHelper.concat(["ORGANISATION.NAME"], " | "), //#DESCRIPTION + sqlHelper.concatWithSeparator([sqlHelper.cast("SALESORDERCODE", SQLTYPES.CHAR, 10)], " | "), //#TITLE + sqlHelper.concatWithSeparator(["ORGANISATION.NAME"], " | "), //#DESCRIPTION "SALESORDERCODE", "SALESORDER.CONTACT_ID", "CONTACT.ORGANISATION_ID", //as CONTACT_ORG_ID diff --git a/entity/Organisation_entity/recordcontainers/index/query.js b/entity/Organisation_entity/recordcontainers/index/query.js index 2d434dc250f..ee0f4bb6cea 100644 --- a/entity/Organisation_entity/recordcontainers/index/query.js +++ b/entity/Organisation_entity/recordcontainers/index/query.js @@ -20,14 +20,14 @@ var commMediumMailIds = CommUtil.getMediumIdsByCategory("EMAIL"); var sqlHelper = new SqlMaskingUtils(); var querySelect = newSelect([ "CONTACT.CONTACTID", - sqlHelper.concat(["ORGANISATION.NAME", "'|'", "ORGANISATION.CUSTOMERCODE"]), - sqlHelper.concat([ - sqlHelper.concat(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO", "'-'" + sqlHelper.concatWithSeparator(["ORGANISATION.NAME", "'|'", "ORGANISATION.CUSTOMERCODE"]), + sqlHelper.concatWithSeparator([ + sqlHelper.concatWithSeparator(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO", "'-'" ,"standardAddress.COUNTRY", "standardAddress.ZIP", "standardAddress.CITY"]), - sqlHelper.concat(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"]), - sqlHelper.concat(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"]) + sqlHelper.concatWithSeparator(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"]), + sqlHelper.concatWithSeparator(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"]) ], " | "), - sqlHelper.concat([sqlHelper.cast("standardAddress.LAT", SQLTYPES.VARCHAR, 16), sqlHelper.cast("standardAddress.LON", SQLTYPES.VARCHAR, 16)], ","), + sqlHelper.concatWithSeparator([sqlHelper.cast("standardAddress.LAT", SQLTYPES.VARCHAR, 16), sqlHelper.cast("standardAddress.LON", SQLTYPES.VARCHAR, 16)], ","), //additional indexed fields "ORGANISATION.NAME", sqlHelper.trim("ORGANISATION.ORGANISATIONID"),//trim to enable filter patterns like: >> -organisationid_value:0<< @@ -39,8 +39,8 @@ var querySelect = newSelect([ "ADDRESS.CITY", "standardEmail.ADDR", "standardPhone.ADDR", - sqlHelper.concat([sqlHelper.concat(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO"]) - ,sqlHelper.concat(["standardAddress.COUNTRY", "standardAddress.ZIP", "standardAddress.CITY"]) + sqlHelper.conconcatWithSeparatorcat([sqlHelper.concatWithSeparator(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO"]) + ,sqlHelper.concatWithSeparator(["standardAddress.COUNTRY", "standardAddress.ZIP", "standardAddress.CITY"]) ], " - ") ]) .from("ORGANISATION") diff --git a/entity/Person_entity/initFilterProcess.js b/entity/Person_entity/initFilterProcess.js index c30d06ea24f..f64ef8977cc 100644 --- a/entity/Person_entity/initFilterProcess.js +++ b/entity/Person_entity/initFilterProcess.js @@ -1,3 +1,4 @@ +import("system.entities"); import("Keyword_lib"); import("KeywordRegistry_basic"); import("system.result"); diff --git a/entity/Person_entity/recordcontainers/index/query.js b/entity/Person_entity/recordcontainers/index/query.js index 57faf589990..e5c704e81ad 100644 --- a/entity/Person_entity/recordcontainers/index/query.js +++ b/entity/Person_entity/recordcontainers/index/query.js @@ -18,12 +18,12 @@ var commMediumPhoneIds = CommUtil.getMediumIdsByCategory("PHONE"); sqlHelper = new SqlMaskingUtils(); var querySelect = newSelect([ "CONTACT.CONTACTID", //#UID - sqlHelper.concat(["PERSON.SALUTATION", "PERSON.FIRSTNAME", "PERSON.LASTNAME", "'|'", "ORGANISATION.NAME"]), //#TITLE - sqlHelper.concat([ - sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'", + sqlHelper.concatWithSeparator(["PERSON.SALUTATION", "PERSON.FIRSTNAME", "PERSON.LASTNAME", "'|'", "ORGANISATION.NAME"]), //#TITLE + sqlHelper.concatWithSeparator([ + sqlHelper.concatWithSeparator(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'", "defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"]), - sqlHelper.concat(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"]), - sqlHelper.concat(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"]) + sqlHelper.concatWithSeparator(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"]), + sqlHelper.concatWithSeparator(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"]) ], " | "), //#DESCRIPTION //additional indexed fields "CONTACT.CONTACTID", diff --git a/entity/Product_entity/recordcontainers/index/query.js b/entity/Product_entity/recordcontainers/index/query.js index e06093cbebe..b1d7ae47756 100644 --- a/entity/Product_entity/recordcontainers/index/query.js +++ b/entity/Product_entity/recordcontainers/index/query.js @@ -7,7 +7,7 @@ import("KeywordRegistry_basic"); var sqlHelper = new SqlMaskingUtils(); var sqlQuery = newSelect([ "PRODUCTID", //#UID - sqlHelper.concat(["PRODUCTCODE", "PRODUCTNAME"], " | "), //#TITLE + sqlHelper.concatWithSeparator(["PRODUCTCODE", "PRODUCTNAME"], " | "), //#TITLE KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "GROUPCODEID"), //#DESCRIPTION "PRODUCTCODE" ]) diff --git a/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js b/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js index 9d2ad815005..cd8dcbf86f1 100644 --- a/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js +++ b/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js @@ -7,7 +7,7 @@ import("Sql_lib"); var helper = new SqlMaskingUtils(); -var res = newSelect(helper.concat([helper.cast("PRODUCTPRICE.FROMQUANTITY", SQLTYPES.CHAR, 36), "' '", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.quantityUnit(), "PRODUCT.UNIT")], "|")) +var res = newSelect(helper.concatWithSeparator([helper.cast("PRODUCTPRICE.FROMQUANTITY", SQLTYPES.CHAR, 36), "' '", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.quantityUnit(), "PRODUCT.UNIT")], "|")) .from("PRODUCT") .where("PRODUCT.PRODUCTID = PRODUCTPRICE.PRODUCT_ID") .toString() diff --git a/entity/Salesproject_entity/recordcontainers/index/query.js b/entity/Salesproject_entity/recordcontainers/index/query.js index 000f54e04ce..ca558d146bc 100644 --- a/entity/Salesproject_entity/recordcontainers/index/query.js +++ b/entity/Salesproject_entity/recordcontainers/index/query.js @@ -10,7 +10,7 @@ var sqlHelper = new SqlMaskingUtils(); var sqlQuery = newSelect([ "SALESPROJECTID", //#UID "PROJECTTITLE", //#TITLE - sqlHelper.concat([ + sqlHelper.concatWithSeparator([ "'" + translate.text("Status") + ":'", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectState(), "STATUS"), "'| " + translate.text("Phase") + ":'", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectPhase(), "PHASE") ]), //#DESCRIPTION diff --git a/process/Contact_lib/process.js b/process/Contact_lib/process.js index 05d3069f863..4f73f699c57 100644 --- a/process/Contact_lib/process.js +++ b/process/Contact_lib/process.js @@ -552,7 +552,7 @@ ContactUtils.getActiveCommRestrictionsSubselect = function() parts.push("case when exists(" + subquery.toString() + ") then '" + pMedium[1] + "' else '' end"); }) - return sqlMasking.concat(parts, " ", false); + return sqlMasking.concatWithSeparator(parts, " ", false); } /** @@ -679,12 +679,12 @@ function ContactTitleRenderer(pContact, pOptions) //function that renders the contact into a sql expression (e.g. for a subselect) this._asSqlFn = function(){ var maskingUtil = new SqlMaskingUtils(); - var res = maskingUtil.concat([this.contact.salutation, this.contact.title, this.contact.firstname, this.contact.middlename, this.contact.lastname].filter(function (e){ + var res = maskingUtil.concatWithSeparator([this.contact.salutation, this.contact.title, this.contact.firstname, this.contact.middlename, this.contact.lastname].filter(function (e){ return e != ""; }), " ", false); //binary AND check for possibility to check serveral options if (this._options & ContactTitleRenderer.OPTIONS.IncludeOrganisation && this.contact.organisationName) - res = maskingUtil.concat([res, this.contact.organisationName], " | "); + res = maskingUtil.concatWithSeparator([res, this.contact.organisationName], " | "); return res; }; diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index a9b9eac3121..a85d1c47027 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -506,7 +506,7 @@ ContextUtils.getSelectMap = function() "Person": [newSelect("CONTACTID").from("CONTACT").where("PERSON_ID is not null"), "CONTACT.ORGANISATION_ID", ["Offer", "Order", "Contract", "SupportTicket"]] }) ,"Person": ContextSelector.create("CONTACT", "CONTACTID") - .setTitleExpression(maskingUtils.concat([ + .setTitleExpression(maskingUtils.concatWithSeparator([ new ContactTitleRenderer(Contact.createWithColumnPreset()).asSql() ,"' - '"//looks pretty bad; TODO: workaround till Lookups can be loaded over a link-entity; then use displayProc ,"defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO" @@ -517,7 +517,7 @@ ContextUtils.getSelectMap = function() + " join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID " + " left join ADDRESS defaultAddress on defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID") ,"PrivatePerson": ContextSelector.create("PERSON", "PERSONID") - .setTitleExpression(maskingUtils.concat([ + .setTitleExpression(maskingUtils.concatWithSeparator([ new ContactTitleRenderer(Contact.createWithColumnPresetForPrivatePerson()).asSql() ,"' - '"//looks pretty bad; TODO: workaround till Lookups can be loaded over a link-entity; then use displayProc ,"defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO" @@ -528,19 +528,19 @@ ContextUtils.getSelectMap = function() .setContactIdField("CONTACT.CONTACTID") ,"Activity": ContextSelector.create("ACTIVITY", "ACTIVITYID", "SUBJECT") ,"Salesproject": ContextSelector.create("SALESPROJECT", "SALESPROJECTID") - .setTitleExpression(maskingUtils.concat([ + .setTitleExpression(maskingUtils.concatenate([ "'" + translate.text("Salesproject") + "'", "' '", maskingUtils.cast("PROJECTCODE", SQLTYPES.VARCHAR, 10), "' | '", "PROJECTTITLE" - ], "", false)) + ])) .setContactIdField("CONTACT_ID") .setCreationDateField("STARTDATE") .setStateField("STATUS") .setActiveStates([$KeywordRegistry.salesprojectState$open(), $KeywordRegistry.salesprojectState$postponed()]) ,"Contract": ContextSelector.create("CONTRACT", "CONTRACTID") - .setTitleExpression(maskingUtils.cast(maskingUtils.concat([ + .setTitleExpression(maskingUtils.cast(maskingUtils.concatWithSeparator([ KeywordUtils.getResolvedTitleSqlPart("ContractType", "CONTRACTTYPE"), maskingUtils.cast("CONTRACTCODE", SQLTYPES.VARCHAR, 10) ], " "), isOracle ? SQLTYPES.NVARCHAR : SQLTYPES.VARCHAR, 50)) @@ -549,19 +549,19 @@ ContextUtils.getSelectMap = function() .setStateField("CONTRACTSTATUS") .setActiveStates([$KeywordRegistry.contractState$validLimited(), $KeywordRegistry.contractState$validUnlimited(), $KeywordRegistry.contractState$notSigned()]) ,"Offer": ContextSelector.create("OFFER", "OFFERID") - .setTitleExpression(maskingUtils.cast(maskingUtils.concat([ + .setTitleExpression(maskingUtils.cast(maskingUtils.concatenate([ "'" + translate.text("Offer") + "'", "' '", maskingUtils.cast("OFFERCODE", SQLTYPES.VARCHAR, 10), "'-'", maskingUtils.cast("VERSNR", SQLTYPES.VARCHAR, 10) - ], "", false), isOracle ? SQLTYPES.NVARCHAR : SQLTYPES.VARCHAR, 50)) + ]), isOracle ? SQLTYPES.NVARCHAR : SQLTYPES.VARCHAR, 50)) .setContactIdField("CONTACT_ID") .setCreationDateField("OFFERDATE") .setStateField("STATUS") .setActiveStates([$KeywordRegistry.offerStatus$open(), $KeywordRegistry.offerStatus$checked(), $KeywordRegistry.offerStatus$sent()]) ,"Order": ContextSelector.create("SALESORDER", "SALESORDERID") - .setTitleExpression(maskingUtils.cast(maskingUtils.concat([ + .setTitleExpression(maskingUtils.cast(maskingUtils.concatWithSeparator([ KeywordUtils.getResolvedTitleSqlPart("OrderType", "ORDERTYPE"), maskingUtils.cast("SALESORDERCODE", SQLTYPES.VARCHAR, 10) ], " "), isOracle ? SQLTYPES.NVARCHAR : SQLTYPES.VARCHAR, 50)) @@ -570,14 +570,14 @@ ContextUtils.getSelectMap = function() .setStateField("ORDERSTATUS") .setActiveStates([0, 1]) ,"Product": ContextSelector.create("PRODUCT", "PRODUCTID") - .setTitleExpression(maskingUtils.concat([ + .setTitleExpression(maskingUtils.concatenate([ "PRODUCTCODE", "' | '", "PRODUCTNAME" - ], "", false)) + ])) ,"Task": ContextSelector.create("TASK", "TASKID", "SUBJECT") ,"Campaign": ContextSelector.create("CAMPAIGN", "CAMPAIGNID") - .setTitleExpression(maskingUtils.concat(["CAMPAIGN.NAME", "CAMPAIGNSTEP.NAME"], " - ", false)) + .setTitleExpression(maskingUtils.concatWithSeparator(["CAMPAIGN.NAME", "CAMPAIGNSTEP.NAME"], " - ", false)) .setContactIdField("CAMPAIGNPARTICIPANT.CONTACT_ID") .setJoinExpression("left join CAMPAIGNPARTICIPANT on CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID " + "left join CAMPAIGNSTEP on CAMPAIGNSTEP.CAMPAIGNSTEPID = CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID") @@ -629,15 +629,18 @@ ContextUtils.getNameSubselectSql = function(pContextIdDbField, pRowIdDbField) /** * TODO: !!!temporary function until you can get fields from another Entity!!! */ -ContextUtils.getNameSql = function(pContextId, pRowId) +ContextUtils.getNameSql = function(pContextId, pRowId, pRowIdField) { var selectMap = ContextUtils.getSelectMap () if (selectMap[pContextId] != undefined) { - return newSelect(selectMap[pContextId].titleExpression) - .from(selectMap[pContextId].getFullFromClause()) - .whereIfSet(selectMap[pContextId].getFullIdField(), pRowId) - .build(SqlBuilder.NORESULT_CONDITION()); + var sql = newSelect(selectMap[pContextId].titleExpression) + .from(selectMap[pContextId].getFullFromClause()); + if (pRowIdField) + sql.where(selectMap[pContextId].getFullIdField() + " = " + pRowIdField); + else + sql.whereIfSet(selectMap[pContextId].getFullIdField(), pRowId); + return sql.build(SqlBuilder.NORESULT_CONDITION()); } else return "select 1 from person where 1=2"; diff --git a/process/Order_lib/process.js b/process/Order_lib/process.js index bcb1b842869..10c273583ad 100644 --- a/process/Order_lib/process.js +++ b/process/Order_lib/process.js @@ -97,32 +97,42 @@ OrderUtils.createNewOrder = function(pContextId, pRowId, pRelationId) neon.openContext("Order", null, null, neon.OPERATINGSTATE_NEW, params); } -OrderUtils.copyOrder = function (pSourceOfferId, pContactId, pOrderType, pLanguage, pCurrency, pHeader, pFooter, pDeliveryTerm, pPaymentTerm, pPaymentAddress, pDeliveryAddress, pObjectType, pRowId, pDunningDate, pDunningLevel, pCancellation, pOrderStatus) +/** + * Opens a new Order copy + * + * @param {String} pSourceOrderId id of the source order + * @param {Object} [pOrderData] the field values to preset, possible properties: contactId, orderType, language, offerId, currency, + * header, footer, deliveryTerm, paymentTerm, paymentAddress, deliveryAddress, objectType, objectRowId, + * dunningDate, dunningLevel, cancellation, orderStatus + */ +OrderUtils.copyOrder = function (pSourceOrderId, pOrderData) { - + if (!pOrderData) + pOrderData = {}; var fieldparams = { - "$field.CONTACT_ID" : pContactId, - "$field.ORDERTYPE" : pOrderType, - "$field.ISOLANGUAGE" : pLanguage, - "$field.OFFER_ID" : pSourceOfferId, - "$field.CURRENCY" : pCurrency || "", - "$field.HEADER" : pHeader || "", - "$field.FOOTER" : pFooter || "", - "$field.DELIVERYTERMS" : pDeliveryTerm || "", - "$field.PAYMENTTERMS" : pPaymentTerm || "", - "$field.PAYMENTADDRESS" : pPaymentAddress || "", - "$field.DELIVERYADDRESS" : pDeliveryAddress || "", - "$field.OBJECT_TYPE" : pObjectType || "", - "$field.OBJECT_ROWID" : pRowId || "", - "$field.DUNNINGDATE" : pDunningDate || "", - "$field.DUNNINGLEVEL" : pDunningLevel || "", - "$field.CANCELLATION" : pCancellation || "", - "$field.ORDERSTATUS" : pOrderStatus || "" + "$field.CONTACT_ID": pOrderData.contactId, + "$field.ORDERTYPE": pOrderData.orderType, + "$field.ISOLANGUAGE": pOrderData.language, + "$field.OFFER_ID": pOrderData.offerId, + "$field.CURRENCY": pOrderData.currency || "", + "$field.HEADER": pOrderData.header || "", + "$field.FOOTER": pOrderData.footer || "", + "$field.DELIVERYTERMS": pOrderData.deliveryTerm || "", + "$field.PAYMENTTERMS": pOrderData.paymentTerm || "", + "$field.PAYMENTADDRESS": pOrderData.paymentAddress || "", + "$field.DELIVERYADDRESS": pOrderData.deliveryAddress || "", + "$field.OBJECT_TYPE": pOrderData.objectType || "", + "$field.OBJECT_ROWID": pOrderData.objectRowId || "", + "$field.DUNNINGDATE": pOrderData.dunningDate || "", + "$field.DUNNINGLEVEL": pOrderData.dunningLevel || "", + "$field.CANCELLATION": pOrderData.cancellation || "", + "$field.ORDERSTATUS": pOrderData.orderStatus || "" }; - var params = {}; - params["Copy_param"] = JSON.stringify(fieldparams); - params["OfferId_param"] = pSourceOfferId; + var params = { + "Copy_param": JSON.stringify(fieldparams), + "SourceOrderId_param": pSourceOrderId + }; neon.openContext("Order", null, null, neon.OPERATINGSTATE_NEW, params); } @@ -174,6 +184,36 @@ OrderUtils.copyOfferItemsToOrder = function (pSourceOfferId, pOrderId) .updateData(true, "SALESORDER", cols, null, vals); } +/** + * copies all orderItems and creates orderItems for an order + * + * @param {String} pSourceOrderId the order to get the items from + * @param {String} pTargetOrderId the order to create the items for + */ +OrderUtils.copyOrderItems = function (pSourceOrderId, pTargetOrderId) +{ + var inputMapping = { + "SALESORDERITEM": { + condition: newWhere("SALESORDERITEM.SALESORDER_ID", pSourceOrderId), + ValueMapping: { + "SALESORDER_ID": pTargetOrderId + } + } + }; + CopyModuleUtils.copyModule(inputMapping); + + var oiUtils = new OrderItemUtils(pTargetOrderId); + + //update order price + var [netValue, vat] = oiUtils.getNetAndVat(); + + newWhere("SALESORDER.SALESORDERID", pTargetOrderId) + .updateFields({ + "NET": netValue, + "VAT": vat + }); +} + /** * Will build the order report for the given order. * diff --git a/process/Placeholder_lib/process.js b/process/Placeholder_lib/process.js index 2c1cb9d8214..a162fc7ee5d 100644 --- a/process/Placeholder_lib/process.js +++ b/process/Placeholder_lib/process.js @@ -53,10 +53,10 @@ PlaceholderUtils.getPlaceholders = function (pLocale, pIsExportTemplateField) _addSqlPart("title", "PERSON.TITLE", null , translate.text("Title", locale)); _addSqlPart("phone", CommUtil.getStandardSubSqlPhone(), null , translate.text("Phone", locale)); _addSqlPart("email", CommUtil.getStandardSubSqlMail(), null , translate.text("Email", locale)); - _addSqlPart("name", sqlUtil.concat(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"]), null , translate.text("Name", locale)); + _addSqlPart("name", sqlUtil.concatWithSeparator(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"]), null , translate.text("Name", locale)); _addSqlPart("senderPhone", CommUtil.getStandardSubSqlPhone(), Placeholder.targets.SENDER, null); _addSqlPart("senderEmail", CommUtil.getStandardSubSqlMail(), Placeholder.targets.SENDER, null); - _addSqlPart("senderName", sqlUtil.concat(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"]), Placeholder.targets.SENDER, null); + _addSqlPart("senderName", sqlUtil.concatWithSeparator(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"]), Placeholder.targets.SENDER, null); _addSqlPart("date", "'" + datetime.toDate(vars.get("sys.date"), translate.text("dd.MM.yyyy")) + "'", Placeholder.targets.SENDER, null); diff --git a/process/PostalAddress_lib/process.js b/process/PostalAddress_lib/process.js index b7cf917b594..996991dd07a 100644 --- a/process/PostalAddress_lib/process.js +++ b/process/PostalAddress_lib/process.js @@ -42,7 +42,7 @@ AddressUtils.formatOnelineSql = function () { //request (and resulting change) was made here to NOT include Country int othe title var maskingHelper = new SqlMaskingUtils(); - var sqlExpression = maskingHelper.concat(["ADDRESS.ADDRESS", "ADDRESS.BUILDINGNO", "'-'", "ADDRESS.COUNTRY", "ADDRESS.ZIP", "ADDRESS.CITY", "ADDRESS.ADDRIDENTIFIER"]); + var sqlExpression = maskingHelper.concatWithSeparator(["ADDRESS.ADDRESS", "ADDRESS.BUILDINGNO", "'-'", "ADDRESS.COUNTRY", "ADDRESS.ZIP", "ADDRESS.CITY", "ADDRESS.ADDRIDENTIFIER"]); return sqlExpression; }; diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index 75c6923e249..540b11b1525 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -3568,9 +3568,64 @@ SqlMaskingUtils.prototype.substring = function (pField, pStartPos, pLength) return sqlFnName + "(" + pField + ", " + pStartPos + ", " + pLength + ")"; } +/** +* masks the function concat (without separator) +* +* @param {Array} pFields fields (or expressions) that should be concatenated +* +* @return {String} part of SQL-querey +*/ +SqlMaskingUtils.prototype.concatenate = function (pFields) +{ + if (pFields.length === 0) + return "''"; + + switch (this.dbType) + { + case db.DBTYPE_MYSQL4: + case db.DBTYPE_MARIADB10: + case db.DBTYPE_POSTGRESQL8: + return " concat(" + pFields.join(", ") + ")"; + case db.DBTYPE_ORACLE10_CLUSTER: + case db.DBTYPE_ORACLE10_THIN: + case db.DBTYPE_ORACLE10_OCI: + break; + case db.DBTYPE_SQLSERVER2000: + //MS SQL Server supports "concat_ws" (and ignoring null values) from version SQL Server 2017 and newer: + //https://docs.microsoft.com/de-de/sql/t-sql/functions/concat-ws-transact-sql?view=sql-server-2017 + break; + case db.DBTYPE_DERBY10: + break; + default: + throw new Error(translate.withArguments("${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0", ["SqlMaskingUtils.prototype.concatenate"])); + } + + var fields = []; + + for (let i = 0; i < pFields.length; i++) + { + let field = pFields[i]; + let isLast = i + 1 === pFields.length; + + if (field && field != "''") + { + if (_isFixedValue(field)) + fields.push(field); + else + fields.push(this.isNull(field)); + } + } + + return fields.join(this.getConcatSymbol()) || "''"; + + function _isFixedValue (pSqlField) + { + return pSqlField.startsWith("'") && pSqlField.endsWith("'") && !pSqlField.slice(1, -1).includes("'"); + } +} /** -* masks the function concat +* masks the function concat_ws * if a sql field is empty no separator will be added * note that this function will often create a lot of sql-code * @@ -3580,13 +3635,16 @@ SqlMaskingUtils.prototype.substring = function (pField, pStartPos, pLength) * * @return {String} part of SQL-querey */ -SqlMaskingUtils.prototype.concat = function (pFields, pSeparator, pAutoTrimFields) +SqlMaskingUtils.prototype.concatWithSeparator = function (pFields, pSeparator, pAutoTrimFields) { if (pFields.length === 0) return "''"; if (pFields.length === 1) return pFields[0]; + if (pSeparator === "" && pAutoTrimFields == false) + return this.concatenate(pFields); + if (pAutoTrimFields == undefined) pAutoTrimFields = true; @@ -3662,6 +3720,25 @@ SqlMaskingUtils.prototype.concat = function (pFields, pSeparator, pAutoTrimField } } +/** +* masks the function concat +* if a sql field is empty no separator will be added +* note that this function will often create a lot of sql-code +* +* @param {Array} pFields fields (or expressions) that should be concatenated +* @param {String} [pSeparator=space-character] character for separating the fields +* @param {String} [pAutoTrimFields=true] autoTrimFields if true the expressions are always trimmed, false no change will be applied +* +* @return {String} part of SQL-querey +* +* @deprecated The function has been renamed to SqlMaskingUtils.prototype.concatWithSeparator to differentiate it from +* SqlMaskingUtils.prototype.concatenate. +*/ +SqlMaskingUtils.prototype.concat = function (pFields, pSeparator, pAutoTrimFields) +{ + return this.concatWithSeparator(pFields, pSeparator, pAutoTrimFields); +} + /** * returns the function for replacing a null value * -- GitLab From a7ca554d6b45d261e5b50a8499504870bb4f5288 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 10 Nov 2020 16:14:58 +0100 Subject: [PATCH 071/184] #1067448 order copy fix --- entity/Order_entity/Order_entity.aod | 207 +++++++++--------- .../documentation.adoc | 0 .../entityfields/copyorder/onActionProcess.js | 30 +++ .../entityfields/neworder/onActionProcess.js | 26 --- .../recordcontainers/db/onDBInsert.js | 12 +- process/Order_lib/process.js | 84 +++++-- 6 files changed, 204 insertions(+), 155 deletions(-) rename entity/Order_entity/entityfields/{neworder => copyorder}/documentation.adoc (100%) create mode 100644 entity/Order_entity/entityfields/copyorder/onActionProcess.js delete mode 100644 entity/Order_entity/entityfields/neworder/onActionProcess.js diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod index 06389d921d5..1ff05a7b48c 100644 --- a/entity/Order_entity/Order_entity.aod +++ b/entity/Order_entity/Order_entity.aod @@ -100,11 +100,6 @@ <entityConsumer> <name>Orderitems</name> <description></description> - <dependency> - <name>dependency</name> - <entityName>Orderitem_entity</entityName> - <fieldName>Orderitems</fieldName> - </dependency> <children> <entityParameter> <name>OrderId_param</name> @@ -130,6 +125,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Orderitem_entity</entityName> + <fieldName>Orderitems</fieldName> + </dependency> </entityConsumer> <entityField> <name>NET</name> @@ -191,11 +191,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -206,19 +201,16 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> - <entityParameter> - <name>AssignmentName_param</name> - </entityParameter> <entityParameter> <name>AssignmentRowId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmentrowid_param/valueProcess.js</valueProcess> @@ -228,28 +220,28 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salesprojects</name> <dependency> <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Salesprojects</fieldName> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salesprojects</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordCurrencies</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Salesproject_entity</entityName> + <fieldName>Salesprojects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordCurrencies</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -257,14 +249,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -272,6 +264,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -290,11 +287,6 @@ </entityParameter> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -309,6 +301,11 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityField> <name>OFFER_ID</name> @@ -322,11 +319,6 @@ <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -341,15 +333,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Order_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -360,15 +352,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/stateProcess.js</stateProcess> <children> <entityParameter> <name>ObjectType_param</name> @@ -379,20 +371,25 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>ORDERTYPE</name> @@ -470,31 +467,31 @@ </entityField> <entityConsumer> <name>KeywordOrderTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordordertypes/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDunningLevels</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDunningLevels</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddunninglevels/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>OBJECT_ROWID</name> @@ -522,11 +519,6 @@ </entityField> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -537,14 +529,14 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Contexts</name> <dependency> <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> + <entityName>Object_entity</entityName> + <fieldName>FilteredObjects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Contexts</name> <children> <entityParameter> <name>Blacklist_param</name> @@ -555,6 +547,11 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>PossibleConnectionTypes</name> @@ -607,46 +604,46 @@ </entityField> <entityConsumer> <name>KeywordPaymentTerms</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordpaymentterms/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDeliveryTerms</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDeliveryTerms</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddeliveryterms/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>PossibleAddresses</name> <documentation>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/documentation.adoc</documentation> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAndContactAddresses</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAndContactAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>NOTICE</name> @@ -663,25 +660,20 @@ </entityField> <entityConsumer> <name>Offers</name> - <dependency> - <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>DocumentTemplateTexHeader</name> <dependency> <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>DocumentTemplateTexHeader</name> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -692,14 +684,14 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexheader/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>DocumentTemplateTexFooter</name> <dependency> <name>dependency</name> <entityName>DocumentTemplate_entity</entityName> <fieldName>DocumentTemplateProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>DocumentTemplateTexFooter</name> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -710,6 +702,11 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexfooter/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>ChosenTexHeader</name> @@ -797,10 +794,10 @@ <title>Count</title> </entityAggregateField> <entityActionField> - <name>newOrder</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/neworder/documentation.adoc</documentation> + <name>copyOrder</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/copyorder/documentation.adoc</documentation> <title>Copy receipt</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/neworder/onActionProcess.js</onActionProcess> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/copyorder/onActionProcess.js</onActionProcess> <iconId>VAADIN:COPY</iconId> </entityActionField> <entityActionField> @@ -916,6 +913,10 @@ </entityActionField> </children> </entityActionGroup> + <entityParameter> + <name>SourceOrderId_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Order_entity/entityfields/neworder/documentation.adoc b/entity/Order_entity/entityfields/copyorder/documentation.adoc similarity index 100% rename from entity/Order_entity/entityfields/neworder/documentation.adoc rename to entity/Order_entity/entityfields/copyorder/documentation.adoc diff --git a/entity/Order_entity/entityfields/copyorder/onActionProcess.js b/entity/Order_entity/entityfields/copyorder/onActionProcess.js new file mode 100644 index 00000000000..57c33c7f014 --- /dev/null +++ b/entity/Order_entity/entityfields/copyorder/onActionProcess.js @@ -0,0 +1,30 @@ +import("system.vars"); +import("system.neon"); +import("Order_lib"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + + +var orderId = vars.get("$field.SALESORDERID"); +var fieldValues = { + contactId: vars.getString("$field.CONTACT_ID"), + currency: vars.getString("$field.CURRENCY"), + language: vars.getString("$field.ISOLANGUAGE"), + header: vars.getString("$field.HEADER"), + footer: vars.getString("$field.FOOTER"), + offerId: vars.getString("$field.OFFER_ID"), + deliveryTerm: vars.getString("$field.DELIVERYTERMS"), + paymentTerm: vars.getString("$field.PAYMENTTERMS"), + paymentAddress: vars.getString("$field.PAYMENTADDRESS"), + deliveryAddress: vars.getString("$field.DELIVERYADDRESS"), + objectRowId: vars.getString("$field.OBJECT_ROWID"), + objectType: vars.getString("$field.OBJECT_TYPE"), + dunningDate: vars.getString("$field.DUNNINGDATE"), + dunningLevel: vars.getString("$field.DUNNINGLEVEL"), + orderType: vars.getString("$field.ORDERTYPE"), + cancellation: vars.getString("$field.CANCELLATION"), + orderStatus:vars.getString("$field.ORDERSTATUS") +}; + +OrderUtils.copyOrder(orderId, fieldValues); + \ No newline at end of file diff --git a/entity/Order_entity/entityfields/neworder/onActionProcess.js b/entity/Order_entity/entityfields/neworder/onActionProcess.js deleted file mode 100644 index d73a39e61fe..00000000000 --- a/entity/Order_entity/entityfields/neworder/onActionProcess.js +++ /dev/null @@ -1,26 +0,0 @@ -import("system.vars"); -import("system.neon"); -import("Order_lib"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -var contactId = vars.getString("$field.CONTACT_ID"); -var currency = vars.getString("$field.CURRENCY"); -var language = vars.getString("$field.ISOLANGUAGE"); -var header = vars.getString("$field.HEADER"); -var footer = vars.getString("$field.FOOTER"); -var offerId = vars.getString("$field.OFFER_ID"); -var deliveryTerm = vars.getString("$field.DELIVERYTERMS"); -var paymentTerm = vars.getString("$field.PAYMENTTERMS"); -var paymentAddress = vars.getString("$field.PAYMENTADDRESS"); -var deliveryAddress = vars.getString("$field.DELIVERYADDRESS"); -var rowId = vars.getString("$field.OBJECT_ROWID"); -var objectType = vars.getString("$field.OBJECT_TYPE"); -var dunningDate = vars.getString("$field.DUNNINGDATE"); -var dunningLevel = vars.getString("$field.DUNNINGLEVEL"); -var orderType= vars.getString("$field.ORDERTYPE"); -var cancellation= vars.getString("$field.CANCELLATION"); -var orderStatus=vars.getString("$field.ORDERSTATUS"); - -OrderUtils.copyOrder(offerId, contactId, orderType, language, currency, header, footer, deliveryTerm, paymentTerm, paymentAddress, deliveryAddress, objectType, rowId, dunningDate, dunningLevel, cancellation, orderStatus); - \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/onDBInsert.js b/entity/Order_entity/recordcontainers/db/onDBInsert.js index 8e0f20e8575..b472296c1cc 100644 --- a/entity/Order_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Order_entity/recordcontainers/db/onDBInsert.js @@ -4,7 +4,11 @@ import("system.neon"); import("system.vars"); //@TODO: OfferId_param is also set by 'copy order' -> the items of the offer are copied. What should happen? -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.OfferId_param")) - OrderUtils.copyOfferItemsToOrder(vars.getString("$param.OfferId_param"), vars.get("$local.rowdata")["SALESORDER.SALESORDERID"]); - -WorkflowSignalSender.inserted(); \ No newline at end of file +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + if (vars.exists("$param.OfferId_param") && vars.get("$param.OfferId_param")) + OrderUtils.copyOfferItemsToOrder(vars.get("$param.OfferId_param"), vars.get("$local.uid")); + if (vars.exists("$param.SourceOrderId_param") && vars.get("$param.SourceOrderId_param")) + OrderUtils.copyOrderItems(vars.get("$param.SourceOrderId_param"), vars.get("$local.uid")); +} +WorkflowSignalSender.inserted(); diff --git a/process/Order_lib/process.js b/process/Order_lib/process.js index bcb1b842869..10c273583ad 100644 --- a/process/Order_lib/process.js +++ b/process/Order_lib/process.js @@ -97,32 +97,42 @@ OrderUtils.createNewOrder = function(pContextId, pRowId, pRelationId) neon.openContext("Order", null, null, neon.OPERATINGSTATE_NEW, params); } -OrderUtils.copyOrder = function (pSourceOfferId, pContactId, pOrderType, pLanguage, pCurrency, pHeader, pFooter, pDeliveryTerm, pPaymentTerm, pPaymentAddress, pDeliveryAddress, pObjectType, pRowId, pDunningDate, pDunningLevel, pCancellation, pOrderStatus) +/** + * Opens a new Order copy + * + * @param {String} pSourceOrderId id of the source order + * @param {Object} [pOrderData] the field values to preset, possible properties: contactId, orderType, language, offerId, currency, + * header, footer, deliveryTerm, paymentTerm, paymentAddress, deliveryAddress, objectType, objectRowId, + * dunningDate, dunningLevel, cancellation, orderStatus + */ +OrderUtils.copyOrder = function (pSourceOrderId, pOrderData) { - + if (!pOrderData) + pOrderData = {}; var fieldparams = { - "$field.CONTACT_ID" : pContactId, - "$field.ORDERTYPE" : pOrderType, - "$field.ISOLANGUAGE" : pLanguage, - "$field.OFFER_ID" : pSourceOfferId, - "$field.CURRENCY" : pCurrency || "", - "$field.HEADER" : pHeader || "", - "$field.FOOTER" : pFooter || "", - "$field.DELIVERYTERMS" : pDeliveryTerm || "", - "$field.PAYMENTTERMS" : pPaymentTerm || "", - "$field.PAYMENTADDRESS" : pPaymentAddress || "", - "$field.DELIVERYADDRESS" : pDeliveryAddress || "", - "$field.OBJECT_TYPE" : pObjectType || "", - "$field.OBJECT_ROWID" : pRowId || "", - "$field.DUNNINGDATE" : pDunningDate || "", - "$field.DUNNINGLEVEL" : pDunningLevel || "", - "$field.CANCELLATION" : pCancellation || "", - "$field.ORDERSTATUS" : pOrderStatus || "" + "$field.CONTACT_ID": pOrderData.contactId, + "$field.ORDERTYPE": pOrderData.orderType, + "$field.ISOLANGUAGE": pOrderData.language, + "$field.OFFER_ID": pOrderData.offerId, + "$field.CURRENCY": pOrderData.currency || "", + "$field.HEADER": pOrderData.header || "", + "$field.FOOTER": pOrderData.footer || "", + "$field.DELIVERYTERMS": pOrderData.deliveryTerm || "", + "$field.PAYMENTTERMS": pOrderData.paymentTerm || "", + "$field.PAYMENTADDRESS": pOrderData.paymentAddress || "", + "$field.DELIVERYADDRESS": pOrderData.deliveryAddress || "", + "$field.OBJECT_TYPE": pOrderData.objectType || "", + "$field.OBJECT_ROWID": pOrderData.objectRowId || "", + "$field.DUNNINGDATE": pOrderData.dunningDate || "", + "$field.DUNNINGLEVEL": pOrderData.dunningLevel || "", + "$field.CANCELLATION": pOrderData.cancellation || "", + "$field.ORDERSTATUS": pOrderData.orderStatus || "" }; - var params = {}; - params["Copy_param"] = JSON.stringify(fieldparams); - params["OfferId_param"] = pSourceOfferId; + var params = { + "Copy_param": JSON.stringify(fieldparams), + "SourceOrderId_param": pSourceOrderId + }; neon.openContext("Order", null, null, neon.OPERATINGSTATE_NEW, params); } @@ -174,6 +184,36 @@ OrderUtils.copyOfferItemsToOrder = function (pSourceOfferId, pOrderId) .updateData(true, "SALESORDER", cols, null, vals); } +/** + * copies all orderItems and creates orderItems for an order + * + * @param {String} pSourceOrderId the order to get the items from + * @param {String} pTargetOrderId the order to create the items for + */ +OrderUtils.copyOrderItems = function (pSourceOrderId, pTargetOrderId) +{ + var inputMapping = { + "SALESORDERITEM": { + condition: newWhere("SALESORDERITEM.SALESORDER_ID", pSourceOrderId), + ValueMapping: { + "SALESORDER_ID": pTargetOrderId + } + } + }; + CopyModuleUtils.copyModule(inputMapping); + + var oiUtils = new OrderItemUtils(pTargetOrderId); + + //update order price + var [netValue, vat] = oiUtils.getNetAndVat(); + + newWhere("SALESORDER.SALESORDERID", pTargetOrderId) + .updateFields({ + "NET": netValue, + "VAT": vat + }); +} + /** * Will build the order report for the given order. * -- GitLab From ad67b2923a724e397fbd33bea5f29ad1497b1ea7 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 11 Nov 2020 10:33:32 +0100 Subject: [PATCH 072/184] Corrupt xml fix after merge --- entity/Member_entity/Member_entity.aod | 38 ++++++++++---------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index b8db8bef917..9ab10a3baef 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -85,11 +85,6 @@ </entityField> <entityConsumer> <name>Contacts</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>IdFilteredActiveContacts</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedContactIds_param</name> @@ -100,20 +95,25 @@ <valueProcess>%aditoprj%/entity/Member_entity/entityfields/contacts/children/onlyactive_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordMemberRoles</name> <dependency> <name>dependency</name> - <entityName>MemberRoles_entity</entityName> - <fieldName>ByCategory</fieldName> + <entityName>Person_entity</entityName> + <fieldName>IdFilteredActiveContacts</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordMemberRoles</name> <children> <entityParameter> <name>UsageFilter_param</name> <valueProcess>%aditoprj%/entity/Member_entity/entityfields/keywordmemberroles/children/usagefilter_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>MemberRoles_entity</entityName> + <fieldName>ByCategory</fieldName> + </dependency> </entityConsumer> <entityField> <name>TARGETCONTEXT</name> @@ -153,11 +153,6 @@ </entityParameter> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>AllObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -166,6 +161,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>AllObjects</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Contexts</name> @@ -305,10 +305,6 @@ <expose v="true" /> <description>PARAMETER</description> </entityParameter> - <entityField> - <name>recordType</name> - <documentation>%aditoprj%/entity/Member_entity/entityfields/recordtype/documentation.adoc</documentation> - </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -437,10 +433,6 @@ <name>MST_MEMBERROLE.value</name> <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js</expression> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>recordType.value</name> - <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/recordtype.value/expression.js</expression> - </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> <jDitoRecordContainer> -- GitLab From b86b9e1c10b211d4cec403dfcff526ea2a849875 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 11 Nov 2020 13:28:43 +0100 Subject: [PATCH 073/184] #1064484 Teams integration --- .../MSTeams/changelog.xml | 0 .../MSTeams/create_MST_TEAM.xml | 0 .../MSTeams/create_MST_TEAMLINK.xml | 0 .../Data_alias/basic/2020.2.2/changelog.xml | 1 + .../MemberFilter_view/MemberFilter_view.aod | 4 +- process/MSTeams_lib/process.js | 56 +++++++++++++------ process/Util_lib/process.js | 28 ++++++++++ 7 files changed, 70 insertions(+), 19 deletions(-) rename .liquibase/Data_alias/basic/{2020.2.0 => 2020.2.2}/MSTeams/changelog.xml (100%) rename .liquibase/Data_alias/basic/{2020.2.0 => 2020.2.2}/MSTeams/create_MST_TEAM.xml (100%) rename .liquibase/Data_alias/basic/{2020.2.0 => 2020.2.2}/MSTeams/create_MST_TEAMLINK.xml (100%) diff --git a/.liquibase/Data_alias/basic/2020.2.0/MSTeams/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/changelog.xml similarity index 100% rename from .liquibase/Data_alias/basic/2020.2.0/MSTeams/changelog.xml rename to .liquibase/Data_alias/basic/2020.2.2/MSTeams/changelog.xml diff --git a/.liquibase/Data_alias/basic/2020.2.0/MSTeams/create_MST_TEAM.xml b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAM.xml similarity index 100% rename from .liquibase/Data_alias/basic/2020.2.0/MSTeams/create_MST_TEAM.xml rename to .liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAM.xml diff --git a/.liquibase/Data_alias/basic/2020.2.0/MSTeams/create_MST_TEAMLINK.xml b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAMLINK.xml similarity index 100% rename from .liquibase/Data_alias/basic/2020.2.0/MSTeams/create_MST_TEAMLINK.xml rename to .liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAMLINK.xml diff --git a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml index c4de83cc615..d06001e6e91 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml @@ -2,4 +2,5 @@ <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <include relativeToChangelogFile="true" file="insert_commMediumTitleKeywordAttribute.xml"/> + <include relativeToChangelogFile="true" file="MSTeams/changelog.xml"/> </databaseChangeLog> diff --git a/neonView/MemberFilter_view/MemberFilter_view.aod b/neonView/MemberFilter_view/MemberFilter_view.aod index 921d83de636..a6d4fe21672 100644 --- a/neonView/MemberFilter_view/MemberFilter_view.aod +++ b/neonView/MemberFilter_view/MemberFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js index 1cf1d4b8271..a5f2d3006c1 100644 --- a/process/MSTeams_lib/process.js +++ b/process/MSTeams_lib/process.js @@ -1,3 +1,4 @@ +import("Util_lib"); import("Communication_lib"); import("system.translate"); import("system.tools"); @@ -5,13 +6,24 @@ import("Sql_lib"); import("system.teams"); import("system.project"); +/** + * Provides static functions for working with the MS-Teams integration + */ function MSTeamsUtils () {} +/** + * Checks if the MS Teams integration is enabled in the instance config + * + * @return {Boolean} if Teams is enabled + */ MSTeamsUtils.isTeamsEnabled = function () { - return project.getInstanceConfigValue("teamsEnabled", "false") == "true"; + return Utils.toBoolean(project.getInstanceConfigValue("teamsEnabled", "false")); } +/** + * + */ MSTeamsUtils.getTeamLinkContexts = function () { return { @@ -19,6 +31,9 @@ MSTeamsUtils.getTeamLinkContexts = function () }; } +/** + * + */ MSTeamsUtils.createTeamLink = function (pTeamId, pRowId, pObjectType) { var currentTeamLinkId; @@ -47,6 +62,9 @@ MSTeamsUtils.createTeamLink = function (pTeamId, pRowId, pObjectType) } } +/** + * + */ MSTeamsUtils.getLinkedTeams = function (pRowId, pObjectType) { return newSelect("MST_TEAM_ID") @@ -56,11 +74,17 @@ MSTeamsUtils.getLinkedTeams = function (pRowId, pObjectType) .arrayColumn(); } +/** + * + */ MSTeamsUtils.getLinkedTeam = function (pRowId, pObjectType) { return MSTeamsUtils.getLinkedTeams(pRowId, pObjectType)[0] || null; } +/** + * + */ MSTeamsUtils.getContactIdsByAzureIds = function (pAzureIds) { if (pAzureIds.length === 0) @@ -76,6 +100,9 @@ MSTeamsUtils.getContactIdsByAzureIds = function (pAzureIds) return contactIdMap; } +/** + * + */ MSTeamsUtils.getTeamRoleSubSql = function (pTeamId, pContactIdField) { if (!pTeamId) @@ -83,37 +110,32 @@ MSTeamsUtils.getTeamRoleSubSql = function (pTeamId, pContactIdField) var ownerIds = Object.keys(teams.getAllOwners(pTeamId)); var ownerContactIds = MSTeamsUtils.getContactIdsByAzureIds(ownerIds); - ownerContactIds = _getObjectValues(ownerContactIds); + ownerContactIds = Utils.objectValues(ownerContactIds); var members = teams.getAllMembers(pTeamId); var memberIds = Object.keys(members); var memberContactIds = MSTeamsUtils.getContactIdsByAzureIds(memberIds); - memberContactIds = _getObjectValues(memberContactIds); + memberContactIds = Utils.objectValues(memberContactIds); if (ownerContactIds.length === 0 && memberContactIds.length === 0) return "''"; - var caseWhen = SqlBuilder.caseStatement(true); + var caseWhen = SqlBuilder.caseStatement(); if (ownerContactIds.length !== 0) - caseWhen.when(pContactIdField, ownerContactIds, SqlBuilder.IN()).then(translate.text("Owner")); + caseWhen.when(pContactIdField, ownerContactIds, SqlBuilder.IN()).thenString(translate.text("Owner")); if (memberContactIds.length !== 0) - caseWhen.when(pContactIdField, memberContactIds, SqlBuilder.IN()).then(translate.text("Member")); + caseWhen.when(pContactIdField, memberContactIds, SqlBuilder.IN()).thenString(translate.text("Member")); //the SqlBuilder.IN() can't be used here because of the sub-sql string for the email - caseWhen.when("(" + CommUtil.getStandardSubSqlMail() + ") in ('" + _getObjectValues(members).join("', '") + "')") - .then(translate.text("Guest")); + caseWhen.when("(" + CommUtil.getStandardSubSqlMail() + ") in ('" + Utils.objectValues(members).join("', '") + "')") + .thenString(translate.text("Guest")); - return caseWhen.elseValue("").toString(); - - function _getObjectValues (pObject) - { - var values = []; - for (let key in pObject) - values.push(pObject[key]); - return values; - } + return caseWhen.elseString("").toString(); } +/** + * + */ MSTeamsUtils.isUserTeamOwner = function (pTeamId, pUserId) { var user; diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index 778e4ae46cb..037eb101d50 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -326,6 +326,34 @@ Utils.parseJSON = function (pJSON, pReviver) return null; } +/** + * Returns the enumerable properties of the given object as an array of [key, value] pairs (works like Object.entries()). + * + * @param {Object} pObject + * @return {Array} Object properties as 2d-array: [[key1, value1], [key2, value2], ...] + */ +Utils.objectEntries = function (pObject) +{ + return Object.keys(pObject).map(function (key) + { + return pObject[key]; + }); +} + +/** + * Returns the values of all enumerable properties of the given object (works like Object.values()). + * + * @param {Object} pObject + * @return {Array} Object values as array + */ +Utils.objectValues = function (pObject) +{ + return Object.keys(pObject).map(function (key) + { + return [key, pObject[key]]; + }); +} + /** * Class containing static utility functions for regular expression objects (RegExp) * Do not create an instance of this -- GitLab From d08f047cdebde4c04dccf4e3fe9ee761ea191096 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 11 Nov 2020 13:33:55 +0100 Subject: [PATCH 074/184] #1064484 Teams integration --- .aditoprj/UUIDNameMap.txt | 102 -------------------------------------- 1 file changed, 102 deletions(-) delete mode 100644 .aditoprj/UUIDNameMap.txt diff --git a/.aditoprj/UUIDNameMap.txt b/.aditoprj/UUIDNameMap.txt deleted file mode 100644 index 70f701e0fe2..00000000000 --- a/.aditoprj/UUIDNameMap.txt +++ /dev/null @@ -1,102 +0,0 @@ -************************************************* -* * -* This is a generated file, please do not edit! * -* * -************************************************* - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 - 38 - 39 - 40 - 41 -1.0.0 -1599146177805 -#ENTITY -#ENTITY -#PROVIDER_FIELD -#PROVIDER_FIELD -#CONTENTTITLE -#CONTENTTITLE -#TITLE -#TITLE -#INDEX_GROUP -#INDEX_GROUP -#TARGETCONTEXT -#TARGETCONTEXT -INTERNAL_ADMINISTRATOR -INTERNAL_ADMINISTRATOR -INTERNAL_WEBSERVICE -INTERNAL_WEBSERVICE -#DESCRIPTION -#DESCRIPTION -INTERNAL_GROUPWARE -INTERNAL_GROUPWARE -INTERNAL_TECHNICAL -INTERNAL_TECHNICAL -#MAPPING -#MAPPING -#LOCATION -#LOCATION -#PROVIDER -#PROVIDER -INTERNAL_DESIGNER -INTERNAL_DESIGNER -#USERHELP -#USERHELP -#NONE -#NONE -#TARGETID -#TARGETID -#CONTENTDESCRIPTION -#CONTENTDESCRIPTION -#SORTING -#SORTING -#LOOKUPID -#LOOKUPID -#GROUPING -#GROUPING -#ICON -#ICON -INTERNAL_DASHBOARDSTOREADMIN -INTERNAL_DASHBOARDSTOREADMIN -#IMAGE -#IMAGE -#UID -#UID -INTERNAL_SNMP -INTERNAL_SNMP -#TARGETCONSUMER -#TARGETCONSUMER -INTERNAL_EVERYONE -INTERNAL_EVERYONE \ No newline at end of file -- GitLab From 4e7493517325d8ba26212cf13e5a828846a7150c Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 11 Nov 2020 15:28:08 +0100 Subject: [PATCH 075/184] ms teams --- .../recordcontainers/jdito/onInsert.js | 13 +- .../recordcontainers/jdito/contentProcess.js | 142 +++++++++--------- process/MSTeams_lib/process.js | 6 +- 3 files changed, 84 insertions(+), 77 deletions(-) diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js index 0f208a0331c..f7857c50dcc 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -45,7 +45,8 @@ teamMembers.forEach(function (teamMember) //mailNickName = teamName in camel case var mailNickName = teamName.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function(match, index) { - if (+match === 0) return ""; // or if (/\s+/.test(match)) for white spaces + if (+match === 0) // or if (/\s+/.test(match)) for white spaces + return ""; return index === 0 ? match.toLowerCase() : match.toUpperCase(); }); mailNickName = mailNickName + vars.get("$param.SalesprojectCode_param"); @@ -64,11 +65,11 @@ if (externalMembers.length !== 0) teams.addExternalMembers(mstTeam.teamId, externalMembers); new SqlBuilder().insertFields({ - "MST_TEAMID" : mstTeam.teamId, - "TEAMNAME" : mstTeam.teamName, - "GENERAL_CHANNELID" : mstTeam.generalChannelId, - "IS_ARCHIVED" : 0, - "WEB_URL" : mstTeam.webUrl + "MST_TEAMID": mstTeam.teamId, + "TEAMNAME": mstTeam.teamName, + "GENERAL_CHANNELID": mstTeam.generalChannelId, + "IS_ARCHIVED": 0, + "WEB_URL": mstTeam.webUrl }, "MST_TEAM"); MSTeamsUtils.createTeamLink(mstTeam.teamId, vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param")); \ No newline at end of file diff --git a/entity/Member_entity/recordcontainers/jdito/contentProcess.js b/entity/Member_entity/recordcontainers/jdito/contentProcess.js index e4d4225eebe..ae2052147d8 100644 --- a/entity/Member_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Member_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,4 @@ +import("Util_lib"); import("system.translate"); import("system.result"); import("system.vars"); @@ -29,33 +30,6 @@ if (filter && filter.filter != null) } var memberRows = entities.getRows(memberLoadingConfig); - -if (vars.get("$param.ObjectType_param") == "Salesproject" && vars.get("$param.ObjectRowId_param") != null) -{ - var orgContactId = newSelect("SALESPROJECT.CONTACT_ID") - .from("SALESPROJECT") - .where("SALESPROJECT.SALESPROJECTID", "$param.ObjectRowId_param") - .cell(); - - var districtLoadingConfig = entities.createConfigForLoadingRows() - .entity("DistrictResponsible_entity") - .provider("OrganisationResponsibles") - .addParameter("OrgUid_param", orgContactId) - .fields(["#UID","DISTRICTRESPONSIBLEID", "DISTRICT_ID", "EMPLOYEE_CONTACT_ID", - "EMPLOYEE_CONTACT_ID.displayValue", "USER_EDIT", "USER_NEW", - "departmentAttributeName", "DATE_EDIT", "DATE_NEW"]); - - var districtRows = entities.getRows(districtLoadingConfig); - - - districtRows = districtRows.map(function(row) - { - return [row["#UID"], row["DISTRICTRESPONSIBLEID"], row["DISTRICT_ID"], row["EMPLOYEE_CONTACT_ID"], row["EMPLOYEE_CONTACT_ID.displayValue"], - row["USER_EDIT"], row["USER_NEW"], row["departmentAttributeName"], row["DATE_EDIT"], row["DATE_NEW"]]; - }); -} - - memberRows = memberRows.map(function(row) { return [row["#UID"], row["OBJECTMEMBERID"], row["CONTACT_ID"], row["CONTACT_ID.displayValue"], row["CONTACTROLE"], row["DEPARTMENT"], row["ICON"], @@ -65,54 +39,82 @@ memberRows = memberRows.map(function(row) row["POSITION"], row["TARGETCONTEXT"], row["recordType"]]; }); -var responsibleUids = []; +if (Utils.isNullOrEmpty(idValues) || memberRows.length === 0) +{ + if (vars.get("$param.ObjectType_param") == "Salesproject" && vars.get("$param.ObjectRowId_param") != null) + { + var orgContactId = newSelect("SALESPROJECT.CONTACT_ID") + .from("SALESPROJECT") + .where("SALESPROJECT.SALESPROJECTID", "$param.ObjectRowId_param") + .cell(); -districtRows.forEach(function(row){ - responsibleUids.push(row[3]); -}); + var districtLoadingConfig = entities.createConfigForLoadingRows() + .entity("DistrictResponsible_entity") + .provider("OrganisationResponsibles") + .addParameter("OrgUid_param", orgContactId) + .fields(["#UID","DISTRICTRESPONSIBLEID", "DISTRICT_ID", "EMPLOYEE_CONTACT_ID", + "EMPLOYEE_CONTACT_ID.displayValue", "USER_EDIT", "USER_NEW", + "departmentAttributeName", "DATE_EDIT", "DATE_NEW"]); -var loadingConfPers = entities.createConfigForLoadingRows() - .entity("Person_entity") - .uids(responsibleUids) - .fields(["ORGANISATION_ID", "ORGANISATION_NAME", "CONTACTROLE", "POSITION", - "FIRSTNAME", "LASTNAME", "SALUTATION", "TITLE"]); + var districtRows = entities.getRows(districtLoadingConfig); -var persRows = entities.getRows(loadingConfPers); -persRows = persRows.map(function(row){ - return [row["SALUTATION"], row["TITLE"], row["FIRSTNAME"], row["LASTNAME"], - row["ORGANISATION_NAME"], row["ORGANISATION_ID"], row["CONTACTROLE"], - row["POSITION"], row["PERSONID"]]; -}); + districtRows = districtRows.map(function(row) + { + return [row["#UID"], row["DISTRICTRESPONSIBLEID"], row["DISTRICT_ID"], row["EMPLOYEE_CONTACT_ID"], row["EMPLOYEE_CONTACT_ID.displayValue"], + row["USER_EDIT"], row["USER_NEW"], row["departmentAttributeName"], row["DATE_EDIT"], row["DATE_NEW"]]; + }); + } + var responsibleUids = []; -districtRows.forEach(function(row, counter){ - - memberRows.push( - [row[0], - null, - row[3], - row[4], - persRows[counter][6], - row[7], - "VAADIN:GLOBE", - "TEXT:" + row[4].substring(row[4].indexOf(" ", 0)+1, row[4].length), - "MEMBERROLEDISTRICTRESPONSIBLE", - translate.text("District Responsible"), - vars.get("$param.ObjectRowId_param"), - vars.get("$param.ObjectType_param"), - persRows[counter][5], - persRows[counter][4], - persRows[counter][2], - row[4], - persRows[counter][3], - persRows[counter][8], - persRows[counter][0], - persRows[counter][1], - persRows[counter][7], - null, - "DistrictResponsible" - ]); -}); + districtRows.forEach(function(row){ + responsibleUids.push(row[3]); + }); + + var loadingConfPers = entities.createConfigForLoadingRows() + .entity("Person_entity") + .uids(responsibleUids) + .fields(["ORGANISATION_ID", "ORGANISATION_NAME", "CONTACTROLE", "POSITION", + "FIRSTNAME", "LASTNAME", "SALUTATION", "TITLE"]); + + var persRows = entities.getRows(loadingConfPers); + + persRows = persRows.map(function(row){ + return [row["SALUTATION"], row["TITLE"], row["FIRSTNAME"], row["LASTNAME"], + row["ORGANISATION_NAME"], row["ORGANISATION_ID"], row["CONTACTROLE"], + row["POSITION"], row["PERSONID"]]; + }); + + + districtRows.forEach(function(row, counter){ + + memberRows.push( + [row[0], + null, + row[3], + row[4], + persRows[counter][6], + row[7], + "VAADIN:GLOBE", + "TEXT:" + row[4].substring(row[4].indexOf(" ", 0)+1, row[4].length), + "MEMBERROLEDISTRICTRESPONSIBLE", + translate.text("District Responsible"), + vars.get("$param.ObjectRowId_param"), + vars.get("$param.ObjectType_param"), + persRows[counter][5], + persRows[counter][4], + persRows[counter][2], + row[4], + persRows[counter][3], + persRows[counter][8], + persRows[counter][0], + persRows[counter][1], + persRows[counter][7], + null, + "DistrictResponsible" + ]); + }); +} result.object(memberRows); \ No newline at end of file diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js index a5f2d3006c1..080da03c940 100644 --- a/process/MSTeams_lib/process.js +++ b/process/MSTeams_lib/process.js @@ -37,8 +37,12 @@ MSTeamsUtils.getTeamLinkContexts = function () MSTeamsUtils.createTeamLink = function (pTeamId, pRowId, pObjectType) { var currentTeamLinkId; + var contextConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType]; + if (!contextConfig) + return; + //if singleLinkPerObject is true, only one team link can be created for the given objectRowId - if (MSTeamsUtils.getTeamLinkContexts()[pObjectType].singleLinkPerObject) + if (contextConfig.singleLinkPerObject) { currentTeamLinkId = newSelect("MST_TEAMLINKID") .from("MST_TEAMLINK") -- GitLab From 4e3545a494c13ebfd7d0ac7d52f0ff994a1859bc Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 11 Nov 2020 16:04:31 +0100 Subject: [PATCH 076/184] Knowledgemanagement liquibase files moved --- .../Knowledgemanagement/changelog_knowledgeManagement.xml | 0 .../basic/{ => 2020.2.2}/Knowledgemanagement/data/blobs/git.css | 0 .../{ => 2020.2.2}/Knowledgemanagement/data/blobs/standard.css | 0 .../Knowledgemanagement/data/knowledgeKeywords.xml | 0 .../{ => 2020.2.2}/Knowledgemanagement/data/knowledgeTag.xml | 0 .../Knowledgemanagement/struct/create_KnowledgeRoles.xml | 0 .../Knowledgemanagement/struct/knowledgeDiscussion_table.xml | 0 .../Knowledgemanagement/struct/knowledgeGitInterface_table.xml | 0 .../Knowledgemanagement/struct/knowledgeLink_table.xml | 0 .../Knowledgemanagement/struct/knowledgeManagement_table.xml | 0 .../Knowledgemanagement/struct/knowledgeTagLink_table.xml | 0 .../Knowledgemanagement/struct/knowledgeTagModeration_table.xml | 0 .../Knowledgemanagement/struct/knowledgeTag_table.xml | 0 .liquibase/Data_alias/basic/2020.2.2/changelog.xml | 1 + 14 files changed, 1 insertion(+) rename .liquibase/Data_alias/basic/{ => 2020.2.2}/Knowledgemanagement/changelog_knowledgeManagement.xml (100%) rename .liquibase/Data_alias/basic/{ => 2020.2.2}/Knowledgemanagement/data/blobs/git.css (100%) rename .liquibase/Data_alias/basic/{ => 2020.2.2}/Knowledgemanagement/data/blobs/standard.css (100%) rename .liquibase/Data_alias/basic/{ => 2020.2.2}/Knowledgemanagement/data/knowledgeKeywords.xml (100%) rename .liquibase/Data_alias/basic/{ => 2020.2.2}/Knowledgemanagement/data/knowledgeTag.xml (100%) rename .liquibase/Data_alias/basic/{ => 2020.2.2}/Knowledgemanagement/struct/create_KnowledgeRoles.xml (100%) rename .liquibase/Data_alias/basic/{ => 2020.2.2}/Knowledgemanagement/struct/knowledgeDiscussion_table.xml (100%) rename .liquibase/Data_alias/basic/{ => 2020.2.2}/Knowledgemanagement/struct/knowledgeGitInterface_table.xml (100%) rename .liquibase/Data_alias/basic/{ => 2020.2.2}/Knowledgemanagement/struct/knowledgeLink_table.xml (100%) rename .liquibase/Data_alias/basic/{ => 2020.2.2}/Knowledgemanagement/struct/knowledgeManagement_table.xml (100%) rename .liquibase/Data_alias/basic/{ => 2020.2.2}/Knowledgemanagement/struct/knowledgeTagLink_table.xml (100%) rename .liquibase/Data_alias/basic/{ => 2020.2.2}/Knowledgemanagement/struct/knowledgeTagModeration_table.xml (100%) rename .liquibase/Data_alias/basic/{ => 2020.2.2}/Knowledgemanagement/struct/knowledgeTag_table.xml (100%) diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/changelog_knowledgeManagement.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/changelog_knowledgeManagement.xml similarity index 100% rename from .liquibase/Data_alias/basic/Knowledgemanagement/changelog_knowledgeManagement.xml rename to .liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/changelog_knowledgeManagement.xml diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/data/blobs/git.css b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/blobs/git.css similarity index 100% rename from .liquibase/Data_alias/basic/Knowledgemanagement/data/blobs/git.css rename to .liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/blobs/git.css diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/data/blobs/standard.css b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/blobs/standard.css similarity index 100% rename from .liquibase/Data_alias/basic/Knowledgemanagement/data/blobs/standard.css rename to .liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/blobs/standard.css diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/data/knowledgeKeywords.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeKeywords.xml similarity index 100% rename from .liquibase/Data_alias/basic/Knowledgemanagement/data/knowledgeKeywords.xml rename to .liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeKeywords.xml diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/data/knowledgeTag.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeTag.xml similarity index 100% rename from .liquibase/Data_alias/basic/Knowledgemanagement/data/knowledgeTag.xml rename to .liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeTag.xml diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/create_KnowledgeRoles.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/create_KnowledgeRoles.xml similarity index 100% rename from .liquibase/Data_alias/basic/Knowledgemanagement/struct/create_KnowledgeRoles.xml rename to .liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/create_KnowledgeRoles.xml diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeDiscussion_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeDiscussion_table.xml similarity index 100% rename from .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeDiscussion_table.xml rename to .liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeDiscussion_table.xml diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeGitInterface_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeGitInterface_table.xml similarity index 100% rename from .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeGitInterface_table.xml rename to .liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeGitInterface_table.xml diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeLink_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeLink_table.xml similarity index 100% rename from .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeLink_table.xml rename to .liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeLink_table.xml diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeManagement_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeManagement_table.xml similarity index 100% rename from .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeManagement_table.xml rename to .liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeManagement_table.xml diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTagLink_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagLink_table.xml similarity index 100% rename from .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTagLink_table.xml rename to .liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagLink_table.xml diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTagModeration_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagModeration_table.xml similarity index 100% rename from .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTagModeration_table.xml rename to .liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagModeration_table.xml diff --git a/.liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTag_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTag_table.xml similarity index 100% rename from .liquibase/Data_alias/basic/Knowledgemanagement/struct/knowledgeTag_table.xml rename to .liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTag_table.xml diff --git a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml index c4de83cc615..d2c30058760 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml @@ -2,4 +2,5 @@ <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <include relativeToChangelogFile="true" file="insert_commMediumTitleKeywordAttribute.xml"/> + <include relativeToChangelogFile="true" file="Knowledgemanagement/changelog_knowledgeManagement.xml"/> </databaseChangeLog> -- GitLab From 85f09a6a1b45adaf67db60a4a34ab6a1914baae9 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 12 Nov 2020 11:24:02 +0100 Subject: [PATCH 077/184] Knowledgemanagement sql refactoring with SqlBuilder --- .liquibase/Data_alias/changelog.xml | 2 - .../KnowledgeDiscussion_entity.aod | 11 ++-- .../KnowledgeDiscussion_entity/afterUiInit.js | 4 +- .../parentid_param/valueProcess.js | 4 -- .../rowCountProcess.js | 2 - .../recordcontainers/db/conditionProcess.js | 14 ++--- .../entityfields/tag/displayValueProcess.js | 2 +- .../author_contact_id/displayValueProcess.js | 12 ++-- .../entityfields/date_edit/valueProcess.js | 8 +-- .../entityfields/isnewsmark/valueProcess.js | 27 ++------- .../displayValueProcess.js | 14 +++-- .../recordcontainers/db/conditionProcess.js | 15 ++--- .../tagfilter/filterConditionProcess.js | 45 ++++---------- .../tagfilter/filterValuesProcess.js | 6 +- .../recordcontainers/db/orderClauseProcess.js | 8 ++- .../expression.js | 11 ++-- .../knowledgeroles/filterConditionProcess.js | 7 ++- .../expression.js | 11 ++-- .../indexsearchknowledgebase/affectedIds.js | 2 +- .../indexsearchknowledgebase/query.js | 60 ++++++++----------- process/KnowledgeManagement_lib/process.js | 51 ++++++---------- process/NewsSystem_lib/process.js | 12 ++-- 22 files changed, 127 insertions(+), 201 deletions(-) delete mode 100644 entity/KnowledgeDiscussion_entity/entityfields/parentid_param/valueProcess.js diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index 23b0846d0d6..3f25ca1dbb1 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -18,8 +18,6 @@ <include relativeToChangelogFile="true" file="basic/2020.2.0/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.2.1/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.2.2/changelog.xml"/> - - <include relativeToChangelogFile="true" file="basic/Knowledgemanagement/changelog_knowledgeManagement.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>--> diff --git a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod index 0c7fab8b6d8..c30b50ef07a 100644 --- a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod +++ b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod @@ -61,11 +61,6 @@ </entityField> <entityConsumer> <name>StatusKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -76,6 +71,11 @@ <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/onlyactives_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>ByKnowledgeId</name> @@ -128,7 +128,6 @@ </entityActionGroup> <entityParameter> <name>ParentId_param</name> - <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/parentid_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> <entityParameter> diff --git a/entity/KnowledgeDiscussion_entity/afterUiInit.js b/entity/KnowledgeDiscussion_entity/afterUiInit.js index 2b7ba120e62..4c6bf685556 100644 --- a/entity/KnowledgeDiscussion_entity/afterUiInit.js +++ b/entity/KnowledgeDiscussion_entity/afterUiInit.js @@ -2,6 +2,4 @@ import("system.vars"); import("system.neon"); if(vars.exists("$param.WithClosed_param") && vars.get("$param.WithClosed_param")) - vars.set("$context.showAll", vars.get("$param.WithClosed_param")) -//else if(!vars.exists("$context.showAll")) -// vars.set("$context.showAll", "false"); \ No newline at end of file + vars.set("$context.showAll", vars.get("$param.WithClosed_param")) \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/parentid_param/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/parentid_param/valueProcess.js deleted file mode 100644 index ed69697cc20..00000000000 --- a/entity/KnowledgeDiscussion_entity/entityfields/parentid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -//import("system.vars"); -//import("system.result"); - -//result.string(vars.exists("$sys.selection") && vars.get("$sys.selection")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js index 4f9f77ea5e4..48a39b7f7de 100644 --- a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js @@ -1,4 +1,3 @@ -import("system.logging"); import("KnowledgeManagement_lib"); import("system.vars"); import("system.result"); @@ -20,6 +19,5 @@ if(kId) { var discussions = KnowledgeDiscussion.getInstance(kId); var retData = discussions.getDatasetCount(KnowledgeDiscussion.getMode(withClosed), idValues); - //logging.log("DATA: " + JSON.stringify([retData,idValues],null,"\t")); result.object(retData); } \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js b/entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js index 3adf64f1274..ba94f4a6e34 100644 --- a/entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js +++ b/entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js @@ -1,16 +1,10 @@ +import("Sql_lib"); import("system.vars"); import("system.result"); -var id = (vars.exists("$param.KnowledgeManagementId_param")) ? vars.get("$param.KnowledgeManagementId_param") : null; var localId = (vars.exists("$local.idvalue")) ? vars.get("$local.idvalue") : null; +var cond = newWhereIfSet("KNOWLEDGELINK.KNOWLEDGEMANAGEMENT_ID", "$param.KnowledgeManagementId_param") + .andIfSet("KNOWLEDGELINK.KNOWLEDGELINKID", localId); -var cond = ""; -cond += (id) ? "KNOWLEDGEMANAGEMENT_ID = '" + id + "'" : ""; -cond += (cond.length && localId) ? " and " : ""; -cond += (localId) ? "KNOWLEDGELINKID = '" + localId + "'" : ""; - -if(cond.length) - result.string(cond); -else - result.string("1=2"); \ No newline at end of file +result.string(cond.toString(SqlBuilder.NORESULT_CONDITION())); \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/entityfields/tag/displayValueProcess.js b/entity/KnowledgeManagementTags_entity/entityfields/tag/displayValueProcess.js index 674ac1a4a17..26d516e5a81 100644 --- a/entity/KnowledgeManagementTags_entity/entityfields/tag/displayValueProcess.js +++ b/entity/KnowledgeManagementTags_entity/entityfields/tag/displayValueProcess.js @@ -2,4 +2,4 @@ import("system.vars"); import("system.result"); import("Sql_lib"); -result.string(new SqlBuilder().select("TAG").from("KNOWLEDGETAG").where("KNOWLEDGETAGID = '" + vars.get("$field.TAG") + "'").cell()); \ No newline at end of file +result.string(new SqlBuilder().select("TAG").from("KNOWLEDGETAG").where("KNOWLEDGETAG.KNOWLEDGETAGID", "$field.TAG").cell()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js b/entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js index 0929d5fdbe0..ec6e27b3d07 100644 --- a/entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js +++ b/entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js @@ -4,7 +4,11 @@ import("system.vars"); import("system.result"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value")) - result.query("select " + new SqlMaskingUtils().concat(["PERSON.FIRSTNAME","PERSON.LASTNAME"], " ", true) - +" from PERSON " - +" join CONTACT on PERSON.PERSONID = CONTACT.PERSON_ID " - +" where CONTACT.CONTACTID = '" + vars.get("$this.value") + "'"); \ No newline at end of file +{ + result.string(newSelect(new SqlMaskingUtils().concatWithSeparator(["PERSON.FIRSTNAME","PERSON.LASTNAME"])) + .from("PERSON") + .join("CONTACT", "PERSON.PERSONID = CONTACT.PERSON_ID") + .where("CONTACT.CONTACTID", "$this.value") + .cell() + ); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/date_edit/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/date_edit/valueProcess.js index 6942583568e..f3fbb8b9401 100644 --- a/entity/KnowledgeManagement_entity/entityfields/date_edit/valueProcess.js +++ b/entity/KnowledgeManagement_entity/entityfields/date_edit/valueProcess.js @@ -1,12 +1,6 @@ import("system.vars"); import("system.result"); import("system.neon"); -import("system.datetime"); -//if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) -//{ -// result.string(datetime.date()); -//} - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) result.string(vars.get("$sys.date")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/isnewsmark/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/isnewsmark/valueProcess.js index a7273ea0f5d..eff63fa32ee 100644 --- a/entity/KnowledgeManagement_entity/entityfields/isnewsmark/valueProcess.js +++ b/entity/KnowledgeManagement_entity/entityfields/isnewsmark/valueProcess.js @@ -5,31 +5,14 @@ import("Sql_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && !vars.getString("$this.value")) { -// var config = entities.createConfigForLoadingConsumerRows() -// .consumer("TagsByKnowledgeId") -// .fields(["TAG"]) -// -// var entityData = entities.getRows(config); var knowledgeId = vars.get("$field.KNOWLEDGEMANAGEMENTID"); var isTagSet = newSelect("'1'") - .from("KNOWLEDGETAGLINK") - .join("KNOWLEDGETAG on KNOWLEDGETAG.KNOWLEDGETAGID = KNOWLEDGETAGLINK.KNOWLEDGETAG_ID") - .where("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID = '" + knowledgeId + "'") - .and("KNOWLEDGETAG.TAG = 'News'") - .cell(); + .from("KNOWLEDGETAGLINK") + .join("KNOWLEDGETAG", "KNOWLEDGETAG.KNOWLEDGETAGID = KNOWLEDGETAGLINK.KNOWLEDGETAG_ID") + .where("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID", knowledgeId) + .and("KNOWLEDGETAG.TAG", "News") + .cell(); - -// if(entityData) -// { -// entityData.map(function(row) -// { -// if(row["TAG.displayValue"] == "News") -// { -// isTagSet = 1; -// return; -// } -// }); -// } result.string(isTagSet ? 1 : 0); } \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js b/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js index 7ffc6898e2e..ec6e27b3d07 100644 --- a/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js +++ b/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js @@ -3,10 +3,12 @@ import("system.neon"); import("system.vars"); import("system.result"); -var x = 0; - if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value")) - result.query("select " + new SqlMaskingUtils().concat(["PERSON.FIRSTNAME","PERSON.LASTNAME"], " ", true) - +" from PERSON " - +" join CONTACT on PERSON.PERSONID = CONTACT.PERSON_ID " - +" where CONTACT.CONTACTID = '" + vars.get("$this.value") + "'"); \ No newline at end of file +{ + result.string(newSelect(new SqlMaskingUtils().concatWithSeparator(["PERSON.FIRSTNAME","PERSON.LASTNAME"])) + .from("PERSON") + .join("CONTACT", "PERSON.PERSONID = CONTACT.PERSON_ID") + .where("CONTACT.CONTACTID", "$this.value") + .cell() + ); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js index 8f2514f13ee..c25c12a3103 100644 --- a/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js @@ -5,16 +5,12 @@ import("system.vars"); import("system.tools"); import("system.result"); -//var cond = ["knowledgemanagement.TYPE != '3'"] -//if(tools.hasRole(vars.get("$sys.user"), "PROJECT_Support")) -// cond.push("knowledgemanagement.PUBLISH in ('2','3')"); - -var cond = []; +var cond = newWhere(); if(vars.exists("$param.isDashlet_param") && vars.get("$param.isDashlet_param")) //check if the parameter exists and is filled { var userRoles = tools.getRoles(vars.get("$sys.user")); //get all Roles from the current User - var res = newWhere(null //create a new condition where we check if any data sets exists with the given parameters + cond.and(null //create a new condition where we check if any data sets exists with the given parameters ,newSelect("KNOWLEDGEROLES.ROLENAME") //create a subselect for all data sets with the current user roles .from("KNOWLEDGEROLES") .where("KNOWLEDGEROLES.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID") @@ -23,10 +19,7 @@ if(vars.exists("$param.isDashlet_param") && vars.get("$param.isDashlet_param")) ,newSelect("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID") .from("KNOWLEDGETAGLINK") .where("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID") - .and("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", "1f035a33-e5a3-48e4-bda6-6d8b320177e4"), SqlBuilder.EXISTS()) - .build(); - - cond.push(SqlUtils.translateConditionWithQuotes(res)); //db RecordContainer can't use preparedStatements + .and("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", "1f035a33-e5a3-48e4-bda6-6d8b320177e4"), SqlBuilder.EXISTS()); } -result.string(cond.join(" and ")) \ No newline at end of file +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js index 4c0d2b4fae7..446c4299313 100644 --- a/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js @@ -1,44 +1,25 @@ +import("Sql_lib"); import("system.result"); import("system.vars"); -var op = vars.get("$local.comparison"); -var val = vars.get("$local.rawvalue"); +var condition = newWhere(); +var tagLinkSql = newSelect("KNOWLEDGEMANAGEMENT_ID") + .from("KNOWLEDGETAGLINK") + .where("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID"); +var condType = SqlBuilder.EXISTS(); -var condition = ""; - -switch(op) +switch (vars.get("$local.comparison")) { - case "EQUAL": - condition = " KNOWLEDGEMANAGEMENTID in " - + " (select KNOWLEDGEMANAGEMENT_ID " - + " from KNOWLEDGETAGLINK " - + " where KNOWLEDGETAG_ID = '" + val + "')"; - break; - case "NOT_EQUAL": - condition = " KNOWLEDGEMANAGEMENTID not in " - + " (select KNOWLEDGEMANAGEMENT_ID " - + " from KNOWLEDGETAGLINK " - + " where KNOWLEDGETAG_ID = '" + val + "')"; + condType = SqlBuilder.NOT_EXISTS(); + case "EQUAL": + condition.and(null, tagLinkSqll.and("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", "$local.rawvalue"), condType); break; - case "ISNULL": - condition = " not exists " - + " (select KNOWLEDGEMANAGEMENT_ID " - + " from KNOWLEDGETAGLINK " - + " where KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID)"; - break; - + condType = SqlBuilder.NOT_EXISTS(); case "ISNOTNULL": - condition = " exists " - + " (select KNOWLEDGEMANAGEMENT_ID " - + " from KNOWLEDGETAGLINK " - + " where KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID)"; + condition.and(null, tagLinkSql, condType); break; - - default: - condition = " 1 = 2 "; } - -result.string(condition); \ No newline at end of file +result.string(condition.toString(SqlBuilder.NORESULT_CONDITION())); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterValuesProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterValuesProcess.js index 5ed258348a7..b2c2c7b07ef 100644 --- a/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterValuesProcess.js +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterValuesProcess.js @@ -1,6 +1,4 @@ -import("system.db"); +import("Sql_lib"); import("system.result"); -result.object( - db.table("select distinct KNOWLEDGETAGID, TAG from KNOWLEDGETAG order by TAG") -); \ No newline at end of file +result.object(new SqlBuilder().selectDistinct(["KNOWLEDGETAGID", "TAG"]).from("KNOWLEDGETAG").orderBy("TAG").table()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js index 937b8f6eee3..bc51d2191bf 100644 --- a/entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js @@ -1,6 +1,8 @@ import("system.db"); import("system.result"); +import("Sql_lib"); -result.object({ - "COALESCE(KNOWLEDGEMANAGEMENT.DATE_EDIT, KNOWLEDGEMANAGEMENT.DATE_NEW)": db.DESCENDING -}) \ No newline at end of file +var sortOrder = {}; +sortOrder[new SqlMaskingUtils().isNull("KNOWLEDGEMANAGEMENT.DATE_EDIT", "KNOWLEDGEMANAGEMENT.DATE_NEW")] = db.DESCENDING; + +result.object(sortOrder); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/author_contact_id.displayvalue/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/author_contact_id.displayvalue/expression.js index 3c7655ed448..4ed9cfc3749 100644 --- a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/author_contact_id.displayvalue/expression.js +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/author_contact_id.displayvalue/expression.js @@ -1,7 +1,10 @@ import("system.result"); import("Sql_lib"); -result.string("select " + new SqlMaskingUtils().concat(["PERSON.FIRSTNAME","PERSON.LASTNAME"], " ", true) - +" from PERSON " - +" join CONTACT on PERSON.PERSONID = CONTACT.PERSON_ID " - +" where CONTACT.CONTACTID = KNOWLEDGEMANAGEMENT.AUTHOR_CONTACT_ID"); \ No newline at end of file +result.string( + newSelect(new SqlMaskingUtils().concatWithSeparator(["PERSON.FIRSTNAME","PERSON.LASTNAME"])) + .from("PERSON") + .join("CONTACT", "PERSON.PERSONID = CONTACT.PERSON_ID") + .where("CONTACT.CONTACTID = KNOWLEDGEMANAGEMENT.AUTHOR_CONTACT_ID") + .toString() +); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgeroles/filterConditionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgeroles/filterConditionProcess.js index 75a22c1e5af..e518964b17a 100644 --- a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgeroles/filterConditionProcess.js +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgeroles/filterConditionProcess.js @@ -1,4 +1,9 @@ +import("Sql_lib"); import("system.vars"); import("system.result"); -result.string("KNOWLEDGEMANAGEMENTID in (select KNOWLEDGEROLES.KNOWLEDGEMANAGEMENT_ID from KNOWLEDGEROLES where " + vars.get("$local.condition") + " )"); \ No newline at end of file +result.string(newWhere(null, newSelect("KNOWLEDGEROLES.KNOWLEDGEMANAGEMENT_ID") + .from("KNOWLEDGEROLES") + .where("KNOWLEDGEROLES.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENTID") + .and(vars.get("$local.condition")), SqlBuilder.EXISTS()) +); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js index d56b5495f60..4ed9cfc3749 100644 --- a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js @@ -1,7 +1,10 @@ import("system.result"); import("Sql_lib"); -result.string("select " + new SqlMaskingUtils().concat(["PERSON.FIRSTNAME","PERSON.LASTNAME"], " ", true) - +" from PERSON " - +" join CONTACT on PERSON.PERSONID = CONTACT.PERSON_ID " - +" where CONTACT.CONTACTID = KNOWLEDGEMANAGEMENT.RESPONSIBLE_CONTACT_ID"); \ No newline at end of file +result.string( + newSelect(new SqlMaskingUtils().concatWithSeparator(["PERSON.FIRSTNAME","PERSON.LASTNAME"])) + .from("PERSON") + .join("CONTACT", "PERSON.PERSONID = CONTACT.PERSON_ID") + .where("CONTACT.CONTACTID = KNOWLEDGEMANAGEMENT.AUTHOR_CONTACT_ID") + .toString() +); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/affectedIds.js b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/affectedIds.js index 0a323b07c09..7e282414273 100644 --- a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/affectedIds.js +++ b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/affectedIds.js @@ -15,7 +15,7 @@ switch (tableName) res = [idValue]; break; case "KNOWLEDGETAGLINK": - res = db.array(db.COLUMN, "select KNOWLEDGEMANAGEMENT_ID from KNOWLEDGETAGLINK where KNOWLEDGETAGLINKID = '" + idValue + "'"); + res = newSelect("KNOWLEDGEMANAGEMENT_ID").from("KNOWLEDGETAGLINK").where("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID", idValue).arrayColumn(); break; } diff --git a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js index d35d47bbda4..b13c3cdc15d 100644 --- a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js +++ b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js @@ -4,39 +4,29 @@ import("KeywordRegistry_basic"); import("Sql_lib"); import("system.SQLTYPES"); -var condition = ""; -if ( vars.exists("$local.idvalue") ) -{ - var ids = vars.get("$local.idvalue"); - condition = " where km1.KNOWLEDGEMANAGEMENTID in ('" + ids.join("', '") + "')"; -} -// the case when construct is used to decide, to which sub group the entry belongs -var sql = "select km1.KNOWLEDGEMANAGEMENTID, km1.TITLE, " + new SqlMaskingUtils().castLob("CONTENTDECODED", 255) - + ", km1.KNOWLEDGEMANAGEMENTID, km1.TITLE, km1.CONTENTDECODED, KNOWLEDGETAG.TAG, " - + "case when exists( \ - select '1' \ - from KNOWLEDGEMANAGEMENT \ - join KNOWLEDGETAGLINK on KNOWLEDGEMANAGEMENTID = KNOWLEDGEMANAGEMENT_ID \ - join KNOWLEDGETAG on KNOWLEDGETAGID = KNOWLEDGETAG_ID \ - where KNOWLEDGETAG.TAG = 'News' \ - and KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = km1.KNOWLEDGEMANAGEMENTID \ - ) \ - then 'News' \ - else case when GITPATH is null and TYPE = 1 \ - then 'Knowledgebase' \ - else case when GITPATH is not null and TYPE = 2 \ - then 'Editorial' \ - else case when TYPE = 3 \ - then 'Business process' \ - end \ - end \ - end \ - end " - + ", ''" - + " from KNOWLEDGEMANAGEMENT km1 " - + " left join KNOWLEDGETAGLINK on KNOWLEDGEMANAGEMENTID = KNOWLEDGEMANAGEMENT_ID" - + " left join KNOWLEDGETAG on KNOWLEDGETAGID = KNOWLEDGETAG_ID" - + condition - + " order by KNOWLEDGEMANAGEMENTID" +var sql = newSelect([ + "km1.KNOWLEDGEMANAGEMENTID", "km1.TITLE", new SqlMaskingUtils().castLob("CONTENTDECODED", 255), "km1.KNOWLEDGEMANAGEMENTID", + "km1.TITLE", "km1.CONTENTDECODED", "KNOWLEDGETAG.TAG", + SqlBuilder.caseWhen(null, newSelect("KNOWLEDGEMANAGEMENTID") + .from("KNOWLEDGEMANAGEMENT") + .join("KNOWLEDGETAGLINK", "KNOWLEDGEMANAGEMENTID = KNOWLEDGEMANAGEMENT_ID") + .join("KNOWLEDGETAG", "KNOWLEDGETAGID = KNOWLEDGETAG_ID") + .where("KNOWLEDGETAG.TAG", "News") + .and("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = km1.KNOWLEDGEMANAGEMENTID")) + .thenString("News") + .when(newWhere("GITPATH is null").and("TYPE = 1")) + .thenString("Knowledgebase") + .when(newWhere("GITPATH is not null").and("TYPE = 2")) + .thenString("Editorial") + .when("TYPE = 3") + .thenString("Business process"), + "''" + ]).from("KNOWLEDGEMANAGEMENT", "km1") + .leftJoin("KNOWLEDGETAGLINK", "KNOWLEDGEMANAGEMENTID = KNOWLEDGEMANAGEMENT_ID") + .leftJoin("KNOWLEDGETAG", "KNOWLEDGETAGID = KNOWLEDGETAG_ID") + .orderBy("KNOWLEDGEMANAGEMENTID"); -result.string(sql); \ No newline at end of file +if (vars.exists("$local.idvalue")) + querySelect.whereIfSet("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID", "$local.idvalue"); + +result.string(sql.toString()); \ No newline at end of file diff --git a/process/KnowledgeManagement_lib/process.js b/process/KnowledgeManagement_lib/process.js index d2b23022b6a..8e639f6fcd6 100644 --- a/process/KnowledgeManagement_lib/process.js +++ b/process/KnowledgeManagement_lib/process.js @@ -29,13 +29,11 @@ function KnowledgeManagementModel(pHtml, pKnowledgeId) var updFunc = function(pContent, pId) { - cols = ["CONTENT", "CONTENTDECODED"]; - colTypes = db.getColumnTypes("KNOWLEDGEMANAGEMENT", cols); - db.updateData("KNOWLEDGEMANAGEMENT" - , cols - , colTypes - , [pContent, text.html2text(pContent)] - , "KNOWLEDGEMANAGEMENTID = '" + pId + "'"); + newWhere("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID", pId) + .updateFields({ + "CONTENT": pContent, + "CONTENTDECODED": text.html2text(pContent) + }); } //this turns a HTML String into an instance of SimpleHtmlObject for further processing @@ -364,10 +362,9 @@ KnowledgeManagementTagsController.prototype.addTag = function(pIdValue, pRowData if(existingTags.ByIdMap[pData["TAG.value"]] && Number(countSql) === 0 && !pFromUpdate) { var fields = ["KNOWLEDGETAGLINKID","KNOWLEDGEMANAGEMENT_ID","KNOWLEDGETAG_ID","USER_NEW","DATE_NEW"];//["AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTE_ID", "OBJECT_ROWID", "OBJECT_TYPE", "ID_VALUE", "USER_NEW", "DATE_NEW"]; - var dataTypes = db.getColumnTypes("KNOWLEDGETAGLINK", fields); var values = [pId, this.knowledgeId, pData["TAG.value"], vars.get("$sys.user"), datetime.date()]; - db.insertData("KNOWLEDGETAGLINK", fields, dataTypes, values); + db.insertData("KNOWLEDGETAGLINK", fields, null, values); } } @@ -504,7 +501,6 @@ KnowledgeManagementTagsController.prototype.createNewTag = function(pIdValue, pD ,"TAG" ,"DATE_NEW" ,"USER_NEW"]; - var tagColTypes = db.getColumnTypes("KNOWLEDGETAG", tagFields); var newAttrId; var tagValues; @@ -519,7 +515,7 @@ KnowledgeManagementTagsController.prototype.createNewTag = function(pIdValue, pD newAttrId = util.getNewUUID(); tagValues = [newAttrId, pData["TAG.value"], datetime.date(), vars.get("$sys.user")]; - db.insertData("KNOWLEDGETAG", tagFields, tagColTypes, tagValues); + db.insertData("KNOWLEDGETAG", tagFields, null, tagValues); pData["TAG.value"] = newAttrId; @@ -941,7 +937,6 @@ KnowledgeDiscussion.prototype.addDiscussion = function(pDiscussionId, pRowData) ,"KNOWLEDGEMANAGEMENT_ID","DISCUSSIONTEXT" ,"STATUS","AUTHOR" ,"DATE_NEW","USER_NEW"]; - var types = db.getColumnTypes("KNOWLEDGEDISCUSSION", fields); var values = [ pRowData["UID.value"] @@ -954,7 +949,7 @@ KnowledgeDiscussion.prototype.addDiscussion = function(pDiscussionId, pRowData) ,vars.get("$sys.user").trim() ]; - db.insertData("KNOWLEDGEDISCUSSION", fields, types, values); + db.insertData("KNOWLEDGEDISCUSSION", fields, null, values); return this; } @@ -976,7 +971,6 @@ KnowledgeDiscussion.prototype.editDiscussion = function(pDiscussionId, pRowData, var i; var fields = []; var values = []; - var types = null; for(i = 0; i < pChanged.length; i++) { @@ -985,11 +979,10 @@ KnowledgeDiscussion.prototype.editDiscussion = function(pDiscussionId, pRowData, fields.push(field.split(".")[0]); } - types = db.getColumnTypes("KNOWLEDGEDISCUSSION", fields); db.updateData("KNOWLEDGEDISCUSSION" , fields - , types + , null , values , newWhere("KNOWLEDGEDISCUSSION.KNOWLEDGEDISCUSSIONID", pDiscussionId) .and("KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId).toString()); @@ -1046,9 +1039,8 @@ KnowledgeDiscussion.prototype.setDiscussionStatus = function(pDiscussionId, pSta let table = "KNOWLEDGEDISCUSSION"; let cols = ["STATUS"]; - let colTypes = db.getColumnTypes(table, cols); let updates = []; - let updateTemplate = [table, cols, colTypes, [pStatus]]; + let updateTemplate = [table, cols, null, [pStatus]]; _addChildrenToUpdates(pDiscussionId, pStatus); let parentUpdate = [].slice.call(updateTemplate,0); @@ -1059,7 +1051,10 @@ KnowledgeDiscussion.prototype.setDiscussionStatus = function(pDiscussionId, pSta function _addChildrenToUpdates(pId, pStatus) { - var data = db.table("select KNOWLEDGEDISCUSSIONID, PARENTENTRY from KNOWLEDGEDISCUSSION where PARENTENTRY = '" + pId + "'"); + var data = newSelect(["KNOWLEDGEDISCUSSIONID", "PARENTENTRY"]) + .from("KNOWLEDGEDISCUSSION") + .where("KNOWLEDGEDISCUSSION.PARENTENTRY", pId) + .table(); if(!data.length) return; @@ -1090,7 +1085,10 @@ KnowledgeIndexHelper.getInstance = function(pId, pData) KnowledgeIndexHelper.prototype.getDocumentsFromContent = function() { var tempArray = []; - var content = db.cell("select content from KNOWLEDGEMANAGEMENT where knowledgemanagementid = '" + this.knowledgeId + "' "); + var content = newSelect("CONTENT") + .from("KNOWLEDGEMANAGEMENT") + .where("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID", this.knowledgeId) + .cell(); var invalidLink = false; // the question mark quantifier is in (.*?) to make sure, that more than one file link can be present in one line! var matches = content.match( new RegExp("<a href=\"file(.*?)((htm(l?))|(pdf)|(doc(x?)))\"", "gi") ); @@ -1135,19 +1133,6 @@ KnowledgeIndexHelper.prototype.getDocumentsFromContent = function() ,this); this.data[8] = tempArray; - // var keywordName = "Enthält ungültige Links"; - // if(invalidLink) - // { - // if (db.cell("select count(*) from knowledgemanagementkeyword where KNOWLEDGEMANAGEMENT_ID = '" + pId + "' and KEYWORD = '" + keywordName + "'") == 0) - // { - // var cols = ["KEYWORD", "KNOWLEDGEMANAGEMENTKEYWORDID", "KNOWLEDGEMANAGEMENT_ID"]; - // db.insertData("KNOWLEDGEMANAGEMENTKEYWORD", cols, db.getColumnTypes("KNOWLEDGEMANAGEMENTKEYWORD", cols), [keywordName, util.getNewUUID(), pId]); - // } - // } - // else - // { - // db.deleteData("KNOWLEDGEMANAGEMENTKEYWORD", "KNOWLEDGEMANAGEMENT_ID = '" + pId + "' and KEYWORD = '" + keywordName + "'"); - // } return this; } diff --git a/process/NewsSystem_lib/process.js b/process/NewsSystem_lib/process.js index 3a365fac90e..08af9ed2029 100644 --- a/process/NewsSystem_lib/process.js +++ b/process/NewsSystem_lib/process.js @@ -1,3 +1,4 @@ +import("Sql_lib"); import("system.vars"); import("system.util"); import("KnowledgeManagement_lib"); @@ -58,17 +59,16 @@ NewsSystem.createNewsNotification = function(description, caption, users, id) */ NewsSystem.getDisplayValue = function() { - var resultSet = " case "; + var resultSet = SqlBuilder.caseStatement(); var allRolesObject = tools.getAllRoles(); - for each (currentRoleObject in allRolesObject) + for (let role in allRolesObject) { - resultSet += " when KNOWLEDGEROLES.ROLENAME = '" + currentRoleObject[3] + "' then '" + currentRoleObject[0] + "' "; + let currentRoleObject = allRolesObject[role]; + resultSet.when("KNOWLEDGEROLES.ROLENAME", currentRoleObject[3]).thenString(currentRoleObject[0]); } - - resultSet += " end "; - return resultSet; + return resultSet.toString(); } NewsSystem.setAsNews = function(pKnowledgeID, pNotification, pIsNews) -- GitLab From ac8ed0921d0aa0594fb2e5904a8dbf7d39d8cc4b Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 12 Nov 2020 11:36:33 +0100 Subject: [PATCH 078/184] Missing notificationType News added --- neonNotificationType/News/News.aod | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 neonNotificationType/News/News.aod diff --git a/neonNotificationType/News/News.aod b/neonNotificationType/News/News.aod new file mode 100644 index 00000000000..239ea9b1feb --- /dev/null +++ b/neonNotificationType/News/News.aod @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonNotificationType xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonNotificationType/1.1.0"> + <name>News</name> + <title>News</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:NEWSPAPER</icon> +</neonNotificationType> -- GitLab From 4d7a5c27f7e4d025561e920f31c80f15c823d7d3 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 12 Nov 2020 13:25:34 +0100 Subject: [PATCH 079/184] Knowledgemanagement css and filter fixed --- .../struct/knowledgeManagement_table.xml | 4 +- .../KnowledgeManagement_entity.aod | 95 ++++++++++--------- .../tagsbyknowledgeid/onValidation.js | 22 +++++ .../recordcontainers/db/conditionProcess.js | 2 +- .../tagfilter/filterConditionProcess.js | 2 +- .../KnowledgeNewsFeed_entity.aod | 4 - .../children/isdashlet_param/valueProcess.js | 3 + .../KnowledgeRole_entity.aod | 11 ++- .../entityfields/roles/displayValueProcess.js | 4 +- .../KnowledgeManagement.aod | 4 + .../KnowledgeNewsFeed/KnowledgeNewsFeed.aod | 3 + neonContext/KnowledgeRole/KnowledgeRole.aod | 2 +- .../KnowledgeManagementContent_view.aod | 17 ++++ .../KnowledgeManagementDetails_view.aod | 3 + .../KnowledgeManagementFilter_view.aod | 4 +- .../KnowledgeManagementMain_view.aod | 9 +- .../KnowledgeManagementTimeline_view.aod | 2 + .../KnowledgeNewsFeed_view.aod | 6 -- process/KnowledgeManagement_lib/process.js | 3 +- 19 files changed, 127 insertions(+), 73 deletions(-) create mode 100644 entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/onValidation.js create mode 100644 entity/KnowledgeNewsFeed_entity/entityfields/consumer/children/isdashlet_param/valueProcess.js create mode 100644 neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeManagement_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeManagement_table.xml index 14747dd37ea..ebe0b768225 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeManagement_table.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeManagement_table.xml @@ -15,8 +15,8 @@ <column name="TITLE" type="NVARCHAR(255)"></column> <column name="CONTENT" type="LONGTEXT"></column> <column name="CONTENTDECODED" type="LONGTEXT"></column> - <column name="PUBLISH" type="CHAR(36)"></column> - <column name="TYPE" type="CHAR(36)"></column> + <column name="PUBLISH" type="VARCHAR(36)"></column> + <column name="TYPE" type="VARCHAR(36)"></column> </createTable> <createIndex tableName="KNOWLEDGEMANAGEMENT" indexName="IDX_KNOWLEDGEMANAGEMENT_TITLE"> diff --git a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod index 2f6b2699aa9..b05003ab87f 100644 --- a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod +++ b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod @@ -16,6 +16,14 @@ <entityFields> <entityProvider> <name>#PROVIDER</name> + <dependencies> + <entityDependency> + <name>40cf66ca-421f-47f6-8ecc-8360657e0640</name> + <entityName>KnowledgeNewsFeed_entity</entityName> + <fieldName>Consumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>KNOWLEDGEMANAGEMENTID</name> @@ -99,32 +107,33 @@ <name>TagsByKnowledgeId</name> <refreshParent v="true" /> <state>EDITABLE</state> - <dependency> - <name>dependency</name> - <entityName>KnowledgeManagementTags_entity</entityName> - <fieldName>ByKnowledgeManagementId</fieldName> - </dependency> + <onValidation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/onValidation.js</onValidation> <children> <entityParameter> <name>KnowledgeManagementId_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KnowledgeManagementTags_entity</entityName> + <fieldName>ByKnowledgeManagementId</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>DiscussionsByKnowledgeId</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>KnowledgeDiscussion_entity</entityName> - <fieldName>ByKnowledgeId</fieldName> - </dependency> <children> <entityParameter> <name>KnowledgeId_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/discussionsbyknowledgeid/children/knowledgeid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KnowledgeDiscussion_entity</entityName> + <fieldName>ByKnowledgeId</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Provider</name> @@ -139,42 +148,37 @@ </entityConsumer> <entityConsumer> <name>KeywordKnowledgeType</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/keywordknowledgetype/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordPublish</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordPublish</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/keywordpublish/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>indexTag</name> </entityField> <entityConsumer> <name>LinkedDocuments</name> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentTable_param</name> @@ -185,6 +189,11 @@ <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>openEntryAsMail</name> @@ -197,17 +206,17 @@ <entityConsumer> <name>LinksByKnowledgeId</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>KnowledgeLink_entity</entityName> - <fieldName>ByKnowledgeId</fieldName> - </dependency> <children> <entityParameter> <name>KnowledgeManagementId_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linksbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KnowledgeLink_entity</entityName> + <fieldName>ByKnowledgeId</fieldName> + </dependency> </entityConsumer> <entityField> <name>LastChange</name> @@ -216,17 +225,17 @@ </entityField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>exportHTML_action</name> @@ -268,11 +277,6 @@ <name>KnowledgeRoles</name> <stateProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>KnowledgeRole_entity</entityName> - <fieldName>KnowledgeRole</fieldName> - </dependency> <children> <entityParameter> <name>KnowledgeManagement_param</name> @@ -284,14 +288,14 @@ <expose v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Tasks</name> <dependency> <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> + <entityName>KnowledgeRole_entity</entityName> + <fieldName>KnowledgeRole</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Tasks</name> <children> <entityParameter> <name>ObjectId_param</name> @@ -306,6 +310,11 @@ <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityField> <name>RESPONSIBLE_CONTACT_ID</name> diff --git a/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/onValidation.js b/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/onValidation.js new file mode 100644 index 00000000000..a7755c7c8e3 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/onValidation.js @@ -0,0 +1,22 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("Entity_lib"); + +vars.get("$field.TagsByKnowledgeId.insertedRows"); +vars.get("$field.TagsByKnowledgeId.changedRows"); +vars.get("$field.TagsByKnowledgeId.deletedRows"); + +var tagRows = EntityConsumerRowsHelper.getCurrentConsumerRows("TagsByKnowledgeId", ["TAG"]); +var tagSet = new Set(); +var hasDuplicate = tagRows.some(function (row) +{ + var tag = row["TAG"].trim(); + if (tagSet.has(tag)) + return true; + tagSet.add(tag); + return false; +}); + +if (hasDuplicate) + result.string(translate.text("Tags can't be assigned more than once!")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js index c25c12a3103..938e3152c59 100644 --- a/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js @@ -19,7 +19,7 @@ if(vars.exists("$param.isDashlet_param") && vars.get("$param.isDashlet_param")) ,newSelect("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID") .from("KNOWLEDGETAGLINK") .where("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID") - .and("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", "1f035a33-e5a3-48e4-bda6-6d8b320177e4"), SqlBuilder.EXISTS()); + .and("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", "9c1bb89e-60db-4a50-ba77-c81a8ec82d2c"), SqlBuilder.EXISTS()); } result.string(cond.toString()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js index 446c4299313..c05ae19af19 100644 --- a/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js @@ -13,7 +13,7 @@ switch (vars.get("$local.comparison")) case "NOT_EQUAL": condType = SqlBuilder.NOT_EXISTS(); case "EQUAL": - condition.and(null, tagLinkSqll.and("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", "$local.rawvalue"), condType); + condition.and(null, tagLinkSql.and("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", "$local.rawvalue"), condType); break; case "ISNULL": condType = SqlBuilder.NOT_EXISTS(); diff --git a/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod b/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod index 289c14e605d..aa197ca8d2a 100644 --- a/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod +++ b/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod @@ -15,10 +15,6 @@ <contentType>HTML</contentType> <valueProcess>%aditoprj%/entity/KnowledgeNewsFeed_entity/entityfields/htmlcontent/valueProcess.js</valueProcess> </entityField> - <entityParameter> - <name>Parameter</name> - <expose v="true" /> - </entityParameter> <entityProvider> <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> diff --git a/entity/KnowledgeNewsFeed_entity/entityfields/consumer/children/isdashlet_param/valueProcess.js b/entity/KnowledgeNewsFeed_entity/entityfields/consumer/children/isdashlet_param/valueProcess.js new file mode 100644 index 00000000000..40effa01784 --- /dev/null +++ b/entity/KnowledgeNewsFeed_entity/entityfields/consumer/children/isdashlet_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string(true); \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod b/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod index cec4b2173e0..eb1b5a2d876 100644 --- a/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod +++ b/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>KnowledgeRole_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <title>Knowledge Role</title> <recordContainer>db</recordContainer> <entityFields> <entityProvider> @@ -15,17 +16,17 @@ </entityField> <entityConsumer> <name>NewsRole</name> - <dependency> - <name>dependency</name> - <entityName>Role_entity</entityName> - <fieldName>FilterRolesWithoutPermission</fieldName> - </dependency> <children> <entityParameter> <name>ExcludeRoles_param</name> <valueProcess>%aditoprj%/entity/KnowledgeRole_entity/entityfields/newsrole/children/excluderoles_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Role_entity</entityName> + <fieldName>FilterRolesWithoutPermission</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>KnowledgeRole</name> diff --git a/entity/KnowledgeRole_entity/entityfields/roles/displayValueProcess.js b/entity/KnowledgeRole_entity/entityfields/roles/displayValueProcess.js index 6890d68fc5d..34cda7e17c1 100644 --- a/entity/KnowledgeRole_entity/entityfields/roles/displayValueProcess.js +++ b/entity/KnowledgeRole_entity/entityfields/roles/displayValueProcess.js @@ -2,12 +2,10 @@ import("system.result"); import("system.vars"); import("system.tools"); -var allRoles = tools.getAllRoles(["PROJECT", "CUSTOM"], true); +var allRoles = tools.getAllRoles(["PROJECT", "CUSTOM", "INTERNAL"], true); var roleTitle = vars.get("$field.ROLES"); if (roleTitle in allRoles) -{ roleTitle = allRoles[roleTitle][0]; -} result.string(roleTitle); \ No newline at end of file diff --git a/neonContext/KnowledgeManagement/KnowledgeManagement.aod b/neonContext/KnowledgeManagement/KnowledgeManagement.aod index b6caadef74f..44e4b904929 100644 --- a/neonContext/KnowledgeManagement/KnowledgeManagement.aod +++ b/neonContext/KnowledgeManagement/KnowledgeManagement.aod @@ -44,5 +44,9 @@ <name>4e903d37-f2ac-4368-99aa-aee2492a03dc</name> <view>KnowledgeManagementRole_view</view> </neonViewReference> + <neonViewReference> + <name>be95c2fc-b29b-4d46-a8fc-0d79c09f67b6</name> + <view>KnowledgeManagementContent_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod b/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod index f9bc4fdec87..ecb8b248430 100644 --- a/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod +++ b/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod @@ -10,5 +10,8 @@ <name>a6965156-ab52-4520-a3be-1351eacd863d</name> <view>KnowledgeNewsFeed_view</view> </neonViewReference> + <neonViewReference> + <name>e4604c82-a42f-47c6-a1d1-0f1d1727ee38</name> + </neonViewReference> </references> </neonContext> diff --git a/neonContext/KnowledgeRole/KnowledgeRole.aod b/neonContext/KnowledgeRole/KnowledgeRole.aod index 68bba633d72..a41da5ae918 100644 --- a/neonContext/KnowledgeRole/KnowledgeRole.aod +++ b/neonContext/KnowledgeRole/KnowledgeRole.aod @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>KnowledgeRole</name> - <title>Knowledgerole</title> + <title>Knowledge Role</title> <majorModelMode>DISTRIBUTED</majorModelMode> <entity>KnowledgeRole_entity</entity> <references> diff --git a/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod b/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod new file mode 100644 index 00000000000..2318cac2885 --- /dev/null +++ b/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>KnowledgeManagementContent_view</name> + <title>Content</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <webContentViewTemplate> + <name>htmlContent</name> + <entityField>htmlView</entityField> + </webContentViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod b/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod index 992ac0b7ffb..43c26e82585 100644 --- a/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod +++ b/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod @@ -13,6 +13,7 @@ <name>KnowledgeDetails</name> <iconField>#ICON</iconField> <titleField>TITLE</titleField> + <subtitleField>LastChange</subtitleField> <entityField>#ENTITY</entityField> <isEditable v="false" /> </cardViewTemplate> @@ -25,6 +26,8 @@ </favoriteViewTemplate> <genericViewTemplate> <name>Details</name> + <showDrawer v="true" /> + <drawerCaption>Details</drawerCaption> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> diff --git a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod index 28f846c0a6c..7a2dfc261ca 100644 --- a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod +++ b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod @@ -6,8 +6,8 @@ <dashletConfigurations> <neonDashletConfiguration> <name>Wissen</name> - <title>Wissen</title> - <description>Alle Wissensbeiträge</description> + <title>Knowledge</title> + <description>All Articles</description> <fragment>KnowledgeManagement/filter</fragment> <icon>VAADIN:ACADEMY_CAP</icon> <categories> diff --git a/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod b/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod index 33c43a3158a..dd357ba38b8 100644 --- a/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod +++ b/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod @@ -14,10 +14,11 @@ <entityField>#ENTITY</entityField> <view>KnowledgeManagementDetails_view</view> </neonViewReference> - <webContentViewTemplate> - <name>Content</name> - <entityField>htmlView</entityField> - </webContentViewTemplate> + <neonViewReference> + <name>0c32cd6f-82a6-466a-9a71-16eeeb9c6890</name> + <entityField>#ENTITY</entityField> + <view>KnowledgeManagementContent_view</view> + </neonViewReference> <neonViewReference> <name>79fcef8e-c0ba-4463-a239-6faf332b6bc9</name> <entityField>DiscussionsByKnowledgeId</entityField> diff --git a/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod b/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod index 06766542b7e..0dab386afeb 100644 --- a/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod +++ b/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod @@ -3,11 +3,13 @@ <name>KnowledgeManagementTimeline_view</name> <title>Newsfeed (Preview)</title> <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> <dashletConfigurations> <neonDashletConfiguration> <name>timelineDashletConfig</name> <title>Newsfeed (Preview)</title> <fragment>KnowledgeManagement/filter</fragment> + <icon>NEON:TIMELINE</icon> <categories> <neonDashletCategory> <name>knowledge</name> diff --git a/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod b/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod index 4f9bd988b14..eb513c6f972 100644 --- a/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod +++ b/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod @@ -15,12 +15,6 @@ <title>Knowledge</title> </neonDashletCategory> </categories> - <parameters> - <neonDashletParameter> - <name>Parameter</name> - <value>tre</value> - </neonDashletParameter> - </parameters> </neonDashletConfiguration> </dashletConfigurations> <layout> diff --git a/process/KnowledgeManagement_lib/process.js b/process/KnowledgeManagement_lib/process.js index 8e639f6fcd6..f827b8bf727 100644 --- a/process/KnowledgeManagement_lib/process.js +++ b/process/KnowledgeManagement_lib/process.js @@ -332,8 +332,9 @@ KnowledgeManagementTagsController.getInstance = function(pId, pModel) */ KnowledgeManagementTagsController.prototype.addTag = function(pIdValue, pRowData, pFromUpdate) { - if(!pRowData["TAG.value"] || !pIdValue) + if(!pRowData["TAG.value"] || !pRowData["TAG.value"].trim() || !pIdValue) return this; + pRowData["TAG.value"] = pRowData["TAG.value"].trim(); //if we get an UUID, an existing tag was chosen and can be added directly if(IdUtils.isUUID(pRowData["TAG.value"])) _add.apply(this,[pIdValue, pRowData]); -- GitLab From ec88acec73ea4645978fc7d4a318c7c528f05438 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 12 Nov 2020 17:02:15 +0100 Subject: [PATCH 080/184] Knowledgemanagement bugfixes and improvements --- .../KnowledgeDiscussion_entity.aod | 17 ++------ .../KnowledgeDiscussion_entity/afterUiInit.js | 5 --- .../children/showall_action/iconIdProcess.js | 7 --- .../showall_action/onActionProcess.js | 12 ------ .../onActionProcess.js | 2 +- .../withclosed_param/valueProcess.js | 5 --- .../contentProcess.js | 13 ++---- .../rowCountProcess.js | 12 ++---- .../KnowledgeLink_entity.aod | 38 ++++++++-------- .../children/contactid_param/valueProcess.js | 7 --- .../children/entity_param/valueProcess.js | 5 +++ .../children/objecttype_param/valueProcess.js | 4 -- .../KnowledgeManagementTags_entity.aod | 17 +++----- .../entityfields/listtitle/valueProcess.js | 3 -- .../KnowledgeManagement_entity.aod | 2 + .../author_contact_id/valueProcess.js | 6 +-- .../responsible_contact_id/valueProcess.js | 6 +-- .../recordcontainers/db/conditionProcess.js | 3 +- .../ObjectProxy_entity/ObjectProxy_entity.aod | 6 +++ .../KnowledgeManagement.aod | 2 +- .../KnowledgeDiscussionTree_view.aod | 1 + .../KnowledgeTagList_view.aod | 4 +- process/KnowledgeManagement_lib/process.js | 43 ++++++++++++------- 23 files changed, 84 insertions(+), 136 deletions(-) delete mode 100644 entity/KnowledgeDiscussion_entity/afterUiInit.js delete mode 100644 entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/iconIdProcess.js delete mode 100644 entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/onActionProcess.js delete mode 100644 entity/KnowledgeDiscussion_entity/entityfields/withclosed_param/valueProcess.js delete mode 100644 entity/KnowledgeLink_entity/entityfields/objects/children/contactid_param/valueProcess.js create mode 100644 entity/KnowledgeLink_entity/entityfields/objects/children/entity_param/valueProcess.js delete mode 100644 entity/KnowledgeLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js delete mode 100644 entity/KnowledgeManagementTags_entity/entityfields/listtitle/valueProcess.js diff --git a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod index c30b50ef07a..37de8395171 100644 --- a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod +++ b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod @@ -6,7 +6,6 @@ <grantCreateProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantCreateProcess.js</grantCreateProcess> <grantUpdateProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantDeleteProcess.js</grantDeleteProcess> - <afterUiInit>%aditoprj%/entity/KnowledgeDiscussion_entity/afterUiInit.js</afterUiInit> <iconIdProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/iconIdProcess.js</iconIdProcess> <titlePlural>Discussions</titlePlural> <recordContainer>JDito_KnowledgeDiscussionContainer</recordContainer> @@ -30,6 +29,7 @@ </entityField> <entityField> <name>STATUS</name> + <title>Status</title> <consumer>StatusKeyword</consumer> <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/status/valueProcess.js</valueProcess> </entityField> @@ -92,11 +92,6 @@ <name>KnowledgeId_param</name> <expose v="true" /> </entityParameter> - <entityParameter> - <name>WithClosed_param</name> - <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/withclosed_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> <entityActionGroup> <name>Edit_ActionGroup</name> <title>Bearbeiten</title> @@ -109,13 +104,6 @@ <iconId>VAADIN:COMMENT_O</iconId> <tooltip>Adds an answer to the selected discussion</tooltip> </entityActionField> - <entityActionField> - <name>showAll_action</name> - <onActionProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/onActionProcess.js</onActionProcess> - <isObjectAction v="false" /> - <iconIdProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/iconIdProcess.js</iconIdProcess> - <tooltip>Toggles view between "show only open discussions" and "show all discussions"</tooltip> - </entityActionField> <entityActionField> <name>toggleDiscussionStatus_action</name> <onActionProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js</onActionProcess> @@ -157,7 +145,7 @@ <name>JDito_KnowledgeDiscussionContainer</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> <isPageable v="false" /> - <isFilterable v="false" /> + <isFilterable v="true" /> <isRequireContainerFiltering v="true" /> <isSortable v="false" /> <contentProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js</contentProcess> @@ -184,6 +172,7 @@ </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>STATUS.value</name> + <isFilterable v="true" /> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>STATUS.displayValue</name> diff --git a/entity/KnowledgeDiscussion_entity/afterUiInit.js b/entity/KnowledgeDiscussion_entity/afterUiInit.js deleted file mode 100644 index 4c6bf685556..00000000000 --- a/entity/KnowledgeDiscussion_entity/afterUiInit.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.vars"); -import("system.neon"); - -if(vars.exists("$param.WithClosed_param") && vars.get("$param.WithClosed_param")) - vars.set("$context.showAll", vars.get("$param.WithClosed_param")) \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/iconIdProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/iconIdProcess.js deleted file mode 100644 index 925dab4fbb0..00000000000 --- a/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/iconIdProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -var ret = (vars.exists("$context.showAll") && vars.get("$context.showAll") == "true") ? "VAADIN:CLIPBOARD_CHECK" : "VAADIN:CLIPBOARD"; - -result.string(ret); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/onActionProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/onActionProcess.js deleted file mode 100644 index 10b70730e23..00000000000 --- a/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/showall_action/onActionProcess.js +++ /dev/null @@ -1,12 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(!vars.exists("$context.showAll")) - vars.set("$context.showAll", "true"); -else if((vars.exists("$context.showAll") && vars.get("$context.showAll") == "true")) - vars.set("$context.showAll", "false"); -else - vars.set("$context.showAll", "true"); - -neon.refreshAll(); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js index b2bac85e2f6..79943300955 100644 --- a/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js +++ b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js @@ -9,4 +9,4 @@ var status = (vars.get("$field.STATUS") == $KeywordRegistry.discussionStatus$aci KnowledgeDiscussion.getInstance(vars.get("$param.KnowledgeId_param")) .setDiscussionStatus(vars.get("$field.UID"), status); -neon.refreshAll(); \ No newline at end of file +neon.refresh(); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/withclosed_param/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/withclosed_param/valueProcess.js deleted file mode 100644 index 77e47923de2..00000000000 --- a/entity/KnowledgeDiscussion_entity/entityfields/withclosed_param/valueProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.vars"); -import("system.result"); - -if(vars.exists("$context.showAll")) - result.string(vars.get("$context.showAll")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js index fa4fb2b67c3..ea4631c51b7 100644 --- a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js @@ -1,21 +1,14 @@ -import("system.logging"); +import("JditoFilter_lib"); import("KnowledgeManagement_lib"); import("system.vars"); import("system.result"); import("system.neon"); -var wClosedParam = null; -if(vars.exists("$param.WithClosed_param")) - wClosedParam = vars.get("$param.WithClosed_param"); - var kId = vars.exists("$param.KnowledgeId_param") && vars.get("$param.KnowledgeId_param"); -var withClosed = vars.exists("$context.showAll") && vars.get("$context.showAll"); - -if(wClosedParam == "true") - withClosed = wClosedParam; var idValues = vars.exists("$local.idvalues") && vars.get("$local.idvalues"); +var filterCondition = new FilterSqlTranslator(vars.get("$local.filter"), "KNOWLEDGEDISCUSSION").getSqlCondition(); var discussions = KnowledgeDiscussion.getInstance(kId); -var retData = discussions.buildCompleteTree(KnowledgeDiscussion.getMode(withClosed), idValues).data; +var retData = discussions.buildCompleteTree(filterCondition, idValues).data; result.object(retData); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js index 48a39b7f7de..ceb82cc1070 100644 --- a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js @@ -1,23 +1,17 @@ import("KnowledgeManagement_lib"); +import("JditoFilter_lib"); import("system.vars"); import("system.result"); import("system.neon"); - -var wClosedParam = null; -if(vars.exists("$param.WithClosed_param")) - wClosedParam = vars.get("$param.WithClosed_param"); - var kId = vars.exists("$param.KnowledgeId_param") && vars.get("$param.KnowledgeId_param"); -var withClosed = vars.exists("$context.showAll") && vars.get("$context.showAll"); -if(wClosedParam == "true") - withClosed = wClosedParam; var idValues = vars.exists("$local.idvalues") && vars.get("$local.idvalues"); +var filterCondition = new FilterSqlTranslator(vars.get("$local.filter"), "KNOWLEDGEDISCUSSION").getSqlCondition(); if(kId) { var discussions = KnowledgeDiscussion.getInstance(kId); - var retData = discussions.getDatasetCount(KnowledgeDiscussion.getMode(withClosed), idValues); + var retData = discussions.getDatasetCount(filterCondition, idValues); result.object(retData); } \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod b/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod index 6ebca6010ae..81ffc1da3d8 100644 --- a/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod +++ b/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod @@ -2,9 +2,9 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>KnowledgeLink_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <title>Verknüpfung</title> + <title>Link</title> <iconIdProcess>%aditoprj%/entity/KnowledgeLink_entity/iconIdProcess.js</iconIdProcess> - <titlePlural>Verknüpfungen</titlePlural> + <titlePlural>Links</titlePlural> <recordContainer>db</recordContainer> <entityFields> <entityProvider> @@ -57,21 +57,17 @@ </entityConsumer> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> - <name>ObjectType_param</name> - <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>ContactId_param</name> - <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/objects/children/contactid_param/valueProcess.js</valueProcess> + <name>Entity_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/objects/children/entity_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ObjectProxy_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>KnowledgeManagementId_param</name> @@ -81,14 +77,6 @@ <name>ByKnowledgeId</name> <targetContextField>OBJECT_TYPE</targetContextField> <targetIdField>ROW_ID</targetIdField> - <dependencies> - <entityDependency> - <name>c3ed10c1-db55-4e55-9c18-2b8d400df033</name> - <entityName>KnowledgeManagement_entity</entityName> - <fieldName>LinksByKnowledgeId</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ObjectType_param</name> @@ -99,6 +87,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>c3ed10c1-db55-4e55-9c18-2b8d400df033</name> + <entityName>KnowledgeManagement_entity</entityName> + <fieldName>LinksByKnowledgeId</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityProvider> <name>ByLink</name> diff --git a/entity/KnowledgeLink_entity/entityfields/objects/children/contactid_param/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/objects/children/contactid_param/valueProcess.js deleted file mode 100644 index f781937a2a2..00000000000 --- a/entity/KnowledgeLink_entity/entityfields/objects/children/contactid_param/valueProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.vars"); -import("system.result"); - -var rowId = vars.get("$field.ROW_ID"); - -if(rowId != null && rowId != "") - result.string(rowId); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/objects/children/entity_param/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/objects/children/entity_param/valueProcess.js new file mode 100644 index 00000000000..7f9d49710e5 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/objects/children/entity_param/valueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("Context_lib"); +import("system.result"); + +result.string(ContextUtils.getEntity(vars.get("$field.OBJECT_TYPE"))); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js deleted file mode 100644 index 03654e9e879..00000000000 --- a/entity/KnowledgeLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.OBJECT_TYPE")); \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod index 4e7cf8e9b74..552ce5d4c60 100644 --- a/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod +++ b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod @@ -13,6 +13,12 @@ </entityParameter> <entityProvider> <name>ByKnowledgeManagementId</name> + <children> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <mandatory v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>8d86a61b-0fe3-44c4-a512-e044c990fded</name> @@ -21,12 +27,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>KnowledgeManagementId_param</name> - <mandatory v="true" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>TAG</name> @@ -47,11 +47,6 @@ <fieldName>CompleteList</fieldName> </dependency> </entityConsumer> - <entityField> - <name>ListTitle</name> - <state>READONLY</state> - <valueProcess>%aditoprj%/entity/KnowledgeManagementTags_entity/entityfields/listtitle/valueProcess.js</valueProcess> - </entityField> <entityActionField> <name>ActionField1</name> <title>a1</title> diff --git a/entity/KnowledgeManagementTags_entity/entityfields/listtitle/valueProcess.js b/entity/KnowledgeManagementTags_entity/entityfields/listtitle/valueProcess.js deleted file mode 100644 index 2c6c244e954..00000000000 --- a/entity/KnowledgeManagementTags_entity/entityfields/listtitle/valueProcess.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string("Tag:"); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod index b05003ab87f..c65093499e8 100644 --- a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod +++ b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod @@ -54,6 +54,7 @@ <name>AUTHOR_CONTACT_ID</name> <title>Author</title> <consumer>PersonContacts</consumer> + <linkedContext>Person</linkedContext> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js</displayValueProcess> </entityField> @@ -320,6 +321,7 @@ <name>RESPONSIBLE_CONTACT_ID</name> <title>Responsible</title> <consumer>PersonContacts</consumer> + <linkedContext>Person</linkedContext> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js</displayValueProcess> </entityField> diff --git a/entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js index 48206583bee..73c38e80b26 100644 --- a/entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js +++ b/entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js @@ -1,8 +1,6 @@ +import("Employee_lib"); import("system.vars"); import("system.result"); -import("system.tools"); if(vars.exists("$this.value") && vars.get("$this.value") == null) -{ - result.string(tools.getUser(vars.get("$sys.user"))[tools.PARAMS][tools.CONTACTID]); -} \ No newline at end of file + result.string(EmployeeUtils.getCurrentContactId()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js index 48206583bee..73c38e80b26 100644 --- a/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js +++ b/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js @@ -1,8 +1,6 @@ +import("Employee_lib"); import("system.vars"); import("system.result"); -import("system.tools"); if(vars.exists("$this.value") && vars.get("$this.value") == null) -{ - result.string(tools.getUser(vars.get("$sys.user"))[tools.PARAMS][tools.CONTACTID]); -} \ No newline at end of file + result.string(EmployeeUtils.getCurrentContactId()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js index 938e3152c59..d73eb83fe46 100644 --- a/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js @@ -18,8 +18,9 @@ if(vars.exists("$param.isDashlet_param") && vars.get("$param.isDashlet_param")) .and(null ,newSelect("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID") .from("KNOWLEDGETAGLINK") + .join("KNOWLEDGETAG", "KNOWLEDGETAGLINK.KNOWLEDGETAG_ID = KNOWLEDGETAG.KNOWLEDGETAGID") .where("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID") - .and("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", "9c1bb89e-60db-4a50-ba77-c81a8ec82d2c"), SqlBuilder.EXISTS()); + .and("KNOWLEDGETAG.TAG", "News"), SqlBuilder.EXISTS()); } result.string(cond.toString()); \ No newline at end of file diff --git a/entity/ObjectProxy_entity/ObjectProxy_entity.aod b/entity/ObjectProxy_entity/ObjectProxy_entity.aod index ade8076995c..e197c4de792 100644 --- a/entity/ObjectProxy_entity/ObjectProxy_entity.aod +++ b/entity/ObjectProxy_entity/ObjectProxy_entity.aod @@ -31,6 +31,12 @@ <fieldName>LinkedObject</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>9d75842d-0f91-4ddf-bd94-d8f092f17224</name> + <entityName>KnowledgeLink_entity</entityName> + <fieldName>Objects</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityParameter> diff --git a/neonContext/KnowledgeManagement/KnowledgeManagement.aod b/neonContext/KnowledgeManagement/KnowledgeManagement.aod index 44e4b904929..392aeb6cef2 100644 --- a/neonContext/KnowledgeManagement/KnowledgeManagement.aod +++ b/neonContext/KnowledgeManagement/KnowledgeManagement.aod @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>KnowledgeManagement</name> - <title>Knowledgemanagement</title> + <title>Knowledge Management</title> <description><null value></description> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:ACADEMY_CAP</icon> diff --git a/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod b/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod index 601327c7d5b..ec4ef34471b 100644 --- a/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod +++ b/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod @@ -2,6 +2,7 @@ <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> <name>KnowledgeDiscussionTree_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod b/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod index 20b683b7634..61be3f1b770 100644 --- a/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod +++ b/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod @@ -11,13 +11,13 @@ <children> <titledListViewTemplate> <name>TagList</name> - <titleField>ListTitle</titleField> <entityField>#ENTITY</entityField> <title>Tags</title> <columns> <neonTitledListTableColumn> - <name>4522858e-7bcb-43e3-b542-410898a8b90a</name> + <name>03ec809f-d410-4247-98a8-50022222c785</name> <entityField>TAG</entityField> + <fullWidth v="true" /> </neonTitledListTableColumn> </columns> </titledListViewTemplate> diff --git a/process/KnowledgeManagement_lib/process.js b/process/KnowledgeManagement_lib/process.js index f827b8bf727..9ec7cfda580 100644 --- a/process/KnowledgeManagement_lib/process.js +++ b/process/KnowledgeManagement_lib/process.js @@ -547,12 +547,12 @@ KnowledgeDiscussion.getInstance = function(pKnowledgeId) * Function for getting the row count, uses less complex SQL and doesn't have the tree generation. * It's used in the rowCountProcess of the RecordContainer of the KnowledgeDiscussion entity, to improve performance * - * @param {KnowledgeDiscussion.WITHCLOSED|KnowledgeDiscussion.ONLYACTIVE} pMode Takes the value of one of the two mode constants + * @param {SqlBuilder} pCondition sql condition * @param {Array} pIdValues Takes an array of ids, typically one id with single selection, to only load the selected discusssion for the preview view * * @return {int} Total number of Datasets to load */ -KnowledgeDiscussion.prototype.getDatasetCount = function(pMode, pIdValues) +KnowledgeDiscussion.prototype.getDatasetCount = function(pCondition, pIdValues) { var knowledgeSql = newSelect("count(*)").from("KNOWLEDGEMANAGEMENT").join("KNOWLEDGEDISCUSSION", "KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID").where(); @@ -560,10 +560,10 @@ KnowledgeDiscussion.prototype.getDatasetCount = function(pMode, pIdValues) var discussionSql = newSelect("count(*)").from("KNOWLEDGEDISCUSSION").where(); - if(pMode == "true") + if(pCondition) { - discussionSql.and("KNOWLEDGEDISCUSSION.STATUS", $KeywordRegistry.discussionStatus$acitve()); - knowledgeSql.and("KNOWLEDGEDISCUSSION.STATUS", $KeywordRegistry.discussionStatus$acitve()); + discussionSql.andIfSet(pCondition); + knowledgeSql.andIfSet(pCondition); } if(pIdValues) @@ -592,13 +592,13 @@ KnowledgeDiscussion.prototype.getDatasetCount = function(pMode, pIdValues) * The tree always gets sorted by the date of the most recent action. Either a new answer to an discussion or an edit of an discussion * Data is retireved by reading the data property of your instance of KnowledgeDiscussion after running buildCompleteTree * - * @param {KnowledgeDiscussion.WITHCLOSED|KnowledgeDiscussion.ONLYACTIVE} pMode Takes the value of one of the two mode constants + * @param {SqlBuilder} pCondition sql condition * @param {Array} pIdValues Takes an array of ids, typically one id with single selection, to only load the selected discusssion for the preview view * @param {Boolean} pGetAll Switch, which determines if all discussions on all knowledge entries should be loaded or only the discussion for one specific knowledge. * * @return {this} returns the now filled instance of the object. */ -KnowledgeDiscussion.prototype.buildCompleteTree = function(pMode, pIdValues, pGetAll) +KnowledgeDiscussion.prototype.buildCompleteTree = function(pCondition, pIdValues, pGetAll) { var knowledgeSql = newSelect("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID, KNOWLEDGEMANAGEMENT.TITLE").from("KNOWLEDGEMANAGEMENT") .join("KNOWLEDGEDISCUSSION", "KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID") @@ -619,10 +619,10 @@ KnowledgeDiscussion.prototype.buildCompleteTree = function(pMode, pIdValues, pGe TOP_CLOSED:"VAADIN:LOCK" }; - if(pMode == "true" && !(pIdValues && pIdValues.length == 1)) + if(pCondition && !(pIdValues && pIdValues.length == 1)) { - discussionSql.and("KNOWLEDGEDISCUSSION.STATUS", $KeywordRegistry.discussionStatus$acitve()); - knowledgeSql.and("KNOWLEDGEDISCUSSION.STATUS", $KeywordRegistry.discussionStatus$acitve()); + discussionSql.andIfSet(pCondition); + knowledgeSql.andIfSet(pCondition); } if(pIdValues) @@ -636,7 +636,24 @@ KnowledgeDiscussion.prototype.buildCompleteTree = function(pMode, pIdValues, pGe else if(this.knowledgeId) discussionSql.and("KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId); - var discussionData = discussionSql.table() + var discussionData = discussionSql.table(); + + //remove all parent-ids that can't be found in the array, otherwise these would not be included in the tree + //(if these entries were not included, the result from the rowCountProcess would be incorrect) + if (Utils.isNullOrEmpty(pIdValues)) + { + var allDiscussionIds = new Set(); + discussionData.forEach(function ([discussionId]) + { + allDiscussionIds.add(discussionId); + }); + discussionData.forEach(function (row) + { + if (!allDiscussionIds.has(row[1])) + row[1] = ""; + }); + } + var user, userTitle, discussionTitle; //adding firstname and lastname from employee as author displayvalue and add icon @@ -1021,10 +1038,6 @@ KnowledgeDiscussion.hasChildren = function(pId) return newSelect("count(*)").from("KNOWLEDGEDISCUSSION").where("KNOWLEDGEDISCUSSION.PARENTENTRY", pId).cell() > 0 } -KnowledgeDiscussion.getMode = function (pWithClosed) -{ - return ((pWithClosed == "true") ? "false" : "true"); -} /** * Function for setting the status of a discussion AND its children * @param {String} pDiscussionId The id of the discussion -- GitLab From d1d112a4ffc6ad02acb813ad520c134c7fa3bdd7 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 12 Nov 2020 17:54:58 +0100 Subject: [PATCH 081/184] Translations for Knowledge management --- .../data/knowledgeKeywords.xml | 4 +- .../_____SYSTEM_APPLICATION_NEON.aod | 2 +- .../KnowledgeDiscussion_entity.aod | 4 +- .../_____LANGUAGE_EXTRA.aod | 15 ++- .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 92 ++++++++++++++++--- .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 15 ++- .../KnowledgeManagementFilter_view.aod | 4 +- .../KnowledgeNewsFeed_view.aod | 3 +- 8 files changed, 102 insertions(+), 37 deletions(-) diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeKeywords.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeKeywords.xml index 10bb6c90408..51f7d6b6984 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeKeywords.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeKeywords.xml @@ -7,7 +7,7 @@ <insert tableName="AB_KEYWORD_ENTRY"> <column name="AB_KEYWORD_ENTRYID" value="DISCUSSIONACTIVE"/> <column name="KEYID" value="ACTIVE"/> - <column name="TITLE" value="active"/> + <column name="TITLE" value="Active"/> <column name="CONTAINER" value="DiscussionStatus"/> <column name="SORTING" valueNumeric="1"/> <column name="ISACTIVE" valueNumeric="1"/> @@ -15,7 +15,7 @@ <insert tableName="AB_KEYWORD_ENTRY"> <column name="AB_KEYWORD_ENTRYID" value="DISCUSSIONCLOSED"/> <column name="KEYID" value="CLOSED"/> - <column name="TITLE" value="closed"/> + <column name="TITLE" value="Closed"/> <column name="CONTAINER" value="DiscussionStatus"/> <column name="SORTING" valueNumeric="2"/> <column name="ISACTIVE" valueNumeric="1"/> diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index 66bb73bc2f0..9e61fe62da3 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -250,7 +250,7 @@ <entityNode> <name>Group</name> <kind v="123" /> - <title>Knowledgemanagement</title> + <title>Knowledge Management</title> <icon>VAADIN:ACADEMY_CAP</icon> <childNodes> <entityNode> diff --git a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod index 37de8395171..a5465f6d0a9 100644 --- a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod +++ b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod @@ -98,6 +98,7 @@ <children> <entityActionField> <name>addAnswer_action</name> + <title>Reply</title> <onActionProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/addanswer_action/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> <isSelectionAction v="true" /> @@ -106,6 +107,7 @@ </entityActionField> <entityActionField> <name>toggleDiscussionStatus_action</name> + <title>Toggle status</title> <onActionProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> <isSelectionAction v="true" /> @@ -130,7 +132,7 @@ </entityField> <entityField> <name>discussionTitle</name> - <title>Created / Edited</title> + <title>Last change</title> </entityField> <entityField> <name>UID</name> diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index c5139ee3b51..c4a9eb1ad2d 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -5333,9 +5333,6 @@ <entry> <key>Mobility, Transport and Logistics</key> </entry> - <entry> - <key>Salesproject</key> - </entry> <entry> <key>Load data</key> </entry> @@ -6290,9 +6287,6 @@ <entry> <key>Lead Import</key> </entry> - <entry> - <key>Contact Management</key> - </entry> <entry> <key>Campaign Planning</key> </entry> @@ -6521,9 +6515,6 @@ <entry> <key>Full details</key> </entry> - <entry> - <key>Salesprojects</key> - </entry> <entry> <key>set Read</key> </entry> @@ -7302,6 +7293,12 @@ <entry> <key>Email address</key> </entry> + <entry> + <key>#rememberme</key> + </entry> + <entry> + <key>#login</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 12c75fdb56f..1581ad2733f 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -42,6 +42,10 @@ <key>Data imported. Contact not found.</key> <value>Daten importiert. Keine weiteren Personendaten gefunden.</value> </entry> + <entry> + <key>Last change</key> + <value>Letzte Änderung</value> + </entry> <entry> <key>Variables</key> <value>Variablen</value> @@ -50,6 +54,10 @@ <key>Finished</key> <value>Fertig</value> </entry> + <entry> + <key>Knowledge Management</key> + <value>Wissensmanagement</value> + </entry> <entry> <key>Show my organisations</key> <value>Meine Firmen anzeigen</value> @@ -58,6 +66,10 @@ <key>Radius Search</key> <value>Umkreissuche</value> </entry> + <entry> + <key>Discussion</key> + <value>Diskussion</value> + </entry> <entry> <key>${FILTER_DYNAMIC_VALUE_ME}</key> <value>Ich</value> @@ -1371,6 +1383,10 @@ <key>IN</key> <value>EIN</value> </entry> + <entry> + <key>Knowledge</key> + <value>Wissen</value> + </entry> <entry> <key>OUT</key> <value>AUS</value> @@ -1686,6 +1702,10 @@ <key>Role</key> <value>Rolle</value> </entry> + <entry> + <key>Closed</key> + <value>Geschlossen</value> + </entry> <entry> <key>End date</key> <value>Enddatum</value> @@ -2987,6 +3007,10 @@ <key>Georgia</key> <value>Georgia</value> </entry> + <entry> + <key>Publishing level</key> + <value>Veröffentlichung</value> + </entry> <entry> <key>Saint Kitts and Nevis</key> <value>St. Kitts und Nevis</value> @@ -3171,6 +3195,10 @@ <key>Project manager</key> <value>Projektmanager</value> </entry> + <entry> + <key>List news articles</key> + <value>News-Artikel auflisten</value> + </entry> <entry> <key>Singapore</key> <value>Singapur</value> @@ -4443,6 +4471,10 @@ <key>Relation Title</key> <value>Beziehungstitel</value> </entry> + <entry> + <key>Knowledge entries</key> + <value>Wissenseinträge</value> + </entry> <entry> <key>%0 \"%1\"</key> </entry> @@ -4454,10 +4486,18 @@ <key>Data executed</key> <value>Daten ausgeführt</value> </entry> + <entry> + <key>Export HTML</key> + <value>HTML exportieren</value> + </entry> <entry> <key>Indexsearch</key> <value>Indexsuche</value> </entry> + <entry> + <key>Edited on</key> + <value>Bearbeitet am</value> + </entry> <entry> <key>Appointment link Id</key> <value>Terminverknüpfungs Id</value> @@ -4482,6 +4522,10 @@ <key>Int value</key> <value>Zahlenwert</value> </entry> + <entry> + <key>Text content</key> + <value>Textinhalt</value> + </entry> <entry> <key>Object 2 row Id</key> <value>Objekt 2 Row Id</value> @@ -4622,6 +4666,10 @@ <key>Address addition</key> <value>Adresszusatz</value> </entry> + <entry> + <key>Shows complete news articles</key> + <value>Zeigt News-Artikel vollständig an</value> + </entry> <entry> <key>the \"%0\" table is configured to get logged but this is the logging-stoarge itself and cannot be monitored</key> <value>Die "% 0" -Tabelle ist so konfiguriert, dass sie protokolliert wird. Dies ist jedoch der Protokollierspeicher selbst und kann nicht überwacht werden</value> @@ -5294,6 +5342,10 @@ <key>Minimal count must be a positive whole number</key> <value>Minimale Anzahl muss eine positive, ganze Zahl sein</value> </entry> + <entry> + <key>All Knowledge Entries</key> + <value>Alle Wissenseinträge</value> + </entry> <entry> <key>Maximal count must be one or higher</key> <value>Maximale Anzahl muss eins oder höher sein</value> @@ -5338,6 +5390,10 @@ <key>Privacy agreement</key> <value>Datenschutzabkommen</value> </entry> + <entry> + <key>Newsfeed (Preview)</key> + <value>Newsfeed (Vorschau)</value> + </entry> <entry> <key>Commodity group A</key> <value>Warengruppe A</value> @@ -6881,6 +6937,10 @@ <key>Faroe Islands</key> <value>Färöer</value> </entry> + <entry> + <key>Discussions</key> + <value>Diskussionen</value> + </entry> <entry> <key>${CONTRACT_STATUS}</key> <value>Vertragsstatus</value> @@ -6964,10 +7024,6 @@ <entry> <key>yyyyMMdd</key> </entry> - <entry> - <key>Salesproject</key> - <value>Vertriebsprojekt</value> - </entry> <entry> <key>closed</key> <value>geschlossen</value> @@ -7120,6 +7176,10 @@ <key>Column 7</key> <value>Spalte 7</value> </entry> + <entry> + <key>Reply</key> + <value>Antworten</value> + </entry> <entry> <key>Column 6</key> <value>Spalte 6</value> @@ -7188,6 +7248,10 @@ <key>Lead</key> <value>Lead </value> </entry> + <entry> + <key>Toggle status</key> + <value>Status ändern</value> + </entry> <entry> <key>Company name</key> <value>Firmenname</value> @@ -7869,6 +7933,10 @@ Bitte Datumseingabe prüfen</value> <key>${CANCELLED}</key> <value>Abgebrochen</value> </entry> + <entry> + <key>Newsfeed (Full)</key> + <value>Newsfeed (Vollständig)</value> + </entry> <entry> <key>Workflow signal</key> <value>Workflow Signal</value> @@ -8553,10 +8621,6 @@ Bitte Datumseingabe prüfen</value> <key>Lead Import</key> <value>Leadimport</value> </entry> - <entry> - <key>Contact Management</key> - <value>Kontaktmanagement</value> - </entry> <entry> <key>Campaign Planning</key> <value>Kampagnenplanung</value> @@ -8565,6 +8629,10 @@ Bitte Datumseingabe prüfen</value> <key>Bulk Mail</key> <value>Serienmail</value> </entry> + <entry> + <key>Knowledge Role</key> + <value>Wissensrolle</value> + </entry> <entry> <key>Workflow Definition</key> <value>Workflowdefinition</value> @@ -8725,6 +8793,10 @@ Bitte Datumseingabe prüfen</value> <key>Read and Write Permission</key> <value>Volle Lese- und Schreibberechtigung</value> </entry> + <entry> + <key>Created on</key> + <value>Erstellt am</value> + </entry> <entry> <key>Synchronize calendar permissions from Exchange to ADITO</key> <value>Synchronisiere Kalenderberechtigungen von Exchange nach ADITO</value> @@ -8753,10 +8825,6 @@ Bitte Datumseingabe prüfen</value> <key>Not created yet</key> <value>Noch nicht erstellt</value> </entry> - <entry> - <key>Salesprojects</key> - <value>Vertriebsprojekte</value> - </entry> <entry> <key>set Read</key> <value>Gelesen setzen</value> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index df669706ecc..a678822107a 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -5410,9 +5410,6 @@ <entry> <key>Mobility, Transport and Logistics</key> </entry> - <entry> - <key>Salesproject</key> - </entry> <entry> <key>Load data</key> </entry> @@ -6363,9 +6360,6 @@ <entry> <key>Lead Import</key> </entry> - <entry> - <key>Contact Management</key> - </entry> <entry> <key>Campaign Planning</key> </entry> @@ -6606,9 +6600,6 @@ <entry> <key>Invalid file type; only .html, .eml and .txt are allowed</key> </entry> - <entry> - <key>Salesprojects</key> - </entry> <entry> <key>set Read</key> </entry> @@ -7383,6 +7374,12 @@ <entry> <key>Email address</key> </entry> + <entry> + <key>#rememberme</key> + </entry> + <entry> + <key>#login</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod index 7a2dfc261ca..68e3c959472 100644 --- a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod +++ b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod @@ -5,9 +5,9 @@ <filterable v="true" /> <dashletConfigurations> <neonDashletConfiguration> - <name>Wissen</name> + <name>Knowledge</name> <title>Knowledge</title> - <description>All Articles</description> + <description>All Knowledge Entries</description> <fragment>KnowledgeManagement/filter</fragment> <icon>VAADIN:ACADEMY_CAP</icon> <categories> diff --git a/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod b/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod index eb513c6f972..e0334d035e7 100644 --- a/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod +++ b/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod @@ -6,7 +6,8 @@ <dashletConfigurations> <neonDashletConfiguration> <name>knowledgeNewsFeed_dashletConfig</name> - <title>Newsfeed (Complete Article)</title> + <title>Newsfeed (Full)</title> + <description>Shows complete news articles</description> <fragment>KnowledgeNewsFeed/filter</fragment> <icon>VAADIN:NEWSPAPER</icon> <categories> -- GitLab From 56c7a435b5ef62808e82c64edf53c750823cc97c Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Fri, 2 Oct 2020 16:16:29 +0200 Subject: [PATCH 082/184] Calendar: Get all attendees with READ --- .../entityfields/attendees/dropDownProcess.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entity/Appointment_entity/entityfields/attendees/dropDownProcess.js b/entity/Appointment_entity/entityfields/attendees/dropDownProcess.js index 1ab0229fb44..52ca1397cf7 100644 --- a/entity/Appointment_entity/entityfields/attendees/dropDownProcess.js +++ b/entity/Appointment_entity/entityfields/attendees/dropDownProcess.js @@ -3,7 +3,7 @@ import("system.result"); import("system.calendars"); var entry = JSON.parse(vars.getString("$param.Entry_param")); -var allUsers = calendars.getFullCalendarUsers(calendars.RIGHT_WRITE); +var allUsers = calendars.getFullCalendarUsers(calendars.RIGHT_READ); var results = []; for (var i = 0; i < allUsers.length; i++) -- GitLab From 069b372314ea04b35b6c11adb67cf2c9c46789c2 Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Fri, 13 Nov 2020 09:38:18 +0100 Subject: [PATCH 083/184] #1068647 Favorite: Removed from contactmanagement --- .../_____SYSTEM_APPLICATION_NEON.aod | 4 ---- 1 file changed, 4 deletions(-) diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index 9e61fe62da3..adb51ef4372 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -38,10 +38,6 @@ <name>Task</name> <kind v="10077" /> </entityNode> - <entityNode> - <name>Favorite</name> - <kind v="10077" /> - </entityNode> </childNodes> </entityNode> </childNodes> -- GitLab From ea54ab72431d1983b1121f11b6e1024570636c4e Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Mon, 16 Nov 2020 14:59:01 +0100 Subject: [PATCH 084/184] AdminView copy to clipboard action --- .../AdminViewRow_entity.aod | 5 ++ .../copyvaluetoclipboard/onActionProcess.js | 11 ++++ .../openadminview/onActionProcess.js | 4 +- .../DefaultAdminView_entity.aod | 21 +++++-- .../recordcontainers/jdito/contentProcess.js | 2 +- .../_____LANGUAGE_EXTRA.aod | 60 +++++++++++++++++++ .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 2 +- .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 60 +++++++++++++++++++ .../AdminViewRow_view/AdminViewRow_view.aod | 20 +++---- .../DefaultAdminView_view.aod | 14 ++++- .../KnowledgeManagementFilter_view.aod | 11 +++- process/Context_lib/process.js | 23 +++++-- .../SetAttribute_workflowService/process.js | 8 +++ .../serviceTaskParameterProcess.js | 13 ++-- 14 files changed, 219 insertions(+), 35 deletions(-) create mode 100644 entity/AdminViewRow_entity/entityfields/copyvaluetoclipboard/onActionProcess.js diff --git a/entity/AdminViewRow_entity/AdminViewRow_entity.aod b/entity/AdminViewRow_entity/AdminViewRow_entity.aod index 75795a8f2a1..e957f3e131e 100644 --- a/entity/AdminViewRow_entity/AdminViewRow_entity.aod +++ b/entity/AdminViewRow_entity/AdminViewRow_entity.aod @@ -42,6 +42,11 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityActionField> + <name>copyValueToClipboard</name> + <onActionProcess>%aditoprj%/entity/AdminViewRow_entity/entityfields/copyvaluetoclipboard/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CLIPBOARD</iconId> + </entityActionField> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/AdminViewRow_entity/entityfields/copyvaluetoclipboard/onActionProcess.js b/entity/AdminViewRow_entity/entityfields/copyvaluetoclipboard/onActionProcess.js new file mode 100644 index 00000000000..dd853d9ace4 --- /dev/null +++ b/entity/AdminViewRow_entity/entityfields/copyvaluetoclipboard/onActionProcess.js @@ -0,0 +1,11 @@ +import("system.vars"); +import("system.neon"); + +var fieldValues = JSON.parse(vars.get("$param.Rows_param")); +var fieldId = vars.get("$local.uid"); +var row = fieldValues.find(function ([id]) +{ + return id === fieldId; +}); +if (row) + neon.copyToClipboard(row[2]); \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/openadminview/onActionProcess.js b/entity/Attribute_entity/entityfields/openadminview/onActionProcess.js index 2405febf9b1..6f20e15ed48 100644 --- a/entity/Attribute_entity/entityfields/openadminview/onActionProcess.js +++ b/entity/Attribute_entity/entityfields/openadminview/onActionProcess.js @@ -1,6 +1,4 @@ import("system.vars"); import("Context_lib"); -AdminViewUtils.open("ATTRIBUTEID", [ - ["ATTRIBUTE_PARENT_ID", vars.get("$field.ATTRIBUTE_PARENT_ID")] -]); \ No newline at end of file +AdminViewUtils.open("AB_ATTRIBUTEID", ["ATTRIBUTE_PARENT_ID", "ATTRIBUTE_ACTIVE", "ATTRIBUTE_TYPE", "SORTING"]); \ No newline at end of file diff --git a/entity/DefaultAdminView_entity/DefaultAdminView_entity.aod b/entity/DefaultAdminView_entity/DefaultAdminView_entity.aod index a84b79d58a2..7b0b1dd8ef9 100644 --- a/entity/DefaultAdminView_entity/DefaultAdminView_entity.aod +++ b/entity/DefaultAdminView_entity/DefaultAdminView_entity.aod @@ -19,17 +19,17 @@ <entityConsumer> <name>Rows</name> <state>READONLY</state> - <dependency> - <name>dependency</name> - <entityName>AdminViewRow_entity</entityName> - <fieldName>AdminViewRows</fieldName> - </dependency> <children> <entityParameter> <name>Rows_param</name> <valueProcess>%aditoprj%/entity/DefaultAdminView_entity/entityfields/rows/children/rows_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AdminViewRow_entity</entityName> + <fieldName>AdminViewRows</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>Uid_param</name> @@ -40,6 +40,14 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityParameter> + <name>Entity_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>ENTITY</name> + <title>Entity</title> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -49,6 +57,9 @@ <jDitoRecordFieldMapping> <name>UID.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ENTITY.value</name> + </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> </recordContainers> diff --git a/entity/DefaultAdminView_entity/recordcontainers/jdito/contentProcess.js b/entity/DefaultAdminView_entity/recordcontainers/jdito/contentProcess.js index b6f288f713e..aa5a7e9b8e4 100644 --- a/entity/DefaultAdminView_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/DefaultAdminView_entity/recordcontainers/jdito/contentProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.object([[vars.get("$param.Uid_param")]]); \ No newline at end of file +result.object([[vars.get("$param.Uid_param"), vars.get("$param.Entity_param")]]); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index c4a9eb1ad2d..55f7497ad1e 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -7299,6 +7299,66 @@ <entry> <key>#login</key> </entry> + <entry> + <key>Last change</key> + </entry> + <entry> + <key>Knowledge entries</key> + </entry> + <entry> + <key>Newsfeed (Preview)</key> + </entry> + <entry> + <key>Edited on</key> + </entry> + <entry> + <key>Created on</key> + </entry> + <entry> + <key>Discussion</key> + </entry> + <entry> + <key>Newsfeed (Full)</key> + </entry> + <entry> + <key>Closed</key> + </entry> + <entry> + <key>Text content</key> + </entry> + <entry> + <key>Reply</key> + </entry> + <entry> + <key>All Knowledge Entries</key> + </entry> + <entry> + <key>Export HTML</key> + </entry> + <entry> + <key>Publishing level</key> + </entry> + <entry> + <key>Discussions</key> + </entry> + <entry> + <key>Knowledge Management</key> + </entry> + <entry> + <key>List news articles</key> + </entry> + <entry> + <key>Knowledge Role</key> + </entry> + <entry> + <key>Shows complete news articles</key> + </entry> + <entry> + <key>Knowledge</key> + </entry> + <entry> + <key>Toggle status</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 1581ad2733f..ada3bee7bc8 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -9346,7 +9346,7 @@ Bitte Datumseingabe prüfen</value> </entry> <entry> <key>Child Attributes</key> - <value>Diagrameigenschaften</value> + <value>Untergeordnete Eigenschaften</value> </entry> <entry> <key>Recalculate all Classifications</key> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index a678822107a..f1739f8c88d 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -7380,6 +7380,66 @@ <entry> <key>#login</key> </entry> + <entry> + <key>Last change</key> + </entry> + <entry> + <key>Knowledge entries</key> + </entry> + <entry> + <key>Newsfeed (Preview)</key> + </entry> + <entry> + <key>Edited on</key> + </entry> + <entry> + <key>Created on</key> + </entry> + <entry> + <key>Discussion</key> + </entry> + <entry> + <key>Newsfeed (Full)</key> + </entry> + <entry> + <key>Closed</key> + </entry> + <entry> + <key>Text content</key> + </entry> + <entry> + <key>Reply</key> + </entry> + <entry> + <key>All Knowledge Entries</key> + </entry> + <entry> + <key>Export HTML</key> + </entry> + <entry> + <key>Publishing level</key> + </entry> + <entry> + <key>Discussions</key> + </entry> + <entry> + <key>Knowledge Management</key> + </entry> + <entry> + <key>List news articles</key> + </entry> + <entry> + <key>Knowledge Role</key> + </entry> + <entry> + <key>Shows complete news articles</key> + </entry> + <entry> + <key>Knowledge</key> + </entry> + <entry> + <key>Toggle status</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonView/AdminViewRow_view/AdminViewRow_view.aod b/neonView/AdminViewRow_view/AdminViewRow_view.aod index ddb44338654..cd5a8658bb4 100644 --- a/neonView/AdminViewRow_view/AdminViewRow_view.aod +++ b/neonView/AdminViewRow_view/AdminViewRow_view.aod @@ -3,22 +3,16 @@ <name>AdminViewRow_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <noneLayout> + <boxLayout> <name>layout</name> - </noneLayout> + </boxLayout> </layout> <children> - <titledListViewTemplate> - <name>TitledList</name> + <actionListViewTemplate> + <name>ActionList</name> <titleField>TITLE</titleField> - <fixedDrawer v="true" /> - <entityField>#ENTITY</entityField> - <columns> - <neonTitledListTableColumn> - <name>d42ddaa4-1996-41b3-be19-2f3c721f9536</name> - <entityField>VALUE</entityField> - </neonTitledListTableColumn> - </columns> - </titledListViewTemplate> + <descriptionField>VALUE</descriptionField> + <entryAction>copyValueToClipboard</entryAction> + </actionListViewTemplate> </children> </neonView> diff --git a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod index dbd985c9477..dcba6ff2813 100644 --- a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod +++ b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod @@ -5,11 +5,21 @@ <size>SMALL</size> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> - <noneLayout> + <boxLayout> <name>layout</name> - </noneLayout> + </boxLayout> </layout> <children> + <genericViewTemplate> + <name>EntityInfo</name> + <isEditable v="false" /> + <fields> + <entityFieldLink> + <name>09fb02da-699a-431b-8a5c-a22396ddf5b5</name> + <entityField>ENTITY</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> <neonViewReference> <name>80206d15-7132-45c1-9cf5-e2236d0f2fdb</name> <entityField>Rows</entityField> diff --git a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod index 68e3c959472..69bb0a57328 100644 --- a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod +++ b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod @@ -19,9 +19,9 @@ </neonDashletConfiguration> </dashletConfigurations> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -46,5 +46,12 @@ </neonTableColumn> </columns> </tableViewTemplate> + <timelineViewTemplate> + <name>Timeline</name> + <dateField>LastChange</dateField> + <titleField>TITLE</titleField> + <descriptionField>CONTENT</descriptionField> + <subdescriptionField>AUTHOR_CONTACT_ID</subdescriptionField> + </timelineViewTemplate> </children> </neonView> diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index a85d1c47027..7aa6dedab7b 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -1,3 +1,4 @@ +import("Util_lib"); import("system.entities"); import("system.tools"); import("system.neon"); @@ -754,6 +755,8 @@ function AdminViewUtils () {} */ AdminViewUtils.open = function (pUidField, pFields) { + if (!AdminViewUtils.userHasAdminRole) + return; var uid = vars.get("$sys.uid"); if (!pUidField) pUidField = "UID"; @@ -766,19 +769,31 @@ AdminViewUtils.open = function (pUidField, pFields) { pFields.forEach(function (field) { - rows.push([field[0], field[0], field[1], field[2] || "TEXT"]); + if (Utils.isString(field)) + { + var fieldVar = field.startsWith("$") ? field : "$field." + field; + rows.push([field, field, vars.get(fieldVar), "TEXT"]); + } + else + rows.push([field[0], field[0], field[1], field[2] || "TEXT"]); }); } var params = { - "Uid_param" : uid, - "Rows_param" : JSON.stringify(rows) + "Uid_param": uid, + "Rows_param": JSON.stringify(rows), + "Entity_param": vars.get("$sys.currententityname") }; neon.openContext("DefaultAdminView", "DefaultAdminView_view", [uid], neon.OPERATINGSTATE_VIEW, params); } AdminViewUtils.getActionState = function () { - if (tools.currentUserHasRole("INTERNAL_ADMINISTRATOR")) + if (AdminViewUtils.userHasAdminRole()) return neon.COMPONENTSTATE_EDITABLE; return neon.COMPONENTSTATE_INVISIBLE; +} + +AdminViewUtils.userHasAdminRole = function () +{ + return tools.currentUserHasRole("INTERNAL_ADMINISTRATOR"); } \ No newline at end of file diff --git a/process/SetAttribute_workflowService/process.js b/process/SetAttribute_workflowService/process.js index c9f17d88c31..aebb4c992da 100644 --- a/process/SetAttribute_workflowService/process.js +++ b/process/SetAttribute_workflowService/process.js @@ -16,4 +16,12 @@ if (variables.attributeName) else attributeId = variables.attributeId; +//attributeValueVariable -> instance variable to use for the attribute value +if (variables.attributeValueVariable) +{ + var attributeValue = variables[variables.attributeValueVariable]; + if (attributeValue !== null && attributeValue !== undefined && attributeValue !== "") + variables.attributeValue = attributeValue; +} + new AttributeRelationQuery(variables.targetId, attributeId, variables.targetContext).insertAttribute(variables.attributeValue); \ No newline at end of file diff --git a/process/SetAttribute_workflowService/serviceTaskParameterProcess.js b/process/SetAttribute_workflowService/serviceTaskParameterProcess.js index 118269c0c1e..97d40e0f704 100644 --- a/process/SetAttribute_workflowService/serviceTaskParameterProcess.js +++ b/process/SetAttribute_workflowService/serviceTaskParameterProcess.js @@ -31,19 +31,22 @@ attributes = attributes.map(function (attributeId) var parentId = attributeId; var fullName = ""; //the loop will stop if an id comes up twice, because otherwise that could cause an infinite loop if the data is faulty - var alreadyEncountered = {}; - while (parentId && attributeNameMap[parentId] && !alreadyEncountered[parentId]) + var alreadyEncountered = new Set(); + while (parentId && attributeNameMap[parentId] && !alreadyEncountered.has(parentId)) { var [currentName, currentParent] = attributeNameMap[parentId]; if (!fullName) fullName = currentName; else fullName = currentName + " / " + fullName; - alreadyEncountered[parentId] = true; + alreadyEncountered.add(parentId); parentId = currentParent; } - return {id : attributeId, name : fullName}; + return { + id: attributeId, + name: fullName + }; }); var parameters = [ @@ -74,4 +77,6 @@ if (currentValues.attributeId && currentValues.attributeId.value) parameters.push(new WorkflowServiceTaskParameter("attributeValue", "Value", paramType, enumValues)); } +parameters.push(new WorkflowServiceTaskParameter("attributeValueVariable", "Value variable", WorkflowServiceTaskParameter.STRING())); + result.object(parameters); \ No newline at end of file -- GitLab From 15f61c91e763b7a3dcd95fc874d4017a7c7bc5a8 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Mon, 16 Nov 2020 17:45:50 +0100 Subject: [PATCH 085/184] SqlMaskingUtils.prototype.concatWithSeparator fix for oracle --- process/Sql_lib/process.js | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index c70131670ec..e90835fbafd 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -3653,7 +3653,7 @@ SqlMaskingUtils.prototype.concatWithSeparator = function (pFields, pSeparator, p else if (pSeparator || pSeparator === "") pSeparator = "'" + db.quote(pSeparator, this.alias) + "'"; - var doEmptyStringCheck = true; + var isEmptyStringNull = false; switch (this.dbType) { @@ -3666,7 +3666,7 @@ SqlMaskingUtils.prototype.concatWithSeparator = function (pFields, pSeparator, p case db.DBTYPE_ORACLE10_CLUSTER: case db.DBTYPE_ORACLE10_THIN: case db.DBTYPE_ORACLE10_OCI: - doEmptyStringCheck = false; //empty strings are changed to DB-null-values internally in oracle; by specifing JS-null we disable this check + isEmptyStringNull = true; //empty strings are changed to DB-null-values internally in oracle break; case db.DBTYPE_SQLSERVER2000: //MS SQL Server supports "concat_ws" (and ignoring null values) from version SQL Server 2017 and newer: @@ -3675,7 +3675,7 @@ SqlMaskingUtils.prototype.concatWithSeparator = function (pFields, pSeparator, p case db.DBTYPE_DERBY10: break; default: - throw new Error(translate.withArguments("${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0", ["SqlMaskingUtils.prototype.concat"])); + throw new Error(translate.withArguments("${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0", ["SqlMaskingUtils.prototype.concatWithSeparator"])); } var concatCharacter = this.getConcatSymbol(); @@ -3686,10 +3686,13 @@ SqlMaskingUtils.prototype.concatWithSeparator = function (pFields, pSeparator, p let field = pFields[i]; let isLast = i + 1 === pFields.length; - if (!_isFixedValue(field)) - concatSql += (pAutoTrimFields ? this.trim(this.isNull(field)) : this.isNull(field)); - else + if (_isFixedValue(field)) concatSql += (pAutoTrimFields ? "'" + field.slice(1, -1).trim() + "'" : field); + else + { + let stringField = isEmptyStringNull ? field : this.isNull(field); + concatSql += (pAutoTrimFields ? this.trim(stringField) : this.isNull(stringField)); + } if (!isLast) { @@ -3702,10 +3705,12 @@ SqlMaskingUtils.prototype.concatWithSeparator = function (pFields, pSeparator, p } else if (pSeparator) { + let nextNotNullCondition; let nextFieldTrimmed = pAutoTrimFields ? this.trim(nextField) : nextField; - let nextNotNullCondition = nextField + " is not null "; - if (doEmptyStringCheck || pAutoTrimFields) - nextNotNullCondition += " and " + nextFieldTrimmed + " != '' "; + if (isEmptyStringNull) + nextNotNullCondition = nextFieldTrimmed + " is not null"; + else + nextNotNullCondition = nextField + " is not null and " + nextFieldTrimmed + " != ''"; concatSql += "case when " + nextNotNullCondition + " then " + pSeparator + " else '' end " + concatCharacter; } -- GitLab From 9081741b5bedb692c211e111f980f123ae903a9b Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 17 Nov 2020 09:26:17 +0100 Subject: [PATCH 086/184] View models upgraded to 1.1.7 --- neonView/360DegreeFilter_view/360DegreeFilter_view.aod | 2 +- neonView/ActivityAnalyses_view/ActivityAnalyses_view.aod | 2 +- neonView/ActivityDetail_view/ActivityDetail_view.aod | 2 +- neonView/ActivityDrawer_view/ActivityDrawer_view.aod | 2 +- neonView/ActivityEdit_view/ActivityEdit_view.aod | 2 +- neonView/ActivityFilter_view/ActivityFilter_view.aod | 2 +- neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod | 2 +- .../ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod | 2 +- .../ActivityLinkPreviewList_view.aod | 2 +- .../ActivityLinkPreview_view/ActivityLinkPreview_view.aod | 2 +- neonView/ActivityMain_view/ActivityMain_view.aod | 2 +- neonView/ActivityMultiEdit_view/ActivityMultiEdit_view.aod | 2 +- neonView/ActivityPreview_view/ActivityPreview_view.aod | 2 +- .../ActivityUniversalFileProcessorFilter_view.aod | 2 +- neonView/AddressList_view/AddressList_view.aod | 2 +- neonView/AddressLookup_view/AddressLookup_view.aod | 2 +- .../AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod | 2 +- .../AddressValidationLookup_view.aod | 2 +- neonView/AdminViewRow_view/AdminViewRow_view.aod | 2 +- neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod | 2 +- .../AnyContactDuplicates_view/AnyContactDuplicates_view.aod | 2 +- neonView/AnyContactLookup_view/AnyContactLookup_view.aod | 2 +- .../AnyObjectRelationTree_view0.aod | 2 +- neonView/AppointmentCheckUp_view/AppointmentCheckUp_view.aod | 2 +- neonView/AppointmentEdit_view/AppointmentEdit_view.aod | 2 +- .../AppointmentFilterDashlet_view.aod | 2 +- neonView/AppointmentFilter_view/AppointmentFilter_view.aod | 2 +- .../AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod | 2 +- .../AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod | 2 +- neonView/AppointmentPreview_view/AppointmentPreview_view.aod | 2 +- .../AroundLocationHeader_view/AroundLocationHeader_view.aod | 2 +- .../AroundOrganisationFooter_view.aod | 2 +- .../AroundOrganisationLocation_view.aod | 2 +- neonView/AttributeEdit_view/AttributeEdit_view.aod | 2 +- neonView/AttributeFilter_view/AttributeFilter_view.aod | 2 +- neonView/AttributeList_view/AttributeList_view.aod | 2 +- neonView/AttributeLookup_view/AttributeLookup_view.aod | 2 +- neonView/AttributeMultiEdit_view/AttributeMultiEdit_view.aod | 2 +- neonView/AttributePreview_view/AttributePreview_view.aod | 2 +- .../AttributeRelationMultiEdit_view.aod | 2 +- .../AttributeRelationPreviewList.aod | 2 +- .../AttributeRelationTreeDrawer_view.aod | 2 +- .../AttributeRelationTreeEdit_view.aod | 2 +- .../AttributeRelationTree_view/AttributeRelationTree_view.aod | 2 +- neonView/AttributeTree_view/AttributeTree_view.aod | 2 +- neonView/AttributeUsageList_view/AttributeUsageList_view.aod | 2 +- .../AttributeUsageMultiEdit_view.aod | 2 +- .../AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod | 2 +- .../BulkMailAddRecipientsEdit_view.aod | 2 +- neonView/BulkMailContent_view/BulkMailContent_view.aod | 2 +- neonView/BulkMailEdit_view/BulkMailEdit_view.aod | 2 +- neonView/BulkMailFilter_view/BulkMailFilter_view.aod | 2 +- neonView/BulkMailMain_view/BulkMailMain_view.aod | 2 +- neonView/BulkMailPreview_view/BulkMailPreview_view.aod | 2 +- .../BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod | 2 +- .../BulkMailRecipientFilter_view.aod | 2 +- .../BulkMailStatusChart_view/BulkMailStatusChart_view.aod | 2 +- neonView/BulkMailTesting_view/BulkMailTesting_view.aod | 2 +- .../CampaignAddParticipantsEdit_view.aod | 2 +- neonView/CampaignCharts_view/CampaignCharts_view.aod | 2 +- .../CampaignCostAnalysis_view/CampaignCostAnalysis_view.aod | 2 +- neonView/CampaignCostChart_view/CampaignCostChart_view.aod | 2 +- neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod | 2 +- .../CampaignCostExtendedFilter_view.aod | 2 +- neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod | 2 +- neonView/CampaignCostFix_view/CampaignCostFix_view.aod | 2 +- .../CampaignCostVariable_view/CampaignCostVariable_view.aod | 2 +- neonView/CampaignCost_view/CampaignCost_view.aod | 2 +- neonView/CampaignEdit_view/CampaignEdit_view.aod | 2 +- neonView/CampaignFilter_view/CampaignFilter_view.aod | 2 +- neonView/CampaignMain_view/CampaignMain_view.aod | 2 +- neonView/CampaignOverview_view/CampaignOverview_view.aod | 2 +- .../CampaignParticipantChart_view.aod | 2 +- .../CampaignParticipantEdit_view.aod | 2 +- .../CampaignParticipantFilter_view.aod | 2 +- .../CampaignParticipantPreview_view.aod | 2 +- neonView/CampaignPlanning_view/CampaignPlanning_view.aod | 2 +- neonView/CampaignPreview_view/CampaignPreview_view.aod | 2 +- .../CampaignStepAddParticipants_view.aod | 2 +- .../CampaignStepAnalysis_view/CampaignStepAnalysis_view.aod | 2 +- neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod | 2 +- neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod | 2 +- neonView/CampaignStepLookup_view/CampaignStepLookup_view.aod | 2 +- neonView/CampaignStepMain_view/CampaignStepMain_view.aod | 2 +- .../CampaignStepParticipnatsPerStep_view.aod | 2 +- .../CampaignStepPreview_view/CampaignStepPreview_view.aod | 2 +- neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod | 2 +- .../ClassificationAdminEdit_view.aod | 2 +- .../ClassificationAdminFilter_view.aod | 2 +- .../ClassificationGradingMultipleEdit_view.aod | 2 +- .../ClassificationGroupPreview_view.aod | 2 +- .../ClassificationPreview_view/ClassificationPreview_view.aod | 2 +- .../ClassificationScoreMultipleEdit_view.aod | 2 +- neonView/ClassificationTree_view/ClassificationTree_view.aod | 2 +- .../ClassificationTypePreview_View.aod | 2 +- .../CommRestrictionDrawer_view/CommRestrictionDrawer_view.aod | 2 +- .../CommRestrictionFilter_view/CommRestrictionFilter_view.aod | 2 +- .../CommRestrictionPreview_view.aod | 2 +- .../CommRestrictionSmallEdit_view.aod | 2 +- neonView/CommunicationEdit_view/CommunicationEdit_view.aod | 2 +- .../CommunicationFilter_view/CommunicationFilter_view.aod | 2 +- neonView/CommunicationList_view/CommunicationList_view.aod | 2 +- .../CommunicationMultiEdit_view.aod | 2 +- neonView/CompetitionDrawer_view/CompetitionDrawer_view.aod | 2 +- neonView/CompetitionEdit_view/CompetitionEdit_view.aod | 2 +- neonView/CompetitionFilter_view/CompetitionFilter_view.aod | 2 +- neonView/CompetitionPreview_view/CompetitionPreview_view.aod | 2 +- neonView/ContactEdit_view/ContactEdit_view.aod | 2 +- neonView/ContactList_view/ContactList_view.aod | 2 +- neonView/ContactTitledList_view/ContactTitledList_view.aod | 2 +- neonView/ContractEdit_view/ContractEdit_view.aod | 2 +- neonView/ContractFilter_view/ContractFilter_view.aod | 2 +- neonView/ContractMain_view/ContractMain_view.aod | 2 +- neonView/ContractPreview_view/ContractPreview_view.aod | 2 +- neonView/CountriesPreview_view/CountriesPreview_view.aod | 2 +- neonView/CountriesTable_view/CountriesTable_view.aod | 2 +- neonView/DSGVODrawer_view/DSGVODrawer_view.aod | 2 +- neonView/DSGVOEdit_view/DSGVOEdit_view.aod | 2 +- neonView/DSGVOFilter_view/DSGVOFilter_view.aod | 2 +- neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod | 2 +- neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod | 2 +- neonView/DSGVOPreview_view/DSGVOPreview_view.aod | 2 +- neonView/DSGVOReport_view/DSGVOReport_view.aod | 2 +- neonView/DefaultAdminView_view/DefaultAdminView_view.aod | 2 +- neonView/DefaultLookup_view/DefaultLookup_view.aod | 2 +- .../DescriptionTranslationEdit_view.aod | 2 +- .../DescriptionTranslationFilter_view.aod | 2 +- .../DescriptionTranslationPreview_view.aod | 2 +- neonView/DistrictEdit_view/DistrictEdit_view.aod | 2 +- neonView/DistrictFilter_view/DistrictFilter_view.aod | 2 +- neonView/DistrictList_view/DistrictList_view.aod | 2 +- neonView/DistrictMain_view/DistrictMain_view.aod | 2 +- neonView/DistrictPreview_view/DistrictPreview_view.aod | 2 +- .../DistrictResponsibleList_view.aod | 2 +- .../DistrictResponsibleMultiEdit_view.aod | 2 +- .../DistrictResponsiblePreviewList_view.aod | 2 +- neonView/DocumentDrawer_view/DocumentDrawer_view.aod | 2 +- neonView/DocumentEdit_view/DocumentEdit_view.aod | 2 +- neonView/DocumentFilter_view/DocumentFilter_view.aod | 2 +- neonView/DocumentList_view/DocumentList_view.aod | 2 +- .../DocumentMultipleEdit_view/DocumentMultipleEdit_view.aod | 2 +- neonView/DocumentPreview_view/DocumentPreview_view.aod | 2 +- .../DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod | 2 +- .../DocumentTemplateFilterSmall_view.aod | 2 +- .../DocumentTemplateFilter_view.aod | 2 +- .../DocumentTemplateLinkList_view.aod | 2 +- .../DocumentTemplateLinkMultiEdit_view.aod | 2 +- .../DocumentTemplatePlaceOfUseList_view.aod | 2 +- .../DocumentTemplatePlaceOfUseMultiEdit_view.aod | 2 +- .../DocumentTemplatePlaceOfUseTitledList_view.aod | 2 +- .../DocumentTemplatePreview_view.aod | 2 +- .../DocumentTemplateTypeCategoryFilter_view.aod | 2 +- .../DocumentWithIdFilter_view/DocumentWithIdFilter_view.aod | 2 +- .../DuplicateScannerEdit_view/DuplicateScannerEdit_view.aod | 2 +- .../DuplicateScannerFilter_view.aod | 2 +- .../DuplicateScannerPreview_view.aod | 2 +- .../DuplicateScannerResultFieldConfigEdit_view.aod | 2 +- neonView/DuplicatesOverview_view/DuplicatesOverview_view.aod | 2 +- .../DuplicatesUnrelatedCluster_view.aod | 2 +- .../DuplicatesUnrelatedOrganisationFilter_view.aod | 2 +- .../DuplicatesUnrelatedPersonFilter_view.aod | 2 +- neonView/EmailEdit_view/EmailEdit_view.aod | 2 +- neonView/EmployeeEdit_view/EmployeeEdit_view.aod | 2 +- neonView/EmployeeFilter_view/EmployeeFilter_view.aod | 2 +- neonView/EmployeeLookup_view/EmployeeLookup_view.aod | 2 +- neonView/EmployeeMain_view/EmployeeMain_view.aod | 2 +- neonView/EmployeePassword_view/EmployeePassword_view.aod | 2 +- neonView/EmployeePermission_view/EmployeePermission_view.aod | 2 +- neonView/EmployeePreview_view/EmployeePreview_view.aod | 2 +- neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod | 2 +- neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod | 2 +- .../EmployeeRoleGenericEdit_view.aod | 2 +- neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod | 2 +- .../EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod | 2 +- neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod | 2 +- .../ExportTemplateFieldList_view.aod | 2 +- .../ExportTemplateFieldMultiEdit_view.aod | 2 +- .../ExportTemplateFilter_view/ExportTemplateFilter_view.aod | 2 +- .../ExportTemplatePlaceOfUseList_view.aod | 2 +- .../ExportTemplatePlaceOfUseMultiEdit_view.aod | 2 +- .../ExportTemplatePreview_view/ExportTemplatePreview_view.aod | 2 +- .../ExportTemplateSelectionEdit_view.aod | 2 +- neonView/FacebookTimeline_view/FacebookTimeline_view.aod | 2 +- neonView/FavoriteFilter_view/FavoriteFilter_view.aod | 2 +- neonView/FavoritePreview_view/FavoritePreview_view.aod | 2 +- neonView/ForecastDrawer_view/ForecastDrawer_view.aod | 2 +- neonView/ForecastEdit_view/ForecastEdit_view.aod | 2 +- neonView/ForecastFilter_view/ForecastFilter_view.aod | 2 +- neonView/ForecastPreview_view/ForecastPreview_view.aod | 2 +- neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod | 2 +- .../ImportFieldFilterMapping_view.aod | 2 +- neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod | 2 +- neonView/IndexSearchView/IndexSearchView.aod | 2 +- .../KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod | 2 +- .../KeywordAttributeFilter_view.aod | 2 +- .../KeywordAttributeRelationRows_view.aod | 2 +- .../KeywordAttriubteRelationTitled_view.aod | 2 +- neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod | 2 +- neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod | 2 +- .../KeywordEntryPreview_view/KeywordEntryPreview_view.aod | 2 +- .../KnowledgeDiscussionEdit_view.aod | 2 +- .../KnowledgeDiscussionPreview_view.aod | 2 +- .../KnowledgeDiscussionTree_view.aod | 2 +- .../KnowledgeLinkActionList_view.aod | 2 +- neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod | 2 +- .../KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod | 2 +- .../KnowledgeLinkMultiEdit_view.aod | 2 +- .../KnowledgeManagementContent_view.aod | 2 +- .../KnowledgeManagementDetails_view.aod | 2 +- .../KnowledgeManagementEdit_view.aod | 2 +- .../KnowledgeManagementFilter_view.aod | 2 +- .../KnowledgeManagementLookup_view.aod | 2 +- .../KnowledgeManagementMain_view.aod | 2 +- .../KnowledgeManagementPreview_view.aod | 2 +- .../KnowledgeManagementRole_view.aod | 2 +- .../KnowledgeManagementTimeline_view.aod | 2 +- neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod | 2 +- neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod | 2 +- .../KnowledgeTagList_GenMult_view.aod | 2 +- neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod | 2 +- neonView/LeadFilter_view/LeadFilter_view.aod | 2 +- .../LeadLogFilterDrawer_view/LeadLogFilterDrawer_view.aod | 2 +- neonView/LeadLogFilter_view/LeadLogFilter_view.aod | 2 +- neonView/LeadLogPreview_view/LeadLogPreview_view.aod | 2 +- neonView/LeadPreview_view/LeadPreview_view.aod | 2 +- neonView/LeadTempFilter_view/LeadTempFilter_view.aod | 2 +- neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod | 2 +- neonView/LeadimportEdit_view/LeadimportEdit_view.aod | 2 +- neonView/LeadimportFilter_view/LeadimportFilter_view.aod | 2 +- .../LeadimportLeadFilter_view/LeadimportLeadFilter_view.aod | 2 +- .../LeadimportLeadTempFilter_view.aod | 2 +- neonView/LeadimportLog_view/LeadimportLog_view.aod | 2 +- neonView/LeadimportMain_view/LeadimportMain_view.aod | 2 +- .../LeadimportMappingAssistantFilter_view.aod | 2 +- neonView/LeadimportPreview_view/LeadimportPreview_view.aod | 2 +- neonView/LetterEdit_view/LetterEdit_view.aod | 2 +- .../LetterRecipientEdit_view/LetterRecipientEdit_view.aod | 2 +- .../LetterRecipientFilter_view/LetterRecipientFilter_view.aod | 2 +- .../LogHistoryFilterDrawer_view.aod | 2 +- neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod | 2 +- neonView/LogHistoryPreview_view/LogHistoryPreview_view.aod | 2 +- .../MarketingWorkflowLauncherEdit_view.aod | 2 +- neonView/MemberDrawer_view/MemberDrawer_view.aod | 2 +- neonView/MemberEdit_view/MemberEdit_view.aod | 2 +- neonView/MemberFilter_view/MemberFilter_view.aod | 2 +- neonView/ModuleTree_view/ModuleTree_view.aod | 2 +- .../MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod | 2 +- .../MyTurnoverForecastScoreCard_view.aod | 2 +- neonView/NotificationFilter_view/NotificationFilter_view.aod | 2 +- .../NotificationPreview_view/NotificationPreview_view.aod | 2 +- .../ObjectRelationTypeEdit_view.aod | 2 +- .../ObjectRelationTypeFilter_view.aod | 2 +- neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod | 2 +- neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod | 2 +- neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod | 2 +- neonView/OfferDrawer_view/OfferDrawer_view.aod | 2 +- neonView/OfferEdit_view/OfferEdit_view.aod | 2 +- neonView/OfferFilter_view/OfferFilter_view.aod | 2 +- neonView/OfferMain_view/OfferMain_view.aod | 2 +- .../OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod | 2 +- neonView/OfferPreview_view/OfferPreview_view.aod | 2 +- neonView/OfferReport_view/OfferReport_view.aod | 2 +- neonView/OfferitemEdit_view/OfferitemEdit_view.aod | 2 +- neonView/OfferitemFilter_view/OfferitemFilter_view.aod | 2 +- neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod | 2 +- neonView/OfferitemPreview_view/OfferitemPreview_view.aod | 2 +- neonView/OrderDetail_view/OrderDetail_view.aod | 2 +- neonView/OrderDunning_view/OrderDunning_view.aod | 2 +- neonView/OrderEdit_view/OrderEdit_view.aod | 2 +- neonView/OrderFilter_view/OrderFilter_view.aod | 4 ++-- neonView/OrderLink_view/OrderLink_view.aod | 2 +- neonView/OrderMain_view/OrderMain_view.aod | 2 +- neonView/OrderPaid_view/OrderPaid_view.aod | 2 +- neonView/OrderPreview_view/OrderPreview_view.aod | 2 +- .../OrderReminderReport_view/OrderReminderReport_view.aod | 2 +- neonView/OrderReport_view/OrderReport_view.aod | 2 +- neonView/OrderitemEdit_view/OrderitemEdit_view.aod | 2 +- neonView/OrderitemFilter_view/OrderitemFilter_view.aod | 2 +- neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod | 2 +- neonView/OrderitemPreview_view/OrderitemPreview_view.aod | 2 +- .../OrganisationAttributeRestriction_view.aod | 2 +- .../OrganisationClassification/OrganisationClassification.aod | 2 +- .../OrganisationClassificationDrawer_view.aod | 2 +- .../OrganisationClusterMain_view.aod | 2 +- .../OrganisationConditionPricelist_view.aod | 2 +- .../OrganisationCondition_view/OrganisationCondition_view.aod | 2 +- .../OrganisationDuplicatesFilter_view.aod | 2 +- .../OrganisationDuplicatesTab_view.aod | 2 +- .../OrganisationEditDefaults_view.aod | 2 +- neonView/OrganisationEdit_view/OrganisationEdit_view.aod | 2 +- neonView/OrganisationFilter_view/OrganisationFilter_view.aod | 2 +- .../OrganisationLesserNoiseTable_view.aod | 2 +- neonView/OrganisationLookup_view/OrganisationLookup_view.aod | 2 +- neonView/OrganisationMain_view/OrganisationMain_view.aod | 2 +- .../OrganisationNoNoiseTable_view.aod | 2 +- .../OrganisationPreview_view/OrganisationPreview_view.aod | 2 +- neonView/OrganisationReport_view/OrganisationReport_view.aod | 2 +- .../OrganisationTaskAppointment_view.aod | 2 +- .../OrganisationUnrelatedDuplicates_view.aod | 2 +- .../PermissionActionEdit_view/PermissionActionEdit_view.aod | 2 +- .../PermissionActionFilter_view.aod | 2 +- .../PermissionActionList_view/PermissionActionList_view.aod | 2 +- .../PermissionCalendarEdit_view.aod | 2 +- .../PermissionCalendarFilterDrawer_view.aod | 2 +- .../PermissionCalendarFilterReverse_view.aod | 2 +- .../PermissionCalendarFilter_view.aod | 2 +- .../PermissionCalendarPreview_view.aod | 2 +- .../PermissionDetailEdit_view/PermissionDetailEdit_view.aod | 2 +- .../PermissionDetailFilter_view.aod | 2 +- .../PermissionDetailPreview_view.aod | 2 +- .../PermissionMetaDataFilter_view.aod | 2 +- .../PermissionMetaDataMain_view.aod | 2 +- .../PermissionMetaDataPreview_view.aod | 2 +- .../PermissionOverviewFilter_view.aod | 2 +- .../PersonAttributeRestriction_view.aod | 2 +- neonView/PersonClusterMain_view/PersonClusterMain_view.aod | 2 +- .../PersonClusterPreview_view/PersonClusterPreview_view.aod | 2 +- neonView/PersonDetail_view/PersonDetail_view.aod | 2 +- .../PersonDublicatesTab_view/PersonDublicatesTab_view.aod | 2 +- .../PersonDuplicateEditview_view.aod | 2 +- .../PersonDuplicatesFilter_view.aod | 2 +- neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod | 2 +- neonView/PersonEdit_view/PersonEdit_view.aod | 2 +- neonView/PersonFilter_view/PersonFilter_view.aod | 2 +- neonView/PersonLookup_view/PersonLookup_view.aod | 2 +- neonView/PersonMain_view/PersonMain_view.aod | 2 +- .../PersonMultiEditQuickEntry_view.aod | 2 +- neonView/PersonMultiEdit_view/PersonMultiEdit_view.aod | 2 +- neonView/PersonPreview_view/PersonPreview_view.aod | 2 +- neonView/PersonSimpleList_view/PersonSimpleList_view.aod | 2 +- .../PersonTaskAppointment_view/PersonTaskAppointment_view.aod | 2 +- .../PrivatePersonFilter_view/PrivatePersonFilter_view.aod | 2 +- .../PrivatePersonPreview_view/PrivatePersonPreview_view.aod | 2 +- neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod | 2 +- neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod | 2 +- neonView/ProductEdit_view/ProductEdit_view.aod | 2 +- neonView/ProductFilter_view/ProductFilter_view.aod | 2 +- neonView/ProductLookup_view/ProductLookup_view.aod | 2 +- neonView/ProductMain_view/ProductMain_view.aod | 2 +- neonView/ProductPreview_view/ProductPreview_view.aod | 2 +- neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod | 2 +- neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod | 2 +- .../ProductpriceForProductFilter_view.aod | 2 +- .../ProductpricePreview_view/ProductpricePreview_view.aod | 2 +- .../ProductpriceRelation_view/ProductpriceRelation_view.aod | 2 +- neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod | 2 +- neonView/RoleChildrenEdit_view/RoleChildrenEdit_view.aod | 2 +- neonView/RoleChildrenList_view/RoleChildrenList_view.aod | 2 +- neonView/RoleEdit_view/RoleEdit_view.aod | 2 +- neonView/RoleFilter_view/RoleFilter_view.aod | 2 +- neonView/RoleMain_view/RoleMain_view.aod | 2 +- neonView/RoleParentList_view/RoleParentList_view.aod | 2 +- neonView/RolePreview_view/RolePreview_view.aod | 2 +- .../SalesprojectAnalysesPhases_view.aod | 2 +- .../SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod | 2 +- .../SalesprojectConversionRate_view.aod | 2 +- neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod | 2 +- neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod | 2 +- .../SalesprojectForecastDrawer_view.aod | 2 +- .../SalesprojectFurtherInfo_view.aod | 2 +- neonView/SalesprojectMain_view/SalesprojectMain_view.aod | 2 +- .../SalesprojectMemberActivity_view.aod | 2 +- .../SalesprojectMilestoneChartPhase_view.aod | 2 +- .../SalesprojectMilestoneChartState_view.aod | 2 +- .../SalesprojectMilestoneInfo_view.aod | 2 +- .../SalesprojectMilestoneSource_view.aod | 2 +- .../SalesprojectMilestone_view/SalesprojectMilestone_view.aod | 2 +- .../SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod | 2 +- .../SalesprojectOfferForecastChart_view.aod | 2 +- .../SalesprojectOfferForecast_view.aod | 2 +- .../SalesprojectOverview_view/SalesprojectOverview_view.aod | 2 +- .../SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod | 2 +- neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod | 2 +- .../SalesprojectPreview_view/SalesprojectPreview_view.aod | 2 +- .../SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod | 2 +- .../SalesprojectSourceDrawer_view.aod | 2 +- .../SalesprojectSourceEdit_view.aod | 2 +- .../SalesprojectSourceFilter_view.aod | 2 +- .../SalesprojectSourcePreview_view.aod | 2 +- neonView/SalutationEdit_view/SalutationEdit_view.aod | 2 +- neonView/SalutationFilter_view/SalutationFilter_view.aod | 2 +- .../SerialLetterAddRecipientsEdit_view.aod | 2 +- neonView/SerialLetterEdit_view/SerialLetterEdit_view.aod | 2 +- neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod | 2 +- neonView/SerialLetterMain_view/SerialLetterMain_view.aod | 2 +- .../SerialLetterPreview_view/SerialLetterPreview_view.aod | 2 +- neonView/StockCount_view/StockCount_view.aod | 2 +- neonView/StockEdit_view/StockEdit_view.aod | 2 +- neonView/StockFilter_view/StockFilter_view.aod | 2 +- neonView/SupportTicketEdit_view/SupportTicketEdit_view.aod | 2 +- .../SupportTicketFilter_view/SupportTicketFilter_view.aod | 2 +- neonView/SupportTicketMain_view/SupportTicketMain_view.aod | 2 +- .../SupportTicketPreview_view/SupportTicketPreview_view.aod | 2 +- neonView/TaskEdit_view/TaskEdit_view.aod | 2 +- neonView/TaskFilter_view/TaskFilter_view.aod | 2 +- neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod | 2 +- neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod | 2 +- .../TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod | 2 +- neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod | 2 +- neonView/TaskMain_view/TaskMain_view.aod | 2 +- neonView/TaskPreview_view/TaskPreview_view.aod | 2 +- .../TimetrackingAnalysesDrawer_view.aod | 2 +- .../TimetrackingAnalyses_view/TimetrackingAnalyses_view.aod | 2 +- neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod | 2 +- neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod | 2 +- .../TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod | 2 +- neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod | 2 +- .../TimetrackingPreview_view/TimetrackingPreview_view.aod | 2 +- neonView/TimetrackingScore_view/TimetrackingScore_view.aod | 2 +- .../TurnoverChartForcastDrawer_view.aod | 2 +- .../TurnoverChartForecast_view/TurnoverChartForecast_view.aod | 2 +- neonView/TurnoverChart_view/TurnoverChart_view.aod | 2 +- neonView/TurnoverTree_view/TurnoverTree_view.aod | 2 +- neonView/TwitterTimeline_view/TwitterTimeline_view.aod | 2 +- .../UniversalFileProcessorDropzone_view.aod | 2 +- neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod | 2 +- .../UnlinkedMailMappingLinkList_view.aod | 2 +- .../UnlinkedMailMappingWrapperMapping_view.aod | 2 +- neonView/Userhelp_FilterView/Userhelp_FilterView.aod | 2 +- neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod | 2 +- .../VisitPlanEmployeeWeekEdit_view.aod | 2 +- .../VisitPlanEmployeeWeekFilter_view.aod | 2 +- .../VisitPlanEmployeeWeekMain_view.aod | 2 +- .../VisitPlanEmployeeWeekPreview_view.aod | 2 +- neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod | 2 +- .../VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod | 2 +- .../VisitRecommendationEdit_view.aod | 2 +- .../VisitRecommendationFilter_view.aod | 2 +- .../WorkflowDefinitionDiagram_view.aod | 2 +- .../WorkflowDefinitionEdit_view.aod | 2 +- .../WorkflowDefinitionFilter_view.aod | 2 +- .../WorkflowDefinitionMain_view.aod | 2 +- .../WorkflowDefinitionPreview_view.aod | 2 +- .../WorkflowInstanceDiagram_view.aod | 2 +- .../WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod | 2 +- .../WorkflowInstanceFilter_view.aod | 2 +- .../WorkflowInstanceHistoryFilter_view.aod | 2 +- .../WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod | 2 +- .../WorkflowInstancePreview_view.aod | 2 +- .../WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod | 2 +- .../WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod | 2 +- neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod | 2 +- .../WorkflowModelLookup_view/WorkflowModelLookup_view.aod | 2 +- neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod | 2 +- .../WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod | 2 +- .../WorkflowSignalPreview_view/WorkflowSignalPreview_view.aod | 2 +- .../WorkflowStartConfigFilter_view.aod | 2 +- neonView/WorkflowTaskDrawer_view/WorkflowTaskDrawer_view.aod | 2 +- neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod | 2 +- .../WorkflowTaskFinishedDrawer_view.aod | 2 +- .../WorkflowTaskFinishedList_view.aod | 2 +- neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod | 2 +- neonView/WorkflowTaskList_view/WorkflowTaskList_view.aod | 2 +- neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod | 2 +- .../WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod | 2 +- .../WorkflowVariableValueFilter_view.aod | 2 +- 456 files changed, 457 insertions(+), 457 deletions(-) diff --git a/neonView/360DegreeFilter_view/360DegreeFilter_view.aod b/neonView/360DegreeFilter_view/360DegreeFilter_view.aod index fcb25887036..92774253b35 100644 --- a/neonView/360DegreeFilter_view/360DegreeFilter_view.aod +++ b/neonView/360DegreeFilter_view/360DegreeFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>360DegreeFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/ActivityAnalyses_view/ActivityAnalyses_view.aod b/neonView/ActivityAnalyses_view/ActivityAnalyses_view.aod index 606d13134ae..cb982f79c42 100644 --- a/neonView/ActivityAnalyses_view/ActivityAnalyses_view.aod +++ b/neonView/ActivityAnalyses_view/ActivityAnalyses_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityAnalyses_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ActivityDetail_view/ActivityDetail_view.aod b/neonView/ActivityDetail_view/ActivityDetail_view.aod index 870b77975c3..559c6a6620b 100644 --- a/neonView/ActivityDetail_view/ActivityDetail_view.aod +++ b/neonView/ActivityDetail_view/ActivityDetail_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityDetail_view</name> <title>Description</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/ActivityDrawer_view/ActivityDrawer_view.aod b/neonView/ActivityDrawer_view/ActivityDrawer_view.aod index b7d3bb7f8fc..eeacf167c5e 100644 --- a/neonView/ActivityDrawer_view/ActivityDrawer_view.aod +++ b/neonView/ActivityDrawer_view/ActivityDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityEdit_view/ActivityEdit_view.aod b/neonView/ActivityEdit_view/ActivityEdit_view.aod index 955128744e3..2c8b44325c1 100644 --- a/neonView/ActivityEdit_view/ActivityEdit_view.aod +++ b/neonView/ActivityEdit_view/ActivityEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityEdit_view</name> <title>Activity</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/ActivityFilter_view/ActivityFilter_view.aod b/neonView/ActivityFilter_view/ActivityFilter_view.aod index 3dff8e3ef36..c942d1bd6b0 100644 --- a/neonView/ActivityFilter_view/ActivityFilter_view.aod +++ b/neonView/ActivityFilter_view/ActivityFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod index b5fff0f4ace..cd41eab6d66 100644 --- a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod +++ b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityLinkFilter_view</name> <title>Connections</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod b/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod index e19f1da0f82..519a822a81e 100644 --- a/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod +++ b/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityLinkMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod b/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod index dab9bccb0a8..a34c9e28d9f 100644 --- a/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod +++ b/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityLinkPreviewList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod b/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod index 5327f5fd86e..ecea997484b 100644 --- a/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod +++ b/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityLinkPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityMain_view/ActivityMain_view.aod b/neonView/ActivityMain_view/ActivityMain_view.aod index 8dd7d3f4f2f..39972c2097c 100644 --- a/neonView/ActivityMain_view/ActivityMain_view.aod +++ b/neonView/ActivityMain_view/ActivityMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityMultiEdit_view/ActivityMultiEdit_view.aod b/neonView/ActivityMultiEdit_view/ActivityMultiEdit_view.aod index 6d74561374a..d9b91e1b27b 100644 --- a/neonView/ActivityMultiEdit_view/ActivityMultiEdit_view.aod +++ b/neonView/ActivityMultiEdit_view/ActivityMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityPreview_view/ActivityPreview_view.aod b/neonView/ActivityPreview_view/ActivityPreview_view.aod index 7b82a42582a..b02a9a3bed5 100644 --- a/neonView/ActivityPreview_view/ActivityPreview_view.aod +++ b/neonView/ActivityPreview_view/ActivityPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityUniversalFileProcessorFilter_view/ActivityUniversalFileProcessorFilter_view.aod b/neonView/ActivityUniversalFileProcessorFilter_view/ActivityUniversalFileProcessorFilter_view.aod index eaec7e7ddba..3b8adc8d670 100644 --- a/neonView/ActivityUniversalFileProcessorFilter_view/ActivityUniversalFileProcessorFilter_view.aod +++ b/neonView/ActivityUniversalFileProcessorFilter_view/ActivityUniversalFileProcessorFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityUniversalFileProcessorFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/AddressList_view/AddressList_view.aod b/neonView/AddressList_view/AddressList_view.aod index bd5826a7da4..a9f9b3c6b85 100644 --- a/neonView/AddressList_view/AddressList_view.aod +++ b/neonView/AddressList_view/AddressList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AddressList_view</name> <description>Org addresses</description> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/AddressLookup_view/AddressLookup_view.aod b/neonView/AddressLookup_view/AddressLookup_view.aod index 904f60c6b30..42904c5f4c1 100644 --- a/neonView/AddressLookup_view/AddressLookup_view.aod +++ b/neonView/AddressLookup_view/AddressLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AddressLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod b/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod index dd7ee5507e2..faa7531a910 100644 --- a/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod +++ b/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AddressOrgMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AddressValidationLookup_view/AddressValidationLookup_view.aod b/neonView/AddressValidationLookup_view/AddressValidationLookup_view.aod index 7372c60c7af..c785e09dc8d 100644 --- a/neonView/AddressValidationLookup_view/AddressValidationLookup_view.aod +++ b/neonView/AddressValidationLookup_view/AddressValidationLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AddressValidationLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AdminViewRow_view/AdminViewRow_view.aod b/neonView/AdminViewRow_view/AdminViewRow_view.aod index cd5a8658bb4..77687eeb449 100644 --- a/neonView/AdminViewRow_view/AdminViewRow_view.aod +++ b/neonView/AdminViewRow_view/AdminViewRow_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AdminViewRow_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod b/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod index b4612adcf1a..72a12761582 100644 --- a/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod +++ b/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AdressMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod b/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod index ff719ed3711..a4d400cb1bb 100644 --- a/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod +++ b/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AnyContactDuplicates_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AnyContactLookup_view/AnyContactLookup_view.aod b/neonView/AnyContactLookup_view/AnyContactLookup_view.aod index 4a06e39e312..f7d62ecfdeb 100644 --- a/neonView/AnyContactLookup_view/AnyContactLookup_view.aod +++ b/neonView/AnyContactLookup_view/AnyContactLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AnyContactLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod b/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod index 83a01661633..e6fc96ef835 100644 --- a/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod +++ b/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AnyObjectRelationTree_view0</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AppointmentCheckUp_view/AppointmentCheckUp_view.aod b/neonView/AppointmentCheckUp_view/AppointmentCheckUp_view.aod index 2f0e9199d4d..2f0d2443425 100644 --- a/neonView/AppointmentCheckUp_view/AppointmentCheckUp_view.aod +++ b/neonView/AppointmentCheckUp_view/AppointmentCheckUp_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentCheckUp_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> diff --git a/neonView/AppointmentEdit_view/AppointmentEdit_view.aod b/neonView/AppointmentEdit_view/AppointmentEdit_view.aod index 5b5def3ba12..6a2413b6953 100644 --- a/neonView/AppointmentEdit_view/AppointmentEdit_view.aod +++ b/neonView/AppointmentEdit_view/AppointmentEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/neonView/AppointmentEdit_view/documentation.adoc</documentation> diff --git a/neonView/AppointmentFilterDashlet_view/AppointmentFilterDashlet_view.aod b/neonView/AppointmentFilterDashlet_view/AppointmentFilterDashlet_view.aod index e0d50c9bd43..216efdb870d 100644 --- a/neonView/AppointmentFilterDashlet_view/AppointmentFilterDashlet_view.aod +++ b/neonView/AppointmentFilterDashlet_view/AppointmentFilterDashlet_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentFilterDashlet_view</name> <title>Linked Appointments</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/AppointmentFilter_view/AppointmentFilter_view.aod b/neonView/AppointmentFilter_view/AppointmentFilter_view.aod index 75dfc0953f8..b21399ee35f 100644 --- a/neonView/AppointmentFilter_view/AppointmentFilter_view.aod +++ b/neonView/AppointmentFilter_view/AppointmentFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentFilter_view</name> <title>Linked Appointments</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod b/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod index 1d1f735b094..58da5f40fd7 100644 --- a/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod +++ b/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentLinkEdit_view</name> <title>relations</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod b/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod index 7ecded1820e..993d5d1ea5f 100644 --- a/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod +++ b/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentLinkFilter_view</name> <title>relations</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod index 727a644d899..ccd565c6be3 100644 --- a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod +++ b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/neonView/AppointmentPreview_view/documentation.adoc</documentation> diff --git a/neonView/AroundLocationHeader_view/AroundLocationHeader_view.aod b/neonView/AroundLocationHeader_view/AroundLocationHeader_view.aod index ce86ba2afd5..0dbf0677ac4 100644 --- a/neonView/AroundLocationHeader_view/AroundLocationHeader_view.aod +++ b/neonView/AroundLocationHeader_view/AroundLocationHeader_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AroundLocationHeader_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AroundOrganisationFooter_view/AroundOrganisationFooter_view.aod b/neonView/AroundOrganisationFooter_view/AroundOrganisationFooter_view.aod index 74bac1d8443..72811993d34 100644 --- a/neonView/AroundOrganisationFooter_view/AroundOrganisationFooter_view.aod +++ b/neonView/AroundOrganisationFooter_view/AroundOrganisationFooter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AroundOrganisationFooter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AroundOrganisationLocation_view/AroundOrganisationLocation_view.aod b/neonView/AroundOrganisationLocation_view/AroundOrganisationLocation_view.aod index 6ee6f9459fd..7fa9102fcc0 100644 --- a/neonView/AroundOrganisationLocation_view/AroundOrganisationLocation_view.aod +++ b/neonView/AroundOrganisationLocation_view/AroundOrganisationLocation_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AroundOrganisationLocation_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/AttributeEdit_view/AttributeEdit_view.aod b/neonView/AttributeEdit_view/AttributeEdit_view.aod index f0540f0420d..310d74e958e 100644 --- a/neonView/AttributeEdit_view/AttributeEdit_view.aod +++ b/neonView/AttributeEdit_view/AttributeEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/AttributeFilter_view/AttributeFilter_view.aod b/neonView/AttributeFilter_view/AttributeFilter_view.aod index 573f26dd7d2..7b18cb00636 100644 --- a/neonView/AttributeFilter_view/AttributeFilter_view.aod +++ b/neonView/AttributeFilter_view/AttributeFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeFilter_view</name> <title>Attributes</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/AttributeList_view/AttributeList_view.aod b/neonView/AttributeList_view/AttributeList_view.aod index 167cf43d52b..71c6f4b999e 100644 --- a/neonView/AttributeList_view/AttributeList_view.aod +++ b/neonView/AttributeList_view/AttributeList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeLookup_view/AttributeLookup_view.aod b/neonView/AttributeLookup_view/AttributeLookup_view.aod index d1c1580870e..0abd15c3e22 100644 --- a/neonView/AttributeLookup_view/AttributeLookup_view.aod +++ b/neonView/AttributeLookup_view/AttributeLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeMultiEdit_view/AttributeMultiEdit_view.aod b/neonView/AttributeMultiEdit_view/AttributeMultiEdit_view.aod index 21e86a1d4de..ce138e8b593 100644 --- a/neonView/AttributeMultiEdit_view/AttributeMultiEdit_view.aod +++ b/neonView/AttributeMultiEdit_view/AttributeMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributePreview_view/AttributePreview_view.aod b/neonView/AttributePreview_view/AttributePreview_view.aod index f7164ab6941..6677b9e8eca 100644 --- a/neonView/AttributePreview_view/AttributePreview_view.aod +++ b/neonView/AttributePreview_view/AttributePreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeRelationMultiEdit_view/AttributeRelationMultiEdit_view.aod b/neonView/AttributeRelationMultiEdit_view/AttributeRelationMultiEdit_view.aod index fab8b8d5f07..4996c55d00b 100644 --- a/neonView/AttributeRelationMultiEdit_view/AttributeRelationMultiEdit_view.aod +++ b/neonView/AttributeRelationMultiEdit_view/AttributeRelationMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeRelationMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod b/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod index 3ecddbf8b49..04ae8c35a3c 100644 --- a/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod +++ b/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeRelationPreviewList</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeRelationTreeDrawer_view/AttributeRelationTreeDrawer_view.aod b/neonView/AttributeRelationTreeDrawer_view/AttributeRelationTreeDrawer_view.aod index 872e755c658..0a721f3a756 100644 --- a/neonView/AttributeRelationTreeDrawer_view/AttributeRelationTreeDrawer_view.aod +++ b/neonView/AttributeRelationTreeDrawer_view/AttributeRelationTreeDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeRelationTreeDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod b/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod index bcc1303d8a3..11f0be4ad61 100644 --- a/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod +++ b/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeRelationTreeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod b/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod index f0161b804b5..de545b59667 100644 --- a/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod +++ b/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeRelationTree_view</name> <title>Attributes</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/AttributeTree_view/AttributeTree_view.aod b/neonView/AttributeTree_view/AttributeTree_view.aod index aa5ab7c0943..4485456b82f 100644 --- a/neonView/AttributeTree_view/AttributeTree_view.aod +++ b/neonView/AttributeTree_view/AttributeTree_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeTree_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeUsageList_view/AttributeUsageList_view.aod b/neonView/AttributeUsageList_view/AttributeUsageList_view.aod index 35e765c6458..856a329d1ef 100644 --- a/neonView/AttributeUsageList_view/AttributeUsageList_view.aod +++ b/neonView/AttributeUsageList_view/AttributeUsageList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeUsageList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod b/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod index 96ed51fb956..5bb2bc37b0d 100644 --- a/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod +++ b/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeUsageMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod b/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod index 87d730da51e..c29afae20f9 100644 --- a/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod +++ b/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AuditLogHistoryFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod index 3e391de8175..2eef718c2b4 100644 --- a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod +++ b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailAddRecipientsEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/BulkMailContent_view/BulkMailContent_view.aod b/neonView/BulkMailContent_view/BulkMailContent_view.aod index ba5614086a9..6c3878a6091 100644 --- a/neonView/BulkMailContent_view/BulkMailContent_view.aod +++ b/neonView/BulkMailContent_view/BulkMailContent_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailContent_view</name> <title>Content</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/BulkMailEdit_view/BulkMailEdit_view.aod b/neonView/BulkMailEdit_view/BulkMailEdit_view.aod index 48c07055579..6677a955a9b 100644 --- a/neonView/BulkMailEdit_view/BulkMailEdit_view.aod +++ b/neonView/BulkMailEdit_view/BulkMailEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/BulkMailFilter_view/BulkMailFilter_view.aod b/neonView/BulkMailFilter_view/BulkMailFilter_view.aod index daa8da26604..fafdd0a86a9 100644 --- a/neonView/BulkMailFilter_view/BulkMailFilter_view.aod +++ b/neonView/BulkMailFilter_view/BulkMailFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/BulkMailMain_view/BulkMailMain_view.aod b/neonView/BulkMailMain_view/BulkMailMain_view.aod index 5c3d99ce8a8..91a0c16c22f 100644 --- a/neonView/BulkMailMain_view/BulkMailMain_view.aod +++ b/neonView/BulkMailMain_view/BulkMailMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/BulkMailPreview_view/BulkMailPreview_view.aod b/neonView/BulkMailPreview_view/BulkMailPreview_view.aod index 7e3f5b4804e..42fee67eccd 100644 --- a/neonView/BulkMailPreview_view/BulkMailPreview_view.aod +++ b/neonView/BulkMailPreview_view/BulkMailPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod b/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod index 1ad8a7d50ee..5ea684474be 100644 --- a/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod +++ b/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailRecipientEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod b/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod index 5f4bc454fb6..5a52f85478b 100644 --- a/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod +++ b/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailRecipientFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/BulkMailStatusChart_view/BulkMailStatusChart_view.aod b/neonView/BulkMailStatusChart_view/BulkMailStatusChart_view.aod index ca3081b8e40..17be8796767 100644 --- a/neonView/BulkMailStatusChart_view/BulkMailStatusChart_view.aod +++ b/neonView/BulkMailStatusChart_view/BulkMailStatusChart_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailStatusChart_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/BulkMailTesting_view/BulkMailTesting_view.aod b/neonView/BulkMailTesting_view/BulkMailTesting_view.aod index d3a8fa5c4e9..2fda589cb41 100644 --- a/neonView/BulkMailTesting_view/BulkMailTesting_view.aod +++ b/neonView/BulkMailTesting_view/BulkMailTesting_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailTesting_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod b/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod index c5448b2e2f2..c4d7749e7fa 100644 --- a/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod +++ b/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignAddParticipantsEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/CampaignCharts_view/CampaignCharts_view.aod b/neonView/CampaignCharts_view/CampaignCharts_view.aod index e17db141336..1ca293d2d74 100644 --- a/neonView/CampaignCharts_view/CampaignCharts_view.aod +++ b/neonView/CampaignCharts_view/CampaignCharts_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCharts_view</name> <title>Overview</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignCostAnalysis_view/CampaignCostAnalysis_view.aod b/neonView/CampaignCostAnalysis_view/CampaignCostAnalysis_view.aod index 8f82f69de82..4405b5b2479 100644 --- a/neonView/CampaignCostAnalysis_view/CampaignCostAnalysis_view.aod +++ b/neonView/CampaignCostAnalysis_view/CampaignCostAnalysis_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostAnalysis_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CampaignCostChart_view/CampaignCostChart_view.aod b/neonView/CampaignCostChart_view/CampaignCostChart_view.aod index 24159367f94..7250ffc8f37 100644 --- a/neonView/CampaignCostChart_view/CampaignCostChart_view.aod +++ b/neonView/CampaignCostChart_view/CampaignCostChart_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostChart_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> diff --git a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod index cb1f3d2f26a..82b672034de 100644 --- a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod +++ b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod b/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod index 15bdd074a0c..ef68f8add69 100644 --- a/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod +++ b/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostExtendedFilter_view</name> <title>Stop costs</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod index 1cfa11b98bd..4962588f3b2 100644 --- a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod +++ b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/CampaignCostFix_view/CampaignCostFix_view.aod b/neonView/CampaignCostFix_view/CampaignCostFix_view.aod index 4397f42cbf1..710331794c9 100644 --- a/neonView/CampaignCostFix_view/CampaignCostFix_view.aod +++ b/neonView/CampaignCostFix_view/CampaignCostFix_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostFix_view</name> <title>Fix costs</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod b/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod index c29615b901e..cdef7ed1035 100644 --- a/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod +++ b/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostVariable_view</name> <title>Step costs</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignCost_view/CampaignCost_view.aod b/neonView/CampaignCost_view/CampaignCost_view.aod index 03ccab3dbb9..1272ec645f2 100644 --- a/neonView/CampaignCost_view/CampaignCost_view.aod +++ b/neonView/CampaignCost_view/CampaignCost_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCost_view</name> <title>Cost</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignEdit_view/CampaignEdit_view.aod b/neonView/CampaignEdit_view/CampaignEdit_view.aod index 4636fbdffb1..a7271844b7a 100644 --- a/neonView/CampaignEdit_view/CampaignEdit_view.aod +++ b/neonView/CampaignEdit_view/CampaignEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignEdit_view</name> <title>Campaign</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignFilter_view/CampaignFilter_view.aod b/neonView/CampaignFilter_view/CampaignFilter_view.aod index 4d7c3aac1c1..251fae2fce5 100644 --- a/neonView/CampaignFilter_view/CampaignFilter_view.aod +++ b/neonView/CampaignFilter_view/CampaignFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignFilter_view</name> <title>Campaign</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignMain_view/CampaignMain_view.aod b/neonView/CampaignMain_view/CampaignMain_view.aod index 789dbfbf943..b9c3a7e101e 100644 --- a/neonView/CampaignMain_view/CampaignMain_view.aod +++ b/neonView/CampaignMain_view/CampaignMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignMain_view</name> <title>Campaign</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignOverview_view/CampaignOverview_view.aod b/neonView/CampaignOverview_view/CampaignOverview_view.aod index b3d627a88d4..d0855732e6d 100644 --- a/neonView/CampaignOverview_view/CampaignOverview_view.aod +++ b/neonView/CampaignOverview_view/CampaignOverview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignOverview_view</name> <title>Overview</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignParticipantChart_view/CampaignParticipantChart_view.aod b/neonView/CampaignParticipantChart_view/CampaignParticipantChart_view.aod index ca3630fb2bd..33766f0cf1b 100644 --- a/neonView/CampaignParticipantChart_view/CampaignParticipantChart_view.aod +++ b/neonView/CampaignParticipantChart_view/CampaignParticipantChart_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignParticipantChart_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod index 6539d7a4d36..72e0dfacadd 100644 --- a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod +++ b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignParticipantEdit_view</name> <title>Add participant to Campaign</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod b/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod index 0f7b7272655..b3148ca25c4 100644 --- a/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod +++ b/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignParticipantFilter_view</name> <title></title> <description></description> diff --git a/neonView/CampaignParticipantPreview_view/CampaignParticipantPreview_view.aod b/neonView/CampaignParticipantPreview_view/CampaignParticipantPreview_view.aod index 0fe2fda3381..6a33444d499 100644 --- a/neonView/CampaignParticipantPreview_view/CampaignParticipantPreview_view.aod +++ b/neonView/CampaignParticipantPreview_view/CampaignParticipantPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignParticipantPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CampaignPlanning_view/CampaignPlanning_view.aod b/neonView/CampaignPlanning_view/CampaignPlanning_view.aod index ac3d466a4be..3a6df29eef7 100644 --- a/neonView/CampaignPlanning_view/CampaignPlanning_view.aod +++ b/neonView/CampaignPlanning_view/CampaignPlanning_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignPlanning_view</name> <title>Campaign planning</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignPreview_view/CampaignPreview_view.aod b/neonView/CampaignPreview_view/CampaignPreview_view.aod index 6cbe20bbb71..0433154d474 100644 --- a/neonView/CampaignPreview_view/CampaignPreview_view.aod +++ b/neonView/CampaignPreview_view/CampaignPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignPreview_view</name> <title>Campaign</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignStepAddParticipants_view/CampaignStepAddParticipants_view.aod b/neonView/CampaignStepAddParticipants_view/CampaignStepAddParticipants_view.aod index 975475f4630..245fb496dc2 100644 --- a/neonView/CampaignStepAddParticipants_view/CampaignStepAddParticipants_view.aod +++ b/neonView/CampaignStepAddParticipants_view/CampaignStepAddParticipants_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepAddParticipants_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CampaignStepAnalysis_view/CampaignStepAnalysis_view.aod b/neonView/CampaignStepAnalysis_view/CampaignStepAnalysis_view.aod index 138d0044939..0404e066350 100644 --- a/neonView/CampaignStepAnalysis_view/CampaignStepAnalysis_view.aod +++ b/neonView/CampaignStepAnalysis_view/CampaignStepAnalysis_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepAnalysis_view</name> <title>Evaluation</title> <description>Charts als Ãœbersicht der Kosten des Kampagnenschrittes</description> diff --git a/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod b/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod index 930baab2cbd..af0403664b9 100644 --- a/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod +++ b/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepEdit_view</name> <title>New campaign step</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod index dc45eb0e658..f8ace2f468b 100644 --- a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod +++ b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepFilter_view</name> <title>Campaign steps </title> <description></description> diff --git a/neonView/CampaignStepLookup_view/CampaignStepLookup_view.aod b/neonView/CampaignStepLookup_view/CampaignStepLookup_view.aod index 9f87ec71201..85ad77be178 100644 --- a/neonView/CampaignStepLookup_view/CampaignStepLookup_view.aod +++ b/neonView/CampaignStepLookup_view/CampaignStepLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepLookup_view</name> <title>Caimpaignsteps</title> <description></description> diff --git a/neonView/CampaignStepMain_view/CampaignStepMain_view.aod b/neonView/CampaignStepMain_view/CampaignStepMain_view.aod index 7bf5acbf61b..461ae82601e 100644 --- a/neonView/CampaignStepMain_view/CampaignStepMain_view.aod +++ b/neonView/CampaignStepMain_view/CampaignStepMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CampaignStepParticipnatsPerStep_view/CampaignStepParticipnatsPerStep_view.aod b/neonView/CampaignStepParticipnatsPerStep_view/CampaignStepParticipnatsPerStep_view.aod index cee2045769f..7b1fbeae783 100644 --- a/neonView/CampaignStepParticipnatsPerStep_view/CampaignStepParticipnatsPerStep_view.aod +++ b/neonView/CampaignStepParticipnatsPerStep_view/CampaignStepParticipnatsPerStep_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepParticipnatsPerStep_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod b/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod index 51d4713e524..f3e9b0141c1 100644 --- a/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod +++ b/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod b/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod index bc3590f6e3b..78d9814225f 100644 --- a/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod +++ b/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepsGantt_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod b/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod index 43fd31c31ab..b3c80308e02 100644 --- a/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod +++ b/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationAdminEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod b/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod index 61606618835..66bc95107a3 100644 --- a/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod +++ b/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationAdminFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod b/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod index 6ba9ff49eff..2a66faca02e 100644 --- a/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod +++ b/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationGradingMultipleEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod b/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod index ac701fd79bb..07009fa6f7c 100644 --- a/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod +++ b/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationGroupPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ClassificationPreview_view/ClassificationPreview_view.aod b/neonView/ClassificationPreview_view/ClassificationPreview_view.aod index 8c55fe145f7..099382a2e2d 100644 --- a/neonView/ClassificationPreview_view/ClassificationPreview_view.aod +++ b/neonView/ClassificationPreview_view/ClassificationPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <isOverlay v="false" /> diff --git a/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod b/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod index add9fa38736..20524c3da83 100644 --- a/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod +++ b/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationScoreMultipleEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ClassificationTree_view/ClassificationTree_view.aod b/neonView/ClassificationTree_view/ClassificationTree_view.aod index ca36f8fd5fa..7c7200def91 100644 --- a/neonView/ClassificationTree_view/ClassificationTree_view.aod +++ b/neonView/ClassificationTree_view/ClassificationTree_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationTree_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod b/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod index 9b7072fc519..e9a3e74a76c 100644 --- a/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod +++ b/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationTypePreview_View</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CommRestrictionDrawer_view/CommRestrictionDrawer_view.aod b/neonView/CommRestrictionDrawer_view/CommRestrictionDrawer_view.aod index e764fb22513..62e73d65f64 100644 --- a/neonView/CommRestrictionDrawer_view/CommRestrictionDrawer_view.aod +++ b/neonView/CommRestrictionDrawer_view/CommRestrictionDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommRestrictionDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod b/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod index 8a4ff768fa4..118d5059636 100644 --- a/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod +++ b/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommRestrictionFilter_view</name> <title>Restrictions</title> <description>Restrictions</description> diff --git a/neonView/CommRestrictionPreview_view/CommRestrictionPreview_view.aod b/neonView/CommRestrictionPreview_view/CommRestrictionPreview_view.aod index 58f971c0f6b..e740f6b2c74 100644 --- a/neonView/CommRestrictionPreview_view/CommRestrictionPreview_view.aod +++ b/neonView/CommRestrictionPreview_view/CommRestrictionPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommRestrictionPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod b/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod index fc757ef3413..03d88f6cc6c 100644 --- a/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod +++ b/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommRestrictionSmallEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/CommunicationEdit_view/CommunicationEdit_view.aod b/neonView/CommunicationEdit_view/CommunicationEdit_view.aod index 051e7e5fcbe..3fa9900fd7e 100644 --- a/neonView/CommunicationEdit_view/CommunicationEdit_view.aod +++ b/neonView/CommunicationEdit_view/CommunicationEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommunicationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CommunicationFilter_view/CommunicationFilter_view.aod b/neonView/CommunicationFilter_view/CommunicationFilter_view.aod index 18c53dad65e..a0ae2fccad5 100644 --- a/neonView/CommunicationFilter_view/CommunicationFilter_view.aod +++ b/neonView/CommunicationFilter_view/CommunicationFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommunicationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/CommunicationList_view/CommunicationList_view.aod b/neonView/CommunicationList_view/CommunicationList_view.aod index cf84440573f..e646c71d4f7 100644 --- a/neonView/CommunicationList_view/CommunicationList_view.aod +++ b/neonView/CommunicationList_view/CommunicationList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommunicationList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod b/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod index ab9ecb32656..8022b2d402a 100644 --- a/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod +++ b/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommunicationMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CompetitionDrawer_view/CompetitionDrawer_view.aod b/neonView/CompetitionDrawer_view/CompetitionDrawer_view.aod index de151174dc8..469f6a0b536 100644 --- a/neonView/CompetitionDrawer_view/CompetitionDrawer_view.aod +++ b/neonView/CompetitionDrawer_view/CompetitionDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CompetitionDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CompetitionEdit_view/CompetitionEdit_view.aod b/neonView/CompetitionEdit_view/CompetitionEdit_view.aod index 2dc804c8fa5..c752afc16e2 100644 --- a/neonView/CompetitionEdit_view/CompetitionEdit_view.aod +++ b/neonView/CompetitionEdit_view/CompetitionEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CompetitionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/CompetitionFilter_view/CompetitionFilter_view.aod b/neonView/CompetitionFilter_view/CompetitionFilter_view.aod index cc9122ea36d..9dd7bb66444 100644 --- a/neonView/CompetitionFilter_view/CompetitionFilter_view.aod +++ b/neonView/CompetitionFilter_view/CompetitionFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CompetitionFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/CompetitionPreview_view/CompetitionPreview_view.aod b/neonView/CompetitionPreview_view/CompetitionPreview_view.aod index 789733a343d..9c39a12fda8 100644 --- a/neonView/CompetitionPreview_view/CompetitionPreview_view.aod +++ b/neonView/CompetitionPreview_view/CompetitionPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CompetitionPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ContactEdit_view/ContactEdit_view.aod b/neonView/ContactEdit_view/ContactEdit_view.aod index 1ba399ccaff..b085859245f 100644 --- a/neonView/ContactEdit_view/ContactEdit_view.aod +++ b/neonView/ContactEdit_view/ContactEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContactEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ContactList_view/ContactList_view.aod b/neonView/ContactList_view/ContactList_view.aod index 182533d0196..f9394214646 100644 --- a/neonView/ContactList_view/ContactList_view.aod +++ b/neonView/ContactList_view/ContactList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContactList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ContactTitledList_view/ContactTitledList_view.aod b/neonView/ContactTitledList_view/ContactTitledList_view.aod index 9e0050c6a15..c980c83ab37 100644 --- a/neonView/ContactTitledList_view/ContactTitledList_view.aod +++ b/neonView/ContactTitledList_view/ContactTitledList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContactTitledList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ContractEdit_view/ContractEdit_view.aod b/neonView/ContractEdit_view/ContractEdit_view.aod index 1721da28721..67d330efcd5 100644 --- a/neonView/ContractEdit_view/ContractEdit_view.aod +++ b/neonView/ContractEdit_view/ContractEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContractEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ContractFilter_view/ContractFilter_view.aod b/neonView/ContractFilter_view/ContractFilter_view.aod index b43c2f7fa56..08b326cef29 100644 --- a/neonView/ContractFilter_view/ContractFilter_view.aod +++ b/neonView/ContractFilter_view/ContractFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContractFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ContractMain_view/ContractMain_view.aod b/neonView/ContractMain_view/ContractMain_view.aod index cc12eb81624..ccf52a59c9a 100644 --- a/neonView/ContractMain_view/ContractMain_view.aod +++ b/neonView/ContractMain_view/ContractMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContractMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ContractPreview_view/ContractPreview_view.aod b/neonView/ContractPreview_view/ContractPreview_view.aod index d825a03fee1..f7fad6eb705 100644 --- a/neonView/ContractPreview_view/ContractPreview_view.aod +++ b/neonView/ContractPreview_view/ContractPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContractPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CountriesPreview_view/CountriesPreview_view.aod b/neonView/CountriesPreview_view/CountriesPreview_view.aod index 7b61d0e9d93..e7c4eb2ccb9 100644 --- a/neonView/CountriesPreview_view/CountriesPreview_view.aod +++ b/neonView/CountriesPreview_view/CountriesPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CountriesPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CountriesTable_view/CountriesTable_view.aod b/neonView/CountriesTable_view/CountriesTable_view.aod index be33402167b..15bdadcf67b 100644 --- a/neonView/CountriesTable_view/CountriesTable_view.aod +++ b/neonView/CountriesTable_view/CountriesTable_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CountriesTable_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DSGVODrawer_view/DSGVODrawer_view.aod b/neonView/DSGVODrawer_view/DSGVODrawer_view.aod index 867b93a2dd9..ae073283600 100644 --- a/neonView/DSGVODrawer_view/DSGVODrawer_view.aod +++ b/neonView/DSGVODrawer_view/DSGVODrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVODrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DSGVOEdit_view/DSGVOEdit_view.aod b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod index b10ce1465ad..7a2e36dcd0d 100644 --- a/neonView/DSGVOEdit_view/DSGVOEdit_view.aod +++ b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVOEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/DSGVOFilter_view/DSGVOFilter_view.aod b/neonView/DSGVOFilter_view/DSGVOFilter_view.aod index 0be528e00a0..3129f4f17be 100644 --- a/neonView/DSGVOFilter_view/DSGVOFilter_view.aod +++ b/neonView/DSGVOFilter_view/DSGVOFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVOFilter_view</name> <title>Data Privacy</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod b/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod index 322834185a8..5adffc8c9c2 100644 --- a/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod +++ b/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVOInfoEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod b/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod index 16b162e36e1..658b5784674 100644 --- a/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod +++ b/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVOPreviewAnonym_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/DSGVOPreview_view/DSGVOPreview_view.aod b/neonView/DSGVOPreview_view/DSGVOPreview_view.aod index 89ff9d67426..f39f20c924e 100644 --- a/neonView/DSGVOPreview_view/DSGVOPreview_view.aod +++ b/neonView/DSGVOPreview_view/DSGVOPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVOPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DSGVOReport_view/DSGVOReport_view.aod b/neonView/DSGVOReport_view/DSGVOReport_view.aod index 3835fcb15b8..08abe1b52b4 100644 --- a/neonView/DSGVOReport_view/DSGVOReport_view.aod +++ b/neonView/DSGVOReport_view/DSGVOReport_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVOReport_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod index dcba6ff2813..e44c460bd85 100644 --- a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod +++ b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DefaultAdminView_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/DefaultLookup_view/DefaultLookup_view.aod b/neonView/DefaultLookup_view/DefaultLookup_view.aod index 13bbd8a0990..70e53f68709 100644 --- a/neonView/DefaultLookup_view/DefaultLookup_view.aod +++ b/neonView/DefaultLookup_view/DefaultLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DefaultLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod b/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod index 88a27877074..9c24230a735 100644 --- a/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod +++ b/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DescriptionTranslationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod b/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod index 4d86b266dc5..004c88356e0 100644 --- a/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod +++ b/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DescriptionTranslationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod b/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod index 1e491d1379d..11b5fc210b2 100644 --- a/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod +++ b/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DescriptionTranslationPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/DistrictEdit_view/DistrictEdit_view.aod b/neonView/DistrictEdit_view/DistrictEdit_view.aod index ef598ae5665..ba7b2fa93c0 100644 --- a/neonView/DistrictEdit_view/DistrictEdit_view.aod +++ b/neonView/DistrictEdit_view/DistrictEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictEdit_view</name> <title>Responsible Districts</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DistrictFilter_view/DistrictFilter_view.aod b/neonView/DistrictFilter_view/DistrictFilter_view.aod index 0ae033d2346..d60e76db262 100644 --- a/neonView/DistrictFilter_view/DistrictFilter_view.aod +++ b/neonView/DistrictFilter_view/DistrictFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/DistrictList_view/DistrictList_view.aod b/neonView/DistrictList_view/DistrictList_view.aod index 161c81303a5..45225faadb9 100644 --- a/neonView/DistrictList_view/DistrictList_view.aod +++ b/neonView/DistrictList_view/DistrictList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictList_view</name> <title>Responsible Districts</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DistrictMain_view/DistrictMain_view.aod b/neonView/DistrictMain_view/DistrictMain_view.aod index 2babd2f4b0b..f6d39a27cd5 100644 --- a/neonView/DistrictMain_view/DistrictMain_view.aod +++ b/neonView/DistrictMain_view/DistrictMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DistrictPreview_view/DistrictPreview_view.aod b/neonView/DistrictPreview_view/DistrictPreview_view.aod index 4f778e75402..8b7243f1f4e 100644 --- a/neonView/DistrictPreview_view/DistrictPreview_view.aod +++ b/neonView/DistrictPreview_view/DistrictPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod b/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod index cab52b315c3..fc2f1135c99 100644 --- a/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod +++ b/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictResponsibleList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod b/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod index 9e04ed897b7..a6f18a1dfd0 100644 --- a/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod +++ b/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictResponsibleMultiEdit_view</name> <title></title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod b/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod index c1deba893d6..d7166fc9276 100644 --- a/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod +++ b/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictResponsiblePreviewList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DocumentDrawer_view/DocumentDrawer_view.aod b/neonView/DocumentDrawer_view/DocumentDrawer_view.aod index 330a76e993c..95a6fb06859 100644 --- a/neonView/DocumentDrawer_view/DocumentDrawer_view.aod +++ b/neonView/DocumentDrawer_view/DocumentDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DocumentEdit_view/DocumentEdit_view.aod b/neonView/DocumentEdit_view/DocumentEdit_view.aod index 987ec495b6d..b6d671776a6 100644 --- a/neonView/DocumentEdit_view/DocumentEdit_view.aod +++ b/neonView/DocumentEdit_view/DocumentEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/DocumentFilter_view/DocumentFilter_view.aod b/neonView/DocumentFilter_view/DocumentFilter_view.aod index 76cd35ba1dd..aa4273cd64a 100644 --- a/neonView/DocumentFilter_view/DocumentFilter_view.aod +++ b/neonView/DocumentFilter_view/DocumentFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/DocumentList_view/DocumentList_view.aod b/neonView/DocumentList_view/DocumentList_view.aod index 01bb0076767..b3f9d671bc1 100644 --- a/neonView/DocumentList_view/DocumentList_view.aod +++ b/neonView/DocumentList_view/DocumentList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentList_view</name> <title>Errorlogs</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentMultipleEdit_view/DocumentMultipleEdit_view.aod b/neonView/DocumentMultipleEdit_view/DocumentMultipleEdit_view.aod index f7e201e275a..150915177ec 100644 --- a/neonView/DocumentMultipleEdit_view/DocumentMultipleEdit_view.aod +++ b/neonView/DocumentMultipleEdit_view/DocumentMultipleEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentMultipleEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DocumentPreview_view/DocumentPreview_view.aod b/neonView/DocumentPreview_view/DocumentPreview_view.aod index d0d0b982594..a6a451190e3 100644 --- a/neonView/DocumentPreview_view/DocumentPreview_view.aod +++ b/neonView/DocumentPreview_view/DocumentPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod b/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod index c21e2204ae0..9f8b7600fd0 100644 --- a/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod +++ b/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplateEdit_view</name> <title>Document Template</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod b/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod index fae9c9be8a7..c72049158c8 100644 --- a/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod +++ b/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplateFilterSmall_view</name> <title>Document Template</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod b/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod index 7eadad0864f..06232462d05 100644 --- a/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod +++ b/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplateFilter_view</name> <title>Document Template</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplateLinkList_view/DocumentTemplateLinkList_view.aod b/neonView/DocumentTemplateLinkList_view/DocumentTemplateLinkList_view.aod index 3358d6c6e41..7838782e146 100644 --- a/neonView/DocumentTemplateLinkList_view/DocumentTemplateLinkList_view.aod +++ b/neonView/DocumentTemplateLinkList_view/DocumentTemplateLinkList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplateLinkList_view</name> <title>Attachments</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplateLinkMultiEdit_view/DocumentTemplateLinkMultiEdit_view.aod b/neonView/DocumentTemplateLinkMultiEdit_view/DocumentTemplateLinkMultiEdit_view.aod index 58a2713ae97..daa83967839 100644 --- a/neonView/DocumentTemplateLinkMultiEdit_view/DocumentTemplateLinkMultiEdit_view.aod +++ b/neonView/DocumentTemplateLinkMultiEdit_view/DocumentTemplateLinkMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplateLinkMultiEdit_view</name> <title>Attachments</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplatePlaceOfUseList_view/DocumentTemplatePlaceOfUseList_view.aod b/neonView/DocumentTemplatePlaceOfUseList_view/DocumentTemplatePlaceOfUseList_view.aod index 1ed442ea703..0dd0dd675f1 100644 --- a/neonView/DocumentTemplatePlaceOfUseList_view/DocumentTemplatePlaceOfUseList_view.aod +++ b/neonView/DocumentTemplatePlaceOfUseList_view/DocumentTemplatePlaceOfUseList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplatePlaceOfUseList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DocumentTemplatePlaceOfUseMultiEdit_view/DocumentTemplatePlaceOfUseMultiEdit_view.aod b/neonView/DocumentTemplatePlaceOfUseMultiEdit_view/DocumentTemplatePlaceOfUseMultiEdit_view.aod index 63f2c9dd137..9e422e2b62e 100644 --- a/neonView/DocumentTemplatePlaceOfUseMultiEdit_view/DocumentTemplatePlaceOfUseMultiEdit_view.aod +++ b/neonView/DocumentTemplatePlaceOfUseMultiEdit_view/DocumentTemplatePlaceOfUseMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplatePlaceOfUseMultiEdit_view</name> <title>Documenttemplate Place Of Use</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplatePlaceOfUseTitledList_view/DocumentTemplatePlaceOfUseTitledList_view.aod b/neonView/DocumentTemplatePlaceOfUseTitledList_view/DocumentTemplatePlaceOfUseTitledList_view.aod index c625c14dd3c..bf02efdec24 100644 --- a/neonView/DocumentTemplatePlaceOfUseTitledList_view/DocumentTemplatePlaceOfUseTitledList_view.aod +++ b/neonView/DocumentTemplatePlaceOfUseTitledList_view/DocumentTemplatePlaceOfUseTitledList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplatePlaceOfUseTitledList_view</name> <title>Documenttemplate Place Of Use</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplatePreview_view/DocumentTemplatePreview_view.aod b/neonView/DocumentTemplatePreview_view/DocumentTemplatePreview_view.aod index 5c4100bd637..7ce305ce181 100644 --- a/neonView/DocumentTemplatePreview_view/DocumentTemplatePreview_view.aod +++ b/neonView/DocumentTemplatePreview_view/DocumentTemplatePreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplatePreview_view</name> <title>Document Template</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplateTypeCategoryFilter_view/DocumentTemplateTypeCategoryFilter_view.aod b/neonView/DocumentTemplateTypeCategoryFilter_view/DocumentTemplateTypeCategoryFilter_view.aod index 8cd2d326b93..8412c83ab2b 100644 --- a/neonView/DocumentTemplateTypeCategoryFilter_view/DocumentTemplateTypeCategoryFilter_view.aod +++ b/neonView/DocumentTemplateTypeCategoryFilter_view/DocumentTemplateTypeCategoryFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplateTypeCategoryFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DocumentWithIdFilter_view/DocumentWithIdFilter_view.aod b/neonView/DocumentWithIdFilter_view/DocumentWithIdFilter_view.aod index 3cafd27757d..8021657957e 100644 --- a/neonView/DocumentWithIdFilter_view/DocumentWithIdFilter_view.aod +++ b/neonView/DocumentWithIdFilter_view/DocumentWithIdFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentWithIdFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicateScannerEdit_view/DuplicateScannerEdit_view.aod b/neonView/DuplicateScannerEdit_view/DuplicateScannerEdit_view.aod index 684c65d5dc6..a47a045257e 100644 --- a/neonView/DuplicateScannerEdit_view/DuplicateScannerEdit_view.aod +++ b/neonView/DuplicateScannerEdit_view/DuplicateScannerEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicateScannerEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod b/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod index e70f21cbb44..922b7beb129 100644 --- a/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod +++ b/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicateScannerFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicateScannerPreview_view/DuplicateScannerPreview_view.aod b/neonView/DuplicateScannerPreview_view/DuplicateScannerPreview_view.aod index a14a89ccf1b..e1d655cdbf3 100644 --- a/neonView/DuplicateScannerPreview_view/DuplicateScannerPreview_view.aod +++ b/neonView/DuplicateScannerPreview_view/DuplicateScannerPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicateScannerPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicateScannerResultFieldConfigEdit_view/DuplicateScannerResultFieldConfigEdit_view.aod b/neonView/DuplicateScannerResultFieldConfigEdit_view/DuplicateScannerResultFieldConfigEdit_view.aod index 576c3d38332..1689d8f9fc3 100644 --- a/neonView/DuplicateScannerResultFieldConfigEdit_view/DuplicateScannerResultFieldConfigEdit_view.aod +++ b/neonView/DuplicateScannerResultFieldConfigEdit_view/DuplicateScannerResultFieldConfigEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicateScannerResultFieldConfigEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicatesOverview_view/DuplicatesOverview_view.aod b/neonView/DuplicatesOverview_view/DuplicatesOverview_view.aod index c019d199c21..0f2a6ce1c5f 100644 --- a/neonView/DuplicatesOverview_view/DuplicatesOverview_view.aod +++ b/neonView/DuplicatesOverview_view/DuplicatesOverview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicatesOverview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicatesUnrelatedCluster_view/DuplicatesUnrelatedCluster_view.aod b/neonView/DuplicatesUnrelatedCluster_view/DuplicatesUnrelatedCluster_view.aod index f0ead2ebdc8..fd2c40f8a36 100644 --- a/neonView/DuplicatesUnrelatedCluster_view/DuplicatesUnrelatedCluster_view.aod +++ b/neonView/DuplicatesUnrelatedCluster_view/DuplicatesUnrelatedCluster_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicatesUnrelatedCluster_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicatesUnrelatedOrganisationFilter_view/DuplicatesUnrelatedOrganisationFilter_view.aod b/neonView/DuplicatesUnrelatedOrganisationFilter_view/DuplicatesUnrelatedOrganisationFilter_view.aod index 9a595daa534..d7fafa1ae89 100644 --- a/neonView/DuplicatesUnrelatedOrganisationFilter_view/DuplicatesUnrelatedOrganisationFilter_view.aod +++ b/neonView/DuplicatesUnrelatedOrganisationFilter_view/DuplicatesUnrelatedOrganisationFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicatesUnrelatedOrganisationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicatesUnrelatedPersonFilter_view/DuplicatesUnrelatedPersonFilter_view.aod b/neonView/DuplicatesUnrelatedPersonFilter_view/DuplicatesUnrelatedPersonFilter_view.aod index 4ba98a70931..3e9a45ecbbb 100644 --- a/neonView/DuplicatesUnrelatedPersonFilter_view/DuplicatesUnrelatedPersonFilter_view.aod +++ b/neonView/DuplicatesUnrelatedPersonFilter_view/DuplicatesUnrelatedPersonFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicatesUnrelatedPersonFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmailEdit_view/EmailEdit_view.aod b/neonView/EmailEdit_view/EmailEdit_view.aod index 0606c5788a5..4d54a0c3938 100644 --- a/neonView/EmailEdit_view/EmailEdit_view.aod +++ b/neonView/EmailEdit_view/EmailEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmailEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/EmployeeEdit_view/EmployeeEdit_view.aod b/neonView/EmployeeEdit_view/EmployeeEdit_view.aod index 8ddd860527f..1042e95db5c 100644 --- a/neonView/EmployeeEdit_view/EmployeeEdit_view.aod +++ b/neonView/EmployeeEdit_view/EmployeeEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeeFilter_view/EmployeeFilter_view.aod b/neonView/EmployeeFilter_view/EmployeeFilter_view.aod index 7cb12f6d37d..e26d5d132de 100644 --- a/neonView/EmployeeFilter_view/EmployeeFilter_view.aod +++ b/neonView/EmployeeFilter_view/EmployeeFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/EmployeeLookup_view/EmployeeLookup_view.aod b/neonView/EmployeeLookup_view/EmployeeLookup_view.aod index a213204aaa0..3e33d83a90b 100644 --- a/neonView/EmployeeLookup_view/EmployeeLookup_view.aod +++ b/neonView/EmployeeLookup_view/EmployeeLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeeMain_view/EmployeeMain_view.aod b/neonView/EmployeeMain_view/EmployeeMain_view.aod index 94d73c9fd2e..b997a79e7c2 100644 --- a/neonView/EmployeeMain_view/EmployeeMain_view.aod +++ b/neonView/EmployeeMain_view/EmployeeMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeePassword_view/EmployeePassword_view.aod b/neonView/EmployeePassword_view/EmployeePassword_view.aod index 9309f0b748f..24cd4cab6c1 100644 --- a/neonView/EmployeePassword_view/EmployeePassword_view.aod +++ b/neonView/EmployeePassword_view/EmployeePassword_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeePassword_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/EmployeePermission_view/EmployeePermission_view.aod b/neonView/EmployeePermission_view/EmployeePermission_view.aod index 6bfd87a53c7..a25dbbf2be7 100644 --- a/neonView/EmployeePermission_view/EmployeePermission_view.aod +++ b/neonView/EmployeePermission_view/EmployeePermission_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeePermission_view</name> <title>Permission</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/EmployeePreview_view/EmployeePreview_view.aod b/neonView/EmployeePreview_view/EmployeePreview_view.aod index 576e510759e..0e0ae8dfbaa 100644 --- a/neonView/EmployeePreview_view/EmployeePreview_view.aod +++ b/neonView/EmployeePreview_view/EmployeePreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod b/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod index a7b67bdd57e..f50141d69c2 100644 --- a/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod +++ b/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeRoleEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod index 92618fbb9cb..9fdfc39524c 100644 --- a/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod +++ b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeRoleFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod b/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod index 28e2345dee0..675bac8f95f 100644 --- a/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod +++ b/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeRoleGenericEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod b/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod index 9a0bad8cead..284bcdb7387 100644 --- a/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod +++ b/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeTokenEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod b/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod index 852a0eed7cc..166cc2ab1e6 100644 --- a/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod +++ b/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeTokenFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod b/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod index eae6477e9a3..1738cd09ed8 100644 --- a/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod +++ b/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplateEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod b/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod index c76b3911ada..28c2f1ac055 100644 --- a/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod +++ b/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplateFieldList_view</name> <title>Field and Position</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod b/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod index 32fe782b9ba..985ff2fd258 100644 --- a/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod +++ b/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplateFieldMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod b/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod index 8291821119d..71913d29b93 100644 --- a/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod +++ b/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplateFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod b/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod index 45306dbb723..122ea2ead58 100644 --- a/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod +++ b/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplatePlaceOfUseList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod b/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod index 3bb9efc85f4..23b08531c91 100644 --- a/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod +++ b/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplatePlaceOfUseMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod b/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod index 06bcfe9edfd..0ba6f946034 100644 --- a/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod +++ b/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplatePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod index 3886dffb7b0..439c760013d 100644 --- a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod +++ b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplateSelectionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/FacebookTimeline_view/FacebookTimeline_view.aod b/neonView/FacebookTimeline_view/FacebookTimeline_view.aod index c9270765ff0..63c8a443c7d 100644 --- a/neonView/FacebookTimeline_view/FacebookTimeline_view.aod +++ b/neonView/FacebookTimeline_view/FacebookTimeline_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>FacebookTimeline_view</name> <title>Facebook</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/FavoriteFilter_view/FavoriteFilter_view.aod b/neonView/FavoriteFilter_view/FavoriteFilter_view.aod index 61070f4ce2c..9e9c42e217c 100644 --- a/neonView/FavoriteFilter_view/FavoriteFilter_view.aod +++ b/neonView/FavoriteFilter_view/FavoriteFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>FavoriteFilter_view</name> <title>FavoriteFilter_view</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/FavoritePreview_view/FavoritePreview_view.aod b/neonView/FavoritePreview_view/FavoritePreview_view.aod index 25f98d8ef42..c022ed08740 100644 --- a/neonView/FavoritePreview_view/FavoritePreview_view.aod +++ b/neonView/FavoritePreview_view/FavoritePreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>FavoritePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ForecastDrawer_view/ForecastDrawer_view.aod b/neonView/ForecastDrawer_view/ForecastDrawer_view.aod index ef5388b8425..552f0439fb7 100644 --- a/neonView/ForecastDrawer_view/ForecastDrawer_view.aod +++ b/neonView/ForecastDrawer_view/ForecastDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ForecastDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ForecastEdit_view/ForecastEdit_view.aod b/neonView/ForecastEdit_view/ForecastEdit_view.aod index 28debe56d0f..9934ef36ef5 100644 --- a/neonView/ForecastEdit_view/ForecastEdit_view.aod +++ b/neonView/ForecastEdit_view/ForecastEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ForecastEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/ForecastFilter_view/ForecastFilter_view.aod b/neonView/ForecastFilter_view/ForecastFilter_view.aod index ffa08904f6b..b048b1260ed 100644 --- a/neonView/ForecastFilter_view/ForecastFilter_view.aod +++ b/neonView/ForecastFilter_view/ForecastFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ForecastFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ForecastPreview_view/ForecastPreview_view.aod b/neonView/ForecastPreview_view/ForecastPreview_view.aod index f13e83a74c9..229641c2b83 100644 --- a/neonView/ForecastPreview_view/ForecastPreview_view.aod +++ b/neonView/ForecastPreview_view/ForecastPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ForecastPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod b/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod index 4bcc0eda9db..fcf56cc9a05 100644 --- a/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod +++ b/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ImportFieldEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/ImportFieldFilterMapping_view/ImportFieldFilterMapping_view.aod b/neonView/ImportFieldFilterMapping_view/ImportFieldFilterMapping_view.aod index 29a4e8be88b..b9d17d1d3cd 100644 --- a/neonView/ImportFieldFilterMapping_view/ImportFieldFilterMapping_view.aod +++ b/neonView/ImportFieldFilterMapping_view/ImportFieldFilterMapping_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ImportFieldFilterMapping_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod b/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod index ee181575792..2528d1aea75 100644 --- a/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod +++ b/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ImportFieldFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/IndexSearchView/IndexSearchView.aod b/neonView/IndexSearchView/IndexSearchView.aod index c1a8c71fd03..e1b5c1f4128 100644 --- a/neonView/IndexSearchView/IndexSearchView.aod +++ b/neonView/IndexSearchView/IndexSearchView.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>IndexSearchView</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> diff --git a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod index 1e906c4ad40..f273fb416fe 100644 --- a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod +++ b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordAttributeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod index 9072b6df51f..fdbdca90e0e 100644 --- a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod +++ b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordAttributeFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod b/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod index 3c349095ff8..b6ce5f6117a 100644 --- a/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod +++ b/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordAttributeRelationRows_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod b/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod index 35a025815b8..7d6ae096e0e 100644 --- a/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod +++ b/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordAttriubteRelationTitled_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod index d759384a706..d272c794189 100644 --- a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod +++ b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordEntryEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod index 874bbf3c62f..8f78ef984bb 100644 --- a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod +++ b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordEntryFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod b/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod index 75d472d2485..e73858d8214 100644 --- a/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod +++ b/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordEntryPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod b/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod index 8982a135812..9e22618d2ed 100644 --- a/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod +++ b/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeDiscussionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod b/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod index e98045a42c2..a63d8a4035d 100644 --- a/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod +++ b/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeDiscussionPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod b/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod index ec4ef34471b..4a2b372258a 100644 --- a/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod +++ b/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeDiscussionTree_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod b/neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod index 23ed8823319..a54f0dfcf89 100644 --- a/neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod +++ b/neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeLinkActionList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod b/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod index 34e51015d71..7f554eb698f 100644 --- a/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod +++ b/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeLinkEdit_view</name> <title>Links</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod b/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod index 49df3025f21..2750e534955 100644 --- a/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod +++ b/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeLinkLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod b/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod index 0b3448b225c..7d227e4aedf 100644 --- a/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod +++ b/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeLinkMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod b/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod index 2318cac2885..243f07da317 100644 --- a/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod +++ b/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeManagementContent_view</name> <title>Content</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod b/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod index 43c26e82585..76016ffd829 100644 --- a/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod +++ b/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeManagementDetails_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod b/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod index 5d41560c646..59ba4694d9e 100644 --- a/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod +++ b/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeManagementEdit_view</name> <title>Knowledge</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod index 69bb0a57328..1a3e3cc6271 100644 --- a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod +++ b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeManagementFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod b/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod index 8b9981d87da..4117b0b5a16 100644 --- a/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod +++ b/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeManagementLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod b/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod index dd357ba38b8..ce38d5f1f86 100644 --- a/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod +++ b/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeManagementMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod b/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod index e8ae6cd155b..f7f259faa36 100644 --- a/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod +++ b/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeManagementPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod b/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod index ef4ea428e85..d4f7b37a1a2 100644 --- a/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod +++ b/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeManagementRole_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod b/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod index 0dab386afeb..adf88a24fbe 100644 --- a/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod +++ b/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeManagementTimeline_view</name> <title>Newsfeed (Preview)</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod b/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod index e0334d035e7..75fc94ad122 100644 --- a/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod +++ b/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeNewsFeed_view</name> <title>Newsfeed (Complete Article)</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod b/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod index 5d6473c3512..a73902b9957 100644 --- a/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod +++ b/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeRoleEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod b/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod index 15748243a68..da077b8269e 100644 --- a/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod +++ b/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeTagList_GenMult_view</name> <title>Tags</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod b/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod index 61be3f1b770..101604a2f8f 100644 --- a/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod +++ b/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KnowledgeTagList_view</name> <title>Tags</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/LeadFilter_view/LeadFilter_view.aod b/neonView/LeadFilter_view/LeadFilter_view.aod index 75dc1286e76..bf7495c315c 100644 --- a/neonView/LeadFilter_view/LeadFilter_view.aod +++ b/neonView/LeadFilter_view/LeadFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/LeadLogFilterDrawer_view/LeadLogFilterDrawer_view.aod b/neonView/LeadLogFilterDrawer_view/LeadLogFilterDrawer_view.aod index 1463636384e..db90a45194a 100644 --- a/neonView/LeadLogFilterDrawer_view/LeadLogFilterDrawer_view.aod +++ b/neonView/LeadLogFilterDrawer_view/LeadLogFilterDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadLogFilterDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/LeadLogFilter_view/LeadLogFilter_view.aod b/neonView/LeadLogFilter_view/LeadLogFilter_view.aod index 7faeebe7aac..b20013103d1 100644 --- a/neonView/LeadLogFilter_view/LeadLogFilter_view.aod +++ b/neonView/LeadLogFilter_view/LeadLogFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadLogFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/LeadLogPreview_view/LeadLogPreview_view.aod b/neonView/LeadLogPreview_view/LeadLogPreview_view.aod index 1db69ba7768..60042c59972 100644 --- a/neonView/LeadLogPreview_view/LeadLogPreview_view.aod +++ b/neonView/LeadLogPreview_view/LeadLogPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadLogPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/LeadPreview_view/LeadPreview_view.aod b/neonView/LeadPreview_view/LeadPreview_view.aod index dcd3b235382..1398c08aa47 100644 --- a/neonView/LeadPreview_view/LeadPreview_view.aod +++ b/neonView/LeadPreview_view/LeadPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadPreview_view</name> <title>Lead preview</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/LeadTempFilter_view/LeadTempFilter_view.aod b/neonView/LeadTempFilter_view/LeadTempFilter_view.aod index 8b51e246b49..942e0084fb6 100644 --- a/neonView/LeadTempFilter_view/LeadTempFilter_view.aod +++ b/neonView/LeadTempFilter_view/LeadTempFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadTempFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod b/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod index 32007efecfe..f586b8f0c94 100644 --- a/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod +++ b/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportDocEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/LeadimportEdit_view/LeadimportEdit_view.aod b/neonView/LeadimportEdit_view/LeadimportEdit_view.aod index 317814aa5ad..349c644cebf 100644 --- a/neonView/LeadimportEdit_view/LeadimportEdit_view.aod +++ b/neonView/LeadimportEdit_view/LeadimportEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/LeadimportFilter_view/LeadimportFilter_view.aod b/neonView/LeadimportFilter_view/LeadimportFilter_view.aod index 111d9ee2c1c..3593bf9b430 100644 --- a/neonView/LeadimportFilter_view/LeadimportFilter_view.aod +++ b/neonView/LeadimportFilter_view/LeadimportFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/LeadimportLeadFilter_view/LeadimportLeadFilter_view.aod b/neonView/LeadimportLeadFilter_view/LeadimportLeadFilter_view.aod index 5d7859d4cc1..3712b09ea7a 100644 --- a/neonView/LeadimportLeadFilter_view/LeadimportLeadFilter_view.aod +++ b/neonView/LeadimportLeadFilter_view/LeadimportLeadFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportLeadFilter_view</name> <title>Transfer data</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/LeadimportLeadTempFilter_view/LeadimportLeadTempFilter_view.aod b/neonView/LeadimportLeadTempFilter_view/LeadimportLeadTempFilter_view.aod index 6ec6b4bb48e..43ffd5910d6 100644 --- a/neonView/LeadimportLeadTempFilter_view/LeadimportLeadTempFilter_view.aod +++ b/neonView/LeadimportLeadTempFilter_view/LeadimportLeadTempFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportLeadTempFilter_view</name> <title>Import Daten</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/LeadimportLog_view/LeadimportLog_view.aod b/neonView/LeadimportLog_view/LeadimportLog_view.aod index 950120edca9..f86a57699c0 100644 --- a/neonView/LeadimportLog_view/LeadimportLog_view.aod +++ b/neonView/LeadimportLog_view/LeadimportLog_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportLog_view</name> <title>Logs</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/LeadimportMain_view/LeadimportMain_view.aod b/neonView/LeadimportMain_view/LeadimportMain_view.aod index 3cbee3d28bf..e544314e6ee 100644 --- a/neonView/LeadimportMain_view/LeadimportMain_view.aod +++ b/neonView/LeadimportMain_view/LeadimportMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/LeadimportMappingAssistantFilter_view/LeadimportMappingAssistantFilter_view.aod b/neonView/LeadimportMappingAssistantFilter_view/LeadimportMappingAssistantFilter_view.aod index 0a32f33679c..631a0af5766 100644 --- a/neonView/LeadimportMappingAssistantFilter_view/LeadimportMappingAssistantFilter_view.aod +++ b/neonView/LeadimportMappingAssistantFilter_view/LeadimportMappingAssistantFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportMappingAssistantFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/LeadimportPreview_view/LeadimportPreview_view.aod b/neonView/LeadimportPreview_view/LeadimportPreview_view.aod index 4e376d9f72a..51dde1c3ce2 100644 --- a/neonView/LeadimportPreview_view/LeadimportPreview_view.aod +++ b/neonView/LeadimportPreview_view/LeadimportPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/LetterEdit_view/LetterEdit_view.aod b/neonView/LetterEdit_view/LetterEdit_view.aod index 5f77590bb26..dedcb0a8582 100644 --- a/neonView/LetterEdit_view/LetterEdit_view.aod +++ b/neonView/LetterEdit_view/LetterEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LetterEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod b/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod index 6bb0a1766a8..9e7b7028a13 100644 --- a/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod +++ b/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LetterRecipientEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod b/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod index 2527705649e..2f84db092a8 100644 --- a/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod +++ b/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LetterRecipientFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/LogHistoryFilterDrawer_view/LogHistoryFilterDrawer_view.aod b/neonView/LogHistoryFilterDrawer_view/LogHistoryFilterDrawer_view.aod index 0c329f2bd4d..bd094e6c427 100644 --- a/neonView/LogHistoryFilterDrawer_view/LogHistoryFilterDrawer_view.aod +++ b/neonView/LogHistoryFilterDrawer_view/LogHistoryFilterDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LogHistoryFilterDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod b/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod index 046d2f8787f..94171bdc4e4 100644 --- a/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod +++ b/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LogHistoryFilter_view</name> <title>Log</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/LogHistoryPreview_view/LogHistoryPreview_view.aod b/neonView/LogHistoryPreview_view/LogHistoryPreview_view.aod index 3ea10300b8e..3da1a6d76e7 100644 --- a/neonView/LogHistoryPreview_view/LogHistoryPreview_view.aod +++ b/neonView/LogHistoryPreview_view/LogHistoryPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LogHistoryPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod b/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod index 8fe83127e05..4f1e6c027e8 100644 --- a/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod +++ b/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MarketingWorkflowLauncherEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/MemberDrawer_view/MemberDrawer_view.aod b/neonView/MemberDrawer_view/MemberDrawer_view.aod index cfe7ea4229c..945f0f153b3 100644 --- a/neonView/MemberDrawer_view/MemberDrawer_view.aod +++ b/neonView/MemberDrawer_view/MemberDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MemberDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/MemberEdit_view/MemberEdit_view.aod b/neonView/MemberEdit_view/MemberEdit_view.aod index d87d067090a..68fe23e3d36 100644 --- a/neonView/MemberEdit_view/MemberEdit_view.aod +++ b/neonView/MemberEdit_view/MemberEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MemberEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/MemberFilter_view/MemberFilter_view.aod b/neonView/MemberFilter_view/MemberFilter_view.aod index 1d4faccbdb0..b3757f6e68c 100644 --- a/neonView/MemberFilter_view/MemberFilter_view.aod +++ b/neonView/MemberFilter_view/MemberFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MemberFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ModuleTree_view/ModuleTree_view.aod b/neonView/ModuleTree_view/ModuleTree_view.aod index 837a6f7608c..28e2e351e68 100644 --- a/neonView/ModuleTree_view/ModuleTree_view.aod +++ b/neonView/ModuleTree_view/ModuleTree_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ModuleTree_view</name> <title>Tree</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod b/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod index 2c2b62c43e2..e8375e035d4 100644 --- a/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod +++ b/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MyDashboardScoreCard_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> diff --git a/neonView/MyTurnoverForecastScoreCard_view/MyTurnoverForecastScoreCard_view.aod b/neonView/MyTurnoverForecastScoreCard_view/MyTurnoverForecastScoreCard_view.aod index 7285d5d8276..6aa096872dd 100644 --- a/neonView/MyTurnoverForecastScoreCard_view/MyTurnoverForecastScoreCard_view.aod +++ b/neonView/MyTurnoverForecastScoreCard_view/MyTurnoverForecastScoreCard_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MyTurnoverForecastScoreCard_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> diff --git a/neonView/NotificationFilter_view/NotificationFilter_view.aod b/neonView/NotificationFilter_view/NotificationFilter_view.aod index 26ee281b76c..06f0c1d66ad 100644 --- a/neonView/NotificationFilter_view/NotificationFilter_view.aod +++ b/neonView/NotificationFilter_view/NotificationFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>NotificationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/NotificationPreview_view/NotificationPreview_view.aod b/neonView/NotificationPreview_view/NotificationPreview_view.aod index e67f2f56990..dab06ac7ddc 100644 --- a/neonView/NotificationPreview_view/NotificationPreview_view.aod +++ b/neonView/NotificationPreview_view/NotificationPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>NotificationPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod index e354b3573f2..1d293530d8a 100644 --- a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod +++ b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ObjectRelationTypeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod b/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod index 9e6fa80dafd..cfec0b8f514 100644 --- a/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod +++ b/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ObjectRelationTypeFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod index 922ada4bc69..70ad4cf406d 100644 --- a/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod +++ b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ObjectTreeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod b/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod index 3497cce9b4d..b846b67b19f 100644 --- a/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod +++ b/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ObjectTreeFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod b/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod index 667dadc02c6..8e3b80d75be 100644 --- a/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod +++ b/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferCoverLetter_view</name> <title>Cover letter</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OfferDrawer_view/OfferDrawer_view.aod b/neonView/OfferDrawer_view/OfferDrawer_view.aod index b6445f06f71..ad0f760504d 100644 --- a/neonView/OfferDrawer_view/OfferDrawer_view.aod +++ b/neonView/OfferDrawer_view/OfferDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OfferEdit_view/OfferEdit_view.aod b/neonView/OfferEdit_view/OfferEdit_view.aod index 5bacbaaaf32..3d4de5a7dc5 100644 --- a/neonView/OfferEdit_view/OfferEdit_view.aod +++ b/neonView/OfferEdit_view/OfferEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferEdit_view</name> <title>Offer</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod index 3e058b7c388..d53c98d2e7d 100644 --- a/neonView/OfferFilter_view/OfferFilter_view.aod +++ b/neonView/OfferFilter_view/OfferFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/OfferMain_view/OfferMain_view.aod b/neonView/OfferMain_view/OfferMain_view.aod index 1c956c7b763..ef774fd7b7c 100644 --- a/neonView/OfferMain_view/OfferMain_view.aod +++ b/neonView/OfferMain_view/OfferMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod b/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod index 44610fe33c4..399345116e2 100644 --- a/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod +++ b/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferPreviewMultiple_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OfferPreview_view/OfferPreview_view.aod b/neonView/OfferPreview_view/OfferPreview_view.aod index 7b78909905a..5cff758218d 100644 --- a/neonView/OfferPreview_view/OfferPreview_view.aod +++ b/neonView/OfferPreview_view/OfferPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OfferReport_view/OfferReport_view.aod b/neonView/OfferReport_view/OfferReport_view.aod index 6ac54d910d1..043f3d17d2b 100644 --- a/neonView/OfferReport_view/OfferReport_view.aod +++ b/neonView/OfferReport_view/OfferReport_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferReport_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OfferitemEdit_view/OfferitemEdit_view.aod b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod index b249c412708..d63f165363e 100644 --- a/neonView/OfferitemEdit_view/OfferitemEdit_view.aod +++ b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferitemEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/OfferitemFilter_view/OfferitemFilter_view.aod b/neonView/OfferitemFilter_view/OfferitemFilter_view.aod index cd9156a57cc..d98159492ed 100644 --- a/neonView/OfferitemFilter_view/OfferitemFilter_view.aod +++ b/neonView/OfferitemFilter_view/OfferitemFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferitemFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod b/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod index 7e027e2fc7f..faa26adb3f7 100644 --- a/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod +++ b/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferitemMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OfferitemPreview_view/OfferitemPreview_view.aod b/neonView/OfferitemPreview_view/OfferitemPreview_view.aod index 3805f9a7120..2b977d802ea 100644 --- a/neonView/OfferitemPreview_view/OfferitemPreview_view.aod +++ b/neonView/OfferitemPreview_view/OfferitemPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferitemPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrderDetail_view/OrderDetail_view.aod b/neonView/OrderDetail_view/OrderDetail_view.aod index df64544990c..aadbb8453e7 100644 --- a/neonView/OrderDetail_view/OrderDetail_view.aod +++ b/neonView/OrderDetail_view/OrderDetail_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderDetail_view</name> <title>Cover letter</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrderDunning_view/OrderDunning_view.aod b/neonView/OrderDunning_view/OrderDunning_view.aod index 0a20b0fdb87..4f843d3eba3 100644 --- a/neonView/OrderDunning_view/OrderDunning_view.aod +++ b/neonView/OrderDunning_view/OrderDunning_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderDunning_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/OrderEdit_view/OrderEdit_view.aod b/neonView/OrderEdit_view/OrderEdit_view.aod index e11f3390c89..a19c19a685e 100644 --- a/neonView/OrderEdit_view/OrderEdit_view.aod +++ b/neonView/OrderEdit_view/OrderEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderEdit_view</name> <title>Receipt</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrderFilter_view/OrderFilter_view.aod b/neonView/OrderFilter_view/OrderFilter_view.aod index c2afbae5ef6..329fad392be 100644 --- a/neonView/OrderFilter_view/OrderFilter_view.aod +++ b/neonView/OrderFilter_view/OrderFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> @@ -102,11 +102,11 @@ </tableViewTemplate> <treeTableViewTemplate> <name>tree</name> - <defaultGroupFields /> <entityField>#ENTITY</entityField> <linkedColumns> <element>SALESORDERCODE</element> </linkedColumns> + <defaultGroupFields /> <fixedFilterFields /> <columns> <neonTreeTableColumn> diff --git a/neonView/OrderLink_view/OrderLink_view.aod b/neonView/OrderLink_view/OrderLink_view.aod index f959375bf36..8bb4173a323 100644 --- a/neonView/OrderLink_view/OrderLink_view.aod +++ b/neonView/OrderLink_view/OrderLink_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderLink_view</name> <title>Links</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrderMain_view/OrderMain_view.aod b/neonView/OrderMain_view/OrderMain_view.aod index 428d0c02e07..a5a11844e39 100644 --- a/neonView/OrderMain_view/OrderMain_view.aod +++ b/neonView/OrderMain_view/OrderMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrderPaid_view/OrderPaid_view.aod b/neonView/OrderPaid_view/OrderPaid_view.aod index 67d17a1b948..e40f7e8d39c 100644 --- a/neonView/OrderPaid_view/OrderPaid_view.aod +++ b/neonView/OrderPaid_view/OrderPaid_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderPaid_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/OrderPreview_view/OrderPreview_view.aod b/neonView/OrderPreview_view/OrderPreview_view.aod index 449cb53093e..65d6f80528d 100644 --- a/neonView/OrderPreview_view/OrderPreview_view.aod +++ b/neonView/OrderPreview_view/OrderPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrderReminderReport_view/OrderReminderReport_view.aod b/neonView/OrderReminderReport_view/OrderReminderReport_view.aod index 8c0ed255d69..3f14cbe374f 100644 --- a/neonView/OrderReminderReport_view/OrderReminderReport_view.aod +++ b/neonView/OrderReminderReport_view/OrderReminderReport_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderReminderReport_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrderReport_view/OrderReport_view.aod b/neonView/OrderReport_view/OrderReport_view.aod index 0f3487512ac..19703e6ddeb 100644 --- a/neonView/OrderReport_view/OrderReport_view.aod +++ b/neonView/OrderReport_view/OrderReport_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderReport_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod index bcc6e174805..c0c38570ead 100644 --- a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod +++ b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderitemEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod index 4c6e8a7eac6..1f043a66f89 100644 --- a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod +++ b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderitemFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod b/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod index fd4c03d14d1..3226af5f675 100644 --- a/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod +++ b/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderitemMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrderitemPreview_view/OrderitemPreview_view.aod b/neonView/OrderitemPreview_view/OrderitemPreview_view.aod index 40a1e0eac48..285683df967 100644 --- a/neonView/OrderitemPreview_view/OrderitemPreview_view.aod +++ b/neonView/OrderitemPreview_view/OrderitemPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderitemPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationAttributeRestriction_view/OrganisationAttributeRestriction_view.aod b/neonView/OrganisationAttributeRestriction_view/OrganisationAttributeRestriction_view.aod index b817d9e5a57..0142bb641ca 100644 --- a/neonView/OrganisationAttributeRestriction_view/OrganisationAttributeRestriction_view.aod +++ b/neonView/OrganisationAttributeRestriction_view/OrganisationAttributeRestriction_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationAttributeRestriction_view</name> <title>Attributes</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationClassification/OrganisationClassification.aod b/neonView/OrganisationClassification/OrganisationClassification.aod index 9019bf34d2f..e52d32adb6d 100644 --- a/neonView/OrganisationClassification/OrganisationClassification.aod +++ b/neonView/OrganisationClassification/OrganisationClassification.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationClassification</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod b/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod index 3f81db3f2e4..fd336c3f6c1 100644 --- a/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod +++ b/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationClassificationDrawer_view</name> <title>Classifications</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationClusterMain_view/OrganisationClusterMain_view.aod b/neonView/OrganisationClusterMain_view/OrganisationClusterMain_view.aod index 22a28e8cd40..a4d2c1cc14c 100644 --- a/neonView/OrganisationClusterMain_view/OrganisationClusterMain_view.aod +++ b/neonView/OrganisationClusterMain_view/OrganisationClusterMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationClusterMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationConditionPricelist_view/OrganisationConditionPricelist_view.aod b/neonView/OrganisationConditionPricelist_view/OrganisationConditionPricelist_view.aod index 73db76aeba5..d8b313f05e7 100644 --- a/neonView/OrganisationConditionPricelist_view/OrganisationConditionPricelist_view.aod +++ b/neonView/OrganisationConditionPricelist_view/OrganisationConditionPricelist_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationConditionPricelist_view</name> <title>Conditions</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationCondition_view/OrganisationCondition_view.aod b/neonView/OrganisationCondition_view/OrganisationCondition_view.aod index b17a49016c2..854ba3f3278 100644 --- a/neonView/OrganisationCondition_view/OrganisationCondition_view.aod +++ b/neonView/OrganisationCondition_view/OrganisationCondition_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationCondition_view</name> <title>Conditions</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationDuplicatesFilter_view/OrganisationDuplicatesFilter_view.aod b/neonView/OrganisationDuplicatesFilter_view/OrganisationDuplicatesFilter_view.aod index dfe48ea0e80..9ca2b13a95a 100644 --- a/neonView/OrganisationDuplicatesFilter_view/OrganisationDuplicatesFilter_view.aod +++ b/neonView/OrganisationDuplicatesFilter_view/OrganisationDuplicatesFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationDuplicatesFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationDuplicatesTab_view/OrganisationDuplicatesTab_view.aod b/neonView/OrganisationDuplicatesTab_view/OrganisationDuplicatesTab_view.aod index 6ca9948b472..c6f447f92c4 100644 --- a/neonView/OrganisationDuplicatesTab_view/OrganisationDuplicatesTab_view.aod +++ b/neonView/OrganisationDuplicatesTab_view/OrganisationDuplicatesTab_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationDuplicatesTab_view</name> <title>Organisation duplicates</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod index 70cc47cbd63..84a9507a937 100644 --- a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod +++ b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationEditDefaults_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/OrganisationEdit_view/OrganisationEdit_view.aod b/neonView/OrganisationEdit_view/OrganisationEdit_view.aod index 5a59c451c77..c76fe9d4588 100644 --- a/neonView/OrganisationEdit_view/OrganisationEdit_view.aod +++ b/neonView/OrganisationEdit_view/OrganisationEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationEdit_view</name> <title>Company</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod index 8fdf03af01d..352cf6a5b00 100644 --- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod +++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/OrganisationLesserNoiseTable_view/OrganisationLesserNoiseTable_view.aod b/neonView/OrganisationLesserNoiseTable_view/OrganisationLesserNoiseTable_view.aod index 5b29deefbee..374a165f329 100644 --- a/neonView/OrganisationLesserNoiseTable_view/OrganisationLesserNoiseTable_view.aod +++ b/neonView/OrganisationLesserNoiseTable_view/OrganisationLesserNoiseTable_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationLesserNoiseTable_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationLookup_view/OrganisationLookup_view.aod b/neonView/OrganisationLookup_view/OrganisationLookup_view.aod index 0d9e7c9051b..9c93c1e04a6 100644 --- a/neonView/OrganisationLookup_view/OrganisationLookup_view.aod +++ b/neonView/OrganisationLookup_view/OrganisationLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationMain_view/OrganisationMain_view.aod b/neonView/OrganisationMain_view/OrganisationMain_view.aod index df9be823dfc..03d6b384c21 100644 --- a/neonView/OrganisationMain_view/OrganisationMain_view.aod +++ b/neonView/OrganisationMain_view/OrganisationMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationMain_view</name> <title>Attribute</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationNoNoiseTable_view/OrganisationNoNoiseTable_view.aod b/neonView/OrganisationNoNoiseTable_view/OrganisationNoNoiseTable_view.aod index 2648fff3580..e77f5e397f2 100644 --- a/neonView/OrganisationNoNoiseTable_view/OrganisationNoNoiseTable_view.aod +++ b/neonView/OrganisationNoNoiseTable_view/OrganisationNoNoiseTable_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationNoNoiseTable_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod index b3ee9054032..f357dbb8e36 100644 --- a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod +++ b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationReport_view/OrganisationReport_view.aod b/neonView/OrganisationReport_view/OrganisationReport_view.aod index 0c10fa2a0be..7207ac709a0 100644 --- a/neonView/OrganisationReport_view/OrganisationReport_view.aod +++ b/neonView/OrganisationReport_view/OrganisationReport_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationReport_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod b/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod index 9fb952b77a2..e03f0349188 100644 --- a/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod +++ b/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationTaskAppointment_view</name> <title>ToDo</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationUnrelatedDuplicates_view/OrganisationUnrelatedDuplicates_view.aod b/neonView/OrganisationUnrelatedDuplicates_view/OrganisationUnrelatedDuplicates_view.aod index e8da741d067..882d51ed0ac 100644 --- a/neonView/OrganisationUnrelatedDuplicates_view/OrganisationUnrelatedDuplicates_view.aod +++ b/neonView/OrganisationUnrelatedDuplicates_view/OrganisationUnrelatedDuplicates_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationUnrelatedDuplicates_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionActionEdit_view/PermissionActionEdit_view.aod b/neonView/PermissionActionEdit_view/PermissionActionEdit_view.aod index ab4ce87a232..023dc0ac7bb 100644 --- a/neonView/PermissionActionEdit_view/PermissionActionEdit_view.aod +++ b/neonView/PermissionActionEdit_view/PermissionActionEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionActionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod b/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod index 38481861ae2..b6bacb05021 100644 --- a/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod +++ b/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionActionFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionActionList_view/PermissionActionList_view.aod b/neonView/PermissionActionList_view/PermissionActionList_view.aod index 5019e2d1b37..653f3fdae87 100644 --- a/neonView/PermissionActionList_view/PermissionActionList_view.aod +++ b/neonView/PermissionActionList_view/PermissionActionList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionActionList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod index 60c76072d2a..1908377c026 100644 --- a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod +++ b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionCalendarEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod b/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod index bea5b5d3b4c..1c9bf963592 100644 --- a/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod +++ b/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionCalendarFilterDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod b/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod index c70bb005294..c283d566399 100644 --- a/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod +++ b/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionCalendarFilterReverse_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/neonView/PermissionCalendarFilterReverse_view/documentation.adoc</documentation> diff --git a/neonView/PermissionCalendarFilter_view/PermissionCalendarFilter_view.aod b/neonView/PermissionCalendarFilter_view/PermissionCalendarFilter_view.aod index ffca2d78c9c..e018328dd34 100644 --- a/neonView/PermissionCalendarFilter_view/PermissionCalendarFilter_view.aod +++ b/neonView/PermissionCalendarFilter_view/PermissionCalendarFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionCalendarFilter_view</name> <title>Their Permissions</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod b/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod index 8671d21b95c..8614108694e 100644 --- a/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod +++ b/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionCalendarPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod b/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod index b38046275b1..8324836e120 100644 --- a/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod +++ b/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionDetailEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/PermissionDetailFilter_view/PermissionDetailFilter_view.aod b/neonView/PermissionDetailFilter_view/PermissionDetailFilter_view.aod index 2a069a4c9a5..a82c84b80dd 100644 --- a/neonView/PermissionDetailFilter_view/PermissionDetailFilter_view.aod +++ b/neonView/PermissionDetailFilter_view/PermissionDetailFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionDetailFilter_view</name> <title>Permission Detail</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod b/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod index 949bb12b7ab..58b70e10223 100644 --- a/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod +++ b/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionDetailPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod b/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod index 9644e50cf2d..b28164f6d9d 100644 --- a/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod +++ b/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionMetaDataFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/PermissionMetaDataMain_view/PermissionMetaDataMain_view.aod b/neonView/PermissionMetaDataMain_view/PermissionMetaDataMain_view.aod index 53e8f0b956c..e668f8fe5ef 100644 --- a/neonView/PermissionMetaDataMain_view/PermissionMetaDataMain_view.aod +++ b/neonView/PermissionMetaDataMain_view/PermissionMetaDataMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionMetaDataMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionMetaDataPreview_view/PermissionMetaDataPreview_view.aod b/neonView/PermissionMetaDataPreview_view/PermissionMetaDataPreview_view.aod index 1f323f20aab..a734740b8e8 100644 --- a/neonView/PermissionMetaDataPreview_view/PermissionMetaDataPreview_view.aod +++ b/neonView/PermissionMetaDataPreview_view/PermissionMetaDataPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionMetaDataPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod b/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod index 7e1ea7f0faa..54950c54a2d 100644 --- a/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod +++ b/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionOverviewFilter_view</name> <title>Permission Overview</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PersonAttributeRestriction_view/PersonAttributeRestriction_view.aod b/neonView/PersonAttributeRestriction_view/PersonAttributeRestriction_view.aod index 11f7b639939..0954af14d6b 100644 --- a/neonView/PersonAttributeRestriction_view/PersonAttributeRestriction_view.aod +++ b/neonView/PersonAttributeRestriction_view/PersonAttributeRestriction_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonAttributeRestriction_view</name> <title>Attributes</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PersonClusterMain_view/PersonClusterMain_view.aod b/neonView/PersonClusterMain_view/PersonClusterMain_view.aod index 7ed8cea878e..02683511305 100644 --- a/neonView/PersonClusterMain_view/PersonClusterMain_view.aod +++ b/neonView/PersonClusterMain_view/PersonClusterMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonClusterMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonClusterPreview_view/PersonClusterPreview_view.aod b/neonView/PersonClusterPreview_view/PersonClusterPreview_view.aod index 7465d9548b1..8751b422c15 100644 --- a/neonView/PersonClusterPreview_view/PersonClusterPreview_view.aod +++ b/neonView/PersonClusterPreview_view/PersonClusterPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonClusterPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonDetail_view/PersonDetail_view.aod b/neonView/PersonDetail_view/PersonDetail_view.aod index bf877ec44c1..52653526a4c 100644 --- a/neonView/PersonDetail_view/PersonDetail_view.aod +++ b/neonView/PersonDetail_view/PersonDetail_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonDetail_view</name> <title>Details</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PersonDublicatesTab_view/PersonDublicatesTab_view.aod b/neonView/PersonDublicatesTab_view/PersonDublicatesTab_view.aod index 2099e5c6ee5..eba26d60018 100644 --- a/neonView/PersonDublicatesTab_view/PersonDublicatesTab_view.aod +++ b/neonView/PersonDublicatesTab_view/PersonDublicatesTab_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonDublicatesTab_view</name> <title>Person duplicates</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod b/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod index 23c70461d00..476077463fc 100644 --- a/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod +++ b/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonDuplicateEditview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod index 94e88b257d1..867d991080f 100644 --- a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod +++ b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonDuplicatesFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod index 4be76fd4697..2c5a319e4dc 100644 --- a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod +++ b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonEditDefaults_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/PersonEdit_view/PersonEdit_view.aod b/neonView/PersonEdit_view/PersonEdit_view.aod index c31dd51b7ff..68a42fbd3c0 100644 --- a/neonView/PersonEdit_view/PersonEdit_view.aod +++ b/neonView/PersonEdit_view/PersonEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonEdit_view</name> <title>Contact</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PersonFilter_view/PersonFilter_view.aod b/neonView/PersonFilter_view/PersonFilter_view.aod index 7c17332f697..e4483a7e82c 100644 --- a/neonView/PersonFilter_view/PersonFilter_view.aod +++ b/neonView/PersonFilter_view/PersonFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/PersonLookup_view/PersonLookup_view.aod b/neonView/PersonLookup_view/PersonLookup_view.aod index 5877a1ee07a..8189598556f 100644 --- a/neonView/PersonLookup_view/PersonLookup_view.aod +++ b/neonView/PersonLookup_view/PersonLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonMain_view/PersonMain_view.aod b/neonView/PersonMain_view/PersonMain_view.aod index 7e88568ac76..8ec9c55885a 100644 --- a/neonView/PersonMain_view/PersonMain_view.aod +++ b/neonView/PersonMain_view/PersonMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonMultiEditQuickEntry_view/PersonMultiEditQuickEntry_view.aod b/neonView/PersonMultiEditQuickEntry_view/PersonMultiEditQuickEntry_view.aod index 5b15646ad0c..725d0fe4e9e 100644 --- a/neonView/PersonMultiEditQuickEntry_view/PersonMultiEditQuickEntry_view.aod +++ b/neonView/PersonMultiEditQuickEntry_view/PersonMultiEditQuickEntry_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonMultiEditQuickEntry_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonMultiEdit_view/PersonMultiEdit_view.aod b/neonView/PersonMultiEdit_view/PersonMultiEdit_view.aod index 511bdae7953..b6cc77de5ba 100644 --- a/neonView/PersonMultiEdit_view/PersonMultiEdit_view.aod +++ b/neonView/PersonMultiEdit_view/PersonMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonPreview_view/PersonPreview_view.aod b/neonView/PersonPreview_view/PersonPreview_view.aod index c0ecb2926bd..bcbe4a50630 100644 --- a/neonView/PersonPreview_view/PersonPreview_view.aod +++ b/neonView/PersonPreview_view/PersonPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonSimpleList_view/PersonSimpleList_view.aod b/neonView/PersonSimpleList_view/PersonSimpleList_view.aod index 2f1efab3734..fe2cf08a2a9 100644 --- a/neonView/PersonSimpleList_view/PersonSimpleList_view.aod +++ b/neonView/PersonSimpleList_view/PersonSimpleList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonSimpleList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod b/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod index d23833c4c20..655e857c6ed 100644 --- a/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod +++ b/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonTaskAppointment_view</name> <title>ToDo</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod b/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod index 3e106ebb254..e794fe65742 100644 --- a/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod +++ b/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PrivatePersonFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PrivatePersonPreview_view/PrivatePersonPreview_view.aod b/neonView/PrivatePersonPreview_view/PrivatePersonPreview_view.aod index 13f2b9fd014..51fe925b724 100644 --- a/neonView/PrivatePersonPreview_view/PrivatePersonPreview_view.aod +++ b/neonView/PrivatePersonPreview_view/PrivatePersonPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PrivatePersonPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod index 6048f3f0bdf..e6bb8787561 100644 --- a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod +++ b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>Prod2ProdEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod b/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod index e5bac593a14..ff851bb5587 100644 --- a/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod +++ b/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>Prod2prodFilter_view</name> <title>Parts list</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/ProductEdit_view/ProductEdit_view.aod b/neonView/ProductEdit_view/ProductEdit_view.aod index 768f479d12d..9b3843d6625 100644 --- a/neonView/ProductEdit_view/ProductEdit_view.aod +++ b/neonView/ProductEdit_view/ProductEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ProductFilter_view/ProductFilter_view.aod b/neonView/ProductFilter_view/ProductFilter_view.aod index 87133854a0b..326ff54ed32 100644 --- a/neonView/ProductFilter_view/ProductFilter_view.aod +++ b/neonView/ProductFilter_view/ProductFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ProductLookup_view/ProductLookup_view.aod b/neonView/ProductLookup_view/ProductLookup_view.aod index e038ed3765c..36f27e8de47 100644 --- a/neonView/ProductLookup_view/ProductLookup_view.aod +++ b/neonView/ProductLookup_view/ProductLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/neonView/ProductLookup_view/documentation.adoc</documentation> diff --git a/neonView/ProductMain_view/ProductMain_view.aod b/neonView/ProductMain_view/ProductMain_view.aod index e284252e8f4..485f0f39033 100644 --- a/neonView/ProductMain_view/ProductMain_view.aod +++ b/neonView/ProductMain_view/ProductMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ProductPreview_view/ProductPreview_view.aod b/neonView/ProductPreview_view/ProductPreview_view.aod index 61b9a8f77cd..f54cbe74852 100644 --- a/neonView/ProductPreview_view/ProductPreview_view.aod +++ b/neonView/ProductPreview_view/ProductPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod index f2c6e8dac43..9e99957324c 100644 --- a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod +++ b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductpriceEdit_view</name> <title>Price list</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod index f19f9c4d30b..13e9c8af8f1 100644 --- a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod +++ b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductpriceFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod b/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod index 181e22f1cc5..7bc95e10fa1 100644 --- a/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod +++ b/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductpriceForProductFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ProductpricePreview_view/ProductpricePreview_view.aod b/neonView/ProductpricePreview_view/ProductpricePreview_view.aod index bb516112119..3a26703ba70 100644 --- a/neonView/ProductpricePreview_view/ProductpricePreview_view.aod +++ b/neonView/ProductpricePreview_view/ProductpricePreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductpricePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod b/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod index 9d054a7e576..fa3d8501713 100644 --- a/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod +++ b/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductpriceRelation_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod b/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod index 9598c3420b1..5947deaa524 100644 --- a/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod +++ b/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>QuickEntryEdit_view</name> <title>Quick Entry</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/RoleChildrenEdit_view/RoleChildrenEdit_view.aod b/neonView/RoleChildrenEdit_view/RoleChildrenEdit_view.aod index 8dd7cd21a63..4ba793b4c4a 100644 --- a/neonView/RoleChildrenEdit_view/RoleChildrenEdit_view.aod +++ b/neonView/RoleChildrenEdit_view/RoleChildrenEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RoleChildrenEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/RoleChildrenList_view/RoleChildrenList_view.aod b/neonView/RoleChildrenList_view/RoleChildrenList_view.aod index ada141eeefb..149c223100c 100644 --- a/neonView/RoleChildrenList_view/RoleChildrenList_view.aod +++ b/neonView/RoleChildrenList_view/RoleChildrenList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RoleChildrenList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/RoleEdit_view/RoleEdit_view.aod b/neonView/RoleEdit_view/RoleEdit_view.aod index 55cdf175563..48efe4546a6 100644 --- a/neonView/RoleEdit_view/RoleEdit_view.aod +++ b/neonView/RoleEdit_view/RoleEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RoleEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/RoleFilter_view/RoleFilter_view.aod b/neonView/RoleFilter_view/RoleFilter_view.aod index 612096e53f1..41cdd7eb872 100644 --- a/neonView/RoleFilter_view/RoleFilter_view.aod +++ b/neonView/RoleFilter_view/RoleFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RoleFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/RoleMain_view/RoleMain_view.aod b/neonView/RoleMain_view/RoleMain_view.aod index f63cba1a93f..435f4e497dc 100644 --- a/neonView/RoleMain_view/RoleMain_view.aod +++ b/neonView/RoleMain_view/RoleMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RoleMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/RoleParentList_view/RoleParentList_view.aod b/neonView/RoleParentList_view/RoleParentList_view.aod index 2a2073e3196..357f92e5373 100644 --- a/neonView/RoleParentList_view/RoleParentList_view.aod +++ b/neonView/RoleParentList_view/RoleParentList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RoleParentList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/RolePreview_view/RolePreview_view.aod b/neonView/RolePreview_view/RolePreview_view.aod index 5f62a43c2ca..1c58e0710e0 100644 --- a/neonView/RolePreview_view/RolePreview_view.aod +++ b/neonView/RolePreview_view/RolePreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RolePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod b/neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod index 86524aca75a..585ee4502b9 100644 --- a/neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod +++ b/neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectAnalysesPhases_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod b/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod index 8ed958a9952..31cd51c26b8 100644 --- a/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod +++ b/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectAnalyses_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod b/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod index c17221595c4..23306b3f473 100644 --- a/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod +++ b/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectConversionRate_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod index 04b352527d9..4481932076a 100644 --- a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod +++ b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectEdit_view</name> <title>Sales Project</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod index 5a88276721b..6a613d6f1d4 100644 --- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod +++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/SalesprojectForecastDrawer_view/SalesprojectForecastDrawer_view.aod b/neonView/SalesprojectForecastDrawer_view/SalesprojectForecastDrawer_view.aod index 734f3f44872..ef00bdc11ab 100644 --- a/neonView/SalesprojectForecastDrawer_view/SalesprojectForecastDrawer_view.aod +++ b/neonView/SalesprojectForecastDrawer_view/SalesprojectForecastDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectForecastDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod b/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod index d222b3f6592..eb51c7978c5 100644 --- a/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod +++ b/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectFurtherInfo_view</name> <title>Further informations</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod index 9098e124f35..75a74d87d88 100644 --- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod +++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectMemberActivity_view/SalesprojectMemberActivity_view.aod b/neonView/SalesprojectMemberActivity_view/SalesprojectMemberActivity_view.aod index 98ba3483820..f66c853a872 100644 --- a/neonView/SalesprojectMemberActivity_view/SalesprojectMemberActivity_view.aod +++ b/neonView/SalesprojectMemberActivity_view/SalesprojectMemberActivity_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMemberActivity_view</name> <title>Project</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod b/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod index 2d7a4e08733..8902d3ad115 100644 --- a/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod +++ b/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMilestoneChartPhase_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod b/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod index 504c39d8aff..6509031c9d4 100644 --- a/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod +++ b/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMilestoneChartState_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectMilestoneInfo_view/SalesprojectMilestoneInfo_view.aod b/neonView/SalesprojectMilestoneInfo_view/SalesprojectMilestoneInfo_view.aod index 178eb3816ff..ab5a53fc87e 100644 --- a/neonView/SalesprojectMilestoneInfo_view/SalesprojectMilestoneInfo_view.aod +++ b/neonView/SalesprojectMilestoneInfo_view/SalesprojectMilestoneInfo_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMilestoneInfo_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectMilestoneSource_view/SalesprojectMilestoneSource_view.aod b/neonView/SalesprojectMilestoneSource_view/SalesprojectMilestoneSource_view.aod index 91f395b0f3c..0d8d9846cb0 100644 --- a/neonView/SalesprojectMilestoneSource_view/SalesprojectMilestoneSource_view.aod +++ b/neonView/SalesprojectMilestoneSource_view/SalesprojectMilestoneSource_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMilestoneSource_view</name> <title>Occurrences</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod b/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod index 990d8b15066..94e96382d7d 100644 --- a/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod +++ b/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMilestone_view</name> <title></title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod b/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod index 898af789d60..4e60e5354ec 100644 --- a/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod +++ b/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectOfferForecastChart_view/SalesprojectOfferForecastChart_view.aod b/neonView/SalesprojectOfferForecastChart_view/SalesprojectOfferForecastChart_view.aod index 3423f5ee4f8..80f3892c0d5 100644 --- a/neonView/SalesprojectOfferForecastChart_view/SalesprojectOfferForecastChart_view.aod +++ b/neonView/SalesprojectOfferForecastChart_view/SalesprojectOfferForecastChart_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectOfferForecastChart_view</name> <title>Forecast</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod b/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod index 2136aaa7a4b..417bad86b86 100644 --- a/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod +++ b/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectOfferForecast_view</name> <title></title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod b/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod index 9a84bbb876c..0485dce3b28 100644 --- a/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod +++ b/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectOverview_view</name> <title>Overview</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod b/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod index 4d42cd968e9..eef84fe84ee 100644 --- a/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod +++ b/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectPhaseStep_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod b/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod index 108a0a83781..b00f3193429 100644 --- a/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod +++ b/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectPhase_view</name> <title>Phase</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod index fcabc60c03f..6733e0803c4 100644 --- a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod +++ b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod b/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod index 6a0e513a643..b67ff0f9c15 100644 --- a/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod +++ b/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectScoreCard_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> diff --git a/neonView/SalesprojectSourceDrawer_view/SalesprojectSourceDrawer_view.aod b/neonView/SalesprojectSourceDrawer_view/SalesprojectSourceDrawer_view.aod index 7bdd751a12b..abcf6c15c2c 100644 --- a/neonView/SalesprojectSourceDrawer_view/SalesprojectSourceDrawer_view.aod +++ b/neonView/SalesprojectSourceDrawer_view/SalesprojectSourceDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectSourceDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod index 056fcc4af21..8eae1eea4db 100644 --- a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod +++ b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectSourceEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod index ca41ad24d87..1573062e0f5 100644 --- a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod +++ b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectSourceFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod b/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod index b71758441e6..e95fd39683b 100644 --- a/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod +++ b/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectSourcePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalutationEdit_view/SalutationEdit_view.aod b/neonView/SalutationEdit_view/SalutationEdit_view.aod index 3179d62093f..3b05b5cf8a1 100644 --- a/neonView/SalutationEdit_view/SalutationEdit_view.aod +++ b/neonView/SalutationEdit_view/SalutationEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalutationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/SalutationFilter_view/SalutationFilter_view.aod b/neonView/SalutationFilter_view/SalutationFilter_view.aod index d424e336902..97206dab245 100644 --- a/neonView/SalutationFilter_view/SalutationFilter_view.aod +++ b/neonView/SalutationFilter_view/SalutationFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalutationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod b/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod index cc896e3f349..7e51a80a470 100644 --- a/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod +++ b/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SerialLetterAddRecipientsEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/SerialLetterEdit_view/SerialLetterEdit_view.aod b/neonView/SerialLetterEdit_view/SerialLetterEdit_view.aod index f5d1223b1ab..4ffcf6004ca 100644 --- a/neonView/SerialLetterEdit_view/SerialLetterEdit_view.aod +++ b/neonView/SerialLetterEdit_view/SerialLetterEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SerialLetterEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod b/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod index b95fda0d5aa..45ba687a677 100644 --- a/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod +++ b/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SerialLetterFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/SerialLetterMain_view/SerialLetterMain_view.aod b/neonView/SerialLetterMain_view/SerialLetterMain_view.aod index 1c9cdf0b094..2c7a25adb74 100644 --- a/neonView/SerialLetterMain_view/SerialLetterMain_view.aod +++ b/neonView/SerialLetterMain_view/SerialLetterMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SerialLetterMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SerialLetterPreview_view/SerialLetterPreview_view.aod b/neonView/SerialLetterPreview_view/SerialLetterPreview_view.aod index 14abcef6de4..38949d8ec56 100644 --- a/neonView/SerialLetterPreview_view/SerialLetterPreview_view.aod +++ b/neonView/SerialLetterPreview_view/SerialLetterPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SerialLetterPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/StockCount_view/StockCount_view.aod b/neonView/StockCount_view/StockCount_view.aod index 20dd00eaeeb..ace71cf3310 100644 --- a/neonView/StockCount_view/StockCount_view.aod +++ b/neonView/StockCount_view/StockCount_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>StockCount_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/StockEdit_view/StockEdit_view.aod b/neonView/StockEdit_view/StockEdit_view.aod index d8270701944..227ab14331f 100644 --- a/neonView/StockEdit_view/StockEdit_view.aod +++ b/neonView/StockEdit_view/StockEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>StockEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/StockFilter_view/StockFilter_view.aod b/neonView/StockFilter_view/StockFilter_view.aod index cad57413e4d..f5c09966799 100644 --- a/neonView/StockFilter_view/StockFilter_view.aod +++ b/neonView/StockFilter_view/StockFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>StockFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/SupportTicketEdit_view/SupportTicketEdit_view.aod b/neonView/SupportTicketEdit_view/SupportTicketEdit_view.aod index aa9a3396de0..b78c65c1ded 100644 --- a/neonView/SupportTicketEdit_view/SupportTicketEdit_view.aod +++ b/neonView/SupportTicketEdit_view/SupportTicketEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SupportTicketEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod index 7b5e818ce4f..97892017ec8 100644 --- a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod +++ b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SupportTicketFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/SupportTicketMain_view/SupportTicketMain_view.aod b/neonView/SupportTicketMain_view/SupportTicketMain_view.aod index 529d000dc9d..8950edb1d40 100644 --- a/neonView/SupportTicketMain_view/SupportTicketMain_view.aod +++ b/neonView/SupportTicketMain_view/SupportTicketMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SupportTicketMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SupportTicketPreview_view/SupportTicketPreview_view.aod b/neonView/SupportTicketPreview_view/SupportTicketPreview_view.aod index 48b48a2a48f..2495b76bd10 100644 --- a/neonView/SupportTicketPreview_view/SupportTicketPreview_view.aod +++ b/neonView/SupportTicketPreview_view/SupportTicketPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SupportTicketPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskEdit_view/TaskEdit_view.aod b/neonView/TaskEdit_view/TaskEdit_view.aod index c71ca1b6b43..c5c8e8e1091 100644 --- a/neonView/TaskEdit_view/TaskEdit_view.aod +++ b/neonView/TaskEdit_view/TaskEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskFilter_view/TaskFilter_view.aod b/neonView/TaskFilter_view/TaskFilter_view.aod index 77601cb3a2e..51c579c8f60 100644 --- a/neonView/TaskFilter_view/TaskFilter_view.aod +++ b/neonView/TaskFilter_view/TaskFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod b/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod index f9e1e3aa8a2..aff539498ef 100644 --- a/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod +++ b/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskLinkFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod b/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod index 04ab701524e..01b6cf513e9 100644 --- a/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod +++ b/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskLinkMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod b/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod index 4427da0dd67..2cdff7d7062 100644 --- a/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod +++ b/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskLinkPreviewList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod b/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod index 14b9249b286..843b7a8efa9 100644 --- a/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod +++ b/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskLinkPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskMain_view/TaskMain_view.aod b/neonView/TaskMain_view/TaskMain_view.aod index ad38b461f3f..a2521203f37 100644 --- a/neonView/TaskMain_view/TaskMain_view.aod +++ b/neonView/TaskMain_view/TaskMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskPreview_view/TaskPreview_view.aod b/neonView/TaskPreview_view/TaskPreview_view.aod index 82ac185b0f1..57ad1bd7618 100644 --- a/neonView/TaskPreview_view/TaskPreview_view.aod +++ b/neonView/TaskPreview_view/TaskPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TimetrackingAnalysesDrawer_view/TimetrackingAnalysesDrawer_view.aod b/neonView/TimetrackingAnalysesDrawer_view/TimetrackingAnalysesDrawer_view.aod index 17633107ed9..fe8b4ddcb0b 100644 --- a/neonView/TimetrackingAnalysesDrawer_view/TimetrackingAnalysesDrawer_view.aod +++ b/neonView/TimetrackingAnalysesDrawer_view/TimetrackingAnalysesDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingAnalysesDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TimetrackingAnalyses_view/TimetrackingAnalyses_view.aod b/neonView/TimetrackingAnalyses_view/TimetrackingAnalyses_view.aod index 2ea1d75c892..eeddd0f26c9 100644 --- a/neonView/TimetrackingAnalyses_view/TimetrackingAnalyses_view.aod +++ b/neonView/TimetrackingAnalyses_view/TimetrackingAnalyses_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingAnalyses_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod b/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod index 228cf5d6e7e..b6bead1d562 100644 --- a/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod +++ b/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod index 231020b4962..fda8ae851db 100644 --- a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod +++ b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod b/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod index c0befff5418..6339c82f7e9 100644 --- a/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod +++ b/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingFilterAnalyses</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod index c05c5db874a..6957ae22e83 100644 --- a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod +++ b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingFilter_view</name> <title>Timetracking</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod b/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod index 1a76cbc61d1..42f42a0e537 100644 --- a/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod +++ b/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TimetrackingScore_view/TimetrackingScore_view.aod b/neonView/TimetrackingScore_view/TimetrackingScore_view.aod index 1efd3641c31..c372f639c03 100644 --- a/neonView/TimetrackingScore_view/TimetrackingScore_view.aod +++ b/neonView/TimetrackingScore_view/TimetrackingScore_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingScore_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TurnoverChartForcastDrawer_view/TurnoverChartForcastDrawer_view.aod b/neonView/TurnoverChartForcastDrawer_view/TurnoverChartForcastDrawer_view.aod index 602bf1fed83..7a404cd9833 100644 --- a/neonView/TurnoverChartForcastDrawer_view/TurnoverChartForcastDrawer_view.aod +++ b/neonView/TurnoverChartForcastDrawer_view/TurnoverChartForcastDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TurnoverChartForcastDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TurnoverChartForecast_view/TurnoverChartForecast_view.aod b/neonView/TurnoverChartForecast_view/TurnoverChartForecast_view.aod index 962a05e05a0..87500b99d68 100644 --- a/neonView/TurnoverChartForecast_view/TurnoverChartForecast_view.aod +++ b/neonView/TurnoverChartForecast_view/TurnoverChartForecast_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TurnoverChartForecast_view</name> <title>Forecast</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/TurnoverChart_view/TurnoverChart_view.aod b/neonView/TurnoverChart_view/TurnoverChart_view.aod index 09c915ae244..cbee81a152b 100644 --- a/neonView/TurnoverChart_view/TurnoverChart_view.aod +++ b/neonView/TurnoverChart_view/TurnoverChart_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TurnoverChart_view</name> <title></title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/TurnoverTree_view/TurnoverTree_view.aod b/neonView/TurnoverTree_view/TurnoverTree_view.aod index b8e357571ef..baa0832aab0 100644 --- a/neonView/TurnoverTree_view/TurnoverTree_view.aod +++ b/neonView/TurnoverTree_view/TurnoverTree_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TurnoverTree_view</name> <title>Tree</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/TwitterTimeline_view/TwitterTimeline_view.aod b/neonView/TwitterTimeline_view/TwitterTimeline_view.aod index 167eb2982e3..7addad6331c 100644 --- a/neonView/TwitterTimeline_view/TwitterTimeline_view.aod +++ b/neonView/TwitterTimeline_view/TwitterTimeline_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TwitterTimeline_view</name> <title>Twitter</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod b/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod index 441059938ff..8c66fbfacdd 100644 --- a/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod +++ b/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>UniversalFileProcessorDropzone_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> diff --git a/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod b/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod index fc53c28edde..819837d79cb 100644 --- a/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod +++ b/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>UnlinkedMailFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> diff --git a/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod b/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod index 6be9cc5af6f..e6af4ffd56d 100644 --- a/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod +++ b/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>UnlinkedMailMappingLinkList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod index dec9ecc2091..c7ba9b2d1e7 100644 --- a/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod +++ b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>UnlinkedMailMappingWrapperMapping_view</name> <title>Link e-mail addresses to contacts</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/Userhelp_FilterView/Userhelp_FilterView.aod b/neonView/Userhelp_FilterView/Userhelp_FilterView.aod index 88b815cc8ab..f49695009f3 100644 --- a/neonView/Userhelp_FilterView/Userhelp_FilterView.aod +++ b/neonView/Userhelp_FilterView/Userhelp_FilterView.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>Userhelp_FilterView</name> <title>Userhelp Ressources</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod b/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod index 4a500fdf724..acf9e28696c 100644 --- a/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod +++ b/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>UsersettingsEdit_view</name> <title>Settings</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod b/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod index f4bb8a7d21f..f03e6f119f0 100644 --- a/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod +++ b/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitPlanEmployeeWeekEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod b/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod index 6de254467a3..bcbed30d9f5 100644 --- a/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod +++ b/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitPlanEmployeeWeekFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/VisitPlanEmployeeWeekMain_view/VisitPlanEmployeeWeekMain_view.aod b/neonView/VisitPlanEmployeeWeekMain_view/VisitPlanEmployeeWeekMain_view.aod index 6bd22ba2b15..efed26c7342 100644 --- a/neonView/VisitPlanEmployeeWeekMain_view/VisitPlanEmployeeWeekMain_view.aod +++ b/neonView/VisitPlanEmployeeWeekMain_view/VisitPlanEmployeeWeekMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitPlanEmployeeWeekMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod b/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod index ec7824e9dea..4ecd6b51c19 100644 --- a/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod +++ b/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitPlanEmployeeWeekPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod index 4a216530f8c..4538a67ca21 100644 --- a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod +++ b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitPlanEntryEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod b/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod index d98e4cb1e5a..b514c136189 100644 --- a/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod +++ b/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitPlanEntryFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod b/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod index d58550498e1..1c9a8ce3e80 100644 --- a/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod +++ b/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitRecommendationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod b/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod index c841039215a..73cb8599d02 100644 --- a/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod +++ b/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitRecommendationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod b/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod index 2cc729ddd7c..397400ecf30 100644 --- a/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod +++ b/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowDefinitionDiagram_view</name> <title>Diagram</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod b/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod index d0aaeebbaa3..aaaeeeef4d9 100644 --- a/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod +++ b/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowDefinitionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod index 41ffef96290..1dbcd14a3d2 100644 --- a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod +++ b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowDefinitionFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod b/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod index 29de742a06e..dcb755770f4 100644 --- a/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod +++ b/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowDefinitionMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod b/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod index 7f955c56160..1a6d0acf0cf 100644 --- a/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod +++ b/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowDefinitionPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowInstanceDiagram_view/WorkflowInstanceDiagram_view.aod b/neonView/WorkflowInstanceDiagram_view/WorkflowInstanceDiagram_view.aod index 98f6b692170..3098a8033b5 100644 --- a/neonView/WorkflowInstanceDiagram_view/WorkflowInstanceDiagram_view.aod +++ b/neonView/WorkflowInstanceDiagram_view/WorkflowInstanceDiagram_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstanceDiagram_view</name> <title>Diagram</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod index 0d3e0c89b95..0f8aee6fc8c 100644 --- a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod +++ b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstanceEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod b/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod index 4a851422779..fb3eb002014 100644 --- a/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod +++ b/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstanceFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod b/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod index ff969c13fd5..b823e304090 100644 --- a/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod +++ b/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstanceHistoryFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod b/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod index 0511dbbb5dc..238558d5d61 100644 --- a/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod +++ b/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstanceMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod b/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod index 6e02ae567d1..dfe0c117d85 100644 --- a/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod +++ b/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstancePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod b/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod index 9755c12f76b..29da6b3f7d6 100644 --- a/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod +++ b/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstanceTasks_view</name> <title>Tasks</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod b/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod index 8445a151ff6..db773e993fd 100644 --- a/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod +++ b/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowLauncherEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod b/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod index b03c3813ded..9d0b6b9271e 100644 --- a/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod +++ b/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowModelEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod b/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod index 051bb98fe84..cabc52d8e48 100644 --- a/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod +++ b/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowModelLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod b/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod index 43ae5938052..443eeb0d5e4 100644 --- a/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod +++ b/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowSignalEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod b/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod index 3bfbce1fac8..e0fe81e1c76 100644 --- a/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod +++ b/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowSignalFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/WorkflowSignalPreview_view/WorkflowSignalPreview_view.aod b/neonView/WorkflowSignalPreview_view/WorkflowSignalPreview_view.aod index fa81d16b1e2..1ab2d17c652 100644 --- a/neonView/WorkflowSignalPreview_view/WorkflowSignalPreview_view.aod +++ b/neonView/WorkflowSignalPreview_view/WorkflowSignalPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowSignalPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod b/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod index cdac1faccf7..6bfaae55e6c 100644 --- a/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod +++ b/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowStartConfigFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowTaskDrawer_view/WorkflowTaskDrawer_view.aod b/neonView/WorkflowTaskDrawer_view/WorkflowTaskDrawer_view.aod index 7d975c492d0..5f2d8f1a150 100644 --- a/neonView/WorkflowTaskDrawer_view/WorkflowTaskDrawer_view.aod +++ b/neonView/WorkflowTaskDrawer_view/WorkflowTaskDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod b/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod index e767b57ecab..2165a6d4bec 100644 --- a/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod +++ b/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod b/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod index f2147948b2e..f14afb6e132 100644 --- a/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod +++ b/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskFinishedDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowTaskFinishedList_view/WorkflowTaskFinishedList_view.aod b/neonView/WorkflowTaskFinishedList_view/WorkflowTaskFinishedList_view.aod index 7cb5d6287d7..babb19cdf09 100644 --- a/neonView/WorkflowTaskFinishedList_view/WorkflowTaskFinishedList_view.aod +++ b/neonView/WorkflowTaskFinishedList_view/WorkflowTaskFinishedList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskFinishedList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod b/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod index e25ada40292..956ea0c55e6 100644 --- a/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod +++ b/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskForm_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowTaskList_view/WorkflowTaskList_view.aod b/neonView/WorkflowTaskList_view/WorkflowTaskList_view.aod index f58afc252c8..3f84a4ee800 100644 --- a/neonView/WorkflowTaskList_view/WorkflowTaskList_view.aod +++ b/neonView/WorkflowTaskList_view/WorkflowTaskList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod b/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod index a6c4dbff4e5..1c914a6a6fe 100644 --- a/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod +++ b/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskOwn_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod b/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod index bf61df8ebf5..d6e7dc40366 100644 --- a/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod +++ b/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod b/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod index 6de8d6e623e..be4b8f4662f 100644 --- a/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod +++ b/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowVariableValueFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> -- GitLab From f391596037cb4de7a0af7acfcc29bd41d09bb85e Mon Sep 17 00:00:00 2001 From: "s.pongratz" <s.pongratz@adito.de> Date: Tue, 17 Nov 2020 10:28:47 +0100 Subject: [PATCH 087/184] Library Dependency --- process/Dependency_lib/Dependency_lib.aod | 9 +++ process/Dependency_lib/process.js | 72 +++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 process/Dependency_lib/Dependency_lib.aod create mode 100644 process/Dependency_lib/process.js diff --git a/process/Dependency_lib/Dependency_lib.aod b/process/Dependency_lib/Dependency_lib.aod new file mode 100644 index 00000000000..3475b073c30 --- /dev/null +++ b/process/Dependency_lib/Dependency_lib.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>Dependency_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/Dependency_lib/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/Dependency_lib/process.js b/process/Dependency_lib/process.js new file mode 100644 index 00000000000..d654f2f4667 --- /dev/null +++ b/process/Dependency_lib/process.js @@ -0,0 +1,72 @@ + +function Dependency(){} + +/** + * This function is the template for the getUIDsfn-Function in the Dependency.mapping + */ +Dependency.templateFunction = function (pTableField) { + return function (pRowData, pChangedData) { + let res = []; + if (pRowData[pTableField]) + res.push(pRowData[pTableField]) + if (pChangedData[pTableField] && pChangedData[pTableField] != pRowData[pTableField]) + res.push(pChangedData[pTableField]) + return res; + } +} + +/** + * Returns the Mapping of the Dependencies. + * + * The mapping is structured as follows: <br> + * + * @example { "Entity_entity" : { "Dependency_entity": { "getUIDsfn" : fucntion (pRowData, pChangedData) {return //the IDs of the EntityField } } } } + * + * @return {Object} + */ +Dependency.mapping = function () +{ + return { + "Address_entity": { + "Organisation_entity" : { + "getUIDsfn" : function (pRowData, pChangedData) { + var tableField = "ADDRESS.CONTACT_ID"; + var res = []; + if (pRowData[tableField]) + res.push(pRowData[tableField]) + if (pChangedData[tableField] && pChangedData[tableField] != pRowData[tableField]) + res.push(pChangedData[tableField]) + return res; + } + } + } + }; +}; + +/** + * Returns the dependencies on the entity + * + * @param {String} [pEntity] the name of the entity + * @return {String[]} the founded Dependencies. If no one is found, you get an empty Array + */ +Dependency.getDependency = function (pEntity) { + if (Dependency.mapping()[pEntity]) + { + return Object.keys(Dependency.mapping()[pEntity]); + } + + + return []; +}; + +/** + * Returns the dependencies that this entity has on others + * + * @param {String} [pEntity] the name of the entity + * @return {String[]} the founded Dependencies. If no one is found, you get an empty Array + */ +Dependency.getReverseDependency = function (pEntity) { + return Object.keys(Dependency.mapping()).filter(function (key) { + return Dependency.mapping()[key][pEntity]; + }); +} -- GitLab From 2e8c6c4da04b2466448b00af343839f317994e76 Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Mon, 16 Nov 2020 15:13:16 +0100 Subject: [PATCH 088/184] #1068648 Notifications: deleteContentIfOrphan param-change --- entity/Notification_entity/recordcontainers/db/onDBDelete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entity/Notification_entity/recordcontainers/db/onDBDelete.js b/entity/Notification_entity/recordcontainers/db/onDBDelete.js index 54618e0f773..633f720b18b 100644 --- a/entity/Notification_entity/recordcontainers/db/onDBDelete.js +++ b/entity/Notification_entity/recordcontainers/db/onDBDelete.js @@ -4,4 +4,4 @@ import("system.notification"); // Deletes notificationContents from its table, if there are no user notification left // Only AppointmentContents need to stay, because they would appear again after every deletion. if(vars.get("$field.TYPECODE") != "_____SYSTEM_NOTIFICATION_APPOINTMENT") - notification.deleteContentIfOrphan(vars.get("$field.ID"), vars.get("$field.CONTENTID")); \ No newline at end of file + notification.deleteContentIfOrphan([vars.get("$field.CONTENTID")]); \ No newline at end of file -- GitLab From ba5025314a3d150f24033cab49ca2fec129f356a Mon Sep 17 00:00:00 2001 From: Sebastian Pongratz <s.pongratz@adito.de> Date: Tue, 17 Nov 2020 14:19:10 +0000 Subject: [PATCH 089/184] #1065924 conversion rate --- .../SalesprojectConversionRate_entity.aod | 7 +- .../displayValueProcess.js | 8 - .../recordcontainers/jdito/contentProcess.js | 117 +++--------- .../recordcontainers/jdito/rowCountProcess.js | 65 +++++-- process/Salesproject_lib/process.js | 166 +++++++++++++++++- 5 files changed, 240 insertions(+), 123 deletions(-) delete mode 100644 entity/SalesprojectConversionRate_entity/entityfields/ab_keyword_entryid_title/displayValueProcess.js diff --git a/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod b/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod index e7474ae27a8..2432f8fbbf7 100644 --- a/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod +++ b/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod @@ -18,7 +18,7 @@ <entityField> <name>AB_KEYWORD_ENTRYID_TITLE</name> <title>Phase</title> - <displayValueProcess>%aditoprj%/entity/SalesprojectConversionRate_entity/entityfields/ab_keyword_entryid_title/displayValueProcess.js</displayValueProcess> + <groupable v="false" /> </entityField> <entityActionField> <name>openSalesprojects</name> @@ -76,6 +76,11 @@ <name>AB_KEYWORD_ENTRYID_TITLE.value</name> </jDitoRecordFieldMapping> </recordFieldMappings> + <aggregateFieldMappings> + <jDitoRecordFieldMapping> + <name>conversionRate_aggregate.value</name> + </jDitoRecordFieldMapping> + </aggregateFieldMappings> <filterExtensions> <filterExtension> <name>Year</name> diff --git a/entity/SalesprojectConversionRate_entity/entityfields/ab_keyword_entryid_title/displayValueProcess.js b/entity/SalesprojectConversionRate_entity/entityfields/ab_keyword_entryid_title/displayValueProcess.js deleted file mode 100644 index dc763b0c615..00000000000 --- a/entity/SalesprojectConversionRate_entity/entityfields/ab_keyword_entryid_title/displayValueProcess.js +++ /dev/null @@ -1,8 +0,0 @@ -import("Keyword_lib"); -import("KeywordRegistry_basic"); -import("system.vars"); -import("system.translate"); -import("system.result"); - -// It's important to translate twice, because there are Phase with an extra translation. -result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectPhase(), vars.get("$field.AB_KEYWORD_ENTRYID_TITLE"))); \ No newline at end of file diff --git a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js index 2f3dad2864f..32a839f38d9 100644 --- a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js @@ -1,71 +1,49 @@ -import("JditoFilter_lib"); -import("Salesproject_lib"); -import("system.datetime"); -import("system.translate"); import("system.result"); -import("system.vars"); +import("JditoFilter_lib"); import("Sql_lib"); import("KeywordRegistry_basic"); -import("system.neon"); +import("Salesproject_lib"); +import("system.vars"); -let sqlHelper = new SqlMaskingUtils(); let filter = vars.get("$local.filters"); -let dateStartYear = sqlHelper.yearFromDate("SALESPROJECT_MILESTONE.DATE_START"); -let dateStartMonth = sqlHelper.monthFromDate("SALESPROJECT_MILESTONE.DATE_START"); -let isFirstPhase = true; -let data = []; +let gruppingFields = SalesprojectConversionRate.groupMapping(false); +var filterPhasenIDs = []; - -let gruppingFields = { - "AB_KEYWORD_ENTRYID_KEYID": ["AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.TITLE", "AB_KEYWORD_ENTRY.SORTING"], - "#EXTENSION.Year.Year#NUMBER" : [dateStartYear, dateStartYear, dateStartYear], - "#EXTENSION.Month.Month#NUMBER" : [dateStartMonth, dateStartMonth, dateStartMonth] -}; +var phasenManager = new SalesprojectConversionRate(); -let sql = new SqlBuilder() +var sql = new SqlBuilder() .from("AB_KEYWORD_ENTRY") .where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase()) .and("AB_KEYWORD_ENTRY.KEYID", $KeywordRegistry.salesprojectPhase$nego(), SqlBuilder.NOT_EQUAL()); if (filter != null) { - if (JSON.stringify(filter).indexOf("AB_KEYWORD_ENTRYID_KEYID") > -1) + if (JSON.stringify(filter).indexOf("AB_KEYWORD_ENTRYID_KEYID") > -1 && vars.exists("$local.grouped")) { - let phasenFilter = filter.childs.filter(function (child) { + var phasenFilter = filter.childs.filter(function (child) { return (child.childs.filter(function (child) { return child.name == "AB_KEYWORD_ENTRYID_KEYID"; })).length > 0 - })[0]; - phasenFilter.operator = "OR"; - let pre = newSelect("PRE.KEYID") - .from("AB_KEYWORD_ENTRY") - .join("AB_KEYWORD_ENTRY", "AB_KEYWORD_ENTRY.SORTING -1 = PRE.SORTING", "PRE") - .where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase()) - .and(["AB_KEYWORD_ENTRY", "CONTAINER", "PRE"], $KeywordRegistry.salesprojectPhase()) - .and("AB_KEYWORD_ENTRY.KEYID", phasenFilter.childs[0].value) - .cell() - if (pre != "") { - let temp = JSON.parse(JSON.stringify(phasenFilter.childs[0])); - temp.value = temp.key = pre; - phasenFilter.childs.push(temp); - isFirstPhase = false; - } + }); + + phasenFilter.forEach(function (pFilter) { + filterPhasenIDs = filterPhasenIDs.concat(pFilter.childs.map(function (child) { return child.key;})); + pFilter.childs = []; + }); } + else + filterPhasenIDs = null; let filterCondition = JditoFilterUtils.getSqlCondition(filter, "AB_KEYWORD_ENTRY", null, SalesprojectConversionRate.filterMapping(null)); sql.andIfSet(filterCondition); } - - if (vars.exists("$local.grouped")) { let groupedfield = vars.get("$local.grouped"); sql.join("SALESPROJECT_MILESTONE", newWhere("SALESPROJECT_MILESTONE.MILESTONEVALUE = AB_KEYWORD_ENTRY.KEYID")) // COUNT, ID, TITLE - .select(["COUNT(*)", gruppingFields[groupedfield][0], gruppingFields[groupedfield][1]]) - .groupBy(["AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.SORTING", gruppingFields[groupedfield][0], gruppingFields[groupedfield][1], gruppingFields[groupedfield][2]]) - .orderBy([gruppingFields[groupedfield][2], "AB_KEYWORD_ENTRY.SORTING"]); + .select(["SALESPROJECT_MILESTONE.SALESPROJECT_ID", "SALESPROJECT_MILESTONE.MILESTONEVALUE", gruppingFields[groupedfield][0]]); if (filter != null) { @@ -73,60 +51,11 @@ if (vars.exists("$local.grouped")) sql.andIfSet(filterCondition); } - let sqlData = sql.table(); - let row = { - "id": "", - "title": "", - "sumRate": 0.0, - "sumCount": 0, - "count" : 0, - "getTitle": function (pGroupedField) { - if (pGroupedField == "#EXTENSION.Month.Month#NUMBER" ) - { - // When convert the Number of the Month to the Month name it doesn't matter which Year is used, so here is the Year 2020 hard-coded. - let monthDate = new Date(2020, parseInt(this.title)-1); - return translate.text(datetime.toDate(monthDate.getTime(), "MMMM", "UTC")); - } - return translate.text(translate.text(this.title)); - } - }; - let pre = -1; - - for (let i = 0; i <= sqlData.length; i++){ - if (i == sqlData.length || sqlData[i][1] != row.id) - { - if (row.id != "") - data.push([row.sumCount + "", row.id, row.getTitle(groupedfield), row.sumRate / row.count]); - - if (i == sqlData.length) - break; - - row.id = sqlData[i][1]; - row.title = sqlData[i][2]; - row.sumRate = 0; - row.sumCount = 0; - row.count = 0; - - if (groupedfield != "AB_KEYWORD_ENTRYID_KEYID") { - pre = -1; - } - } - - if (pre != -1) - row.sumRate += (parseFloat(sqlData[i][0]) / pre); - - if (isFirstPhase || pre != -1) - { - row.count++; - row.sumCount += parseInt(sqlData[i][0]); - } - - - pre = parseFloat(sqlData[i][0]); - - - } - result.object(data); + sql.table().forEach(function (row) { + phasenManager.insertMilestone(row[0], row[1],groupedfield == "AB_KEYWORD_ENTRYID_KEYID" ? null :row[2] ); // TODO: Gruppingfield + }); + + result.object(phasenManager.getConversionRates(filterPhasenIDs)); } else { diff --git a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js index 8615399a383..f30b4775d6c 100644 --- a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js +++ b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js @@ -1,32 +1,65 @@ -import("KeywordRegistry_basic"); -import("system.vars"); import("system.result"); -import("Sql_lib"); import("JditoFilter_lib"); +import("Sql_lib"); +import("KeywordRegistry_basic"); import("Salesproject_lib"); +import("system.vars"); -var groupMapping = SalesprojectConversionRate.groupMapping(true); -var phases = new SqlBuilder().select(["COUNT(*)"]).from("AB_KEYWORD_ENTRY") -.join("SALESPROJECT_MILESTONE", "AB_KEYWORD_ENTRY.KEYID = SALESPROJECT_MILESTONE.MILESTONEVALUE") +let filter = vars.get("$local.filters"); +let gruppingFields = SalesprojectConversionRate.groupMapping(false); +var filterPhasenIDs = []; + +var phasenManager = new SalesprojectConversionRate(); + +var sql = new SqlBuilder() +.from("AB_KEYWORD_ENTRY") .where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase()) .and("AB_KEYWORD_ENTRY.KEYID", $KeywordRegistry.salesprojectPhase$nego(), SqlBuilder.NOT_EQUAL()); -var filter = vars.get("$local.filters"); - if (filter != null) { - var filterCondition = JditoFilterUtils.getSqlCondition(vars.get("$local.filters"), "AB_KEYWORD_ENTRY", null, SalesprojectConversionRate.filterMapping("SALESPROJECT_MILESTONE.DATE_START", true)); - phases.andIfSet(filterCondition); + if (JSON.stringify(filter).indexOf("AB_KEYWORD_ENTRYID_KEYID") > -1 && vars.exists("$local.grouped")) + { + var phasenFilter = filter.childs.filter(function (child) { + return (child.childs.filter(function (child) { + return child.name == "AB_KEYWORD_ENTRYID_KEYID"; + })).length > 0 + }); + + phasenFilter.forEach(function (pFilter) { + filterPhasenIDs = filterPhasenIDs.concat(pFilter.childs.map(function (child) { return child.key;})); + pFilter.childs = []; + }); + } + else + filterPhasenIDs = null; + + let filterCondition = JditoFilterUtils.getSqlCondition(filter, "AB_KEYWORD_ENTRY", null, SalesprojectConversionRate.filterMapping(null)); + sql.andIfSet(filterCondition); } if (vars.exists("$local.grouped")) { - var groupedfield = vars.get("$local.grouped") - phases.groupBy([groupMapping[groupedfield]]); + let groupedfield = vars.get("$local.grouped"); + sql.join("SALESPROJECT_MILESTONE", newWhere("SALESPROJECT_MILESTONE.MILESTONEVALUE = AB_KEYWORD_ENTRY.KEYID")) + // COUNT, ID, TITLE + .select(["SALESPROJECT_MILESTONE.SALESPROJECT_ID", "SALESPROJECT_MILESTONE.MILESTONEVALUE", gruppingFields[groupedfield][0]]); + + if (filter != null) + { + filterCondition = JditoFilterUtils.getSqlCondition(filter, "SALESPROJECT_MILESTONE", null, SalesprojectConversionRate.filterMapping("SALESPROJECT_MILESTONE.DATE_START", false, "SALESPROJECT_MILESTONE")); + sql.andIfSet(filterCondition); + } + + sql.table().forEach(function (row) { + phasenManager.insertMilestone(row[0], row[1],groupedfield == "AB_KEYWORD_ENTRYID_KEYID" ? null :row[2] ); // TODO: Gruppingfield + }); + + result.object(phasenManager.getConversionRates(filterPhasenIDs).length); } else { - phases.groupBy(["AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID", "AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.TITLE", "AB_KEYWORD_ENTRY.SORTING"]); -} - -result.string(phases.arrayColumn().length); \ No newline at end of file + sql.select(["AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID", "AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.TITLE"]) + .orderBy("AB_KEYWORD_ENTRY.SORTING"); + result.object(sql.table().length); +} \ No newline at end of file diff --git a/process/Salesproject_lib/process.js b/process/Salesproject_lib/process.js index 53974b08542..c88cd30a425 100644 --- a/process/Salesproject_lib/process.js +++ b/process/Salesproject_lib/process.js @@ -1,3 +1,6 @@ +import("system.datetime"); +import("system.logging"); +import("KeywordData_lib"); import("Sql_lib"); import("system.neon"); import("system.vars"); @@ -156,7 +159,10 @@ Salesproject.updateSalesprojectPhase = function(pSalesprojectId, pPhase) * * @class */ -function SalesprojectConversionRate() {} +function SalesprojectConversionRate() { + this.MILESTONES = {}; + this.isGrouping = null; +} /** * Returns the Mapping of the Fields and FilterExtention for the grouping @@ -177,11 +183,11 @@ SalesprojectConversionRate.groupMapping = function (pRightOneTables) } } - let dateStartYear = sqlHelper.yearFromDate("DATA.DATE_START"); - let dateStartMonth = sqlHelper.monthFromDate("DATA.DATE_START"); + let dateStartYear = sqlHelper.yearFromDate("SALESPROJECT_MILESTONE.DATE_START"); + let dateStartMonth = sqlHelper.monthFromDate("SALESPROJECT_MILESTONE.DATE_START"); return { - "AB_KEYWORD_ENTRYID_KEYID": ["DATA.KEYID", "DATA.TITLE", "DATA.SORTING"], + "AB_KEYWORD_ENTRYID_KEYID": ["AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.TITLE", "AB_KEYWORD_ENTRY.SORTING"], "#EXTENSION.Year.Year#NUMBER" : [dateStartYear, dateStartYear, dateStartYear], "#EXTENSION.Month.Month#NUMBER" : [dateStartMonth, dateStartMonth, dateStartMonth] } @@ -249,4 +255,156 @@ SalesprojectConversionRate.filterMapping = function(pField, pIsAll, pTable) } +/** + * Returns the Phases Keywordkeys + * + * @return {Array} Phases Keywordkeys + */ +SalesprojectConversionRate.prototype.PHASE = function () { + return KeywordData.getSimpleData($KeywordRegistry.salesprojectPhase()).map(function (r) { + return r[0]; + }); +} +/** + * Add Milestones to the Phases of the given Grouping. + * The Milestone is adding to the given and overlying Phases. + * + * @param {String} [pSalesprojectID] the ID of the Salesproject + * @param {String} [pPhase] the phase of the milestone + * @param {String} [pGrouping] the grouping Field + */ +SalesprojectConversionRate.prototype.insertMilestone = function (pSalesprojectID, pPhase, pGrouping) { + let logDetail = ["SALESPROJECT_MILESTONEID: " + pSalesprojectID, "PHASE: " + pPhase, "GROUPING: " + pGrouping] + let indexPhase = this.PHASE().indexOf(pPhase) + if (indexPhase > -1) { + let tempPhases; + if (pGrouping) + { + if ((!this.isGrouping) && this.isGrouping != null){ + logging.log(translate.text("The grouping is not active, but there is one given!"), logging.ERROR, logDetail); + return; + } + if (!this.MILESTONES[pGrouping]) + this.MILESTONES[pGrouping] = {}; + this.isGrouping = true; + tempPhases = this.MILESTONES[pGrouping]; + } + else if (this.isGrouping && this.isGrouping != null) + { + logging.log(translate.text("The grouping is active, but there is no one given!"), logging.ERROR, logDetail); + return; + } + else + { + tempPhases = this.MILESTONES; + this.isGrouping = false; + } + + + if (!tempPhases[pPhase]) + { + tempPhases[pPhase] = {}; + tempPhases[pPhase].size = 0; + } + + if (!tempPhases[pPhase][pSalesprojectID]) + { + tempPhases[pPhase][pSalesprojectID] = true; + tempPhases[pPhase].size++; + } + + if (indexPhase - 1 != -1) + this.insertMilestone(pSalesprojectID, this.PHASE()[indexPhase - 1], pGrouping); + } + else + { + logging.log(translate.withArguments("The given Phase \"%0\" can not be found.", [pPhase]), logging.ERROR, logDetail); + } +} + +/** + * Calculates the Conversion Rate for evry grouping field + * + * @param {Array} [pFilter] the ids of the phases, which has to be filtered + * + */ +SalesprojectConversionRate.prototype.getConversionRates = function (pFilter) { + if (this.isGrouping == null) + logging.log(translate.text("You have to use the insertMilestone Function before."), logging.ERROR); + else if (this.isGrouping) + { + let groupingResults = []; + Object.keys(this.MILESTONES).forEach(function (grouping) { + let count = 0; + let sum = 0.0; + let sumMilestones = 0; + this._getConversionRatesofPhases(this.MILESTONES[grouping], pFilter).forEach(function (phase) { + sum += phase[3]; + sumMilestones += phase[0] + count++; + }, this); + if (sumMilestones != 0) + groupingResults.push(["" + sumMilestones, grouping, this._getTitleOfKey(grouping, true), (sum / count)]) + }, this); + return groupingResults + } + else + { + return this._getConversionRatesofPhases(this.MILESTONES, pFilter); + } + return []; +} + +/** + * Calculates the Conversion Rate for the phases + * + * @param {Array} [pPhases] the phases of the current grouping + * @param {Array} [pFilter] the ids of the phases, which has to be filtered + * + */ +SalesprojectConversionRate.prototype._getConversionRatesofPhases = function (pPhases, pFilter) { + let results = []; + this._addToResult(pPhases[this.PHASE()[0]].size, this.PHASE()[0], -1, results, pFilter); + for (let i = 1; i < Object.keys(pPhases).length ;i++) + { + this._addToResult(pPhases[this.PHASE()[i]].size, this.PHASE()[i], pPhases[this.PHASE()[i-1]].size, results, pFilter); + } + return results; +} + +/** + * Adds the Values to the result array + * + * @param {Array} [pCount] the count of the phase + * @param {Array} [pId] the id of the phase + * @param {Array} [pPreCount] the count of the previous phase + * @param {Array} [pResult] the array into which the data will be added + * @param {Array} [pFilter] the ids of the phases, which has to be filtered + */ +SalesprojectConversionRate.prototype._addToResult = function (pCount, pId, pPreCount, pResult, pFilter){ + if ((pFilter && pFilter.indexOf(pId)> -1) || !pFilter) + // COUNT, ID, TITLE, CONVERSION_RATE + pResult.push([this.isGrouping ? pCount : ("" + pCount), pId, this._getTitleOfKey(pId), pPreCount == -1 ? 0 : (pCount /pPreCount)]); +} + +/** + * gets the title of the key + * @param {Array} [pKey] the key, which has to translate + * @param {Array} [pIsGrouping] is this title of a grouping + */ +SalesprojectConversionRate.prototype._getTitleOfKey = function (pKey, pIsGrouping) { + if (pIsGrouping) + { + if (pKey <= 12) + { + // When convert the Number of the Month to the Month name it doesn't matter which Year is used, so here is the Year 2020 hard-coded. + let monthDate = new Date(2020, parseInt(pKey)-1); + return translate.text(datetime.toDate(monthDate.getTime(), "MMMM", "UTC")); + } + } + else + return KeywordUtils.getViewValue($KeywordRegistry.salesprojectPhase(),pKey); + + return pKey; +} -- GitLab From 9f2d827b8833dbfb7814e2647fff29bdfd01c34d Mon Sep 17 00:00:00 2001 From: Benjamin Ulrich <b.ulrich@adito.de> Date: Tue, 17 Nov 2020 14:26:30 +0000 Subject: [PATCH 090/184] [Projekt: Entwicklung - xRM][TicketNr.: 1061035][Serienmail - Testen - Fehler im Serverlog] --- language/_____LANGUAGE_de/_____LANGUAGE_de.aod | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index ada3bee7bc8..a268f6441a2 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -4672,7 +4672,7 @@ </entry> <entry> <key>the \"%0\" table is configured to get logged but this is the logging-stoarge itself and cannot be monitored</key> - <value>Die "% 0" -Tabelle ist so konfiguriert, dass sie protokolliert wird. Dies ist jedoch der Protokollierspeicher selbst und kann nicht überwacht werden</value> + <value>Die "%0" -Tabelle ist so konfiguriert, dass sie protokolliert wird. Dies ist jedoch der Protokollierspeicher selbst und kann nicht überwacht werden</value> </entry> <entry> <key>Attribute usage Id</key> @@ -9720,7 +9720,7 @@ Bitte Datumseingabe prüfen</value> </entry> <entry> <key>Mailbridge failed: user '%0' is unknown, contact an administrator.</key> - <value>Mailbridge fehlgeschlagen: Benutzer '%0' ist unbekannt, kontaktieren sie einen Administrator.</value> + <value>Mailbridge fehlgeschlagen: Benutzer '%0' ist unbekannt, kontaktieren Sie einen Administrator.</value> </entry> <entry> <key>Count Chart</key> -- GitLab From edcc4ca7eeecd977671735f9ff8ae63fc5abbe7d Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 17 Nov 2020 11:58:05 +0100 Subject: [PATCH 091/184] Marketing workflow enhancements --- .../Data_alias/basic/2020.2.2/changelog.xml | 1 + .../insert_employeeCountAttribute.xml | 21 ++++++++++++ .../children/targets_param/valueProcess.js | 34 ++++++++++++++++--- .../launchworkflows/onActionProcess.js | 5 ++- .../KnowledgeNewsFeed/KnowledgeNewsFeed.aod | 3 -- process/KnowledgeManagement_lib/process.js | 2 ++ .../SetAttribute_workflowService/process.js | 3 +- .../serviceTaskParameterProcess.js | 9 ++--- 8 files changed, 63 insertions(+), 15 deletions(-) create mode 100644 .liquibase/Data_alias/basic/2020.2.2/insert_employeeCountAttribute.xml diff --git a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml index d2c30058760..91f02520130 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml @@ -3,4 +3,5 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <include relativeToChangelogFile="true" file="insert_commMediumTitleKeywordAttribute.xml"/> <include relativeToChangelogFile="true" file="Knowledgemanagement/changelog_knowledgeManagement.xml"/> + <include relativeToChangelogFile="true" file="insert_employeeCountAttribute.xml"/> </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/insert_employeeCountAttribute.xml b/.liquibase/Data_alias/basic/2020.2.2/insert_employeeCountAttribute.xml new file mode 100644 index 00000000000..f84d5e859c5 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/insert_employeeCountAttribute.xml @@ -0,0 +1,21 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="s.listl" id="59d2d137-086a-4c07-869a-72a2b24952d4"> + <insert tableName="AB_ATTRIBUTE"> + <column name="AB_ATTRIBUTEID" value="dd024883-c49e-4d09-85c8-829cf9c9c5e9"/> + <column name="ATTRIBUTE_PARENT_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/> + <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> + <column name="ATTRIBUTE_NAME" value="Employee count"/> + <column name="ATTRIBUTE_TYPE" value="NUMBER"/> + <column name="SORTING" valueNumeric="7"/> + </insert> + <insert tableName="AB_ATTRIBUTEUSAGE"> + <column name="AB_ATTRIBUTEUSAGEID" value="8de717a1-9d64-44c9-b692-b350b0857d59"/> + <column name="AB_ATTRIBUTE_ID" value="dd024883-c49e-4d09-85c8-829cf9c9c5e9"/> + <column name="OBJECT_TYPE" value="Organisation"/> + <column name="MAX_COUNT" valueNumeric="1"/> + </insert> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js index cca5f0e8d7c..1bfc02a3f32 100644 --- a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js @@ -1,3 +1,4 @@ +import("Sql_lib"); import("Util_lib"); import("system.vars"); import("system.result"); @@ -7,11 +8,36 @@ var context = vars.get("$param.ObjectType_param"); var targets = Utils.parseJSON(vars.get("$param.ObjectIds_param")); var filter = Utils.parseJSON(vars.get("$param.ObjectFilter_param")); -targets = FilterViewActionUtils.getUidsBySelectionOrFilter(context, targets, filter).map(function (targetId) +var personContactIds = []; + +targets = FilterViewActionUtils.getUidsBySelectionOrFilter(context, targets, filter).map(function (target) { - if (Utils.isString(targetId)) - return [targetId, context]; //todo: context dynamic (eg for participants) - return targetId; + if (Utils.isString(target)) + target = [target, context]; + if (target[1] == "Person") + personContactIds.push(target[0]); + return target; }); +if (personContactIds.length !== 0) +{ + var orgContactIds = newSelect(["anyContact.CONTACTID", "orgContact.CONTACTID"]) + .from("CONTACT", "orgContact") + .join("CONTACT", "anyContact.ORGANISATION_ID = orgContact.ORGANISATION_ID and orgContact.PERSON_ID is null", "anyContact") + .where(["CONTACT", "CONTACTID", "anyContact"], personContactIds, SqlBuilder.IN()) + .table(); + var contactIdMap = new Map(orgContactIds); + targets.forEach(function ([targetId, targetContext, variables], i, allTargets) + { + if (contactIdMap.has(targetId)) + { + if (!variables) + variables = {}; + variables.attributeRowId = contactIdMap.get(targetId); + variables.attributeContext = "Organisation"; + allTargets[i][2] = variables; + } + }); +} + result.string(JSON.stringify(targets)); \ No newline at end of file diff --git a/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js b/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js index 7e0756271a9..71d4a69dc83 100644 --- a/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js +++ b/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js @@ -17,10 +17,9 @@ if (!Utils.isNullOrEmpty(startFormResult)) targets.forEach(function ([targetId, targetContext, processVariables]) { - /* Caution: If 'variables' is used, then 'processVariables' is only a reference to 'variables'. - Currently that's fine, but keep it in mind when you change this code. */ if (!processVariables) - processVariables = variables; + processVariables = {}; + Object.assign(processVariables, variables); processVariables[WorkflowVariables.TARGET_ID()] = targetId; processVariables[WorkflowVariables.TARGET_CONTEXT()] = targetContext || context; diff --git a/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod b/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod index ecb8b248430..f9bc4fdec87 100644 --- a/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod +++ b/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod @@ -10,8 +10,5 @@ <name>a6965156-ab52-4520-a3be-1351eacd863d</name> <view>KnowledgeNewsFeed_view</view> </neonViewReference> - <neonViewReference> - <name>e4604c82-a42f-47c6-a1d1-0f1d1727ee38</name> - </neonViewReference> </references> </neonContext> diff --git a/process/KnowledgeManagement_lib/process.js b/process/KnowledgeManagement_lib/process.js index 9ec7cfda580..5bbe53c0a84 100644 --- a/process/KnowledgeManagement_lib/process.js +++ b/process/KnowledgeManagement_lib/process.js @@ -327,6 +327,7 @@ KnowledgeManagementTagsController.getInstance = function(pId, pModel) * * @param {String} pIdValue, id of the new AttributeRelation typically read from $local.idvalue * @param {Array} pRowData, data of the new tag, typically read from $local.rowdata + * @param {Boolean} pFromUpdate * * @return {this} */ @@ -489,6 +490,7 @@ KnowledgeManagementTagsController.prototype.clearTags = function() * @param {String} pIdValue typically the $local.idvalue of the onInsert process, it is being used, if for some reason the entered tag is already existing. * then a new AttributeRelation is created instead of the tag. * @param {[][]} pData typically the $local.rowdata of the onInsert or onUpdate process + * @param {Boolean} pFromUpdate * * @return {String|null} returns the id of the new tag attribute or null, if it couldn't be created */ diff --git a/process/SetAttribute_workflowService/process.js b/process/SetAttribute_workflowService/process.js index aebb4c992da..394ef054248 100644 --- a/process/SetAttribute_workflowService/process.js +++ b/process/SetAttribute_workflowService/process.js @@ -24,4 +24,5 @@ if (variables.attributeValueVariable) variables.attributeValue = attributeValue; } -new AttributeRelationQuery(variables.targetId, attributeId, variables.targetContext).insertAttribute(variables.attributeValue); \ No newline at end of file +new AttributeRelationQuery(variables.attributeRowId || variables.targetId, attributeId, variables.attributeContext || variables.targetContext) + .insertAttribute(variables.attributeValue); \ No newline at end of file diff --git a/process/SetAttribute_workflowService/serviceTaskParameterProcess.js b/process/SetAttribute_workflowService/serviceTaskParameterProcess.js index 97d40e0f704..443bc0179a0 100644 --- a/process/SetAttribute_workflowService/serviceTaskParameterProcess.js +++ b/process/SetAttribute_workflowService/serviceTaskParameterProcess.js @@ -17,12 +17,13 @@ var currentValues = JSON.parse(vars.get("$local.value")); var allAttributes = newSelect("AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, ATTRIBUTE_NAME, ATTRIBUTE_TYPE, ATTRIBUTE_ACTIVE") .from("AB_ATTRIBUTE") .where("AB_ATTRIBUTE.ATTRIBUTE_TYPE", AttributeTypes.OBJECTSELECTION(), SqlBuilder.NOT_EQUAL()) //these can't work yet + .orderBy(["ATTRIBUTE_PARENT_ID", "SORTING", "ATTRIBUTE_NAME"]) .table(); -var attributeNameMap = {}; +var attributeNameMap = new Map(); var attributes = []; allAttributes.forEach(function ([attributeId, parentId, attributeName, attributeType, isActive]) { - attributeNameMap[attributeId] = [translate.text(attributeName), parentId]; + attributeNameMap.set(attributeId, [translate.text(attributeName), parentId]); if (isActive == "1" && attributeType != AttributeTypes.GROUP() && attributeType != AttributeTypes.COMBOVALUE()) attributes.push(attributeId); }); @@ -32,9 +33,9 @@ attributes = attributes.map(function (attributeId) var fullName = ""; //the loop will stop if an id comes up twice, because otherwise that could cause an infinite loop if the data is faulty var alreadyEncountered = new Set(); - while (parentId && attributeNameMap[parentId] && !alreadyEncountered.has(parentId)) + while (parentId && attributeNameMap.has(parentId) && !alreadyEncountered.has(parentId)) { - var [currentName, currentParent] = attributeNameMap[parentId]; + var [currentName, currentParent] = attributeNameMap.get(parentId); if (!fullName) fullName = currentName; else -- GitLab From e140a8e4e5abda469be32cf6d01c9b109ca4c364 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 17 Nov 2020 17:09:22 +0100 Subject: [PATCH 092/184] Workflow signal webservice --- process/workflowSignal_rest/process.js | 23 +++++++++++++++++++ .../workflowSignal_rest.aod | 13 +++++++++++ 2 files changed, 36 insertions(+) create mode 100644 process/workflowSignal_rest/process.js create mode 100644 process/workflowSignal_rest/workflowSignal_rest.aod diff --git a/process/workflowSignal_rest/process.js b/process/workflowSignal_rest/process.js new file mode 100644 index 00000000000..83fe2b22065 --- /dev/null +++ b/process/workflowSignal_rest/process.js @@ -0,0 +1,23 @@ +import("Workflow_lib"); +import("system.workflow"); +import("system.util"); + +function restpost (pRequest) +{ + var request = JSON.parse(pRequest); + + var signalObj = JSON.parse(util.decodeBase64String(request.body)); + if (signalObj && signalObj.signal && WorkflowUtils.engineIsEnabled()) + { + var signal = signalObj.signal; + var processInstanceId = signalObj.processInstanceId || null; + var variables = signalObj.variables || {}; + + workflow.signalEventReceived(signal, variables, processInstanceId); + + request.response.statuscode = 200; + request.response.body = JSON.stringify(signalObj); + } + + return JSON.stringify(request); +} \ No newline at end of file diff --git a/process/workflowSignal_rest/workflowSignal_rest.aod b/process/workflowSignal_rest/workflowSignal_rest.aod new file mode 100644 index 00000000000..3006dce1189 --- /dev/null +++ b/process/workflowSignal_rest/workflowSignal_rest.aod @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>workflowSignal_rest</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/workflowSignal_rest/process.js</process> + <publishAsWebservice v="true" /> + <style>REST</style> + <restAcceptedMimeType>application/json</restAcceptedMimeType> + <restDeliveredMimeType>application/json</restDeliveredMimeType> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> -- GitLab From 9a0d526c93bf556047eda1c3f277e9bd75e62448 Mon Sep 17 00:00:00 2001 From: Sebastian Pongratz <s.pongratz@adito.de> Date: Wed, 18 Nov 2020 11:57:06 +0000 Subject: [PATCH 093/184] Dependency_WorkflowExtentions --- process/Context_lib/process.js | 21 +++ process/Dependency_lib/process.js | 39 +++- process/Workflow_lib/process.js | 178 +++++++++++++++++- .../process.js | 0 .../workflowExtension_serverProcess.aod | 9 + 5 files changed, 236 insertions(+), 11 deletions(-) create mode 100644 process/workflowExtension_serverProcess/process.js create mode 100644 process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index 7aa6dedab7b..5713843c844 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -86,6 +86,27 @@ ContextUtils.getEntity = function (pContextId) return project.getContextStructure(pContextId).entity; } +/** + * Returns the context associated with the entity + * + * @param {String} pEntity the name of the Entity + * @return {String} the context + */ +ContextUtils.getContextId = function (pEntity) +{ + if (!pEntity) + return null; + + let contexte = ContextUtils.getContexts(false, [], false); + + for (let i = 0; i < contexte.length; i++) { + if (ContextUtils.getEntity(contexte[i][0]) == pEntity) + return contexte[i][0]; + } + return null; + +} + /** * Returns the title of the entity associated with the context * diff --git a/process/Dependency_lib/process.js b/process/Dependency_lib/process.js index d654f2f4667..1f4e1267a8e 100644 --- a/process/Dependency_lib/process.js +++ b/process/Dependency_lib/process.js @@ -29,6 +29,9 @@ Dependency.mapping = function () return { "Address_entity": { "Organisation_entity" : { + "options" : { + "isObservable" : true + }, "getUIDsfn" : function (pRowData, pChangedData) { var tableField = "ADDRESS.CONTACT_ID"; var res = []; @@ -47,12 +50,26 @@ Dependency.mapping = function () * Returns the dependencies on the entity * * @param {String} [pEntity] the name of the entity + * @param {Object} [pOptionFilter] the Object must be handed over in the format: { "option" : true/false } + * + * @example + * Dependency.getDependency("Organisation_entity", {"isObservable" : true }); + * @example + * Dependency.getDependency("Organisation_entity", {})); + * @example + * Dependency.getDependency("Organisation_entity")); + * * @return {String[]} the founded Dependencies. If no one is found, you get an empty Array */ -Dependency.getDependency = function (pEntity) { +Dependency.getDependency = function (pEntity, pOptionFilter) { if (Dependency.mapping()[pEntity]) { - return Object.keys(Dependency.mapping()[pEntity]); + return Object.keys(Dependency.mapping()[pEntity]).filter(function (key) { + return (!pOptionFilter || Object.keys(pOptionFilter).every(function (pOption) { + let option = Dependency.mapping()[pEntity][key]["options"][pOption] + return option && pOptionFilter[pOption] == option; + })); + }); } @@ -63,10 +80,24 @@ Dependency.getDependency = function (pEntity) { * Returns the dependencies that this entity has on others * * @param {String} [pEntity] the name of the entity + * @param {Object} [pOptionFilter] the Object must be handed over in the format: { "option" : true/false } + * + * @example + * Dependency.getReverseDependency("Organisation_entity", {"isObservable" : true }); + * @example + * Dependency.getReverseDependency("Organisation_entity", {})); + * @example + * Dependency.getReverseDependency("Organisation_entity")); + * * @return {String[]} the founded Dependencies. If no one is found, you get an empty Array */ -Dependency.getReverseDependency = function (pEntity) { +Dependency.getReverseDependency = function (pEntity, pOptionFilter) { return Object.keys(Dependency.mapping()).filter(function (key) { - return Dependency.mapping()[key][pEntity]; + return Dependency.mapping()[key][pEntity] && (!pOptionFilter || Object.keys(pOptionFilter).every(function (pOption){ + let option = Dependency.mapping()[key][pEntity]["options"][pOption] + return option && pOptionFilter[pOption] == option; + })); }); } + + diff --git a/process/Workflow_lib/process.js b/process/Workflow_lib/process.js index 38627a87e22..8e0cef19c1b 100644 --- a/process/Workflow_lib/process.js +++ b/process/Workflow_lib/process.js @@ -1,3 +1,4 @@ +import("Employee_lib"); import("system.process"); import("Util_lib"); import("system.text"); @@ -46,18 +47,15 @@ WorkflowUtils.openNewInstance = function (pVariables, pTargetIds, pTargetContext { if ((!pTargetIds || pTargetIds.length === 0) && pSelectionFilter) pTargetIds = []; - else if (!pTargetIds) - pTargetIds = [WorkflowVariables.TARGET_ID.getDefaultValue()]; if (!pVariables) pVariables = {}; Object.assign(pVariables, WorkflowVariables.getTargetVariables(pTargetIds, pTargetContext)); neon.openContext("WorkflowLauncher", "WorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { - "ProcessVariables_param": JSON.stringify(pVariables), - "TargetContext_param": pVariables[WorkflowVariables.TARGET_CONTEXT()], - "TargetFilter_param": pSelectionFilter ? JSON.stringify(pSelectionFilter) : "", - "Targets_param": JSON.stringify(pTargetIds) + "ProcessVariables_param" : JSON.stringify(pVariables), + "TargetContext_param" : pVariables[WorkflowVariables.TARGET_CONTEXT()], + "TargetFilter_param" : pSelectionFilter ? JSON.stringify(pSelectionFilter) : "" }); } @@ -176,7 +174,19 @@ WorkflowSignalSender.deleted = function (pVariables, pTargetId, pTargetContext) */ WorkflowSignalSender.eventHappened = function (pEvent, pTargetId, pTargetContext, pVariables) { - var variables = WorkflowVariables.getTargetVariables(pTargetId, pTargetContext); + let temp = {}; + temp[ WorkflowVariables.TARGET_CONTEXT()] = pTargetContext; + temp[WorkflowVariables.TARGET_ID()] = pTargetId; + temp[WorkflowVariables.TRIGGER()] = pEvent; + let variables = WorkflowVariables.getAllVariablesValue(temp); + + var processConfig = process.createStartAsyncConfig().setName("workflowExtension_serverProcess") + .setLocalVariables({"variablesWorkflow" : JSON.stringify(variables)}) + .setShowErrorDialog(true) + .setUser(vars.get("sys.user")) + .setThreadPriority(process.THREADPRIORITY_NORM) + .setTimerType(process.TIMERTYPE_SERVER); + process.startAsync(processConfig); var signals = WorkflowSignalSender.getSignalConfig(variables[WorkflowVariables.TARGET_CONTEXT()], pEvent); signals.forEach(function (signal) @@ -281,6 +291,160 @@ WorkflowVariables.TARGET_CONTEXT.getDefaultValue = function () return ContextUtils.getCurrentContextId(); } +/** + * Returns the variable name for the rowdata + */ +WorkflowVariables.ROWDATA = function () +{ + return "rowdata"; +} + +/** + * Returns the default value for the rowdata + */ +WorkflowVariables.ROWDATA.getDefaultValue = function () +{ + return JSON.stringify(vars.get("$local.rowdata")); +} + +/** + * Returns the variable name for the changed rows + */ +WorkflowVariables.CHANGED_ROWS = function () +{ + return "changedRows"; +} + +/** + * Returns the default value for the changed rows + */ +WorkflowVariables.CHANGED_ROWS.getDefaultValue = function () +{ + return JSON.stringify(vars.get("$local.changed")); +} + +/** + * Returns the variable name for the event user + */ +WorkflowVariables.EVENT_USER = function () +{ + return "eventUser"; +} + +/** + * Returns the default value for the event user + */ +WorkflowVariables.EVENT_USER.getDefaultValue = function () +{ + return EmployeeUtils.getCurrentUserId(); +} + +/** + * Returns the variable name for the event time + */ +WorkflowVariables.EVENT_TIME = function () +{ + return "eventTime"; +} + +/** + * Returns the default value for the event time + */ +WorkflowVariables.EVENT_TIME.getDefaultValue = function () +{ + return vars.get("$sys.date"); +} + +/** + * Returns the variable name for the trigger + */ +WorkflowVariables.TRIGGER = function () +{ + return "trigger"; +} + +/** + * Returns the default value for the trigger + */ +WorkflowVariables.TRIGGER.getDefaultValue = function () +{ + return null; +} + +/** + * Returns the variable name for the contenttitle + */ +WorkflowVariables.CONTENTTITLE = function () +{ + return "contenttitle"; +} + +/** + * Returns the default value for the contenttitle + */ +WorkflowVariables.CONTENTTITLE.getDefaultValue = function () +{ + return vars.get("$field.#CONTENTTITLE"); +} + +/** + * Returns an array of the WorkflowVariables + * + * @return {Array} array containing the variables name + */ +WorkflowVariables.getAllVariablesName = function () +{ + return [ + WorkflowVariables.TARGET_CONTEXT(), + WorkflowVariables.TARGET_ID() + ] +} + +/** + * Returns an array of the Variables, which contains the variables name + * + * @return {Array} array containing the variables + */ +WorkflowVariables.getAllVariables = function () +{ + return [ + "CHANGED_ROWS", + "EVENT_TIME", + "EVENT_USER", + "ROWDATA", + "TARGET_CONTEXT", + "TARGET_ID", + "TRIGGER", + "CONTENTTITLE" + ] +} + +/** + * Makes an object containing the variables + * + * @param {Objcet} [pVariables] value for the variables, if not provided, the dafault value is used. + * The Object have to hand over in the following format: + * + * {WorkflowVariable : value} + * + * @return {Object} object containing the variables + */ +WorkflowVariables.getAllVariablesValue = function (pVariables) +{ + if (!pVariables) + pVariables = {}; + + let tempVariables = {}; + WorkflowVariables.getAllVariables().forEach(function (v){ + let tempName = WorkflowVariables[v](); + if (pVariables[tempName]) + tempVariables[tempName] = pVariables[tempName] + else + tempVariables[tempName] = WorkflowVariables[v].getDefaultValue(); + }); + return tempVariables; +} + /** * Makes an object containing the variables "targetId" and "targetContext" * diff --git a/process/workflowExtension_serverProcess/process.js b/process/workflowExtension_serverProcess/process.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod b/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod new file mode 100644 index 00000000000..d9ed92e0f4d --- /dev/null +++ b/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>workflowExtension_serverProcess</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/workflowExtension_serverProcess/process.js</process> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> -- GitLab From 35625cf1c3168f79f53ee55167233220f258bbf9 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 19 Nov 2020 11:02:04 +0100 Subject: [PATCH 094/184] Teams integration bugfixes, translations --- aliasDefinition/Data_alias/Data_alias.aod | 184 ++++++++++++- .../importfromteams/onActionProcess.js | 2 +- .../MSTTeamMember_entity.aod | 26 +- .../entityfields/azureid/valueProcess.js | 1 + .../entityfields/azureupn/valueProcess.js | 1 + .../entityfields/invite/mandatoryProcess.js | 5 + .../entityfields/isextern/valueProcess.js | 17 +- .../entityfields/role/mandatoryProcess.js | 5 + entity/MSTTeamMember_entity/onValidation.js | 21 -- entity/MSTTeam_entity/MSTTeam_entity.aod | 26 +- .../entityfields/teammembers/stateProcess.js | 3 +- .../recordcontainers/jdito/onInsert.js | 26 +- .../recordcontainers/jdito/onUpdate.js | 9 +- .../MSTeamsActivityImport_entity.aod | 41 ++- .../importmessages/onActionProcess.js | 0 .../recordcontainers/jdito/contentProcess.js | 9 - .../MSTeamsMessage_entity.aod | 1 + entity/Member_entity/Member_entity.aod | 21 +- .../onActionProcess.js | 0 .../stateProcess.js | 0 .../recordcontainers/jdito/contentProcess.js | 63 +++-- .../Salesproject_entity.aod | 254 +++++++++--------- .../recordcontainers/db/onDBUpdate.js | 25 +- .../_____LANGUAGE_EXTRA.aod | 90 +++++++ .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 40 +++ .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 90 +++++++ .../MSTTeamEdit_view/MSTTeamEdit_view.aod | 4 +- neonView/PersonEdit_view/PersonEdit_view.aod | 19 -- process/Employee_lib/process.js | 2 + process/MSTeams_lib/process.js | 65 ++++- process/Sql_lib/process.js | 12 + process/Util_lib/process.js | 44 ++- 32 files changed, 813 insertions(+), 293 deletions(-) create mode 100644 entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js create mode 100644 entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js delete mode 100644 entity/MSTTeamMember_entity/onValidation.js create mode 100644 entity/MSTeamsActivityImport_entity/entityfields/importmessages/onActionProcess.js delete mode 100644 entity/MSTeamsActivityImport_entity/recordcontainers/jdito/contentProcess.js rename entity/Member_entity/entityfields/msteamsactiongroup/children/{changetomsteam => openmsteams}/onActionProcess.js (100%) rename entity/Member_entity/entityfields/msteamsactiongroup/children/{changetomsteam => openmsteams}/stateProcess.js (100%) diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 0d1539bb13d..2b11aae7aa4 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -16128,7 +16128,7 @@ <name>PUBLISH</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="1" /> + <columnType v="12" /> <size v="36" /> <scale v="0" /> <notNull v="false" /> @@ -16261,7 +16261,7 @@ <name>TYPE</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="1" /> + <columnType v="12" /> <size v="36" /> <scale v="0" /> <notNull v="false" /> @@ -16751,6 +16751,186 @@ </entityFieldDb> </entityFields> </entityDb> + <entityDb> + <name>MST_TEAMLINK</name> + <dbName></dbName> + <idColumn>MST_TEAMLINKID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>OBJECT_ROWID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>MST_TEAM_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>MST_TEAMLINKID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>OBJECT_TYPE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="63" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>MST_TEAM</name> + <dbName></dbName> + <idColumn>MST_TEAMID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>MST_TEAMID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>IS_ARCHIVED</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="5" /> + <size v="5" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>SERVICE_URL</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="255" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>TEAMNAME</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="255" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>GENERAL_CHANNELID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="48" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>WEB_URL</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="500" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> </entities> </entityGroup> </aliasDefDb> diff --git a/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js b/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js index 781ff2f24f2..102768f5f8e 100644 --- a/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js +++ b/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js @@ -1,7 +1,7 @@ import("system.vars"); import("system.neon"); -neon.openContext("MSTeamsActivityImport", null, null, neon.OPERATINGSTATE_NEW, { +neon.openContext("MSTeamsActivityImport", "MSTeamsActivityImportEdit_view", null, neon.OPERATINGSTATE_VIEW, { "ObjectRowId_param" : vars.get("$param.RowId_param"), "ObjectType_param": vars.get("$param.ObjectId_param") }); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod index 4847be9300d..ec5ee48818d 100644 --- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -3,8 +3,9 @@ <name>MSTTeamMember_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/MSTTeamMember_entity/documentation.adoc</documentation> + <title>Member</title> <siblings /> - <onValidation>%aditoprj%/entity/MSTTeamMember_entity/onValidation.js</onValidation> + <titlePlural>Members</titlePlural> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -23,6 +24,7 @@ <title>Members</title> <consumer>ProjectMembers</consumer> <linkedContextProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess> + <mandatory v="true" /> <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js</stateProcess> <displayValueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess> </entityField> @@ -39,11 +41,6 @@ </entityParameter> <entityConsumer> <name>ProjectMembers</name> - <dependency> - <name>dependency</name> - <entityName>Member_entity</entityName> - <fieldName>TeamMemberProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -54,6 +51,11 @@ <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Member_entity</entityName> + <fieldName>TeamMemberProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>ISEXTERN</name> @@ -69,7 +71,6 @@ <entityProvider> <name>MembersOfTeam</name> <documentation>%aditoprj%/entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc</documentation> - <titlePlural>Team members</titlePlural> <dependencies> <entityDependency> <name>37854fde-c4ae-4f56-82df-14385717f82e</name> @@ -90,12 +91,15 @@ <entityField> <name>ROLE</name> <title>Role</title> + <mandatory v="true" /> + <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js</mandatoryProcess> <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js</dropDownProcess> <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js</stateProcess> </entityField> <entityField> <name>INVITE</name> <title>Invitation</title> + <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js</mandatoryProcess> <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js</dropDownProcess> <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js</stateProcess> </entityField> @@ -103,6 +107,14 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>AZUREID</name> + <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>AZUREUPN</name> + <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js</valueProcess> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js new file mode 100644 index 00000000000..a2578b0245c --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js @@ -0,0 +1 @@ +//The value is set by ISEXTERN.valueProcess \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js new file mode 100644 index 00000000000..a2578b0245c --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js @@ -0,0 +1 @@ +//The value is set by ISEXTERN.valueProcess \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js new file mode 100644 index 00000000000..488ee5dc7e0 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js @@ -0,0 +1,5 @@ +import("Util_lib"); +import("system.vars"); +import("system.result"); + +result.string(Utils.toBoolean(vars.get("$field.ISEXTERN"))); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js index bb888295a8a..79c7037eb74 100644 --- a/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js +++ b/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js @@ -1,7 +1,14 @@ -import("Employee_lib"); -import("system.vars"); import("system.result"); +import("system.neon"); +import("system.tools"); +import("system.vars"); +import("Employee_lib"); + +var contactId = vars.get("$field.CONTACT_ID"); +var user = EmployeeUtils.getUserByContactId(contactId); +var azureId = user ? user[tools.PARAMS][tools.TEAMS_AZUREID] : ""; +var azureUpn = user ? user[tools.PARAMS][tools.TEAMS_AZUREUPN] : ""; -var member = vars.get("$field.CONTACT_ID"); -if (member) - result.string(!EmployeeUtils.isUser(member)); \ No newline at end of file +neon.setFieldValue("$field.AZUREUPN", azureUpn); +neon.setFieldValue("$field.AZUREID", azureId); +result.string(!azureId && !azureUpn); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js new file mode 100644 index 00000000000..79bef7b2ca0 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js @@ -0,0 +1,5 @@ +import("Util_lib"); +import("system.vars"); +import("system.result"); + +result.string(!Utils.toBoolean(vars.get("$field.ISEXTERN"))); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/onValidation.js b/entity/MSTTeamMember_entity/onValidation.js deleted file mode 100644 index 9db830c5c67..00000000000 --- a/entity/MSTTeamMember_entity/onValidation.js +++ /dev/null @@ -1,21 +0,0 @@ -import("system.translate"); -import("system.result"); -import("system.vars"); - -var isExtern = vars.getString("$field.ISEXTERN") == "true"; -var res; - -if (vars.get("$field.CONTACT_ID")) -{ - if (isExtern && !vars.get("$field.INVITE")) - { - res = translate.withArguments("Required value for %0 is missing", [vars.get("$property.INVITE.title")]); - } - else if(!isExtern && !vars.get("$field.ROLE")) - { - res = translate.withArguments("Required value for %0 is missing", [vars.get("$property.ROLE.title")]); - } -} - -if (res) - result.string(res); \ No newline at end of file diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod index 4d7a5ff463e..eb36ed85e05 100644 --- a/entity/MSTTeam_entity/MSTTeam_entity.aod +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -19,6 +19,12 @@ <fieldName>Teams</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>9794baf5-ffc8-498e-8aa8-f4eca945441c</name> + <entityName>MSTTeamLink_entity</entityName> + <fieldName>Teams</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityField> @@ -49,11 +55,6 @@ <name>TeamMembers</name> <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>MSTTeamMember_entity</entityName> - <fieldName>MembersOfTeam</fieldName> - </dependency> <children> <entityParameter> <name>MSTTeamId_param</name> @@ -68,6 +69,11 @@ <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>MSTTeamMember_entity</entityName> + <fieldName>MembersOfTeam</fieldName> + </dependency> </entityConsumer> <entityField> <name>TEAMID_AND_NAME</name> @@ -87,17 +93,17 @@ </entityParameter> <entityConsumer> <name>Channels</name> - <dependency> - <name>dependency</name> - <entityName>MSTeamsChannel_entity</entityName> - <fieldName>ChannelsForTeam</fieldName> - </dependency> <children> <entityParameter> <name>TeamId_param</name> <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>MSTeamsChannel_entity</entityName> + <fieldName>ChannelsForTeam</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js index 9f48c47fee7..1c53ca6a0df 100644 --- a/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js +++ b/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js @@ -1,5 +1,6 @@ +import("Util_lib"); import("system.result"); import("system.vars"); import("system.neon"); -result.string(vars.get("$field.ISARCHIVED") == "true" ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file +result.string(Utils.toBoolean(vars.get("$field.ISARCHIVED")) ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js index f7857c50dcc..1d73c7766db 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -1,3 +1,4 @@ +import("Util_lib"); import("Communication_lib"); import("Sql_lib"); import("system.vars"); @@ -16,39 +17,36 @@ var internalMembers = []; var externalMembers = []; teamMembers.forEach(function (teamMember) { - var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]); - if (!memberUser) + var contactId = teamMember["CONTACT_ID"]; + var isExtern = Utils.toBoolean(teamMember["ISEXTERN"]); + var isInvite = Utils.toBoolean(teamMember["INVITE"]); + var isOwner = teamMember["ROLE"] == "owner"; + var memberAzureId = teamMember["AZUREID"]; + var memberUpn = teamMember["AZUREUPN"]; + if (isExtern) { - var memberEmail = CommUtil.getStandardMail(teamMember["CONTACT_ID"]); + var memberEmail = CommUtil.getStandardMail(contactId); if (memberEmail) { externalMembers.push( teams.createExternalUserConfig(memberEmail) - .sendInvitation(teamMember["INVITE"] == "true") + .sendInvitation(isInvite) ); } return; } - var memberAzureId = memberUser[tools.PARAMS][tools.TEAMS_AZUREID]; - var memberUpn = memberUser[tools.PARAMS][tools.TEAMS_AZUREUPN]; if (!memberAzureId && memberUpn) memberAzureId = teams.getInternalAzureId(memberUpn); if (memberAzureId) { - if (teamMember["ROLE"] == "owner") + if (isOwner) ownerIds.push(memberAzureId); else internalMembers.push(teams.createInternalUserConfig(memberAzureId)); } }); -//mailNickName = teamName in camel case -var mailNickName = teamName.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function(match, index) -{ - if (+match === 0) // or if (/\s+/.test(match)) for white spaces - return ""; - return index === 0 ? match.toLowerCase() : match.toUpperCase(); -}); +var mailNickName = StringUtils.toLowerCamelCase(teamName); //mailNickName = teamName in camel case mailNickName = mailNickName + vars.get("$param.SalesprojectCode_param"); var groupConfig = teams.createGroupConfig(teamName, mailNickName, ownerIds); diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js index f55e08ec25b..54e7ab9ab6b 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js @@ -15,7 +15,8 @@ var deletedTeamMembers = vars.get("$field.TeamMembers.deletedRows"); var internalMembers = []; var externalMembers = []; -insertedTeamMembers.forEach(function (teamMember){ +insertedTeamMembers.forEach(function (teamMember) +{ var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]); if (!memberUser) { @@ -40,15 +41,15 @@ if (internalMembers.length !== 0) if (externalMembers.length !== 0) teams.addExternalMembers(teamId, externalMembers); -changedTeamMembers.forEach(function (teamMember){ +changedTeamMembers.forEach(function (teamMember) +{ var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]); if (!memberUser) - return null; + return; var internalUserConfigToChange = _getTeamsInternalUserConfig(memberUser, teamMember["ROLE"] == "owner"); if (internalUserConfigToChange) teams.changeRole(teamId, internalUserConfigToChange); - return null;//prevent designer warning }); diff --git a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod index 6a44b2a44c1..bab6f3794ca 100644 --- a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod +++ b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod @@ -4,22 +4,13 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/MSTeamsActivityImport_entity/documentation.adoc</documentation> <siblings /> - <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> </entityProvider> - <entityField> - <name>UID</name> - </entityField> <entityConsumer> <name>Messages</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>MSTeamsMessage_entity</entityName> - <fieldName>Messages</fieldName> - </dependency> <children> <entityParameter> <name>Channel_param</name> @@ -34,6 +25,11 @@ <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>MSTeamsMessage_entity</entityName> + <fieldName>Messages</fieldName> + </dependency> </entityConsumer> <entityField> <name>CHANNEL_ID</name> @@ -50,17 +46,17 @@ </entityField> <entityConsumer> <name>Channels</name> - <dependency> - <name>dependency</name> - <entityName>MSTeamsChannel_entity</entityName> - <fieldName>ChannelsForTeam</fieldName> - </dependency> <children> <entityParameter> <name>TeamId_param</name> <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>MSTeamsChannel_entity</entityName> + <fieldName>ChannelsForTeam</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>loadNextMessages</name> @@ -79,17 +75,14 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityActionField> + <name>importMessages</name> + <onActionProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/importmessages/onActionProcess.js</onActionProcess> + </entityActionField> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>dataless</name> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/MSTeamsActivityImport_entity/entityfields/importmessages/onActionProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/importmessages/onActionProcess.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/entity/MSTeamsActivityImport_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsActivityImport_entity/recordcontainers/jdito/contentProcess.js deleted file mode 100644 index e197aca8b77..00000000000 --- a/entity/MSTeamsActivityImport_entity/recordcontainers/jdito/contentProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.result"); -import("system.vars"); - -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; -if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id];}); - -result.object(rows); \ No newline at end of file diff --git a/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod index d4f61630a7e..63a08366e65 100644 --- a/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod +++ b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod @@ -65,6 +65,7 @@ <jDitoRecordContainer> <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <title>Nachrichten</title> <recordFieldMappings> <jDitoRecordFieldMapping> diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index 9ab10a3baef..f0d15b5a877 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -219,7 +219,7 @@ <children> <entityActionField> <name>createTeam</name> - <title>Create Teams group</title> + <title>Create Team</title> <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js</onActionProcess> <isSelectionAction v="false" /> <iconId>NEON:PLUS</iconId> @@ -228,7 +228,7 @@ </entityActionField> <entityActionField> <name>editTeam</name> - <title>Edit Teams Group</title> + <title>Edit Team</title> <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js</onActionProcess> <iconId>NEON:PENCIL</iconId> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js</stateProcess> @@ -242,28 +242,28 @@ </entityActionField> <entityActionField> <name>chooseTeam</name> - <title>Choose Teams group</title> + <title>Choose Team</title> <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js</onActionProcess> <iconId>NEON:GROUP_APPOINTMENT</iconId> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js</stateProcess> </entityActionField> <entityActionField> <name>restoreTeam</name> - <title>Restore Teams group</title> + <title>Restore Team</title> <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js</onActionProcess> <iconId>VAADIN:ARROW_BACKWARD</iconId> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js</stateProcess> </entityActionField> <entityActionField> - <name>changeToMSTeam</name> + <name>openMSTeams</name> <title>Open Teams</title> - <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js</onActionProcess> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js</onActionProcess> <iconId>VAADIN:EXTERNAL_LINK</iconId> - <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js</stateProcess> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js</stateProcess> </entityActionField> <entityActionField> <name>deleteTeam</name> - <title>Delete Teams group</title> + <title>Delete Team</title> <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js</onActionProcess> <iconId>NEON:TRASH</iconId> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js</stateProcess> @@ -289,7 +289,7 @@ </entityParameter> <entityField> <name>MST_MEMBERROLE</name> - <title>Teams role</title> + <title>Team role</title> <stateProcess>%aditoprj%/entity/Member_entity/entityfields/mst_memberrole/stateProcess.js</stateProcess> </entityField> <entityParameter> @@ -513,6 +513,9 @@ <jDitoRecordFieldMapping> <name>recordType.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>MST_MEMBERROLE.value</name> + </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> </recordContainers> diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js similarity index 100% rename from entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/onActionProcess.js rename to entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js similarity index 100% rename from entity/Member_entity/entityfields/msteamsactiongroup/children/changetomsteam/stateProcess.js rename to entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js diff --git a/entity/Member_entity/recordcontainers/jdito/contentProcess.js b/entity/Member_entity/recordcontainers/jdito/contentProcess.js index ae2052147d8..48b27281c4e 100644 --- a/entity/Member_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Member_entity/recordcontainers/jdito/contentProcess.js @@ -17,7 +17,7 @@ var memberLoadingConfig = entities.createConfigForLoadingRows() "MEMBERROLE", "MEMBERROLE.displayValue", "OBJECT_ROWID", "OBJECT_TYPE", "OBJECTMEMBERID", "ORG_ORGID", "ORGANISATION_NAME", "PERSON_FIRSTNAME", "PERSON_FULL_NAME", "PERSON_LASTNAME", "PERSON_PERSID", "PERSON_SALUTATION", "PERSON_TITLE", "POSITION", "TARGETCONTEXT", - "recordType"]); + "recordType", "MST_MEMBERROLE"]); if (idValues) { @@ -32,11 +32,32 @@ if (filter && filter.filter != null) var memberRows = entities.getRows(memberLoadingConfig); memberRows = memberRows.map(function(row) { - return [row["#UID"], row["OBJECTMEMBERID"], row["CONTACT_ID"], row["CONTACT_ID.displayValue"], row["CONTACTROLE"], row["DEPARTMENT"], row["ICON"], - row["IMAGE"], row["MEMBERROLE"], row["MEMBERROLE.displayValue"], row["OBJECT_ROWID"], - row["OBJECT_TYPE"], row["ORG_ORGID"], row["ORGANISATION_NAME"], row["PERSON_FIRSTNAME"], - row["PERSON_FULL_NAME"], row["PERSON_LASTNAME"], row["PERSON_PERSID"], row["PERSON_SALUTATION"], row["PERSON_TITLE"], - row["POSITION"], row["TARGETCONTEXT"], row["recordType"]]; + return [ + row["#UID"], + row["OBJECTMEMBERID"], + row["CONTACT_ID"], + row["CONTACT_ID.displayValue"], + row["CONTACTROLE"], + row["DEPARTMENT"], + row["ICON"], + row["IMAGE"], + row["MEMBERROLE"], + row["MEMBERROLE.displayValue"], + row["OBJECT_ROWID"], + row["OBJECT_TYPE"], + row["ORG_ORGID"], + row["ORGANISATION_NAME"], + row["PERSON_FIRSTNAME"], + row["PERSON_FULL_NAME"], + row["PERSON_LASTNAME"], + row["PERSON_PERSID"], + row["PERSON_SALUTATION"], + row["PERSON_TITLE"], + row["POSITION"], + row["TARGETCONTEXT"], + row["recordType"], + row["MST_MEMBERROLE"] + ]; }); if (Utils.isNullOrEmpty(idValues) || memberRows.length === 0) @@ -49,20 +70,29 @@ if (Utils.isNullOrEmpty(idValues) || memberRows.length === 0) .cell(); var districtLoadingConfig = entities.createConfigForLoadingRows() - .entity("DistrictResponsible_entity") - .provider("OrganisationResponsibles") - .addParameter("OrgUid_param", orgContactId) - .fields(["#UID","DISTRICTRESPONSIBLEID", "DISTRICT_ID", "EMPLOYEE_CONTACT_ID", - "EMPLOYEE_CONTACT_ID.displayValue", "USER_EDIT", "USER_NEW", - "departmentAttributeName", "DATE_EDIT", "DATE_NEW"]); + .entity("DistrictResponsible_entity") + .provider("OrganisationResponsibles") + .addParameter("OrgUid_param", orgContactId) + .fields(["#UID","DISTRICTRESPONSIBLEID", "DISTRICT_ID", "EMPLOYEE_CONTACT_ID", + "EMPLOYEE_CONTACT_ID.displayValue", "USER_EDIT", "USER_NEW", + "departmentAttributeName", "DATE_EDIT", "DATE_NEW"]); var districtRows = entities.getRows(districtLoadingConfig); - districtRows = districtRows.map(function(row) { - return [row["#UID"], row["DISTRICTRESPONSIBLEID"], row["DISTRICT_ID"], row["EMPLOYEE_CONTACT_ID"], row["EMPLOYEE_CONTACT_ID.displayValue"], - row["USER_EDIT"], row["USER_NEW"], row["departmentAttributeName"], row["DATE_EDIT"], row["DATE_NEW"]]; + return [ + row["#UID"], + row["DISTRICTRESPONSIBLEID"], + row["DISTRICT_ID"], + row["EMPLOYEE_CONTACT_ID"], + row["EMPLOYEE_CONTACT_ID.displayValue"], + row["USER_EDIT"], + row["USER_NEW"], + row["departmentAttributeName"], + row["DATE_EDIT"], + row["DATE_NEW"] + ]; }); } @@ -112,7 +142,8 @@ if (Utils.isNullOrEmpty(idValues) || memberRows.length === 0) persRows[counter][1], persRows[counter][7], null, - "DistrictResponsible" + "DistrictResponsible", + "" ]); }); } diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index a7de7c2636f..37af27431d7 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -145,39 +145,34 @@ </entityField> <entityConsumer> <name>SalesprojectSources</name> - <dependency> - <name>dependency</name> - <entityName>SalesprojectSource_entity</entityName> - <fieldName>SalesprojectSouces</fieldName> - </dependency> <children> <entityParameter> <name>SalesprojectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectsources/children/salesprojectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>SalesprojectPhaseMilestones</name> <dependency> <name>dependency</name> - <entityName>SalesprojectMilestone_entity</entityName> - <fieldName>PhaseMilestones</fieldName> + <entityName>SalesprojectSource_entity</entityName> + <fieldName>SalesprojectSouces</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>SalesprojectPhaseMilestones</name> <children> <entityParameter> <name>SalesprojectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasemilestones/children/salesprojectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Forecasts</name> <dependency> <name>dependency</name> - <entityName>Forecast_entity</entityName> - <fieldName>Links</fieldName> + <entityName>SalesprojectMilestone_entity</entityName> + <fieldName>PhaseMilestones</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Forecasts</name> <children> <entityParameter> <name>ObjectType_param</name> @@ -190,15 +185,15 @@ <expose v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Competitions</name> - <selectionMode>MULTI</selectionMode> <dependency> <name>dependency</name> - <entityName>Competition_entity</entityName> + <entityName>Forecast_entity</entityName> <fieldName>Links</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Competitions</name> + <selectionMode>MULTI</selectionMode> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -211,14 +206,14 @@ <expose v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Offers</name> <dependency> <name>dependency</name> - <entityName>Offer_entity</entityName> + <entityName>Competition_entity</entityName> <fieldName>Links</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Offers</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -231,14 +226,14 @@ <expose v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Activities</name> <dependency> <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> + <entityName>Offer_entity</entityName> + <fieldName>Links</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Activities</name> <children> <entityParameter> <name>PresetLinks_param</name> @@ -253,14 +248,14 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Members</name> <dependency> <name>dependency</name> - <entityName>Member_entity</entityName> - <fieldName>WithDistrictResponsibles</fieldName> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Members</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -285,6 +280,11 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Member_entity</entityName> + <fieldName>WithDistrictResponsibles</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newOffer</name> @@ -297,11 +297,6 @@ <entityConsumer> <name>Timetrackings</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>Timetracking_entity</entityName> - <fieldName>Timetrackings</fieldName> - </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -312,6 +307,11 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/timetrackings/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Timetracking_entity</entityName> + <fieldName>Timetrackings</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> @@ -335,11 +335,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -354,15 +349,15 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -373,6 +368,11 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newTimetracking</name> @@ -383,11 +383,6 @@ </entityActionField> <entityConsumer> <name>KeywordProbabilties</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -396,14 +391,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -411,6 +406,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -430,17 +430,17 @@ <entityConsumer> <name>KeywordWonLost</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/keywordwonlost/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>REASONS</name> @@ -457,6 +457,17 @@ </entityField> <entityProvider> <name>Salesprojects</name> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityParameter> + <name>PresetTitle_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>0925d17f-a26a-4641-aaf4-0f74796fefa7</name> @@ -477,17 +488,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - <entityParameter> - <name>PresetTitle_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityActionField> <name>newTask</name> @@ -498,11 +498,6 @@ <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -517,17 +512,14 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>OpenSalesprojects</name> - <dependencies> - <entityDependency> - <name>631f55f9-fb0f-4205-bdb8-6e3476268ab4</name> - <entityName>Offer_entity</entityName> - <fieldName>Salesprojects</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>Status_param</name> @@ -538,6 +530,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>631f55f9-fb0f-4205-bdb8-6e3476268ab4</name> + <entityName>Offer_entity</entityName> + <fieldName>Salesprojects</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>Status_param</name> @@ -546,27 +546,22 @@ </entityParameter> <entityConsumer> <name>SalesprojectStateMilestones</name> - <dependency> - <name>dependency</name> - <entityName>SalesprojectMilestone_entity</entityName> - <fieldName>StateMilestones</fieldName> - </dependency> <children> <entityParameter> <name>SalesprojectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectstatemilestones/children/salesprojectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>SalesprojectMilestone_entity</entityName> + <fieldName>StateMilestones</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Salesproject_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -577,15 +572,15 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> - <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributetree/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributetree/stateProcess.js</stateProcess> <children> <entityParameter> <name>ObjectType_param</name> @@ -596,29 +591,29 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Classifications</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>Classification_entity</entityName> - <fieldName>Classifications</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowid_param</name> @@ -633,6 +628,11 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/classifications/children/classificationtype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Classification_entity</entityName> + <fieldName>Classifications</fieldName> + </dependency> </entityConsumer> <entityField> <name>RemainingTime</name> @@ -646,11 +646,6 @@ </entityField> <entityConsumer> <name>SalesprojectForecastCharts</name> - <dependency> - <name>dependency</name> - <entityName>Turnover_entity</entityName> - <fieldName>FilteredTurnovers</fieldName> - </dependency> <children> <entityParameter> <name>SalesprojectId_param</name> @@ -669,20 +664,25 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectforecastcharts/children/yearcounttoshow_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>SalesprojectPhaseStepper</name> <dependency> <name>dependency</name> - <entityName>SalesprojectPhase_entity</entityName> - <fieldName>Phases</fieldName> + <entityName>Turnover_entity</entityName> + <fieldName>FilteredTurnovers</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>SalesprojectPhaseStepper</name> <children> <entityParameter> <name>CurrentPhase_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/currentphase_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>SalesprojectPhase_entity</entityName> + <fieldName>Phases</fieldName> + </dependency> </entityConsumer> <entityField> <name>PHASEINFO</name> @@ -705,17 +705,17 @@ </entityField> <entityConsumer> <name>ProjectTypeAttribute</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/projecttypeattribute/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>QuickEntrySalesprojects</name> @@ -752,7 +752,7 @@ </entityField> <entityField> <name>MST_TEAM_ID</name> - <title>Teams group</title> + <title>Team</title> <linkedContext>MSTTeam</linkedContext> <state>INVISIBLE</state> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js</stateProcess> diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js index 73086a2fdfb..b81c1dd9c2c 100644 --- a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js @@ -98,35 +98,26 @@ vars.get("$local.changed").forEach(function(fieldName) { } }); -var serviceUrl = newSelect("SERVICE_URL") +var [serviceUrl, channelId] = newSelect(["SERVICE_URL", "GENERAL_CHANNELID"]) .from("MST_TEAM") .where("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID") - .cell(); + .arrayRow(); - var channelId = newSelect("GENERAL_CHANNELID") - .from("MST_TEAM") - .where("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID") - .cell(); - - if(serviceUrl) - { - teams.sendNotification(serviceUrl, channelId, "Etwas hat sich im Projekt "+ vars.get("$field.PROJECTTITLE") +" geaendert") - } +if (serviceUrl) + teams.sendNotification(serviceUrl, channelId, "Etwas hat sich im Projekt "+ vars.get("$field.PROJECTTITLE") +" geaendert"); if (needToUpdateForecast) Salesproject.notifyToUpdateForecast(); WorkflowSignalSender.updated(); -neon.refreshAll(); - function _updateReasons() { var reasons = rowdata["SALESPROJECT.REASONS"]; if(reasons) { - newWhere("SALESPROJECT.SALESPROJECTID", vars.getString("$local.uid")) - .updateData(true, "SALESPROJECT", ["REASONS"], null, [reasons]); + newWhere("SALESPROJECT.SALESPROJECTID", "$local.uid") + .updateFields({"REASONS": reasons}); } } @@ -134,7 +125,7 @@ function _clearReasons(pReallyClear) { if (pReallyClear) { - newWhere("SALESPROJECT.SALESPROJECTID", vars.getString("$local.uid")) - .updateData(true, "SALESPROJECT", ["REASONS"], null, [""]); + newWhere("SALESPROJECT.SALESPROJECTID", "$local.uid") + .updateFields({"REASONS": ""}); } } \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index c4a9eb1ad2d..b64642c4016 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -7299,6 +7299,96 @@ <entry> <key>#login</key> </entry> + <entry> + <key>Last change</key> + </entry> + <entry> + <key>Knowledge entries</key> + </entry> + <entry> + <key>Newsfeed (Preview)</key> + </entry> + <entry> + <key>Edited on</key> + </entry> + <entry> + <key>Created on</key> + </entry> + <entry> + <key>Discussion</key> + </entry> + <entry> + <key>Newsfeed (Full)</key> + </entry> + <entry> + <key>Closed</key> + </entry> + <entry> + <key>Text content</key> + </entry> + <entry> + <key>Reply</key> + </entry> + <entry> + <key>All Knowledge Entries</key> + </entry> + <entry> + <key>Export HTML</key> + </entry> + <entry> + <key>Publishing level</key> + </entry> + <entry> + <key>Discussions</key> + </entry> + <entry> + <key>Knowledge Management</key> + </entry> + <entry> + <key>List news articles</key> + </entry> + <entry> + <key>Knowledge Role</key> + </entry> + <entry> + <key>Shows complete news articles</key> + </entry> + <entry> + <key>Knowledge</key> + </entry> + <entry> + <key>Toggle status</key> + </entry> + <entry> + <key>Add app</key> + </entry> + <entry> + <key>Open Teams</key> + </entry> + <entry> + <key>Choose Team</key> + </entry> + <entry> + <key>Delete Team</key> + </entry> + <entry> + <key>Restore Team</key> + </entry> + <entry> + <key>Create Team</key> + </entry> + <entry> + <key>Team role</key> + </entry> + <entry> + <key>Edit Team</key> + </entry> + <entry> + <key>Sales Project</key> + </entry> + <entry> + <key>Channels</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 1581ad2733f..05f8f17812c 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -10,6 +10,30 @@ <key>Probability AI</key> <value>Wahrscheinlichkeit KI</value> </entry> + <entry> + <key>Delete Team</key> + <value>Team löschen</value> + </entry> + <entry> + <key>Open Teams</key> + <value>Teams öffnen</value> + </entry> + <entry> + <key>Restore Team</key> + <value>Team wiederherstellen</value> + </entry> + <entry> + <key>Choose Team</key> + <value>Team auswählen</value> + </entry> + <entry> + <key>Add app</key> + <value>App hinzufügen</value> + </entry> + <entry> + <key>Edit Team</key> + <value>Team bearbeiten</value> + </entry> <entry> <key>The start date has to be before the end date.</key> <value>Das Startdatum muss vor dem Enddatum sein.</value> @@ -926,6 +950,10 @@ <key>Contacts</key> <value>Kontakte</value> </entry> + <entry> + <key>Channels</key> + <value>Kanäle</value> + </entry> <entry> <key>Address</key> <value>Adresse</value> @@ -1451,6 +1479,10 @@ <key>Order</key> <value>Bestellung</value> </entry> + <entry> + <key>Team role</key> + <value>Teamrolle</value> + </entry> <entry> <key>Postponed</key> <value>Vertagt</value> @@ -7480,6 +7512,10 @@ <key>Nein</key> <value>Nein</value> </entry> + <entry> + <key>Create Team</key> + <value>Team erstellen</value> + </entry> <entry> <key>Use for duplicate search</key> <value>Für Duplettensuche benutzen</value> @@ -8077,6 +8113,10 @@ Bitte Datumseingabe prüfen</value> <key>Senderphone</key> <value>Sendertelefonnummer</value> </entry> + <entry> + <key>Sales Project</key> + <value>Vertriebsprojekt</value> + </entry> <entry> <key>Sendername</key> <value>Sendername</value> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index a678822107a..3580ad96f19 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -7380,6 +7380,96 @@ <entry> <key>#login</key> </entry> + <entry> + <key>Last change</key> + </entry> + <entry> + <key>Knowledge entries</key> + </entry> + <entry> + <key>Newsfeed (Preview)</key> + </entry> + <entry> + <key>Edited on</key> + </entry> + <entry> + <key>Created on</key> + </entry> + <entry> + <key>Discussion</key> + </entry> + <entry> + <key>Newsfeed (Full)</key> + </entry> + <entry> + <key>Closed</key> + </entry> + <entry> + <key>Text content</key> + </entry> + <entry> + <key>Reply</key> + </entry> + <entry> + <key>All Knowledge Entries</key> + </entry> + <entry> + <key>Export HTML</key> + </entry> + <entry> + <key>Publishing level</key> + </entry> + <entry> + <key>Discussions</key> + </entry> + <entry> + <key>Knowledge Management</key> + </entry> + <entry> + <key>List news articles</key> + </entry> + <entry> + <key>Knowledge Role</key> + </entry> + <entry> + <key>Shows complete news articles</key> + </entry> + <entry> + <key>Knowledge</key> + </entry> + <entry> + <key>Toggle status</key> + </entry> + <entry> + <key>Add app</key> + </entry> + <entry> + <key>Open Teams</key> + </entry> + <entry> + <key>Choose Team</key> + </entry> + <entry> + <key>Delete Team</key> + </entry> + <entry> + <key>Restore Team</key> + </entry> + <entry> + <key>Create Team</key> + </entry> + <entry> + <key>Team role</key> + </entry> + <entry> + <key>Edit Team</key> + </entry> + <entry> + <key>Sales Project</key> + </entry> + <entry> + <key>Channels</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod index 404d59d6478..867c7a8fa07 100644 --- a/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod +++ b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> <layout> - <noneLayout> + <boxLayout> <name>layout</name> - </noneLayout> + </boxLayout> </layout> <children> <genericViewTemplate> diff --git a/neonView/PersonEdit_view/PersonEdit_view.aod b/neonView/PersonEdit_view/PersonEdit_view.aod index a89480fa864..c31dd51b7ff 100644 --- a/neonView/PersonEdit_view/PersonEdit_view.aod +++ b/neonView/PersonEdit_view/PersonEdit_view.aod @@ -91,24 +91,5 @@ <entityField>Attributes</entityField> <view>AttributeRelationMultiEdit_view</view> </neonViewReference> - <actionsViewTemplate> - <name>asdf</name> - <actions> - <element>TestGroup</element> - </actions> - <entityField>#ENTITY</entityField> - </actionsViewTemplate> - <genericViewTemplate> - <name>ihu</name> - <editMode v="true" /> - <entityField>#ENTITY</entityField> - <title>hui</title> - <fields> - <entityFieldLink> - <name>e6d21257-2eef-4de2-8d5f-a8a0fd3188a9</name> - <entityField>FIRSTNAME</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> </children> </neonView> diff --git a/process/Employee_lib/process.js b/process/Employee_lib/process.js index 5bb8a84573d..40db215e8d0 100644 --- a/process/Employee_lib/process.js +++ b/process/Employee_lib/process.js @@ -151,6 +151,8 @@ EmployeeUtils.isUser = function (pContactId) EmployeeUtils.getUserByContactId = function (pContactId) { + if (!pContactId) + return null; return tools.getUserByAttribute(tools.CONTACTID, pContactId); } diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js index 080da03c940..4cff133da45 100644 --- a/process/MSTeams_lib/process.js +++ b/process/MSTeams_lib/process.js @@ -1,3 +1,5 @@ +import("system.logging"); +import("system.neon"); import("Util_lib"); import("Communication_lib"); import("system.translate"); @@ -31,6 +33,50 @@ MSTeamsUtils.getTeamLinkContexts = function () }; } +MSTeamsUtils.changeTeamsLink = function (pRowId, pObjectType) +{ + var linkConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType]; + if (!linkConfig) + return; + + var existingTeamLinks = newSelect("MST_TEAMLINKID") + .from("MST_TEAMLINK") + .where("MST_TEAMLINK.OBJECT_ROWID", pRowId) + .and("MST_TEAMLINK.OBJECT_TYPE", pObjectType) + .arrayColumn(); + if (existingTeamLinks.length === 0 || !linkConfig.singleLinkPerObject) + { + neon.openContext("MSTTeamLink", null, null, neon.OPERATINGSTATE_NEW, { + "ObjectRowId_param": pRowId, + "ObjectType_param": pObjectType + }); + } + else + { + + } +} + +MSTeamsUtils.purgeCorruptTeamLinks = function (pRowId, pObjectType, pTeamLinkIdToKeep) +{ + var teamLinks = MSTeamsUtils.getLinkedTeams(pRowId, pObjectType).map(function (row) + { + return row.teamLinkId; + }); + var linkConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType]; + var removeLinks = []; + if (!linkConfig) + removeLinks = teamLinks; + else if (linkConfig.singleLinkPerObject && pTeamLinkIdToKeep) + removeLinks = teamLinks.filter(function (id) {return id != pTeamLinkIdToKeep;}); + else if (linkConfig.singleLinkPerObject) + removeLinks = teamLinks.slice(1); + + if (removeLinks.length === 0) + return 0; + return newWhere("MST_TEAMLINK.MST_TEAMLINKID", removeLinks, SqlBuilder.IN()).deleteData(); +} + /** * */ @@ -71,11 +117,20 @@ MSTeamsUtils.createTeamLink = function (pTeamId, pRowId, pObjectType) */ MSTeamsUtils.getLinkedTeams = function (pRowId, pObjectType) { - return newSelect("MST_TEAM_ID") + return newSelect(["MST_TEAMLINKID", "MST_TEAM_ID"]) .from("MST_TEAMLINK") .where("MST_TEAMLINK.OBJECT_ROWID", pRowId) .andIfSet("MST_TEAMLINK.OBJECT_TYPE", pObjectType) - .arrayColumn(); + .orderBy("MST_TEAMLINKID") + .table() + .map(function ([linkId, teamId]) + { + return { + teamLinkId: linkId, + teamId: teamId + }; + }); + } /** @@ -83,7 +138,10 @@ MSTeamsUtils.getLinkedTeams = function (pRowId, pObjectType) */ MSTeamsUtils.getLinkedTeam = function (pRowId, pObjectType) { - return MSTeamsUtils.getLinkedTeams(pRowId, pObjectType)[0] || null; + var linkedTeams = MSTeamsUtils.getLinkedTeams(pRowId, pObjectType); + if (linkedTeams.length === 0) + return null; + return linkedTeams[0].teamId; } /** @@ -134,6 +192,7 @@ MSTeamsUtils.getTeamRoleSubSql = function (pTeamId, pContactIdField) caseWhen.when("(" + CommUtil.getStandardSubSqlMail() + ") in ('" + Utils.objectValues(members).join("', '") + "')") .thenString(translate.text("Guest")); + logging.log(JSON.stringify(caseWhen)) return caseWhen.elseString("").toString(); } diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index c70131670ec..677d7f4e19b 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -3184,6 +3184,18 @@ SqlBuilder._CaseStatement.prototype.build = function (pParameters) ]; } +/** + * Custom toJSON method that omits the property '_afterWhenMask', because cyclic references can't be stringified + */ +SqlBuilder._CaseStatement.prototype.toJSON = function () +{ + return { + _whenCondition: this._whenCondition, + _whenThens: this._whenThens, + _elseValue: this._elseValue + }; +} + /** * Object providing the then-methods for the case-when expression. It can be only be accessed after calling .when to ensure a 'then' * can only be added after a 'when'. diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index 9a5426854bb..5f5227efc07 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -336,7 +336,7 @@ Utils.objectEntries = function (pObject) { return Object.keys(pObject).map(function (key) { - return pObject[key]; + return [key, pObject[key]]; }); } @@ -350,7 +350,7 @@ Utils.objectValues = function (pObject) { return Object.keys(pObject).map(function (key) { - return [key, pObject[key]]; + return pObject[key]; }); } @@ -519,6 +519,46 @@ StringUtils.unescapeSlashes = function(pValue) return parsedStr ; } +/** + * Transforms the given String to lowerCamelCase + * + * @param {String} pString + * @return {String} string in lowerCamelCase + * @example + * + * var name = StringUtils.toLowerCamelCase("Giorno Giovanna"); + * logging.log(name); //output: "giornoGiovanna" + */ +StringUtils.toLowerCamelCase = function (pString) +{ + return pString.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function (match, index) + { + if (+match === 0) // or if (/\s+/.test(match)) for white spaces + return ""; + return index === 0 ? match.toLowerCase() : match.toUpperCase(); + }); +} + +/** + * Transforms the given String to UpperCamelCase + * + * @param {String} pString + * @return {String} string in UpperCamelCase + * @example + * + * var youFellForIt = StringUtils.toUpperCamelCase("thunder cross split attack"); + * logging.log(youFellForIt); //output: "ThunderCrossSplitAttack" + */ +StringUtils.toUpperCamelCase = function (pString) +{ + return pString.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function (match) + { + if (+match === 0) // or if (/\s+/.test(match)) for white spaces + return ""; + return match.toUpperCase(); + }); +} + /** * Class containing static utility functions for numbers * Do not create an instance of this -- GitLab From 6f003b32e2139325f3f95d2654bd21d3b78da3af Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 19 Nov 2020 12:00:56 +0100 Subject: [PATCH 095/184] broken dataless recordcontainers corrected --- .../BulkMailAddRecipients_entity.aod | 28 +------ .../BulkMailTesting_entity.aod | 28 +------ .../CampaignAddParticipants_entity.aod | 27 ++---- entity/Email_entity/Email_entity.aod | 48 ++++------- .../ExportTemplateSelection_entity.aod | 29 +------ entity/Letter_entity/Letter_entity.aod | 28 +------ .../MSTChooseTeam_entity.aod | 58 ------------- .../MSTChooseTeam_entity/documentation.adoc | 14 ---- .../recordcontainers/jdito/contentProcess.js | 9 -- .../recordcontainers/jdito/onInsert.js | 35 -------- .../MSTTeamLink_entity/MSTTeamLink_entity.aod | 83 +++++++++++++++++++ .../recordcontainers/db/conditionProcess.js | 7 ++ .../recordcontainers/db/fromClauseProcess.js | 3 + .../recordcontainers/db/onDBInsert.js | 7 ++ entity/MSTTeam_entity/MSTTeam_entity.aod | 6 -- .../children/chooseteam/onActionProcess.js | 8 +- .../SerialLetterAddRecipients_entity.aod | 28 +------ .../MSTTeamLink.aod} | 9 +- .../MSTChooseTeamEdit_view.aod | 25 ------ .../MSTTeamLinkEdit_view.aod | 10 +++ process/MSTeams_lib/process.js | 15 ++-- 21 files changed, 165 insertions(+), 340 deletions(-) delete mode 100644 entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod delete mode 100644 entity/MSTChooseTeam_entity/documentation.adoc delete mode 100644 entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js delete mode 100644 entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js create mode 100644 entity/MSTTeamLink_entity/MSTTeamLink_entity.aod create mode 100644 entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js create mode 100644 entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js create mode 100644 entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js rename neonContext/{MSTChooseTeam/MSTChooseTeam.aod => MSTTeamLink/MSTTeamLink.aod} (65%) delete mode 100644 neonView/MSTChooseTeamEdit_view/MSTChooseTeamEdit_view.aod create mode 100644 neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod diff --git a/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod b/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod index efe6c1b76fb..95b5c59685b 100644 --- a/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod +++ b/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod @@ -87,29 +87,9 @@ </entityParameter> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <isPageable v="true" /> - <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessConfig</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod b/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod index e31136e9154..008aa0177c9 100644 --- a/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod +++ b/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod @@ -62,29 +62,9 @@ </entityProvider> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <isPageable v="true" /> - <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessRecordContainer</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod index aae7ad15aac..03225b22011 100644 --- a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod +++ b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod @@ -59,11 +59,6 @@ </entityConsumer> <entityConsumer> <name>CampaignStepConsumer</name> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> @@ -71,11 +66,12 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> </entityConsumer> - <entityField> - <name>UID</name> - <state>EDITABLE</state> - </entityField> <entityParameter> <name>currentCampaignId_param</name> <expose v="true" /> @@ -156,14 +152,9 @@ </entityProvider> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessConfig</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/Email_entity/Email_entity.aod b/entity/Email_entity/Email_entity.aod index b4034640f5a..73da7f79012 100644 --- a/entity/Email_entity/Email_entity.aod +++ b/entity/Email_entity/Email_entity.aod @@ -29,11 +29,6 @@ </entityField> <entityConsumer> <name>DocumentTemplates</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -48,6 +43,11 @@ <valueProcess>%aditoprj%/entity/Email_entity/entityfields/documenttemplates/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>Recipient_param</name> @@ -65,17 +65,17 @@ </entityField> <entityConsumer> <name>EmailAddresses</name> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>EmailCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Email_entity/entityfields/emailaddresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>EmailCommunications</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> @@ -151,29 +151,9 @@ </entityParameter> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <isPageable v="true" /> - <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessRecordContainer</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod index 1120b8578e2..2840322c0f7 100644 --- a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod +++ b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod @@ -88,31 +88,10 @@ <useAggregates v="true" /> </entityProvider> </entityFields> - <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <isPageable v="true" /> - <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessRecordContainer</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/Letter_entity/Letter_entity.aod b/entity/Letter_entity/Letter_entity.aod index d82878bd13c..5e357ba6660 100644 --- a/entity/Letter_entity/Letter_entity.aod +++ b/entity/Letter_entity/Letter_entity.aod @@ -82,29 +82,9 @@ </entityProvider> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <isPageable v="true" /> - <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessConfig</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod b/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod deleted file mode 100644 index 3fe2e3f7e7f..00000000000 --- a/entity/MSTChooseTeam_entity/MSTChooseTeam_entity.aod +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> - <name>MSTChooseTeam_entity</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <documentation>%aditoprj%/entity/MSTChooseTeam_entity/documentation.adoc</documentation> - <siblings /> - <recordContainer>jdito</recordContainer> - <entityFields> - <entityProvider> - <name>#PROVIDER</name> - </entityProvider> - <entityField> - <name>MST_TEAM</name> - <title>Team</title> - <consumer>Teams</consumer> - <selectionMode>SINGLE</selectionMode> - </entityField> - <entityField> - <name>UID</name> - </entityField> - <entityParameter> - <name>ObjectRowId_param</name> - <expose v="true" /> - </entityParameter> - <entityConsumer> - <name>Teams</name> - <dependency> - <name>dependency</name> - <entityName>MSTTeam_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> - </entityConsumer> - <entityParameter> - <name>ObjectType_param</name> - <expose v="true" /> - </entityParameter> - <entityProvider> - <name>#PROVIDER_AGGREGATES</name> - <useAggregates v="true" /> - </entityProvider> - </entityFields> - <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>MST_TEAM.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> - </recordContainers> -</entity> diff --git a/entity/MSTChooseTeam_entity/documentation.adoc b/entity/MSTChooseTeam_entity/documentation.adoc deleted file mode 100644 index 9c7ade951f5..00000000000 --- a/entity/MSTChooseTeam_entity/documentation.adoc +++ /dev/null @@ -1,14 +0,0 @@ -MSTChooseTeam -============ - -== Overview == -MSTChooseTeam is used to link any MST team to a sales project - -== A MSTChooseTeam consists of some modules: == -- MSTChooseTeam itself - -== BestPractice == - -== FAQ == - - diff --git a/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js deleted file mode 100644 index af9ece7caa7..00000000000 --- a/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.result"); -import("system.vars"); - -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; -if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id, ""];}); - -result.object(rows); \ No newline at end of file diff --git a/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js deleted file mode 100644 index 66e2ebe9078..00000000000 --- a/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js +++ /dev/null @@ -1,35 +0,0 @@ -import("system.teams"); -import("Sql_lib") -import("system.vars") -import("system.teams"); -import("system.util"); -import("system.neon"); -import("MSTeams_lib"); - -var rowData = vars.get("$local.rowdata"); - -var teamIdAndName = rowData["MST_TEAM.value"]; - -if(teamIdAndName) -{ - var [teamId, teamName] = JSON.parse(teamIdAndName); - var channelId = teams.getGeneralChannelId(teamId); - var webUrl = teams.getWebUrl(teamId); - - var mstTeamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.MST_TEAMID", teamId) - .cell(); - - if (!mstTeamId) - { - new SqlBuilder().insertFields({ - "MST_TEAMID" : teamId, - "TEAMNAME" : teamName, - "GENERAL_CHANNELID" : channelId, - "IS_ARCHIVED" : 0, - "WEB_URL" : webUrl - }, "MST_TEAM"); - } - MSTeamsUtils.createTeamLink(teamId, vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param")); -} \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod b/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod new file mode 100644 index 00000000000..82174ca3cd1 --- /dev/null +++ b/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> + <name>MSTTeamLink_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityField> + <name>MST_TEAMLINKID</name> + </entityField> + <entityField> + <name>MST_TEAM_ID</name> + <title>Team</title> + </entityField> + <entityField> + <name>OBJECT_ROWID</name> + </entityField> + <entityField> + <name>OBJECT_TYPE</name> + </entityField> + <entityParameter> + <name>ObjectRowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <fromClauseProcess>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> + <conditionProcess>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <onDBInsert>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js</onDBInsert> + <linkInformation> + <linkInformation> + <name>178230f3-4ee4-4ec0-a7f6-4f4ddddbbb22</name> + <tableName>MST_TEAMLINK</tableName> + <primaryKey>MST_TEAMLINKID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + <linkInformation> + <name>53378325-f195-4eb3-9e22-68fd769eef03</name> + <tableName>MST_TEAM</tableName> + <primaryKey>MST_TEAMID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>MST_TEAMLINKID.value</name> + <recordfield>MST_TEAMLINK.MST_TEAMLINKID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>MST_TEAM_ID.value</name> + <recordfield>MST_TEAMLINK.MST_TEAM_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OBJECT_ROWID.value</name> + <recordfield>MST_TEAMLINK.OBJECT_ROWID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OBJECT_TYPE.value</name> + <recordfield>MST_TEAMLINK.OBJECT_TYPE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>MST_TEAM_ID.displayValue</name> + <recordfield>MST_TEAM.TEAMNAME</recordfield> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js b/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 00000000000..ad0a18104e1 --- /dev/null +++ b/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("Sql_lib"); + +var condition = newWhereIfSet("MST_TEAMLINK.OBJECT_ROWID", "$param.ObjectRowId_param") + .andIfSet("MST_TEAMLINK.OBJECT_TYPE", "$param.ObjectType_param"); + +result.string(condition.toString(SqlBuilder.NORESULT_CONDITION())); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js b/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js new file mode 100644 index 00000000000..4457ba9b19f --- /dev/null +++ b/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("MST_TEAMLINK left join MST_TEAM on MST_TEAMLINK.MST_TEAM_ID = MST_TEAM.MST_TEAMID"); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js b/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js new file mode 100644 index 00000000000..3dec5ca7f61 --- /dev/null +++ b/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("MSTeams_lib"); + +var teamLinkId = vars.get("$local.uid"); +var rowData = vars.get("$local.rowdata"); +//if the linked context is configured to have just one teamLink but the object already has a teamLink, the old teamLink will be deleted +MSTeamsUtils.purgeCorruptTeamLinks(rowData["MST_TEAMLINK.OBJECT_ROWID"], rowData["MST_TEAMLINK.OBJECT_TYPE"], teamLinkId); \ No newline at end of file diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod index eb36ed85e05..27a447b2303 100644 --- a/entity/MSTTeam_entity/MSTTeam_entity.aod +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -13,12 +13,6 @@ <name>#PROVIDER</name> <lookupIdfield>TEAMID_AND_NAME</lookupIdfield> <dependencies> - <entityDependency> - <name>31745153-bc31-4529-a6dc-0cddfd2c5b7c</name> - <entityName>MSTChooseTeam_entity</entityName> - <fieldName>Teams</fieldName> - <isConsumer v="false" /> - </entityDependency> <entityDependency> <name>9794baf5-ffc8-498e-8aa8-f4eca945441c</name> <entityName>MSTTeamLink_entity</entityName> diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js index 2f2ae94d38c..f5761f78639 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js @@ -1,8 +1,4 @@ +import("MSTeams_lib"); import("system.vars"); -import("system.neon"); -import("system.teams"); -import("system.logging"); -neon.openContext("MSTChooseTeam", null, null, neon.OPERATINGSTATE_NEW, { - "SalesprojectId_param" : vars.get("$param.ObjectRowId_param") -}); \ No newline at end of file +MSTeamsUtils.changeTeamsLink(vars.get("$field.OBJECT_ROWID"), vars.get("$field.OBJECT_TYPE")); \ No newline at end of file diff --git a/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod b/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod index 035ea4090d2..a72c0501c5a 100644 --- a/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod +++ b/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod @@ -83,29 +83,9 @@ </entityParameter> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <isPageable v="true" /> - <contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLTEAMS.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>ALLARCHIVEDTEAMS.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessRecordContainer</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/neonContext/MSTChooseTeam/MSTChooseTeam.aod b/neonContext/MSTTeamLink/MSTTeamLink.aod similarity index 65% rename from neonContext/MSTChooseTeam/MSTChooseTeam.aod rename to neonContext/MSTTeamLink/MSTTeamLink.aod index c28f7a58024..31b2ad861a6 100644 --- a/neonContext/MSTChooseTeam/MSTChooseTeam.aod +++ b/neonContext/MSTTeamLink/MSTTeamLink.aod @@ -1,13 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> - <name>MSTChooseTeam</name> + <name>MSTTeamLink</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <editView>MSTChooseTeamEdit_view</editView> - <entity>MSTChooseTeam_entity</entity> + <entity>MSTTeamLink_entity</entity> <references> <neonViewReference> - <name>0c4e977f-1ce1-4782-9a7f-7cabd557c9fc</name> - <view>MSTChooseTeamEdit_view</view> + <name>a165469f-eea5-4427-b5ba-4477fe7e04e6</name> + <view>MSTTeamLinkEdit_view</view> </neonViewReference> </references> </neonContext> diff --git a/neonView/MSTChooseTeamEdit_view/MSTChooseTeamEdit_view.aod b/neonView/MSTChooseTeamEdit_view/MSTChooseTeamEdit_view.aod deleted file mode 100644 index bae0a1ab12f..00000000000 --- a/neonView/MSTChooseTeamEdit_view/MSTChooseTeamEdit_view.aod +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> - <name>MSTChooseTeamEdit_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <size>SMALL</size> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <genericViewTemplate> - <name>Team</name> - <editMode v="true" /> - <entityField>#ENTITY</entityField> - <title>Alle Teams</title> - <fields> - <entityFieldLink> - <name>ec6b987e-4f7a-405b-8248-56625c92d3a5</name> - <entityField>MST_TEAM</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - </children> -</neonView> diff --git a/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod b/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod new file mode 100644 index 00000000000..b7261189dd7 --- /dev/null +++ b/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>MSTTeamLinkEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> +</neonView> diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js index 4cff133da45..f243b05ff0c 100644 --- a/process/MSTeams_lib/process.js +++ b/process/MSTeams_lib/process.js @@ -44,17 +44,14 @@ MSTeamsUtils.changeTeamsLink = function (pRowId, pObjectType) .where("MST_TEAMLINK.OBJECT_ROWID", pRowId) .and("MST_TEAMLINK.OBJECT_TYPE", pObjectType) .arrayColumn(); + var params = { + "ObjectRowId_param": pRowId, + "ObjectType_param": pObjectType + }; if (existingTeamLinks.length === 0 || !linkConfig.singleLinkPerObject) - { - neon.openContext("MSTTeamLink", null, null, neon.OPERATINGSTATE_NEW, { - "ObjectRowId_param": pRowId, - "ObjectType_param": pObjectType - }); - } + neon.openContext("MSTTeamLink", null, null, neon.OPERATINGSTATE_NEW, params); else - { - - } + neon.openContext("MSTTeamLink", null, [existingTeamLinks[0]], neon.OPERATINGSTATE_EDIT, params); } MSTeamsUtils.purgeCorruptTeamLinks = function (pRowId, pObjectType, pTeamLinkIdToKeep) -- GitLab From 9eff7fd5cd20cce67f9b0f81f69be24a5ac0b14e Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 20 Nov 2020 15:57:04 +0100 Subject: [PATCH 096/184] MSTTeamLink_entity --- .../MSTTeamLink_entity/MSTTeamLink_entity.aod | 32 ++++++++++++++++- entity/MSTTeamLink_entity/afterUiInit.js | 13 +++++++ .../entityfields/mst_team_id/valueProcess.js | 8 +++++ .../entityfields/object_rowid/valueProcess.js | 6 ++++ .../entityfields/object_type/valueProcess.js | 6 ++++ .../team_id_and_name/displayValueProcess.js | 4 +++ .../team_id_and_name/documentation.adoc | 7 ++++ .../team_id_and_name/valueProcess.js | 7 ++++ .../entityfields/teamname/valueProcess.js | 8 +++++ .../recordcontainers/db/onDBInsert.js | 7 +++- .../recordcontainers/db/onDBUpdate.js | 9 +++++ entity/MSTTeam_entity/MSTTeam_entity.aod | 35 ++++++++++++++----- .../children/usecache_param/valueProcess.js | 3 ++ .../teamsbyidandname/documentation.adoc | 4 +++ .../recordcontainers/jdito/cacheKeyProcess.js | 7 ++++ .../recordcontainers/jdito/onInsert.js | 9 +---- entity/Member_entity/Member_entity.aod | 1 + .../Salesproject_entity.aod | 1 + neonContext/MSTTeamLink/MSTTeamLink.aod | 1 + .../MSTTeamLinkEdit_view.aod | 13 +++++++ process/CachedRecordContainer_lib/process.js | 15 +++++++- process/Liquibase_lib/process.js | 2 +- process/MSTeams_lib/process.js | 20 +++++++++++ 23 files changed, 197 insertions(+), 21 deletions(-) create mode 100644 entity/MSTTeamLink_entity/afterUiInit.js create mode 100644 entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js create mode 100644 entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js create mode 100644 entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js create mode 100644 entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js create mode 100644 entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc create mode 100644 entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js create mode 100644 entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js create mode 100644 entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js create mode 100644 entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js create mode 100644 entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc create mode 100644 entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js diff --git a/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod b/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod index 82174ca3cd1..eec88fc693d 100644 --- a/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod +++ b/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod @@ -2,6 +2,11 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTTeamLink_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <siblings> + <element>Salesproject_entity</element> + <element>Member_entity</element> + </siblings> + <afterUiInit>%aditoprj%/entity/MSTTeamLink_entity/afterUiInit.js</afterUiInit> <recordContainer>db</recordContainer> <entityFields> <entityProvider> @@ -17,12 +22,16 @@ <entityField> <name>MST_TEAM_ID</name> <title>Team</title> + <mandatory v="true" /> + <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js</valueProcess> </entityField> <entityField> <name>OBJECT_ROWID</name> + <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js</valueProcess> </entityField> <entityField> <name>OBJECT_TYPE</name> + <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js</valueProcess> </entityField> <entityParameter> <name>ObjectRowId_param</name> @@ -32,6 +41,26 @@ <name>ObjectType_param</name> <expose v="true" /> </entityParameter> + <entityConsumer> + <name>Teams</name> + <dependency> + <name>dependency</name> + <entityName>MSTTeam_entity</entityName> + <fieldName>TeamsByIdAndName</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>TEAMNAME</name> + <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>TEAM_ID_AND_NAME</name> + <documentation>%aditoprj%/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc</documentation> + <title>Team</title> + <consumer>Teams</consumer> + <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js</displayValueProcess> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -40,6 +69,7 @@ <fromClauseProcess>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> <conditionProcess>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <onDBInsert>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js</onDBInsert> + <onDBUpdate>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> <linkInformation> <linkInformation> <name>178230f3-4ee4-4ec0-a7f6-4f4ddddbbb22</name> @@ -74,7 +104,7 @@ <recordfield>MST_TEAMLINK.OBJECT_TYPE</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> - <name>MST_TEAM_ID.displayValue</name> + <name>TEAMNAME.value</name> <recordfield>MST_TEAM.TEAMNAME</recordfield> </dbRecordFieldMapping> </recordFieldMappings> diff --git a/entity/MSTTeamLink_entity/afterUiInit.js b/entity/MSTTeamLink_entity/afterUiInit.js new file mode 100644 index 00000000000..bac4e960d87 --- /dev/null +++ b/entity/MSTTeamLink_entity/afterUiInit.js @@ -0,0 +1,13 @@ +import("system.vars"); +import("system.neon"); +import("system.entities"); + +//reload the teams once, because the cache might not be up-to-date +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) +{ + entities.invalidateCache("MSTTeam_entity", "jdito"); + entities.getRows(entities.createConfigForLoadingConsumerRows() + .consumer("Teams") + .fields(["UID", "TEAMNAME", "TEAMID_AND_NAME", "ISARCHIVED", "DESCRIPTION"]) + ); +} \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js new file mode 100644 index 00000000000..8b66b4de6f1 --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); +import("Util_lib"); + +var teamIdAndName = Utils.parseJSON(vars.get("$field.TEAM_ID_AND_NAME")); +if (teamIdAndName && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)) + result.string(teamIdAndName[0]); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js new file mode 100644 index 00000000000..53123b405da --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(vars.get("$param.ObjectRowId_param")); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js new file mode 100644 index 00000000000..7f34d7fdb90 --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(vars.get("$param.ObjectType_param")); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js new file mode 100644 index 00000000000..ada1bccad1d --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.TEAMNAME")); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc new file mode 100644 index 00000000000..7ef07b42d0e --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc @@ -0,0 +1,7 @@ += TEAM_ID_AND_NAME + +This field is used for selecting a MST team for the teamLink. Because we need both the id and the name from the team, it can't be selected +directly in the MST_TEAM_ID field, which contains only the id (and fetching the name afterwards using the id would be rather slow). + +In new- or edit-mode, the two fields MST_TEAM_ID and TEAMNAME pull their values from this field. In view-mode, this field gets the value +from MST_TEAM_ID and TEAMNAME, because only these two fields are connected to the recordContainer. \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js new file mode 100644 index 00000000000..94638c9fe90 --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +//in view-mode, load the values from the fields that are connected to the recordcontainer +if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$sys.recordstate") != neon.OPERATINGSTATE_EDIT) + result.string(JSON.stringify([vars.get("$field.MST_TEAM_ID"), vars.get("$field.TEAMNAME")])); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js new file mode 100644 index 00000000000..d3f581dba2d --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); +import("Util_lib"); + +var teamIdAndName = Utils.parseJSON(vars.get("$field.TEAM_ID_AND_NAME")); +if (teamIdAndName && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)) + result.string(teamIdAndName[1]); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js b/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js index 3dec5ca7f61..bf45fb33601 100644 --- a/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js +++ b/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js @@ -4,4 +4,9 @@ import("MSTeams_lib"); var teamLinkId = vars.get("$local.uid"); var rowData = vars.get("$local.rowdata"); //if the linked context is configured to have just one teamLink but the object already has a teamLink, the old teamLink will be deleted -MSTeamsUtils.purgeCorruptTeamLinks(rowData["MST_TEAMLINK.OBJECT_ROWID"], rowData["MST_TEAMLINK.OBJECT_TYPE"], teamLinkId); \ No newline at end of file +MSTeamsUtils.purgeCorruptTeamLinks(rowData["MST_TEAMLINK.OBJECT_ROWID"], rowData["MST_TEAMLINK.OBJECT_TYPE"], teamLinkId); + +MSTeamsUtils.insertTeamIfMissing({ + teamId: rowData["MST_TEAMLINK.MST_TEAM_ID"], + teamName: rowData["MST_TEAM.TEAMNAME"] +}); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js b/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js new file mode 100644 index 00000000000..61769345ec3 --- /dev/null +++ b/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("MSTeams_lib"); + +var rowData = vars.get("$local.rowdata"); + +MSTeamsUtils.insertTeamIfMissing({ + teamId: rowData["MST_TEAMLINK.MST_TEAM_ID"], + teamName: rowData["MST_TEAM.TEAMNAME"] +}); \ No newline at end of file diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod index 27a447b2303..d062fa0ba01 100644 --- a/entity/MSTTeam_entity/MSTTeam_entity.aod +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -11,15 +11,6 @@ <entityFields> <entityProvider> <name>#PROVIDER</name> - <lookupIdfield>TEAMID_AND_NAME</lookupIdfield> - <dependencies> - <entityDependency> - <name>9794baf5-ffc8-498e-8aa8-f4eca945441c</name> - <entityName>MSTTeamLink_entity</entityName> - <fieldName>Teams</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityField> <name>UID</name> @@ -108,6 +99,30 @@ <expose v="true" /> <description>PARAMETER</description> </entityParameter> + <entityProvider> + <name>TeamsByIdAndName</name> + <lookupIdfield>TEAMID_AND_NAME</lookupIdfield> + <documentation>%aditoprj%/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc</documentation> + <children> + <entityParameter> + <name>UseCache_param</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> + <dependencies> + <entityDependency> + <name>e48136a2-5f66-4399-903a-cd1363fa30c6</name> + <entityName>MSTTeamLink_entity</entityName> + <fieldName>Teams</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityParameter> + <name>UseCache_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -119,6 +134,8 @@ <onInsert>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> <onUpdate>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js</onUpdate> <onDelete>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js</onDelete> + <cacheType>SESSION</cacheType> + <cacheKeyProcess>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js</cacheKeyProcess> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> diff --git a/entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js new file mode 100644 index 00000000000..40effa01784 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string(true); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc b/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc new file mode 100644 index 00000000000..84522789b1b --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc @@ -0,0 +1,4 @@ += TeamsByIdAndName + +The provider uses a JSON containing [teamId, teamName] as the lookupIdField for cases when both values are needed. +Because the request that loads the MST teams can be slow, the records will be cached if this provider is used. \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js b/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js new file mode 100644 index 00000000000..f9c2f6bbd9d --- /dev/null +++ b/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.vars"); +import("Util_lib"); +import("CachedRecordContainer_lib"); + +if (Utils.toBoolean(vars.get("$param.UseCache_param"))) + result.string(CachedRecordContainerUtils.getCommonKey("$param.UseCache_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js index 1d73c7766db..3a4b2c76861 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -62,12 +62,5 @@ if (internalMembers.length !== 0) if (externalMembers.length !== 0) teams.addExternalMembers(mstTeam.teamId, externalMembers); -new SqlBuilder().insertFields({ - "MST_TEAMID": mstTeam.teamId, - "TEAMNAME": mstTeam.teamName, - "GENERAL_CHANNELID": mstTeam.generalChannelId, - "IS_ARCHIVED": 0, - "WEB_URL": mstTeam.webUrl -}, "MST_TEAM"); - +MSTeamsUtils.insertTeamIfMissing(mstTeam); MSTeamsUtils.createTeamLink(mstTeam.teamId, vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param")); \ No newline at end of file diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index f0d15b5a877..8706484f0ff 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -6,6 +6,7 @@ <title>${SALESPROJECT_MEMBER}</title> <siblings> <element>MSTTeam_entity</element> + <element>MSTTeamLink_entity</element> </siblings> <grantUpdateProcess>%aditoprj%/entity/Member_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/Member_entity/grantDeleteProcess.js</grantDeleteProcess> diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 37af27431d7..f497a51be79 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -8,6 +8,7 @@ <element>SalesprojectMilestone_entity</element> <element>Member_entity</element> <element>MSTTeam_entity</element> + <element>MSTTeamLink_entity</element> </siblings> <grantDeleteProcess>%aditoprj%/entity/Salesproject_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Salesproject_entity/contentTitleProcess.js</contentTitleProcess> diff --git a/neonContext/MSTTeamLink/MSTTeamLink.aod b/neonContext/MSTTeamLink/MSTTeamLink.aod index 31b2ad861a6..d0d6d646fe3 100644 --- a/neonContext/MSTTeamLink/MSTTeamLink.aod +++ b/neonContext/MSTTeamLink/MSTTeamLink.aod @@ -2,6 +2,7 @@ <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>MSTTeamLink</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>MSTTeamLinkEdit_view</editView> <entity>MSTTeamLink_entity</entity> <references> <neonViewReference> diff --git a/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod b/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod index b7261189dd7..acb23701eb4 100644 --- a/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod +++ b/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod @@ -2,9 +2,22 @@ <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> <name>MSTTeamLinkEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> <layout> <boxLayout> <name>layout</name> </boxLayout> </layout> + <children> + <genericViewTemplate> + <name>TeamSelection</name> + <editMode v="true" /> + <fields> + <entityFieldLink> + <name>1b10e15e-0774-430d-8b76-36307abdff33</name> + <entityField>TEAM_ID_AND_NAME</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> </neonView> diff --git a/process/CachedRecordContainer_lib/process.js b/process/CachedRecordContainer_lib/process.js index e44f4dfa90c..f7d4ea84563 100644 --- a/process/CachedRecordContainer_lib/process.js +++ b/process/CachedRecordContainer_lib/process.js @@ -161,7 +161,14 @@ CachedRecordContainerUtils.getKey = function(pVariable1, pVariableN) { varsToCheck.forEach(function (varToCheck){ if (vars.exists(varToCheck)) { - var value = vars.getString(varToCheck); + var value = vars.get(varToCheck); + if (value && Utils.isObject(value)) + { + if (varToCheck === "$local.filters" && _isEmptyFilter(value)) + value = null; + else + value = JSON.stringify(value); + } if (value != null) key.push(value); else @@ -174,4 +181,10 @@ CachedRecordContainerUtils.getKey = function(pVariable1, pVariableN) { }); return key.join("."); + + function _isEmptyFilter (pFilter) + { + var childs = pFilter.childs; + return Utils.isNullOrEmpty(childs) || (childs.length === 1 && childs[0].operator === "CONTAINS" && !childs[0].key); + } }; \ No newline at end of file diff --git a/process/Liquibase_lib/process.js b/process/Liquibase_lib/process.js index 65cfed3485b..e673139131b 100644 --- a/process/Liquibase_lib/process.js +++ b/process/Liquibase_lib/process.js @@ -148,7 +148,7 @@ LiquiUtils._getDataXml = function(pAuthor, pLobPath, pTableName, pColumns, pCond var changesetId; if (pGenerateChangeSetIdFromArguments) { - changesetId = Array.prototype.slice.call(arguments);//todo: use Array.from instead when supported (>= rhino 1.7.11) (#1038664) + changesetId = Array.from(arguments); changesetId = changesetId.reduce(function (accumulator, currentValue){ return (currentValue !== null && currentValue !== undefined ? accumulator + JSON.stringify(currentValue) : accumulator); }, ""); diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js index f243b05ff0c..fe2d31665e8 100644 --- a/process/MSTeams_lib/process.js +++ b/process/MSTeams_lib/process.js @@ -74,6 +74,26 @@ MSTeamsUtils.purgeCorruptTeamLinks = function (pRowId, pObjectType, pTeamLinkIdT return newWhere("MST_TEAMLINK.MST_TEAMLINKID", removeLinks, SqlBuilder.IN()).deleteData(); } +MSTeamsUtils.insertTeamIfMissing = function (pTeam) +{ + var existsTeam = newSelect("count(*)") + .from("MST_TEAM") + .where("MST_TEAM.MST_TEAMID", pTeam.teamId) + .cell() > 0; + if (existsTeam) + return false; + + new SqlBuilder().insertFields({ + "MST_TEAMID": pTeam.teamId, + "TEAMNAME": pTeam.teamName, + "GENERAL_CHANNELID": pTeam.generalChannelId || teams.getGeneralChannelId(pTeam.teamId), + "IS_ARCHIVED": 0, + "WEB_URL": pTeam.webUrl || teams.getWebUrl(pTeam.teamId) + }, "MST_TEAM"); + + return true; +} + /** * */ -- GitLab From 76ea9f30846d1fa364cddcae18289241b9b18754 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 20 Nov 2020 17:46:02 +0100 Subject: [PATCH 097/184] MSTeams_lib comments added --- entity/Activity_entity/Activity_entity.aod | 173 +++++++++--------- .../msteamsactions/stateProcess.js | 4 +- .../MSTeamsActivityImport_entity.aod | 4 + .../afterUiInit.js | 8 + .../MSTeamsChannel_entity.aod | 2 + .../recordcontainers/jdito/cacheKeyProcess.js | 4 + .../ActivityFilter_view.aod | 5 +- process/MSTeams_lib/process.js | 47 ++++- 8 files changed, 147 insertions(+), 100 deletions(-) create mode 100644 entity/MSTeamsActivityImport_entity/afterUiInit.js create mode 100644 entity/MSTeamsChannel_entity/recordcontainers/jdito/cacheKeyProcess.js diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index 4737e177d94..fae8253b6fe 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -117,11 +117,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -132,15 +127,15 @@ <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> <entityParameter> <name>AssignmentTable_param</name> @@ -151,6 +146,11 @@ <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/maindocuments/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> + </dependency> </entityConsumer> <entityField> <name>ENTRYMONTH</name> @@ -165,25 +165,20 @@ </entityField> <entityConsumer> <name>Links</name> - <dependency> - <name>dependency</name> - <entityName>ActivityLink_entity</entityName> - <fieldName>Links</fieldName> - </dependency> <children> <entityParameter> <name>ActivityId_param</name> <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/links/children/activityid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDirections</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>ActivityLink_entity</entityName> + <fieldName>Links</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDirections</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -191,11 +186,47 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>LinkedObjects</name> <documentation>%aditoprj%/entity/Activity_entity/entityfields/linkedobjects/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>OnlyInnate_param</name> + <expose v="false" /> + <documentation>%aditoprj%/entity/Activity_entity/entityfields/linkedobjects/children/onlyinnate_param/documentation.adoc</documentation> + </entityParameter> + <entityParameter> + <name>ObjectId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>RowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>PresetLinks_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ParentContext_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ParentId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>PresetDocuments_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>8ececf30-a3bc-4cd2-ad04-fb9f3cb9332d</name> @@ -276,37 +307,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>OnlyInnate_param</name> - <expose v="false" /> - <documentation>%aditoprj%/entity/Activity_entity/entityfields/linkedobjects/children/onlyinnate_param/documentation.adoc</documentation> - </entityParameter> - <entityParameter> - <name>ObjectId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>RowId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>PresetLinks_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ParentContext_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ParentId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>PresetDocuments_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>RESPONSIBLE</name> @@ -320,11 +320,6 @@ </entityField> <entityConsumer> <name>ModuleTrees</name> - <dependency> - <name>dependency</name> - <entityName>ModuleTree_entity</entityName> - <fieldName>TreeProviders</fieldName> - </dependency> <children> <entityParameter> <name>ContextName_param</name> @@ -337,6 +332,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ModuleTree_entity</entityName> + <fieldName>TreeProviders</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -377,11 +377,6 @@ </entityField> <entityConsumer> <name>KeywordCategories</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -389,6 +384,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>ENTRYDAY</name> @@ -398,11 +398,6 @@ <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Activity_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -413,6 +408,11 @@ <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newOffer</name> @@ -437,11 +437,6 @@ </entityParameter> <entityConsumer> <name>AttributeTree</name> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -452,6 +447,11 @@ <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>USER_NEW</name> @@ -519,11 +519,6 @@ </entityParameter> <entityConsumer> <name>ActivityAtrributes</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>ThemeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ThemeObjectRowId_param</name> @@ -534,14 +529,14 @@ <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/activityatrributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTreeIsTheme</name> <dependency> <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <entityName>Attribute_entity</entityName> + <fieldName>ThemeProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTreeIsTheme</name> <children> <entityParameter> <name>ObjectType_param</name> @@ -556,6 +551,11 @@ <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/attributetreeistheme/children/gettheme_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>ENTRYYEAR</name> @@ -576,21 +576,22 @@ </entityParameter> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityActionGroup> <name>MSTeamsActions</name> <title>MS Teams</title> + <state>EDITABLE</state> <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js</stateProcess> <children> <entityActionField> diff --git a/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js b/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js index c05618702e3..828bf3fc583 100644 --- a/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js +++ b/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js @@ -3,5 +3,5 @@ import("system.neon"); import("system.result"); import("MSTeams_lib"); -var isTeamsEnabled = vars.get("$param.EnableMSTeams_param") == "true" && MSTeamsUtils.isTeamsEnabled(); -result.string(isTeamsEnabled ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_INVISIBLE); \ No newline at end of file +var isTeamsEnabled = vars.get("$param.ObjectId_param") in MSTeamsUtils.getTeamLinkContexts() && MSTeamsUtils.isTeamsEnabled(); +result.string(/*isTeamsEnabled ? neon.COMPONENTSTATE_EDITABLE : */neon.COMPONENTSTATE_INVISIBLE); \ No newline at end of file diff --git a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod index bab6f3794ca..fb158db38da 100644 --- a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod +++ b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod @@ -4,6 +4,8 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/MSTeamsActivityImport_entity/documentation.adoc</documentation> <siblings /> + <afterUiInit>%aditoprj%/entity/MSTeamsActivityImport_entity/afterUiInit.js</afterUiInit> + <recordContainer>dataless</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> @@ -35,6 +37,7 @@ <name>CHANNEL_ID</name> <title>Channel</title> <consumer>Channels</consumer> + <state>EDITABLE</state> </entityField> <entityParameter> <name>ObjectRowId_param</name> @@ -83,6 +86,7 @@ <recordContainers> <datalessRecordContainer> <name>dataless</name> + <alias>Data_alias</alias> </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/MSTeamsActivityImport_entity/afterUiInit.js b/entity/MSTeamsActivityImport_entity/afterUiInit.js new file mode 100644 index 00000000000..9357f9cbc24 --- /dev/null +++ b/entity/MSTeamsActivityImport_entity/afterUiInit.js @@ -0,0 +1,8 @@ +import("system.entities"); + +//load the channels into the cache when opening the dialog, so the user doesn't have to wait when opening the lookup +entities.invalidateCache("MSTeamsChannel_entity", "jdito"); +entities.getRows(entities.createConfigForLoadingConsumerRows() + .consumer("Channels") + .fields(["UID", "CHANNELNAME"]) +); \ No newline at end of file diff --git a/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod index 819f857c1ae..4c2ea19b101 100644 --- a/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod +++ b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod @@ -65,6 +65,8 @@ <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> <contentProcess>%aditoprj%/entity/MSTeamsChannel_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <cacheType>SESSION</cacheType> + <cacheKeyProcess>%aditoprj%/entity/MSTeamsChannel_entity/recordcontainers/jdito/cacheKeyProcess.js</cacheKeyProcess> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> diff --git a/entity/MSTeamsChannel_entity/recordcontainers/jdito/cacheKeyProcess.js b/entity/MSTeamsChannel_entity/recordcontainers/jdito/cacheKeyProcess.js new file mode 100644 index 00000000000..ee4f6d23760 --- /dev/null +++ b/entity/MSTeamsChannel_entity/recordcontainers/jdito/cacheKeyProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("CachedRecordContainer_lib"); + +result.string(CachedRecordContainerUtils.getCommonKey("$param.TeamId_param")); \ No newline at end of file diff --git a/neonView/ActivityFilter_view/ActivityFilter_view.aod b/neonView/ActivityFilter_view/ActivityFilter_view.aod index 21662c37bba..0094ed28745 100644 --- a/neonView/ActivityFilter_view/ActivityFilter_view.aod +++ b/neonView/ActivityFilter_view/ActivityFilter_view.aod @@ -50,7 +50,7 @@ <children> <timelineViewTemplate> <name>ActivitiesTimeline</name> - <favoriteActionGroup1>MSTeams</favoriteActionGroup1> + <favoriteActionGroup2>MSTeamsActions</favoriteActionGroup2> <dateField>entryDateDateFormat</dateField> <titleField>SUBJECT_DETAILS</titleField> <descriptionField>INFO</descriptionField> @@ -60,7 +60,7 @@ </timelineViewTemplate> <tableViewTemplate> <name>ActivitiesTable</name> - <favoriteActionGroup2>MST_TeamActions</favoriteActionGroup2> + <favoriteActionGroup2>MSTeamsActions</favoriteActionGroup2> <iconField>#IMAGE</iconField> <titleField>SUBJECT</titleField> <subtitleField>ENTRYDATE</subtitleField> @@ -94,6 +94,7 @@ </tableViewTemplate> <treeTableViewTemplate> <name>ActivitiesTreeTable</name> + <favoriteActionGroup2>MSTeamsActions</favoriteActionGroup2> <entityField>#ENTITY</entityField> <columns> <neonTreeTableColumn> diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js index fe2d31665e8..4c5d02e33cc 100644 --- a/process/MSTeams_lib/process.js +++ b/process/MSTeams_lib/process.js @@ -24,7 +24,9 @@ MSTeamsUtils.isTeamsEnabled = function () } /** + * Contains the configuration for the possible contexts that can be used for teamLinks. * + * @return {Object} object with the context-names as keys and configuration-objects as values */ MSTeamsUtils.getTeamLinkContexts = function () { @@ -33,6 +35,13 @@ MSTeamsUtils.getTeamLinkContexts = function () }; } +/** + * Opens a context for changing the linked team of the given object. This function also checks the configuration from + * MSTeamsUtils.getTeamLinkContexts to make sure the created teamLink is allowed + * + * @param {String} pRowId uid of the linked object + * @param {String} pObjectType context of the linked object + */ MSTeamsUtils.changeTeamsLink = function (pRowId, pObjectType) { var linkConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType]; @@ -54,6 +63,14 @@ MSTeamsUtils.changeTeamsLink = function (pRowId, pObjectType) neon.openContext("MSTTeamLink", null, [existingTeamLinks[0]], neon.OPERATINGSTATE_EDIT, params); } +/** + * Removes all teamLinks of the given object that are invalid. + * + * @param {String} pRowId uid of the linked object + * @param {String} pObjectType context of the linked object + * @param {String} [pTeamLinkIdToKeep] Only applies to contexts with 'singleLinkPerObject: true', if there are more than one teamLink, every + * teamLink except one will be deleted. This param controls which one shouldn't be deleted. + */ MSTeamsUtils.purgeCorruptTeamLinks = function (pRowId, pObjectType, pTeamLinkIdToKeep) { var teamLinks = MSTeamsUtils.getLinkedTeams(pRowId, pObjectType).map(function (row) @@ -74,6 +91,21 @@ MSTeamsUtils.purgeCorruptTeamLinks = function (pRowId, pObjectType, pTeamLinkIdT return newWhere("MST_TEAMLINK.MST_TEAMLINKID", removeLinks, SqlBuilder.IN()).deleteData(); } +/** + * Saves the given team in the database if it is not already present. + * + * @param {Object} pTeam An object containing the data of the team. Required properties: + * <ul> + * <li>teamId</li> + * <li>teamName</li> + * </ul> + * Optional properties (will be loaded automatically if not given): + * <ul> + * <li>generalChannelId</li> + * <li>webUrl</li> + * </ul> + * @return {Boolean} true if the team was inserted, false if it already exists + */ MSTeamsUtils.insertTeamIfMissing = function (pTeam) { var existsTeam = newSelect("count(*)") @@ -95,11 +127,11 @@ MSTeamsUtils.insertTeamIfMissing = function (pTeam) } /** - * + * Creates a new teamLink. */ MSTeamsUtils.createTeamLink = function (pTeamId, pRowId, pObjectType) { - var currentTeamLinkId; + var currentTeamLink; var contextConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType]; if (!contextConfig) return; @@ -107,15 +139,11 @@ MSTeamsUtils.createTeamLink = function (pTeamId, pRowId, pObjectType) //if singleLinkPerObject is true, only one team link can be created for the given objectRowId if (contextConfig.singleLinkPerObject) { - currentTeamLinkId = newSelect("MST_TEAMLINKID") - .from("MST_TEAMLINK") - .where("MST_TEAMLINK.OBJECT_ROWID", pRowId) - .and("MST_TEAMLINK.OBJECT_TYPE", pObjectType) - .cell(); + currentTeamLink = MSTeamsUtils.getLinkedTeam(pRowId, pObjectType); } - if (currentTeamLinkId) + if (currentTeamLink) { - newWhere("MST_TEAMLINK.MST_TEAMLINKID", currentTeamLinkId).updateFields({ + newWhere("MST_TEAMLINK.MST_TEAMLINKID", currentTeamLink.teamLinkId).updateFields({ "MST_TEAM_ID": pTeamId }); } @@ -209,7 +237,6 @@ MSTeamsUtils.getTeamRoleSubSql = function (pTeamId, pContactIdField) caseWhen.when("(" + CommUtil.getStandardSubSqlMail() + ") in ('" + Utils.objectValues(members).join("', '") + "')") .thenString(translate.text("Guest")); - logging.log(JSON.stringify(caseWhen)) return caseWhen.elseString("").toString(); } -- GitLab From b569a2b6cb0b9584ecf833fb601eb19dcea3b651 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20V=C3=B6gl?= <a.voegl@adito.de> Date: Mon, 23 Nov 2020 09:37:50 +0000 Subject: [PATCH 098/184] Add Attribute Grouping in Person and Organisation --- .../Organisation_entity.aod | 2 + .../attribute_filter/groupQueryProcess.js | 9 +++ entity/Person_entity/Person_entity.aod | 2 + .../attribute_filter/groupQueryProcess.js | 9 +++ process/AttributeFilter_lib/process.js | 76 ++++++++++++++++++- 5 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js create mode 100644 entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index 50afcd2e322..954f5023e7d 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -1669,6 +1669,8 @@ <filterFieldsProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js</filterFieldsProcess> <filterValuesProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js</filterValuesProcess> <filterConditionProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess> + <isGroupable v="true" /> + <groupQueryProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js</groupQueryProcess> <filtertype>BASIC</filtertype> </filterExtensionSet> <filterExtensionSet> diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js new file mode 100644 index 00000000000..1bd2d352867 --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js @@ -0,0 +1,9 @@ +import("system.logging"); +import("system.result"); +import("AttributeFilter_lib"); + +var sqlCond = AttributeFilterExtensionMaker.makeFilterGroupQuery("ORGANISATION \n\ + join CONTACT on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null)\n\ + left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)\n\ + left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID)"); +result.string(sqlCond); \ No newline at end of file diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index 42f436e7093..b642f05df01 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -1693,6 +1693,8 @@ <filterFieldsProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js</filterFieldsProcess> <filterValuesProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js</filterValuesProcess> <filterConditionProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess> + <isGroupable v="true" /> + <groupQueryProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js</groupQueryProcess> <filtertype>BASIC</filtertype> </filterExtensionSet> <filterExtension> diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js new file mode 100644 index 00000000000..dcc085ca306 --- /dev/null +++ b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js @@ -0,0 +1,9 @@ +import("system.logging"); +import("system.result"); +import("AttributeFilter_lib"); + +var sqlCond = AttributeFilterExtensionMaker.makeFilterGroupQuery("PERSON \n\ + join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID) \n\ + join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID) \n\ + left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)"); +result.string(sqlCond); \ No newline at end of file diff --git a/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js index d64df9664bf..5d0f8b5b4fe 100644 --- a/process/AttributeFilter_lib/process.js +++ b/process/AttributeFilter_lib/process.js @@ -97,11 +97,18 @@ AttributeFilterExtensionMaker.getFilterFields = function(pObjectType) attributeRows.forEach(function(row){ var attributeType = row["ATTRIBUTE_TYPE"]; var contentType = AttributeTypeUtil.getContentType(attributeType); + var groupedRecordField = AttributeTypeUtil.getDatabaseField(attributeType); + var titleRecordField = AttributeTypeUtil.getDatabaseField(attributeType); if (attributeType.trim() == AttributeTypes.VOID()) { contentType = "BOOLEAN"; } + else if(attributeType.trim() == AttributeTypes.COMBO()) + { + groupedRecordField = "AB_ATTRIBUTEID"; + titleRecordField = "ATTRIBUTE_NAME"; + } if (contentType) { @@ -111,7 +118,10 @@ AttributeFilterExtensionMaker.getFilterFields = function(pObjectType) title: row["FULL_ATTRIBUTE_NAME"], //workaround since we do not have a "UNKNOWN"-contentType in the filter-definition contentType: contentType == "UNKNOWN" ? "TEXT" : contentType, - hasDropDownValues: contentType == "UNKNOWN" || contentType == "BOOLEAN" ? true : false//TODO: determine this somehow else + hasDropDownValues: contentType == "UNKNOWN" || contentType == "BOOLEAN" ? true : false,//TODO: determine this somehow else + isGroupable: true, + groupedRecordField: groupedRecordField,//groupedRecordField + titleRecordField: new SqlMaskingUtils().isNull(titleRecordField, "'"+translate.text("nicht zugeordnet")+"'") }); } }); @@ -258,3 +268,67 @@ AttributeFilterExtensionMaker.makeFilterConditionSql = function() uidInfo.table, uidInfo.column, columnPlaceholder); return res; }; + +/** + * fetches attributes that are groupable and transofms them into Groupings + * + * @param {String} pFrom The Value of the fromClauseProcess (if not used, then the "Main" Table) + * + * @see AttributeFilterExtensionMaker.getFilterGroupQuery for more details + */ +AttributeFilterExtensionMaker.makeFilterGroupQuery = function(pFrom) +{ + var attributeName = vars.get("$local.name"); + var condition = vars.get("$local.condition").trim(); //can have multiple space characters + var groupColumnList = vars.get("$local.columnlist"); + var order = vars.get("$local.order"); + var count = vars.get("$local.count"); + var uidInfo = vars.get("$sys.uidcolumn"); + var res = AttributeFilterExtensionMaker.getFilterGroupQuery(attributeName, condition, groupColumnList, order, count, uidInfo, pFrom); + return res; +}; + + +/** + * + * @param {String} pAttributeName The Attribute-name contains various data of the attribute as a encoded string + * @param {String} pCondition Contains the local Condition + * @param {String} pColumnList Contains various Columns for the group Select + * @param {String} pOrder In which order the results should be displayed + * @param {String} pCount Indicates if u need to count or not, TRUE and FALSE + * @param {String} pUidColumn The Column that is linked with AB_ATTRIBUTERELATION.OBJECT_ROWID + * @param {String} pFrom The From part is needed to use the Condition right in every way + * + * @return {String} <p/> SQL-Statemente for grouping + * It returns the count or the Group Values + * @static + */ +AttributeFilterExtensionMaker.getFilterGroupQuery = function(pAttributeName, pCondition, pColumnList, pOrder, pCount, pUidColumn, pFrom) +{ + + var name = AttributeSearchNameCoder.decode(pAttributeName); + + var attributeId = name.id; + var attrType = name.type; + if (attrType == AttributeTypes.VOID()) + attrType = AttributeTypes.BOOLEAN(); + + var valuefield = AttributeTypeUtil.getDatabaseField(attrType); + + + var stmt = newSelect(pCount ? "1" : pColumnList).from(pFrom) + .leftJoin("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATION.OBJECT_ROWID = "+pUidColumn+" and "+newWhere("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", attributeId).toString()); + + if (attrType == AttributeTypes.COMBO()) + stmt.leftJoin("AB_ATTRIBUTE", "AB_ATTRIBUTE.AB_ATTRIBUTEID = " + valuefield); + + if(pCondition) + stmt.where(pCondition); + + stmt.groupBy(valuefield); + + if(pOrder) + stmt.orderBy(pOrder); + + return stmt.toString(); +}; \ No newline at end of file -- GitLab From 7869864dcb487cf843e469e3c88649a3e610a7fb Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Mon, 23 Nov 2020 11:25:19 +0100 Subject: [PATCH 099/184] MSTeams don't show imperso user --- .../recordcontainers/jdito/contentProcess.js | 4 ++++ process/AttributeFilter_lib/process.js | 15 +++++++++------ process/MSTeams_lib/process.js | 5 +++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js index 3a44cd419e0..4f615a675a9 100644 --- a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js @@ -6,6 +6,10 @@ import("MSTeams_lib"); var teamId = vars.get("$param.MSTTeamId_param"); var allMembers = teamId ? teams.getAllMembers(teamId) : {}; +var impersoAzureId = MSTeamsUtils.getImpersoAzureId(); +if (impersoAzureId in allMembers) //don't display the imperso user + delete allMembers[impersoAzureId]; + var memberIds = vars.get("$local.idvalues") || Object.keys(allMembers); var owners = teamId ? teams.getAllOwners(teamId) : {}; var memberContactIds = MSTeamsUtils.getContactIdsByAzureIds(memberIds); diff --git a/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js index 5d0f8b5b4fe..adfea322ed0 100644 --- a/process/AttributeFilter_lib/process.js +++ b/process/AttributeFilter_lib/process.js @@ -87,6 +87,7 @@ function AttributeFilterExtensionMaker() {} AttributeFilterExtensionMaker.getFilterFields = function(pObjectType) { var res = []; + var sqlMask = new SqlMaskingUtils(); var loadingConfig = entities.createConfigForLoadingRows().entity("Attribute_entity") .provider("SpecificFilterAttributes") @@ -95,20 +96,22 @@ AttributeFilterExtensionMaker.getFilterFields = function(pObjectType) var attributeRows = entities.getRows(loadingConfig); attributeRows.forEach(function(row){ - var attributeType = row["ATTRIBUTE_TYPE"]; + var attributeType = row["ATTRIBUTE_TYPE"].trim(); var contentType = AttributeTypeUtil.getContentType(attributeType); var groupedRecordField = AttributeTypeUtil.getDatabaseField(attributeType); var titleRecordField = AttributeTypeUtil.getDatabaseField(attributeType); - if (attributeType.trim() == AttributeTypes.VOID()) + if (attributeType == AttributeTypes.VOID()) { contentType = "BOOLEAN"; } - else if(attributeType.trim() == AttributeTypes.COMBO()) + else if(attributeType == AttributeTypes.COMBO()) { groupedRecordField = "AB_ATTRIBUTEID"; titleRecordField = "ATTRIBUTE_NAME"; } + if (titleRecordField == "INT_VALUE" || titleRecordField == "NUMBER_VALUE") + titleRecordField = sqlMask.cast(titleRecordField, SQLTYPES.VARCHAR, 50); if (contentType) { @@ -118,10 +121,10 @@ AttributeFilterExtensionMaker.getFilterFields = function(pObjectType) title: row["FULL_ATTRIBUTE_NAME"], //workaround since we do not have a "UNKNOWN"-contentType in the filter-definition contentType: contentType == "UNKNOWN" ? "TEXT" : contentType, - hasDropDownValues: contentType == "UNKNOWN" || contentType == "BOOLEAN" ? true : false,//TODO: determine this somehow else + hasDropDownValues: contentType == "UNKNOWN" || contentType == "BOOLEAN",//TODO: determine this somehow else isGroupable: true, groupedRecordField: groupedRecordField,//groupedRecordField - titleRecordField: new SqlMaskingUtils().isNull(titleRecordField, "'"+translate.text("nicht zugeordnet")+"'") + titleRecordField: sqlMask.isNull(titleRecordField, "'"+translate.text("unassigned")+"'") }); } }); @@ -317,7 +320,7 @@ AttributeFilterExtensionMaker.getFilterGroupQuery = function(pAttributeName, pCo var stmt = newSelect(pCount ? "1" : pColumnList).from(pFrom) - .leftJoin("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATION.OBJECT_ROWID = "+pUidColumn+" and "+newWhere("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", attributeId).toString()); + .leftJoin("AB_ATTRIBUTERELATION", newWhere("AB_ATTRIBUTERELATION.OBJECT_ROWID = "+pUidColumn).and("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", attributeId)); if (attrType == AttributeTypes.COMBO()) stmt.leftJoin("AB_ATTRIBUTE", "AB_ATTRIBUTE.AB_ATTRIBUTEID = " + valuefield); diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js index 4c5d02e33cc..16d41e7efaf 100644 --- a/process/MSTeams_lib/process.js +++ b/process/MSTeams_lib/process.js @@ -23,6 +23,11 @@ MSTeamsUtils.isTeamsEnabled = function () return Utils.toBoolean(project.getInstanceConfigValue("teamsEnabled", "false")); } +MSTeamsUtils.getImpersoAzureId = function () +{ + return project.getInstanceConfigValue("teamsImpersoAzureId", ""); +} + /** * Contains the configuration for the possible contexts that can be used for teamLinks. * -- GitLab From e717e3ee7f1e9c453ff580300be6931b5876c403 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Mon, 23 Nov 2020 16:00:34 +0100 Subject: [PATCH 100/184] Grouping by Attributes --- .../attribute_filter/groupQueryProcess.js | 1 - process/AttributeFilter_lib/process.js | 27 +++---- process/Attribute_lib/process.js | 80 ++++++++++++++----- process/Util_lib/process.js | 9 +++ 4 files changed, 83 insertions(+), 34 deletions(-) diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js index dcc085ca306..cd1075a6aca 100644 --- a/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js +++ b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.result"); import("AttributeFilter_lib"); diff --git a/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js index adfea322ed0..0e9a44920ee 100644 --- a/process/AttributeFilter_lib/process.js +++ b/process/AttributeFilter_lib/process.js @@ -91,7 +91,7 @@ AttributeFilterExtensionMaker.getFilterFields = function(pObjectType) var loadingConfig = entities.createConfigForLoadingRows().entity("Attribute_entity") .provider("SpecificFilterAttributes") - .fields(["UID", "FULL_ATTRIBUTE_NAME", "ATTRIBUTE_TYPE"]) + .fields(["UID", "FULL_ATTRIBUTE_NAME", "ATTRIBUTE_TYPE", "DROPDOWNDEFINITION"]) .addParameter("ObjectType_param", pObjectType); var attributeRows = entities.getRows(loadingConfig); @@ -99,17 +99,19 @@ AttributeFilterExtensionMaker.getFilterFields = function(pObjectType) var attributeType = row["ATTRIBUTE_TYPE"].trim(); var contentType = AttributeTypeUtil.getContentType(attributeType); var groupedRecordField = AttributeTypeUtil.getDatabaseField(attributeType); - var titleRecordField = AttributeTypeUtil.getDatabaseField(attributeType); + var getTitleRecordFieldFn = AttributeTypeUtil.getDisplayValueSqlFn(attributeType); + var titleRecordField = getTitleRecordFieldFn({ + attributeId: row["UID"], + dropDownDefinition: row["DROPDOWNDEFINITION"] + }); if (attributeType == AttributeTypes.VOID()) { contentType = "BOOLEAN"; + groupedRecordField = SqlBuilder.caseWhen("AB_ATTRIBUTE_ID is not null").thenString("1").toString(); + titleRecordField = SqlBuilder.caseWhen("AB_ATTRIBUTE_ID is not null").thenString(translate.text("Yes")).toString(); } - else if(attributeType == AttributeTypes.COMBO()) - { - groupedRecordField = "AB_ATTRIBUTEID"; - titleRecordField = "ATTRIBUTE_NAME"; - } + if (titleRecordField == "INT_VALUE" || titleRecordField == "NUMBER_VALUE") titleRecordField = sqlMask.cast(titleRecordField, SQLTYPES.VARCHAR, 50); @@ -313,18 +315,15 @@ AttributeFilterExtensionMaker.getFilterGroupQuery = function(pAttributeName, pCo var attributeId = name.id; var attrType = name.type; - if (attrType == AttributeTypes.VOID()) - attrType = AttributeTypes.BOOLEAN(); - var valuefield = AttributeTypeUtil.getDatabaseField(attrType); + + if (attrType == AttributeTypes.VOID()) + valuefield = "AB_ATTRIBUTE_ID"; var stmt = newSelect(pCount ? "1" : pColumnList).from(pFrom) .leftJoin("AB_ATTRIBUTERELATION", newWhere("AB_ATTRIBUTERELATION.OBJECT_ROWID = "+pUidColumn).and("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", attributeId)); - - if (attrType == AttributeTypes.COMBO()) - stmt.leftJoin("AB_ATTRIBUTE", "AB_ATTRIBUTE.AB_ATTRIBUTEID = " + valuefield); - + if(pCondition) stmt.where(pCondition); diff --git a/process/Attribute_lib/process.js b/process/Attribute_lib/process.js index 938efc90998..3e43bcc979b 100644 --- a/process/Attribute_lib/process.js +++ b/process/Attribute_lib/process.js @@ -859,10 +859,16 @@ Object.assign(AttributeTypes.BOOLEAN, { contentType: "BOOLEAN", databaseField: "INT_VALUE", singleSelection: true, + getDisplayValueSql: function (pAttributeData) + { + var valueField = "AB_ATTRIBUTERELATION." + this.databaseField; + return SqlBuilder.caseWhen(valueField, "1").thenString(translate.text("Yes")) + .when(valueField, "0").thenString(translate.text("No")); + }, getViewValue: function (pValue) - { - return pValue == "1" ? translate.text("Yes") : translate.text("No"); - } + { + return Utils.toBoolean(pValue) ? translate.text("Yes") : translate.text("No"); + } }); Object.assign(AttributeTypes.COMBO, { toString: function () {return this();}, @@ -870,15 +876,30 @@ Object.assign(AttributeTypes.COMBO, { databaseField: "ID_VALUE", possibleChildren: [AttributeTypes.COMBOVALUE()], //in most cases the view value of this attribute type is loaded via a direct sql join for less queries and better performance - getViewValue: function (pValue) + getDisplayValueSql: function (pAttributeData) + { + var valueField = "AB_ATTRIBUTERELATION." + this.databaseField; + var values = newSelect(["AB_ATTRIBUTEID", "ATTRIBUTE_NAME"]) + .from("AB_ATTRIBUTE") + .where("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", pAttributeData.attributeId) + .and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", AttributeTypes.COMBOVALUE()) + .table(); + var sql = SqlBuilder.caseStatement(values, valueField); + values.forEach(function ([key, value]) { - var viewValue = newSelect("AB_ATTRIBUTE.ATTRIBUTE_NAME") - .from("AB_ATTRIBUTE") - .where("AB_ATTRIBUTE.AB_ATTRIBUTEID", pValue) - .and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", AttributeTypes.COMBOVALUE()) - .cell(); - return viewValue ? translate.text(viewValue) : viewValue; - } + sql.when(valueField, key).thenString(translate.text(value)); + }); + return sql.toString(); + }, + getViewValue: function (pValue) + { + var viewValue = newSelect("AB_ATTRIBUTE.ATTRIBUTE_NAME") + .from("AB_ATTRIBUTE") + .where("AB_ATTRIBUTE.AB_ATTRIBUTEID", pValue) + .and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", AttributeTypes.COMBOVALUE()) + .cell(); + return viewValue ? translate.text(viewValue) : viewValue; + } }); Object.assign(AttributeTypes.COMBOVALUE, { toString: function () {return this();}, @@ -907,18 +928,23 @@ Object.assign(AttributeTypes.KEYWORD, { toString: function () {return this();}, contentType: "UNKNOWN", databaseField: "ID_VALUE", + getDisplayValueSql: function (pAttributeData) + { + var valueField = "AB_ATTRIBUTERELATION." + this.databaseField; + return KeywordUtils.getResolvedTitleSqlPart(pAttributeData.dropDownDefinition, valueField); + }, getViewValue: function (pValue, pKeyword) - { - return KeywordUtils.getViewValue(pKeyword, pValue); - }, + { + return KeywordUtils.getViewValue(pKeyword, pValue); + }, dropDownDefinitionTitle: "Keyword", getDropDownDefinitions: function () + { + return KeywordUtils.getContainerNames().map(function (e) { - return KeywordUtils.getContainerNames().map(function (e) - { - return [e, e];//currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers - }); - } + return [e, e];//currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers + }); + } }); Object.assign(AttributeTypes.VOID, { toString: function () {return this();}, @@ -1096,6 +1122,22 @@ AttributeTypeUtil.getDropDownDefinitionTitle = function (pAttributeType) return AttributeTypeUtil._getProperty(pAttributeType, "dropDownDefinitionTitle", ""); } +AttributeTypeUtil.getDisplayValueSqlFn = function (pAttributeType) +{ + if (!pAttributeType) + return null; + + pAttributeType = pAttributeType.trim(); + var attributeType = AttributeTypes[pAttributeType]; + if (!attributeType) + return null; + var displayValueSqlFn = attributeType.getDisplayValueSql || function () + { + return this.databaseField; + }; + return displayValueSqlFn.bind(attributeType); +} + /** * Compare the given pAttributeType with the attribute type string * "OBJECTSELECTION". diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index 5f5227efc07..b520401112a 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -312,6 +312,15 @@ Utils.objectFromMap = function (pMap) return mapObject; } +Utils.toMap = function (pObject) +{ + if (Utils.isMap(pObject)) + return pObject; + if (!Array.isArray(pObject)) + pObject = Utils.objectEntries(pObject); + return new Map(pObject); +} + /** * Parses the given JSON to an object, but ignores empty strings, undefined or null. * -- GitLab From a6b60aca5fe0314532f8bf2ec57a4eceabe3cec1 Mon Sep 17 00:00:00 2001 From: "b.ulrich" <b.ulrich@adito.de> Date: Tue, 24 Nov 2020 10:04:56 +0100 Subject: [PATCH 101/184] [Projekt: Entwicklung - xRM][TicketNr.: 1063066][Adressen - Entfernen des Felds "Gebiet"] --- .../AddressValidation_entity.aod | 59 +++++++++---------- .../recordcontainers/jdito/contentProcess.js | 1 - .../AddressList_view/AddressList_view.aod | 4 -- process/DataPrivacy_lib/process.js | 2 +- process/WsValidation_lib/process.js | 3 - 5 files changed, 29 insertions(+), 40 deletions(-) diff --git a/entity/AddressValidation_entity/AddressValidation_entity.aod b/entity/AddressValidation_entity/AddressValidation_entity.aod index 4f1ed593851..28904169c4f 100644 --- a/entity/AddressValidation_entity/AddressValidation_entity.aod +++ b/entity/AddressValidation_entity/AddressValidation_entity.aod @@ -17,6 +17,13 @@ <entityProvider> <name>ZipValidaton</name> <documentation>%aditoprj%/entity/AddressValidation_entity/entityfields/zipvalidaton/documentation.adoc</documentation> + <children> + <entityParameter> + <name>Type_param</name> + <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/zipvalidaton/children/type_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>fcfcbebe-260a-4773-a874-9791b4887ae2</name> @@ -25,13 +32,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Type_param</name> - <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/zipvalidaton/children/type_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>Type_param</name> @@ -75,6 +75,13 @@ <entityProvider> <name>CityValidation</name> <documentation>%aditoprj%/entity/AddressValidation_entity/entityfields/cityvalidation/documentation.adoc</documentation> + <children> + <entityParameter> + <name>Type_param</name> + <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/cityvalidation/children/type_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>27114db7-8562-43b2-87d8-fa605bbf2319</name> @@ -83,13 +90,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Type_param</name> - <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/cityvalidation/children/type_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>CurrentValue_param</name> @@ -99,6 +99,13 @@ <entityProvider> <name>FullAddressValidation</name> <documentation>%aditoprj%/entity/AddressValidation_entity/entityfields/fulladdressvalidation/documentation.adoc</documentation> + <children> + <entityParameter> + <name>Type_param</name> + <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/fulladdressvalidation/children/type_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>10f700b5-1ac6-4d50-bcb8-aae55714fb43</name> @@ -107,13 +114,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Type_param</name> - <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/fulladdressvalidation/children/type_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>STREET</name> @@ -135,6 +135,13 @@ <entityProvider> <name>StreetValidation</name> <documentation>%aditoprj%/entity/AddressValidation_entity/entityfields/streetvalidation/documentation.adoc</documentation> + <children> + <entityParameter> + <name>Type_param</name> + <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/streetvalidation/children/type_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>3211d147-0867-4fc1-8640-34a1b8fdcf18</name> @@ -143,13 +150,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Type_param</name> - <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/streetvalidation/children/type_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>City_param</name> @@ -194,9 +194,6 @@ <jDitoRecordFieldMapping> <name>DISTRICT.value</name> </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>REGION.value</name> - </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>STATE.value</name> </jDitoRecordFieldMapping> diff --git a/entity/AddressValidation_entity/recordcontainers/jdito/contentProcess.js b/entity/AddressValidation_entity/recordcontainers/jdito/contentProcess.js index e92fed1fd8c..506f8a365a9 100644 --- a/entity/AddressValidation_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/AddressValidation_entity/recordcontainers/jdito/contentProcess.js @@ -49,7 +49,6 @@ else row.cityExt, row.country, row.district, - row.region, row.state, row.road, row.buildingNo, diff --git a/neonView/AddressList_view/AddressList_view.aod b/neonView/AddressList_view/AddressList_view.aod index a9f9b3c6b85..409bae01d2f 100644 --- a/neonView/AddressList_view/AddressList_view.aod +++ b/neonView/AddressList_view/AddressList_view.aod @@ -62,10 +62,6 @@ <name>aafc58cf-7dbb-42cb-b04c-d0869e58d09a</name> <entityField>STATE</entityField> </neonTitledListTableColumn> - <neonTitledListTableColumn> - <name>29dbb3f5-6f80-4100-aed3-334ac0b9cc48</name> - <entityField>REGION</entityField> - </neonTitledListTableColumn> <neonTitledListTableColumn> <name>6e369a01-965f-41d9-9b0a-6128a3827e47</name> <entityField>ADDRESSADDITION</entityField> diff --git a/process/DataPrivacy_lib/process.js b/process/DataPrivacy_lib/process.js index da986784dd2..009bd8c7c52 100644 --- a/process/DataPrivacy_lib/process.js +++ b/process/DataPrivacy_lib/process.js @@ -200,7 +200,7 @@ DataPrivacyType.get = function(pKey) // TODO: update and fix Address_lib and use it (and remove format-functions in PostalAddress_lib) var entityConfig = entities.createConfigForLoadingRows() .entity("Address_entity") - .fields(["ADDRESSID", "ADDRESS", "ADDRESSADDITION", "ADDRIDENTIFIER", "BUILDINGNO", "ZIP", "CITY", "COUNTRY", "DISTRICT", "REGION", "PROVINCE"]); + .fields(["ADDRESSID", "ADDRESS", "ADDRESSADDITION", "ADDRIDENTIFIER", "BUILDINGNO", "ZIP", "CITY", "COUNTRY", "DISTRICT", "PROVINCE"]); if (pAddressId) { diff --git a/process/WsValidation_lib/process.js b/process/WsValidation_lib/process.js index 03bccc71e66..df45171957c 100644 --- a/process/WsValidation_lib/process.js +++ b/process/WsValidation_lib/process.js @@ -108,8 +108,6 @@ WsValidationType.get = function(pKey) city: city, cityExt: cityext, country: pPlaceData.address.country_code.toUpperCase(), //4 - district: pPlaceData.address.district, - region: pPlaceData.address.state_district, state: pPlaceData.address.state, road: road, //8 buildingNo: pPlaceData.address.house_number, @@ -361,7 +359,6 @@ WsValidationUtils.setAddressFields = function(pJSON) "$field.CITY": data.city, "$field.COUNTRY": data.country, //"$field.DISTRICT": data.district, not needed currently - "$field.REGION": data.region, "$field.STATE": data.state, "$field.ADDRESS": data.road, "$field.BUILDINGNO": data.buildingNo -- GitLab From bd8578a84f1dea0c452c56f16c974806da128e74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20V=C3=B6gl?= <a.voegl@adito.de> Date: Wed, 25 Nov 2020 11:01:05 +0000 Subject: [PATCH 102/184] add Organisation to Activity as Link if you import a Mail through the UniversalFileProcessor --- process/IncomingEmailExecutor_lib/process.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/process/IncomingEmailExecutor_lib/process.js b/process/IncomingEmailExecutor_lib/process.js index 555f4f161b3..18756c30f4d 100644 --- a/process/IncomingEmailExecutor_lib/process.js +++ b/process/IncomingEmailExecutor_lib/process.js @@ -266,7 +266,23 @@ IncomingEmailExecutor.prototype._getProcessingFunction = function (pIsSender, pT } else { - var link = [(contactPersonId == "" ? "Organisation" : "Person"), contactId]; + var context = contactPersonId == "" ? "Organisation" : "Person" + + if(context == "Person")//add Organisation to the Activity as Link + { + var orgData = newSelect(["CONTACT.CONTACTID", "CONTACT.STATUS"], this._alias) + .from("CONTACT") + .join("CONTACT", "anyContact.ORGANISATION_ID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null", "anyContact") + .whereIfSet(["CONTACT", "CONTACTID", "anyContact"], contactId) + .arrayRow() + + if (orgData[1] == $KeywordRegistry.contactStatus$active()) + pTargetArray["prefered"].push(["Organisation", orgData[0]]); + else + pTargetArray["failback"].push(["Organisation", orgData[0]]); + } + + var link = [context, contactId]; if (isContactActive) pTargetArray["prefered"].push(link); else -- GitLab From 3eb17722862ad5308b48d574cc77628600077e87 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 24 Nov 2020 10:34:54 +0100 Subject: [PATCH 103/184] JditoFilter_lib enhancements --- .../recordcontainers/jdito/contentProcess.js | 10 +- process/JditoFilter_lib/process.js | 102 ++++++++++++++++++ 2 files changed, 104 insertions(+), 8 deletions(-) diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js index 8bfa01a4579..dccb70e0330 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js @@ -3,14 +3,8 @@ import("system.result"); import("system.vars"); import("JditoFilter_lib"); -var searchValue = null; -JditoFilterUtils.filterRecords(["$$$LOOKUPFIELD$$$"], [["dummy"]], vars.get("$local.filter").filter, { - "$$$LOOKUPFIELD$$$" : function (recordValue, filterValue) - { - searchValue = filterValue; - return true; - } -}); +var lookupFilter = new FilterConditionGroup(vars.get("$local.filter")).getRow("$$$LOOKUPFIELD$$$"); +var searchValue = lookupFilter ? lookupFilter.key : null; var allTeams = teams.getAllTeams(searchValue || null); var teamsArray = []; diff --git a/process/JditoFilter_lib/process.js b/process/JditoFilter_lib/process.js index 8480664cc40..d3bd0f9a436 100644 --- a/process/JditoFilter_lib/process.js +++ b/process/JditoFilter_lib/process.js @@ -6,6 +6,108 @@ import("system.datetime"); //@TODO: add support for permissions to the lib +/** + * object representing a filter-condition + * + * @param {Object} pGroup + */ +function FilterConditionGroup (pGroup) +{ + if (pGroup.filter) + pGroup = pGroup.filter; + + this.type = "group"; + this.operator = pGroup.operator; + _removeEmptyGroups(pGroup.childs); + this.childs = pGroup.childs.map(function (child) + { + if (child.type === "group") + return new FilterConditionGroup(child); + return child; + }); + + function _removeEmptyGroups (pCurrentArray) + { + for (let i = 0; i < pCurrentArray.length; i++) + { + let row = pCurrentArray[i]; + if (row.type == "group") + { + _removeEmptyGroups(row.childs); + if (row.childs.length === 0) + pCurrentArray.splice(i--, 1); + } + } + } +} + +/** + * Calls the given function for every filter row/group and returns the value if the function returns something truthy + * + * @param {Function} pCallbackFn function that tests the values + * @return {Object} the first row/group that meets the conditions + */ +FilterConditionGroup.prototype.find = function (pCallbackFn) +{ + for (let i = 0; l = this.childs.length; i++) + { + let child = this.childs[i]; + if (pCallbackFn(child)) + return child; + if (child.type === "group") + return child.find(pCallbackFn); + } +} + +/** + * Searches the filter for a row with the given name + * + * @param {String} pName the name of the row + * @return {Object} the desired row, if found + */ +FilterConditionGroup.prototype.getRow = function (pName) +{ + return this.find(function (row) + { + return row.type === "row" && row.name == pName; + }); +} + +FilterConditionGroup.prototype.reduce = function (pRowCallbackFn, pAccumulatorGeneratorFn, pMergeFn) +{ + return _reduce(this); + + function _reduce (pRow, pAccumulator, pOperator) + { + if (pRow.type === "group") + { + var accumulator = pAccumulatorGeneratorFn(); + for (let i = 0, l = pRow.childs.length; i < l; i++) + { + accumulator = _reduce(pRow.childs[i], accumulator, pRow.operator); + } + if (pAccumulator === undefined || pAccumulator === null) + return accumulator; + return pMergeFn(pAccumulator, accumulator, pRow.operator); + } + else if (pRow.type === "row") + { + return pRowCallbackFn(pAccumulator, pRow, pOperator); + } + return undefined; + } +} + +/** + * Checks if the filter group is empty + * + * @return {Boolean} true if the filter is empty + */ +FilterConditionGroup.prototype.isEmpty = function () +{ + return this.childs.length === 0; +} + /** * object for filtering records * -- GitLab From 95b221d92c044942aa414a87e57a80650a8bf8d6 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 24 Nov 2020 11:45:09 +0100 Subject: [PATCH 104/184] Campaign_lib refactoring: SqlBuilder usage --- process/Campaign_lib/process.js | 96 ++++++++++++++++----------------- 1 file changed, 47 insertions(+), 49 deletions(-) diff --git a/process/Campaign_lib/process.js b/process/Campaign_lib/process.js index 7c893948d7f..6902d8c5c76 100644 --- a/process/Campaign_lib/process.js +++ b/process/Campaign_lib/process.js @@ -170,12 +170,16 @@ CampaignUtils.getCampaignStatusByCampaignId = function(pCampaignId) */ CampaignUtils.createLogEntry = function(pCampaignId, pCampaignStepId, pCampaignParticipantId, pPreviousCampaignStepId) { - let colsCampaignParticipantLog = CampaignUtils.getParticipantLogInsertColumnNames(); + var rowCount = new SqlBuilder().insertFields({ + "CAMPAIGN_ID": pCampaignId, + "CAMPAIGNSTEP_ID": pCampaignStepId, + "CAMPAIGNPARTICIPANT_ID": pCampaignParticipantId, + "USER_NEW": vars.get("$sys.user"), + "DATE_NEW": vars.get("$sys.date"), + "PREVIOUS_CAMPAIGNSTEP_ID": pPreviousCampaignStepId + }, "CAMPAIGNPARTICIPANTLOG", "CAMPAIGNPARTICIPANTLOGID"); - let valsCampaignParticipantLog = new Array(util.getNewUUID(), pCampaignId, pCampaignStepId, pCampaignParticipantId, vars.get("$sys.user"), vars.get("$sys.date"), pPreviousCampaignStepId); - - let rows = db.insertData("CAMPAIGNPARTICIPANTLOG", colsCampaignParticipantLog, null, valsCampaignParticipantLog); - return (rows == 1); + return rowCount > 0; } /** @@ -204,12 +208,11 @@ CampaignUtils.getParticipantLogInsertColumnNames = function() CampaignUtils.openSetCampaignStepViewByRowIds = function(pParticipantIds, pCampaignId, pCampaignStepId) { var params = { - "campaignParticipantsRowIds_param":pParticipantIds, - "currentCampaignId_param":pCampaignId, - "currentCampaignStepId_param":pCampaignStepId, - "isUpdate_param":true + "campaignParticipantsRowIds_param": pParticipantIds, + "currentCampaignId_param": pCampaignId, + "currentCampaignStepId_param": pCampaignStepId, + "isUpdate_param": true }; - neon.openContext("CampaignAddParticipants", "CampaignAddParticipantsEdit_view", null, neon.OPERATINGSTATE_VIEW, params); } @@ -226,12 +229,12 @@ CampaignUtils.openSetCampaignStepViewByRowIds = function(pParticipantIds, pCampa */ CampaignUtils.openSetCampaignStepViewByCondition = function(pCondition, pCampaignId, pCampaignStepId) { - var params = {}; - params["campaignParticipantsCondition_param"] = pCondition; - params["currentCampaignId_param"] = pCampaignId; - params["currentCampaignStepId_param"] = pCampaignStepId; - params["isUpdate_param"] = true; - + var params = { + "campaignParticipantsCondition_param": pCondition, + "currentCampaignId_param": pCampaignId, + "currentCampaignStepId_param": pCampaignStepId, + "isUpdate_param": true + }; neon.openContext("CampaignAddParticipants", "CampaignAddParticipantsEdit_view", null, neon.OPERATINGSTATE_VIEW, params); } @@ -244,11 +247,10 @@ CampaignUtils.openSetCampaignStepViewByCondition = function(pCondition, pCampaig */ CampaignUtils.openNewCampaignStepView = function(pCampaignId) { - var params = {}; - - params["campaignId_param"] = pCampaignId; - params["campaignSelectionVisible_param"] = true; - + var params = { + "campaignId_param": pCampaignId, + "campaignSelectionVisible_param": true + }; neon.openContext("CampaignStep", "CampaignStepEdit_view", null, neon.OPERATINGSTATE_NEW, params); } @@ -258,9 +260,7 @@ CampaignUtils.openNewCampaignStepView = function(pCampaignId) */ CampaignUtils.openNewCampaignView = function() { - var params = {}; - - neon.openContext("Campaign", "CampaignEdit_view", null, neon.OPERATINGSTATE_NEW, params); + neon.openContext("Campaign", "CampaignEdit_view", null, neon.OPERATINGSTATE_NEW, {}); } /** @@ -343,19 +343,19 @@ CampaignUtils.getMaxParticipantsValidationMessage = function() */ CampaignUtils.deleteCampaignStepData = function(pCampaignStepId) { - if(pCampaignStepId == null || pCampaignStepId == "") + if (!pCampaignStepId) return; - - let queries = []; newWhere("CAMPAIGNSTEP.PREDECESSORSTEP_ID", pCampaignStepId) - .updateData(true, ["PREDECESSORSTEP_ID"], null, [""]); + .updateFields({"PREDECESSORSTEP_ID": ""}); - queries.push(new Array("CAMPAIGNPARTICIPANTLOG", newWhere("CAMPAIGNPARTICIPANTLOG.CAMPAIGNSTEP_ID", pCampaignStepId).build())); - queries.push(new Array("CAMPAIGNPARTICIPANT", newWhere("CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID", pCampaignStepId).build())); - queries.push(new Array("CAMPAIGNCOST", newWhere("CAMPAIGNCOST.CAMPAIGNSTEP_ID", pCampaignStepId).build())); - queries.push(new Array("CAMPAIGNSTEP", newWhere("CAMPAIGNSTEP.CAMPAIGNSTEPID", pCampaignStepId).build())); - db.deletes(queries) + var deleteStatements = [ + newWhere("CAMPAIGNPARTICIPANTLOG.CAMPAIGNSTEP_ID", pCampaignStepId).buildDeleteStatement(), + newWhere("CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID", pCampaignStepId).buildDeleteStatement(), + newWhere("CAMPAIGNCOST.CAMPAIGNSTEP_ID", pCampaignStepId).buildDeleteStatement(), + newWhere("CAMPAIGNSTEP.CAMPAIGNSTEPID", pCampaignStepId).buildDeleteStatement() + ]; + db.deletes(deleteStatements); } /** @@ -372,24 +372,22 @@ CampaignUtils.deleteCampaignStepData = function(pCampaignStepId) */ CampaignUtils.deleteCampaignData = function(pCampaignId) { - if(pCampaignId == null || pCampaignId == "") + if (!pCampaignId) return; - let campaignStepIds = newSelect("CAMPAIGNSTEPID") + var campaignStepIds = newSelect("CAMPAIGNSTEPID") .from("CAMPAIGNSTEP") .where("CAMPAIGNSTEP.CAMPAIGN_ID", pCampaignId) .arrayColumn(); - campaignStepIds.forEach(function (campaignStepId) - { - CampaignUtils.deleteCampaignStepData(campaignStepId) - }); + campaignStepIds.forEach(CampaignUtils.deleteCampaignStepData); - let campaignRelated = []; - campaignRelated.push(new Array("CAMPAIGNCOST", newWhere("CAMPAIGNCOST.CAMPAIGN_ID", pCampaignId).build())); - campaignRelated.push(new Array("CAMPAIGN", newWhere("CAMPAIGN.CAMPAIGNID", pCampaignId).build())); + var campaignRelated = [ + newWhere("CAMPAIGNCOST.CAMPAIGN_ID", pCampaignId).buildDeleteStatement(), + newWhere("CAMPAIGN.CAMPAIGNID", pCampaignId).buildDeleteStatement() + ]; - db.deletes(campaignRelated) + db.deletes(campaignRelated); } /** @@ -404,14 +402,14 @@ CampaignUtils.deleteCampaignData = function(pCampaignId) */ CampaignUtils.updateCampaignStep = function(pCampaignStepId, pDateStart, pDateEnd) { - if(pCampaignStepId == null || pCampaignStepId == "") + if (!pCampaignStepId) return; - let columnsToUpdate = ["DATE_START", "DATE_END"]; - let newValues = [pDateStart, pDateEnd]; - let campaignStepIdCondition = newWhere("CAMPAIGNSTEP.CAMPAIGNSTEPID", pCampaignStepId); - - campaignStepIdCondition.updateData(true, "CAMPAIGNSTEP", columnsToUpdate, null, newValues); + newWhere("CAMPAIGNSTEP.CAMPAIGNSTEPID", pCampaignStepId) + .updateFields({ + "DATE_START": pDateStart, + "DATE_END": pDateEnd + }); } /** -- GitLab From baeb9ed4b09f41ca09d78c3ec745dbe1c4d4caf2 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 25 Nov 2020 14:43:33 +0100 Subject: [PATCH 105/184] JditoFilter_lib fix --- process/JditoFilter_lib/process.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/process/JditoFilter_lib/process.js b/process/JditoFilter_lib/process.js index d3bd0f9a436..e6e2ec67865 100644 --- a/process/JditoFilter_lib/process.js +++ b/process/JditoFilter_lib/process.js @@ -13,13 +13,15 @@ import("system.datetime"); */ function FilterConditionGroup (pGroup) { - if (pGroup.filter) + if (pGroup && "filter" in pGroup) pGroup = pGroup.filter; + var operator = pGroup ? pGroup.operator : "AND"; + var childs = pGroup ? pGroup.childs : []; this.type = "group"; - this.operator = pGroup.operator; - _removeEmptyGroups(pGroup.childs); - this.childs = pGroup.childs.map(function (child) + this.operator = operator; + _removeEmptyGroups(childs); + this.childs = childs.map(function (child) { if (child.type === "group") return new FilterConditionGroup(child); -- GitLab From 9d2f85ea524ee5f6f6a18c693eea88bbcb5adc28 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 25 Nov 2020 15:51:07 +0100 Subject: [PATCH 106/184] Workflow ServiceTasks for Campaigns --- .../documenttemplate_id/onValueChange.js | 2 +- .../entityfields/campaign_id/stateProcess.js | 6 +-- entity/SerialLetter_entity/onValidation.js | 12 +++++- .../CampaignStepPreview_view.aod | 11 +---- .../RemoveFromCampaign_workflowService.aod | 12 ++++++ .../process.js | 12 ++++++ .../serviceTaskParameterProcess.js | 23 ++++++++++ .../SetCampaignStep_workflowService.aod | 12 ++++++ .../process.js | 42 +++++++++++++++++++ .../serviceTaskParameterProcess.js | 40 ++++++++++++++++++ 10 files changed, 157 insertions(+), 15 deletions(-) create mode 100644 process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.aod create mode 100644 process/RemoveFromCampaign_workflowService/process.js create mode 100644 process/RemoveFromCampaign_workflowService/serviceTaskParameterProcess.js create mode 100644 process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.aod create mode 100644 process/SetCampaignStep_workflowService/process.js create mode 100644 process/SetCampaignStep_workflowService/serviceTaskParameterProcess.js diff --git a/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js b/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js index 5f100fbe60a..c581ed319d6 100644 --- a/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js +++ b/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js @@ -9,7 +9,7 @@ if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.re { // note: could not use only the valueProcess from $field.content because then it refreshed $field.content just before save. // --> only set in $field.content.valueProcess if $field.content is null and set it from here only if MASK triggered change - [content, type] = DocumentTemplateUtils.getTemplateContent(vars.get("$local.value"), new FileUpload(vars.get("$field.bindata"))); + var [content, type] = DocumentTemplateUtils.getTemplateContent(vars.get("$local.value"), new FileUpload(vars.get("$field.bindata"))); vars.set("$field.templateType", type); vars.set("$field.content", content); diff --git a/entity/CampaignStep_entity/entityfields/campaign_id/stateProcess.js b/entity/CampaignStep_entity/entityfields/campaign_id/stateProcess.js index fcfc9adff47..c53bfb5c9af 100644 --- a/entity/CampaignStep_entity/entityfields/campaign_id/stateProcess.js +++ b/entity/CampaignStep_entity/entityfields/campaign_id/stateProcess.js @@ -11,13 +11,13 @@ import("system.vars"); * This is specifically required for the campaign planning module as we want to create * new steps there regardless of the selection */ -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW || (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && (vars.exists("$param.campaignId_param") && vars.get("$param.campaignId_param") == "" || - vars.exists("$param.campaignSelectionVisible_param") && vars.get("$param.campaignSelectionVisible_param") == "true")) + vars.exists("$param.campaignSelectionVisible_param") && vars.get("$param.campaignSelectionVisible_param") == "true"))) { result.string(neon.COMPONENTSTATE_AUTO); } -else +else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) { result.string(neon.COMPONENTSTATE_INVISIBLE); } \ No newline at end of file diff --git a/entity/SerialLetter_entity/onValidation.js b/entity/SerialLetter_entity/onValidation.js index d0d694d8f85..f2f4506feaf 100644 --- a/entity/SerialLetter_entity/onValidation.js +++ b/entity/SerialLetter_entity/onValidation.js @@ -2,7 +2,15 @@ import("system.neon"); import("system.result"); import("system.vars"); import("DocumentTemplate_lib"); +import("Document_lib"); -[content, type] = DocumentTemplateUtils.getTemplateContent(vars.get("$field.DOCUMENTTEMPLATE_ID"), new FileUpload(vars.get("$field.bindata"))); -if (type != DocumentTemplate.types.ODT && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)) +var templateId = vars.get("$field.DOCUMENTTEMPLATE_ID"); +var upload = new FileUpload(vars.get("$field.bindata")); +var template; +if (upload.isFilled()) + template = DocumentTemplate.fromUpload(upload); +else if (templateId) + template = DocumentTemplateUtils.getTemplate(templateId); + +if (template && template.type != DocumentTemplate.types.ODT) result.string(DocumentTemplate.getSerialLetterODTOnlyMessage()); \ No newline at end of file diff --git a/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod b/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod index 51d4713e524..34fb03143ea 100644 --- a/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod +++ b/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod @@ -50,19 +50,12 @@ <name>f7ddecfb-60bc-4a94-8905-7da729b32acd</name> <entityField>STEPMEDIUM</entityField> </entityFieldLink> - </fields> - </genericViewTemplate> - <genericViewTemplate> - <name>CampaignId</name> - <editMode v="false" /> - <entityField>#ENTITY</entityField> - <fields> <entityFieldLink> - <name>cee78c4b-bbac-458a-ab1c-53734ea8c7f0</name> + <name>4056e92a-6c5c-4a24-b0f6-dc2a5aa798d4</name> <entityField>CAMPAIGN_ID</entityField> </entityFieldLink> <entityFieldLink> - <name>0bffa6f8-cb18-47f8-a8f4-08cf9d718114</name> + <name>32c55d58-72c7-4af0-9236-a019149656d4</name> <entityField>CampaignStatus</entityField> </entityFieldLink> </fields> diff --git a/process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.aod b/process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.aod new file mode 100644 index 00000000000..8dde3d1708e --- /dev/null +++ b/process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>RemoveFromCampaign_workflowService</name> + <title>Remove from Campaign</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/RemoveFromCampaign_workflowService/process.js</process> + <alias>Data_alias</alias> + <serviceTaskParameterProcess>%aditoprj%/process/RemoveFromCampaign_workflowService/serviceTaskParameterProcess.js</serviceTaskParameterProcess> + <variants> + <element>WORKFLOW</element> + </variants> +</process> diff --git a/process/RemoveFromCampaign_workflowService/process.js b/process/RemoveFromCampaign_workflowService/process.js new file mode 100644 index 00000000000..c7552ccfed5 --- /dev/null +++ b/process/RemoveFromCampaign_workflowService/process.js @@ -0,0 +1,12 @@ +import("system.util"); +import("Sql_lib"); +import("system.vars"); + +var variables = JSON.parse(vars.get("$local.value")); + +var contactId = variables.contactId || variables.targetId; +var campaignId = variables.campaignId; + +newWhere("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", campaignId) + .and("CAMPAIGNPARTICIPANT.CONTACT_ID", contactId) + .deleteData(); \ No newline at end of file diff --git a/process/RemoveFromCampaign_workflowService/serviceTaskParameterProcess.js b/process/RemoveFromCampaign_workflowService/serviceTaskParameterProcess.js new file mode 100644 index 00000000000..cc949e7c105 --- /dev/null +++ b/process/RemoveFromCampaign_workflowService/serviceTaskParameterProcess.js @@ -0,0 +1,23 @@ +import("system.result"); +import("system.vars"); +import("Sql_lib"); +import("Workflow_lib"); + +var currentValues = JSON.parse(vars.get("$local.value")); + +var campaigns = newSelect(["CAMPAIGNID", "NAME"]) + .from("CAMPAIGN") + .table() + .map(function ([id, name]) + { + return { + id: id, + name: name + }; + }); + +var parameters = [ + new WorkflowServiceTaskParameter("campaignId", "Campaign", WorkflowServiceTaskParameter.ENUM(), campaigns) +]; + +result.object(parameters); \ No newline at end of file diff --git a/process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.aod b/process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.aod new file mode 100644 index 00000000000..708612a5a1a --- /dev/null +++ b/process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>SetCampaignStep_workflowService</name> + <title>Set Campaign Step</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/SetCampaignStep_workflowService/process.js</process> + <alias>Data_alias</alias> + <serviceTaskParameterProcess>%aditoprj%/process/SetCampaignStep_workflowService/serviceTaskParameterProcess.js</serviceTaskParameterProcess> + <variants> + <element>WORKFLOW</element> + </variants> +</process> diff --git a/process/SetCampaignStep_workflowService/process.js b/process/SetCampaignStep_workflowService/process.js new file mode 100644 index 00000000000..75067927861 --- /dev/null +++ b/process/SetCampaignStep_workflowService/process.js @@ -0,0 +1,42 @@ +import("system.util"); +import("Campaign_lib"); +import("Sql_lib"); +import("system.vars"); + +var variables = JSON.parse(vars.get("$local.value")); + +var contactId = variables.contactId || variables.targetId; +var campaignId = variables.campaignId; +var campaignStepId = variables.campaignStepId; + +var campaignStepQuery = newSelect(["CAMPAIGNPARTICIPANTID", "CAMPAIGNSTEP_ID"]) + .from("CAMPAIGNPARTICIPANT") + .where("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", campaignId) + .and("CAMPAIGNPARTICIPANT.CONTACT_ID", contactId); + +var [participantId, currentCampaignStep] = campaignStepQuery.arrayRow(); + +if (currentCampaignStep != campaignStepId) +{ + if (!currentCampaignStep) + { + participantId = util.getNewUUID(); + new SqlBuilder.insertFields({ + "CAMPAIGNPARTICIPANTID": participantId, + "CAMPAIGNSTEP_ID": campaignStepId, + "CAMPAIGN_ID": campaignId, + "CONTACT_ID": contactId, + "DATE_NEW": vars.get("$sys.date"), + "USER_NEW": vars.get("$sys.user") + }, "CAMPAIGNPARTICIPANT"); + } + else + { + campaignStepQuery.updateFields({ + "CAMPAIGNSTEP_ID": campaignStepId, + "DATE_EDIT": vars.get("$sys.date"), + "USER_EDIT": vars.get("$sys.user") + }); + } + CampaignUtils.createLogEntry(campaignId, campaignStepId, participantId, currentCampaignStep); +} \ No newline at end of file diff --git a/process/SetCampaignStep_workflowService/serviceTaskParameterProcess.js b/process/SetCampaignStep_workflowService/serviceTaskParameterProcess.js new file mode 100644 index 00000000000..5978f70ed26 --- /dev/null +++ b/process/SetCampaignStep_workflowService/serviceTaskParameterProcess.js @@ -0,0 +1,40 @@ +import("system.result"); +import("system.vars"); +import("Sql_lib"); +import("Workflow_lib"); + +var currentValues = JSON.parse(vars.get("$local.value")); + +var campaigns = newSelect(["CAMPAIGNID", "NAME"]) + .from("CAMPAIGN") + .table() + .map(function ([id, name]) + { + return { + id: id, + name: name + }; + }); + +var parameters = [ + new WorkflowServiceTaskParameter("campaignId", "Campaign", WorkflowServiceTaskParameter.ENUM(), campaigns, true) +]; + +var campaignId = currentValues.campaignId && currentValues.campaignId.value; +if (campaignId) +{ + var campaignSteps = newSelect(["CAMPAIGNSTEPID", "NAME"]) + .from("CAMPAIGNSTEP") + .where("CAMPAIGNSTEP.CAMPAIGN_ID", campaignId) + .table() + .map(function ([id, name]) + { + return { + id: id, + name: name + }; + }); + parameters.push(new WorkflowServiceTaskParameter("campaignStepId", "Campaign Step", WorkflowServiceTaskParameter.ENUM(), campaignSteps)); +} + +result.object(parameters); \ No newline at end of file -- GitLab From bf219d62e9afe7db5dc8dd33b94781e86f5ebb95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20V=C3=B6gl?= <a.voegl@adito.de> Date: Thu, 26 Nov 2020 09:37:42 +0000 Subject: [PATCH 107/184] 2020.2 Preset Email for writing Emails --- .../entityfields/recipient/displayValueProcess.js | 14 +++++++++++--- .../entityfields/recipient/valueProcess.js | 14 ++++++-------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/entity/Email_entity/entityfields/recipient/displayValueProcess.js b/entity/Email_entity/entityfields/recipient/displayValueProcess.js index 8e2f689eb15..ee4d3155ec9 100644 --- a/entity/Email_entity/entityfields/recipient/displayValueProcess.js +++ b/entity/Email_entity/entityfields/recipient/displayValueProcess.js @@ -1,6 +1,14 @@ +import("Communication_lib"); import("system.result"); -import("system.neon"); import("system.vars"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.get("$field.RECIPIENT")); \ No newline at end of file +if(vars.get("$field.RECIPIENT")) +{ + var res = ""; + if (vars.exists("$param.Recipient_param") && vars.get("$param.Recipient_param")) + res = vars.get("$param.Recipient_param"); + else if (vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param")) + res = CommUtil.getStandardMail(vars.get("$param.ContactId_param")); + + result.string(res); +} \ No newline at end of file diff --git a/entity/Email_entity/entityfields/recipient/valueProcess.js b/entity/Email_entity/entityfields/recipient/valueProcess.js index 0b715605584..13f68a3ed37 100644 --- a/entity/Email_entity/entityfields/recipient/valueProcess.js +++ b/entity/Email_entity/entityfields/recipient/valueProcess.js @@ -1,16 +1,14 @@ import("Communication_lib"); import("system.result"); -import("system.neon"); import("system.vars"); if (vars.get("$this.value") == null) { + var res = ""; if (vars.exists("$param.Recipient_param") && vars.get("$param.Recipient_param")) - result.string(vars.get("$param.Recipient_param")); + res = vars.get("$param.Recipient_param"); else if (vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param")) - result.string(CommUtil.getStandardMail(vars.get("$param.ContactId_param"))); -} -else if (!vars.get("$this.value").includes("@") && vars.get("$this.value") != "") - result.string(newSelect("ADDR") - .from("COMMUNICATION") - .where("COMMUNICATION.COMMUNICATIONID", vars.get("$this.value")).cell()); \ No newline at end of file + res = CommUtil.getStandardMail(vars.get("$param.ContactId_param")); + + result.string(res); +} \ No newline at end of file -- GitLab From 2510dd7b2f2e68399a525832f5ed2fb91cb5659f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20V=C3=B6gl?= <a.voegl@adito.de> Date: Thu, 26 Nov 2020 10:40:03 +0000 Subject: [PATCH 108/184] #1068341 group Salesprojects by attributes --- .../attribute_filter/groupQueryProcess.js | 1 - entity/Salesproject_entity/Salesproject_entity.aod | 2 ++ .../attribute_filter/groupQueryProcess.js | 10 ++++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js index 1bd2d352867..03fd2fb9213 100644 --- a/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.result"); import("AttributeFilter_lib"); diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index f497a51be79..26c7f691c11 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -951,6 +951,8 @@ <filterFieldsProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js</filterFieldsProcess> <filterValuesProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js</filterValuesProcess> <filterConditionProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess> + <isGroupable v="true" /> + <groupQueryProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js</groupQueryProcess> <filtertype>BASIC</filtertype> </filterExtensionSet> <filterExtensionSet> diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js new file mode 100644 index 00000000000..2db6219c715 --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js @@ -0,0 +1,10 @@ +import("system.result"); +import("AttributeFilter_lib"); + +var sqlCond = AttributeFilterExtensionMaker.makeFilterGroupQuery("SALESPROJECT \n\ + left join CONTACT on (SALESPROJECT.CONTACT_ID = CONTACT.CONTACTID) \n\ + left join ORGANISATION on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID)\n\ + left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID)\n\ + left join MST_TEAMLINK on (SALESPROJECT.SALESPROJECTID = MST_TEAMLINK.OBJECT_ROWID and MST_TEAMLINK.OBJECT_TYPE = 'Salesproject')\n\ + left join MST_TEAM on (MST_TEAM.MST_TEAMID = MST_TEAMLINK.MST_TEAM_ID)"); +result.string(sqlCond); \ No newline at end of file -- GitLab From 2f0277aead6d98b0124f1a3ea2b62f87142d64a8 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 26 Nov 2020 11:54:08 +0100 Subject: [PATCH 109/184] db.getColumnTypes usages removed --- .../children/dispatchofferreport/onActionProcess.js | 2 +- .../children/dispatchorderreport/onActionProcess.js | 2 +- process/Classification_lib/process.js | 3 +-- process/KnowledgeManagement_lib/process.js | 3 +-- process/Loghistory_lib/process.js | 3 +-- 5 files changed, 5 insertions(+), 8 deletions(-) diff --git a/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js b/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js index 0f003f4454e..82065987492 100644 --- a/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js +++ b/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js @@ -11,7 +11,7 @@ import("MimeType_lib"); var offerReport = {} var attachmentArray = []; -var updateStatements = [["OFFER", ["STATUS"], db.getColumnTypes("OFFER", ["STATUS"]), [$KeywordRegistry.offerStatus$sent()], newWhere("OFFER.OFFERID", vars.get("$field.OFFERID")).build()]]; +var updateStatements = [["OFFER", ["STATUS"], null, [$KeywordRegistry.offerStatus$sent()], newWhere("OFFER.OFFERID", vars.get("$field.OFFERID")).build()]]; var notificationMsg = translate.text("The status of the offer was changed to \"sent\"."); var contactId = vars.get("$field.CONTACT_ID"); var arrayReport = OfferUtils.buildOfferReport(vars.get("$field.OFFERID")); diff --git a/entity/Order_entity/entityfields/orderreportdispatch/children/dispatchorderreport/onActionProcess.js b/entity/Order_entity/entityfields/orderreportdispatch/children/dispatchorderreport/onActionProcess.js index 44cf00055ad..53225e7adf9 100644 --- a/entity/Order_entity/entityfields/orderreportdispatch/children/dispatchorderreport/onActionProcess.js +++ b/entity/Order_entity/entityfields/orderreportdispatch/children/dispatchorderreport/onActionProcess.js @@ -8,7 +8,7 @@ import("Sql_lib"); var orderReport = {}; var attachmentArray = []; -var updateStatements = [["SALESORDER", ["ORDERSTATUS"], db.getColumnTypes("SALESORDER", ["ORDERSTATUS"]), ["1"], newWhere("SALESORDER.SALESORDERID", vars.get("$field.SALESORDERID")).build()]]; +var updateStatements = [["SALESORDER", ["ORDERSTATUS"], null, ["1"], newWhere("SALESORDER.SALESORDERID", vars.get("$field.SALESORDERID")).build()]]; var notificationMsg = translate.text("The status of the order was changed to \"sent\"."); var contactId = vars.get("$field.CONTACT_ID"); var orgContactId = vars.get("$field.CONTACT_ORG_ID"); diff --git a/process/Classification_lib/process.js b/process/Classification_lib/process.js index 756e30fa538..b0a5a683000 100644 --- a/process/Classification_lib/process.js +++ b/process/Classification_lib/process.js @@ -369,7 +369,6 @@ ClassificationUtils.insertEmptyClassification = function(pUids, pObjectType) "OBJECT_ROWID", "OBJECT_TYPE" ]; - var types = db.getColumnTypes("CLASSIFICATIONSTORAGE", columns);//load once for better performance var inserts = []; var values; for (var i = 0; i < pUids.length; i++) @@ -378,7 +377,7 @@ ClassificationUtils.insertEmptyClassification = function(pUids, pObjectType) classificationvalue, pUids[i], pObjectType]; - inserts.push(["CLASSIFICATIONSTORAGE", columns, types, values]); + inserts.push(["CLASSIFICATIONSTORAGE", columns, null, values]); } db.inserts(inserts); } diff --git a/process/KnowledgeManagement_lib/process.js b/process/KnowledgeManagement_lib/process.js index 5bbe53c0a84..6abec985abd 100644 --- a/process/KnowledgeManagement_lib/process.js +++ b/process/KnowledgeManagement_lib/process.js @@ -410,11 +410,10 @@ KnowledgeManagementTagsController.prototype.editTag = function(pIdValue, pRowDat function _update(pId, pData) { var fields = ["KNOWLEDGETAG_ID", "USER_EDIT", "DATE_EDIT"]; - var dataTypes = db.getColumnTypes("KNOWLEDGETAGLINK", fields); var values = [pData["TAG.value"], vars.get("$sys.user"), datetime.date()]; var cond = newWhere("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID", pId).toString(); - db.updateData("KNOWLEDGETAGLINK", fields, dataTypes, values, cond); + db.updateData("KNOWLEDGETAGLINK", fields, null, values, cond); } /** * private function for checking, if an old tag is used anywhere else. If it's not used anymore, it gets deleted diff --git a/process/Loghistory_lib/process.js b/process/Loghistory_lib/process.js index 00ee5d28afd..c3cc279cd0c 100644 --- a/process/Loghistory_lib/process.js +++ b/process/Loghistory_lib/process.js @@ -252,11 +252,10 @@ LogHistoryExecutor.prototype._addEntryForInsert = function (pTablename, pTablena statements: [] ,cols: ["LOGTYPE","TABLENAME","TABLENAMEID","DESCRIPTION", "SOURCE_TABLENAME", "SOURCE_TABLENAMEID", "DATE_NEW","USER_NEW", "AB_LOGHISTORYID"] }; - this.toInsert.types = db.getColumnTypes("AB_LOGHISTORY", this.toInsert.cols);//load only once for better performance } var vals = [this.sqlAction, pTablename, pTablenameId, pDescription, pSourceTablename, pSourceTablenameId, this.timestamp, this.triggeringUser, util.getNewUUID()]; - this.toInsert.statements.push(["AB_LOGHISTORY", this.toInsert.cols, this.toInsert.types, vals]); + this.toInsert.statements.push(["AB_LOGHISTORY", this.toInsert.cols, null, vals]); }; /* -- GitLab From abe6f4fde858292c0bc5eb919a723c7c7f44426c Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 26 Nov 2020 14:38:48 +0100 Subject: [PATCH 110/184] Scan Service fixes --- entity/Activity_entity/Activity_entity.aod | 1 + .../createnewchatactivity/onActionProcess.js | 6 -- .../createnewchatactivity/stateProcess.js | 23 ------- .../AttributeRelation_entity.aod | 69 ++++++++++--------- .../AuditLogHistory_entity.aod | 3 +- .../KnowledgeDiscussion_entity.aod | 2 +- .../KnowledgeManagementTags_entity.aod | 12 ---- .../KnowledgeManagement_entity.aod | 1 - .../children/isdashlet_param/valueProcess.js | 3 - entity/MSTTeam_entity/MSTTeam_entity.aod | 1 + .../MSTeamsActivityImport_entity.aod | 1 - .../importmessages/onActionProcess.js | 0 .../MSTeamsMessage_entity.aod | 7 +- .../loadnext_param/documentation.adoc | 3 - .../addrecordaction/onActionProcess.js | 7 -- .../SingleObject_entity.aod | 2 - .../VisitPlanEmployeeWeek_entity.aod | 14 ++-- .../_____LANGUAGE_EXTRA.aod | 6 -- .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 6 -- .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 6 -- neonContext/MSTTeamMember/MSTTeamMember.aod | 5 -- neonDashboard/Home/Home.aod | 10 +-- .../Vertriebsdashboard/Vertriebsdashboard.aod | 12 ++-- .../AnyObjectRelationTree_view0.aod | 19 ----- .../KnowledgeLinkMultiEdit_view.aod | 2 +- .../KnowledgeManagementDetails_view.aod | 2 +- .../KnowledgeManagementLookup_view.aod | 4 -- .../MSTTeamMemberEdit_view.aod | 36 ---------- .../MSTeamsDocumentEdit_view.aod | 2 +- 29 files changed, 61 insertions(+), 204 deletions(-) delete mode 100644 entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/onActionProcess.js delete mode 100644 entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/stateProcess.js delete mode 100644 entity/KnowledgeNewsFeed_entity/entityfields/consumer/children/isdashlet_param/valueProcess.js delete mode 100644 entity/MSTeamsActivityImport_entity/entityfields/importmessages/onActionProcess.js delete mode 100644 entity/MSTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc delete mode 100644 entity/Person_entity/entityfields/testgroup/children/addrecordaction/onActionProcess.js delete mode 100644 neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod delete mode 100644 neonView/MSTTeamMemberEdit_view/MSTTeamMemberEdit_view.aod diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index fae8253b6fe..ddb1971da5f 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -157,6 +157,7 @@ <title>Date (Month)</title> <contentType>TEXT</contentType> <groupable v="true" /> + <displayValueProcess>%aditoprj%/entity/Activity_entity/entityfields/entrymonth/displayValueProcess.js</displayValueProcess> <onValueChangeTypes> <element>MASK</element> <element>PROCESS</element> diff --git a/entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/onActionProcess.js b/entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/onActionProcess.js deleted file mode 100644 index 6840e66a0bf..00000000000 --- a/entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/onActionProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.neon"); - -neon.openContext("MSTTeamChat", null, null, neon.OPERATINGSTATE_NEW, { - "ROWID_param" : vars.get("$param.RowId_param") -}); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/stateProcess.js b/entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/stateProcess.js deleted file mode 100644 index 0b93d5c410b..00000000000 --- a/entity/Activity_entity/entityfields/msteams/children/createnewchatactivity/stateProcess.js +++ /dev/null @@ -1,23 +0,0 @@ -import("system.vars"); -import("system.neon"); -import("system.result"); -import("Sql_lib"); - -var teamId = newSelect("MST_TEAMID") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", vars.get("$param.RowId_param")) - .cell(); - -var isArchived = newSelect("IS_ARCHIVED") - .from("MST_TEAM") - .where("MST_TEAM.OBJECT_ROWID", vars.get("$param.RowId_param")) - .cell(); - -if (teamId == "" || isArchived == 1) -{ - result.string(neon.COMPONENTSTATE_INVISIBLE); -} -else -{ - result.string(neon.COMPONENTSTATE_EDITABLE); -} \ No newline at end of file diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod index 4e5c98f9dec..6a92d5391d8 100644 --- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod +++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod @@ -34,6 +34,13 @@ <entityProvider> <name>TreeProvider</name> <documentation>%aditoprj%/entity/AttributeRelation_entity/entityfields/treeprovider/documentation.adoc</documentation> + <children> + <entityParameter> + <name>GetTree_param</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/treeprovider/children/gettree_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>e0a7a4bc-ec7f-4f09-9b94-cbeb328cd7b8</name> @@ -96,13 +103,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>GetTree_param</name> - <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/treeprovider/children/gettree_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>AB_ATTRIBUTE_ID</name> @@ -132,11 +132,6 @@ </entityField> <entityConsumer> <name>SpecificAttribute</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -155,6 +150,11 @@ <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/specificattribute/children/themeobjectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>GetTree_param</name> @@ -165,6 +165,12 @@ <entityProvider> <name>AttributeRelations</name> <documentation>%aditoprj%/entity/AttributeRelation_entity/entityfields/attributerelations/documentation.adoc</documentation> + <children> + <entityParameter> + <name>GetTree_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>69560cc2-d92a-453c-9e64-fb712a538c4f</name> @@ -239,12 +245,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>GetTree_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>DATE_EDIT</name> @@ -312,11 +312,6 @@ </entityField> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>ObjectProxy_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> <name>Entity_param</name> @@ -327,6 +322,11 @@ <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/objects/children/filter_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ObjectProxy_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> </entityConsumer> <entityField> <name>DROPDOWNDEFINITION</name> @@ -341,6 +341,7 @@ </entityProvider> <entityField> <name>AB_ATTRIBUTERELATIONID</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js</valueProcess> </entityField> <entityProvider> <name>#PROVIDER_AGGREGATES</name> @@ -348,11 +349,6 @@ </entityProvider> <entityConsumer> <name>SpecificFilterAttributes</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificFilterAttributes</fieldName> - </dependency> <children> <entityParameter> <name>AttributeCount_param</name> @@ -363,9 +359,20 @@ <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/specificfilterattributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificFilterAttributes</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>FilterProvider</name> + <children> + <entityParameter> + <name>DisplaySimpleName_param</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/filterprovider/children/displaysimplename_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependencies> <entityDependency> <name>0560c6d0-8473-4050-9ca1-a935bbac2ef9</name> @@ -374,12 +381,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>DisplaySimpleName_param</name> - <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/filterprovider/children/displaysimplename_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityProvider> </entityFields> <recordContainers> diff --git a/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod b/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod index 88d93c5023f..26336d2da24 100644 --- a/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod +++ b/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod @@ -7,7 +7,6 @@ <grantCreate v="false" /> <grantUpdate v="false" /> <grantDelete v="true" /> - <grantDeleteProcess>%aditoprj%/entity/AuditLogHistory_entity/grantDeleteProcess.js</grantDeleteProcess> <initFilterProcess>%aditoprj%/entity/AuditLogHistory_entity/initFilterProcess.js</initFilterProcess> <titlePlural>Audit Logs</titlePlural> <recordContainer>db</recordContainer> @@ -132,7 +131,7 @@ <filterExtensions> <filterExtension> <name>contextFilter</name> - <title>Kontext</title> + <title>Context</title> <contentType>TEXT</contentType> <filterValuesProcess>%aditoprj%/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterValuesProcess.js</filterValuesProcess> <filterConditionProcess>%aditoprj%/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterConditionProcess.js</filterConditionProcess> diff --git a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod index a5465f6d0a9..0b70f5dfc1e 100644 --- a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod +++ b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod @@ -94,7 +94,7 @@ </entityParameter> <entityActionGroup> <name>Edit_ActionGroup</name> - <title>Bearbeiten</title> + <title>Edit</title> <children> <entityActionField> <name>addAnswer_action</name> diff --git a/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod index 552ce5d4c60..10b75658ad1 100644 --- a/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod +++ b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod @@ -47,18 +47,6 @@ <fieldName>CompleteList</fieldName> </dependency> </entityConsumer> - <entityActionField> - <name>ActionField1</name> - <title>a1</title> - </entityActionField> - <entityActionField> - <name>ActionField2</name> - <title>a2</title> - </entityActionField> - <entityActionField> - <name>ActionField3</name> - <title>a3</title> - </entityActionField> <entityProvider> <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> diff --git a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod index c65093499e8..f52fc433f41 100644 --- a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod +++ b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod @@ -20,7 +20,6 @@ <entityDependency> <name>40cf66ca-421f-47f6-8ecc-8360657e0640</name> <entityName>KnowledgeNewsFeed_entity</entityName> - <fieldName>Consumer</fieldName> <isConsumer v="false" /> </entityDependency> </dependencies> diff --git a/entity/KnowledgeNewsFeed_entity/entityfields/consumer/children/isdashlet_param/valueProcess.js b/entity/KnowledgeNewsFeed_entity/entityfields/consumer/children/isdashlet_param/valueProcess.js deleted file mode 100644 index 40effa01784..00000000000 --- a/entity/KnowledgeNewsFeed_entity/entityfields/consumer/children/isdashlet_param/valueProcess.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string(true); \ No newline at end of file diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod index d062fa0ba01..f7675657fed 100644 --- a/entity/MSTTeam_entity/MSTTeam_entity.aod +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -26,6 +26,7 @@ <name>DESCRIPTION</name> <title>Description</title> <contentType>LONG_TEXT</contentType> + <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/description/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/description/valueProcess.js</valueProcess> </entityField> <entityParameter> diff --git a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod index fb158db38da..2f279cf23fb 100644 --- a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod +++ b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod @@ -80,7 +80,6 @@ </entityProvider> <entityActionField> <name>importMessages</name> - <onActionProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/importmessages/onActionProcess.js</onActionProcess> </entityActionField> </entityFields> <recordContainers> diff --git a/entity/MSTeamsActivityImport_entity/entityfields/importmessages/onActionProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/importmessages/onActionProcess.js deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod index 63a08366e65..c8c2fea856f 100644 --- a/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod +++ b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod @@ -14,11 +14,11 @@ </entityField> <entityField> <name>MESSAGE</name> - <title>Nachricht</title> + <title>Message</title> </entityField> <entityField> <name>CREATED_DATE_TIME</name> - <title>Erstelldatum</title> + <title>Creation date</title> <contentType>DATE</contentType> </entityField> <entityProvider> @@ -54,7 +54,6 @@ <entityParameter> <name>LoadNext_param</name> <expose v="true" /> - <documentation>%aditoprj%/entity/MSTTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc</documentation> </entityParameter> <entityProvider> <name>#PROVIDER_AGGREGATES</name> @@ -66,7 +65,7 @@ <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> <contentProcess>%aditoprj%/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <title>Nachrichten</title> + <title>Messages</title> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> diff --git a/entity/MSTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc b/entity/MSTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc deleted file mode 100644 index c5debf74124..00000000000 --- a/entity/MSTeamsMessage_entity/entityfields/loadnext_param/documentation.adoc +++ /dev/null @@ -1,3 +0,0 @@ -= LoadNext_param - -A random UID to trigger a refresh \ No newline at end of file diff --git a/entity/Person_entity/entityfields/testgroup/children/addrecordaction/onActionProcess.js b/entity/Person_entity/entityfields/testgroup/children/addrecordaction/onActionProcess.js deleted file mode 100644 index 2161e0ef8cc..00000000000 --- a/entity/Person_entity/entityfields/testgroup/children/addrecordaction/onActionProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.neon"); - -var test = { - "AddressSearch" : "response.address" - }; - -neon.addRecord("Documents", test) \ No newline at end of file diff --git a/entity/SingleObject_entity/SingleObject_entity.aod b/entity/SingleObject_entity/SingleObject_entity.aod index a810e79749d..b2d528450e4 100644 --- a/entity/SingleObject_entity/SingleObject_entity.aod +++ b/entity/SingleObject_entity/SingleObject_entity.aod @@ -9,11 +9,9 @@ </entityProvider> <entityField> <name>TARGET_CONTEXT</name> - <valueProcess>%aditoprj%/entity/SingleObject_entity/entityfields/target_context/valueProcess.js</valueProcess> </entityField> <entityField> <name>UID</name> - <valueProcess>%aditoprj%/entity/SingleObject_entity/entityfields/uid/valueProcess.js</valueProcess> </entityField> <entityParameter> <name>TargetContext_param</name> diff --git a/entity/VisitPlanEmployeeWeek_entity/VisitPlanEmployeeWeek_entity.aod b/entity/VisitPlanEmployeeWeek_entity/VisitPlanEmployeeWeek_entity.aod index 63130c5f63d..d7e664a2369 100644 --- a/entity/VisitPlanEmployeeWeek_entity/VisitPlanEmployeeWeek_entity.aod +++ b/entity/VisitPlanEmployeeWeek_entity/VisitPlanEmployeeWeek_entity.aod @@ -82,11 +82,6 @@ </entityConsumer> <entityConsumer> <name>Entries</name> - <dependency> - <name>dependency</name> - <entityName>VisitPlanEntry_entity</entityName> - <fieldName>Entries</fieldName> - </dependency> <children> <entityParameter> <name>Entries_param</name> @@ -94,6 +89,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>VisitPlanEntry_entity</entityName> + <fieldName>Entries</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> @@ -136,10 +136,6 @@ <name>CONTACT_ID.value</name> <recordfield>VISITPLANEMPLOYEEWEEK.CONTACT_ID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CONTACT_ID.displayValue</name> - <expression>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/recordcontainers/db/recordfieldmappings/person_id.displayvalue/expression.js</expression> - </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index b64642c4016..38af80580f7 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -4971,18 +4971,12 @@ <entry> <key>Has sales approved this step?</key> </entry> - <entry> - <key>"</key> - </entry> <entry> <key>Import Date</key> </entry> <entry> <key>Import Data</key> </entry> - <entry> - <key>;</key> - </entry> <entry> <key>Standard mail</key> </entry> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index b6705c747b8..c4575135d2e 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -7893,12 +7893,6 @@ Bitte Datumseingabe prüfen</value> <key>Show only own</key> <value>Nur Eigene anzeigen</value> </entry> - <entry> - <key>"</key> - </entry> - <entry> - <key>;</key> - </entry> <entry> <key>My Workflow Tasks</key> <value>Meine Workflow Aufgaben</value> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 3580ad96f19..e7cf1824f14 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -5048,18 +5048,12 @@ <entry> <key>Has sales approved this step?</key> </entry> - <entry> - <key>"</key> - </entry> <entry> <key>Import Date</key> </entry> <entry> <key>Import Data</key> </entry> - <entry> - <key>;</key> - </entry> <entry> <key>Standard mail</key> </entry> diff --git a/neonContext/MSTTeamMember/MSTTeamMember.aod b/neonContext/MSTTeamMember/MSTTeamMember.aod index 66b94ef39e0..bfb06f7c7f5 100644 --- a/neonContext/MSTTeamMember/MSTTeamMember.aod +++ b/neonContext/MSTTeamMember/MSTTeamMember.aod @@ -2,13 +2,8 @@ <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>MSTTeamMember</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <editView>MSTTeamMemberEdit_view</editView> <entity>MSTTeamMember_entity</entity> <references> - <neonViewReference> - <name>5e760ac4-fea0-4283-a0bf-d6d5f0f1c003</name> - <view>MSTTeamMemberEdit_view</view> - </neonViewReference> <neonViewReference> <name>61588d12-3c0d-4181-93ae-90d7ad50ed6b</name> <view>MSTTeamMemberMultiEdit_view</view> diff --git a/neonDashboard/Home/Home.aod b/neonDashboard/Home/Home.aod index 1c0ccc5e306..dc01fbf1ec3 100644 --- a/neonDashboard/Home/Home.aod +++ b/neonDashboard/Home/Home.aod @@ -8,7 +8,7 @@ <editRoles /> <defaultDashlets> <neonDashlet> - <name>Dashlet2</name> + <name>AllContactsDashlet</name> <viewName>PersonFilter_view</viewName> <configName>AllContactsDashlet</configName> <uiConfiguration> @@ -20,7 +20,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet3</name> + <name>AditoTwitterDashlet</name> <viewName>TwitterTimeline_view</viewName> <configName>AditoTwitterDashlet</configName> <uiConfiguration> @@ -32,7 +32,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet</name> + <name>MytasksDashlet</name> <viewName>TaskFilter_view</viewName> <configName>mytasks</configName> <uiConfiguration> @@ -44,7 +44,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet4</name> + <name>InformationDashlet</name> <viewName>MyDashboardScoreCard_view</viewName> <configName>Information</configName> <uiConfiguration> @@ -56,7 +56,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet5</name> + <name>NotificationDashlet</name> <viewName>NotificationFilter_view</viewName> <configName>NotificationDashletConfiguration</configName> <uiConfiguration> diff --git a/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod b/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod index 870d8ef2f23..b6750436bad 100644 --- a/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod +++ b/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod @@ -11,7 +11,7 @@ </editRoles> <defaultDashlets> <neonDashlet> - <name>Dashlet</name> + <name>KeyFiguresDashlet</name> <viewName>SalesprojectScoreCard_view</viewName> <configName>KeyFigures</configName> <uiConfiguration> @@ -23,7 +23,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet4</name> + <name>AllOrgsDashlet</name> <viewName>OrganisationFilter_view</viewName> <configName>AllOrgsDashlet</configName> <uiConfiguration> @@ -35,7 +35,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet2</name> + <name>OpenSalesprojectsDashlet</name> <viewName>SalesprojectFilter_view</viewName> <configName>OpenSalesprojectsDashlet</configName> <uiConfiguration> @@ -47,7 +47,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet3</name> + <name>SalesprojectPhasesDashlet</name> <viewName>SalesprojectAnalyses_view</viewName> <configName>SalesprojectPhases</configName> <uiConfiguration> @@ -59,7 +59,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet6</name> + <name>ConvertionRatesDashlet</name> <viewName>SalesprojectConversionRate_view</viewName> <configName>ConvertionRates</configName> <uiConfiguration> @@ -71,7 +71,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet7</name> + <name>AnalysesChartDashlet</name> <viewName>ActivityAnalyses_view</viewName> <configName>analysesChart</configName> <uiConfiguration> diff --git a/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod b/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod deleted file mode 100644 index 83a01661633..00000000000 --- a/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> - <name>AnyObjectRelationTree_view0</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <treeViewTemplate> - <name>AnyObjectRelations</name> - <parentField>AnyObjectType</parentField> - <titleField>AnyObjectRowid</titleField> - <entityField>#ENTITY</entityField> - <title></title> - </treeViewTemplate> - </children> -</neonView> diff --git a/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod b/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod index 0b3448b225c..e695b7e4627 100644 --- a/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod +++ b/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod @@ -13,7 +13,7 @@ <genericMultipleViewTemplate> <name>MultiEdit</name> <entityField>#ENTITY</entityField> - <title>Verknüpfungen</title> + <title>Links</title> <columns> <neonGenericMultipleTableColumn> <name>eb1bc3cb-3cf0-479c-901f-906a7ddde485</name> diff --git a/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod b/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod index 43c26e82585..1e1a3fa2b9e 100644 --- a/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod +++ b/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod @@ -22,7 +22,7 @@ <objectType>KNOWLEDGEMANAGEMENT_OBJECTTYPE</objectType> <rowId>#UID</rowId> <entityField>#ENTITY</entityField> - <title>Favoriten</title> + <title>Favorites</title> </favoriteViewTemplate> <genericViewTemplate> <name>Details</name> diff --git a/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod b/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod index 8b9981d87da..163964460fb 100644 --- a/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod +++ b/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod @@ -16,10 +16,6 @@ <name>5a7ab4ba-48a5-47bf-95e9-5631938af5b2</name> <entityField>#IMAGE</entityField> </neonTableColumn> - <neonTableColumn> - <name>b715bc0e-a6b7-478d-9aaf-9bc212812650</name> - <entityField>ViewKnowledgeNumber</entityField> - </neonTableColumn> <neonTableColumn> <name>4176e200-836f-475c-bc35-ae9c27bf1ed9</name> <entityField>TITLE</entityField> diff --git a/neonView/MSTTeamMemberEdit_view/MSTTeamMemberEdit_view.aod b/neonView/MSTTeamMemberEdit_view/MSTTeamMemberEdit_view.aod deleted file mode 100644 index b225944fe7c..00000000000 --- a/neonView/MSTTeamMemberEdit_view/MSTTeamMemberEdit_view.aod +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> - <name>MSTTeamMemberEdit_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <size>SMALL</size> - <layout> - <noneLayout> - <name>layout</name> - </noneLayout> - </layout> - <children> - <genericViewTemplate> - <name>Generic</name> - <editMode v="true" /> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>0c013cb6-6a74-47c1-9e5c-8e23f1ce917a</name> - <entityField>UPNSOFMEMBERS</entityField> - </entityFieldLink> - <entityFieldLink> - <name>54cf4c2d-6c18-4c0f-ae52-32c1f7337cd7</name> - <entityField>ARETHESEOWNERS</entityField> - </entityFieldLink> - <entityFieldLink> - <name>75b97952-da9a-4a5c-9bbf-6cec3774541b</name> - <entityField>MAILSOFEXTERN</entityField> - </entityFieldLink> - <entityFieldLink> - <name>ab1ed6fe-5a68-4728-9d90-698636c93ce8</name> - <entityField>EXTERN</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - </children> -</neonView> diff --git a/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod b/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod index 058045a091b..c13a80654c3 100644 --- a/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod +++ b/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod @@ -14,7 +14,7 @@ <name>Documents</name> <editMode v="true" /> <entityField>#ENTITY</entityField> - <title>Dokumente</title> + <title>Documents</title> <fields> <entityFieldLink> <name>6b122227-6e23-4f25-b66c-05f90e991005</name> -- GitLab From 24ea865faadeb21893f384ff462f0a5ff6a70b3e Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Fri, 27 Nov 2020 10:25:41 +0100 Subject: [PATCH 111/184] [Projekt: Entwicklung - xRM][TicketNr.: 1067194][Default-Permissions greifen nicht] --- .../_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod index fe80b890a95..602795eafd8 100644 --- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod +++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod @@ -30,7 +30,7 @@ <recordContainerCachingAlias>RecordContainerCache</recordContainerCachingAlias> <clientSearchOptimizedForSpeed v="true" /> <clientSearchExcludeForIgnorecase v="true" /> - <neonClientPermissionsEnabled v="false" /> + <neonClientPermissionsEnabled v="true" /> <clientFeedbackMailaddress /> <blobHandlingMethod>DATABASE</blobHandlingMethod> <databaseAuditGetOldValueLobs v="false" /> -- GitLab From e127c4ef007b8ac4cf9f97f7fe7ebc46b927004a Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Fri, 27 Nov 2020 10:35:10 +0100 Subject: [PATCH 112/184] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20xRM][Tick?= =?UTF-8?q?etNr.:=201068553][Serienbrief=20-=20=20Meldung=20-=20Leerzeiche?= =?UTF-8?q?n=20fehlt=20-->=20macht=20unsauberen=20Eindruck=20bei=20Pr?= =?UTF-8?q?=C3=A4sentationen]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- language/_____LANGUAGE_de/_____LANGUAGE_de.aod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index c4575135d2e..9f80d362ab3 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -6826,7 +6826,7 @@ </entry> <entry> <key>Only .odt files are supported for bulkletters.</key> - <value>Für Serienbriefe werden nur.odt Dateien unterstützt</value> + <value>Für Serienbriefe werden nur .odt Dateien unterstützt</value> </entry> <entry> <key>Show tickets where I am the editor</key> -- GitLab From a05d177502f871c35f4f965400349168c552d7fb Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Fri, 27 Nov 2020 10:51:48 +0100 Subject: [PATCH 113/184] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20xRM][Tick?= =?UTF-8?q?etNr.:=201067073][Firma=20-=20Sortierung=20-=20keine=20=C3=84nd?= =?UTF-8?q?erung=20in=20der=20Anzeige,=20egal=20ob=20man=20auf-=20oder=20a?= =?UTF-8?q?bsteigend=20sortiert]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Organisation_entity.aod | 437 +++++++++--------- 1 file changed, 218 insertions(+), 219 deletions(-) diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index 954f5023e7d..6d472e1ac8a 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -71,11 +71,6 @@ </entityField> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -86,21 +81,26 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Contact</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>OrganisationRelated</fieldName> - </dependency> <children> <entityParameter> <name>OrgId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/contact/children/orgid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>OrganisationRelated</fieldName> + </dependency> </entityConsumer> <entityFieldGroup> <name>CUSTOMERCODE_DISPLAY_fieldGroup</name> @@ -114,6 +114,36 @@ <name>Organisations</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/organisations/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>WithPrivate_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ExcludeOrganisationsByPersonId</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ExcludedContactIds_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>AttributeKeyId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>AttributeId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>DuplicateActionsControl_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>DuplicateCurrentContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>85aa363e-d8ba-4df5-8422-bf7aff86a4f8</name> @@ -152,44 +182,9 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>WithPrivate_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ExcludeOrganisationsByPersonId</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ExcludedContactIds_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>AttributeKeyId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>AttributeId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>DuplicateActionsControl_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>DuplicateCurrentContactId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>Addresses</name> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAddresses</fieldName> - </dependency> <children> <entityParameter> <name>DefaultAddressId_param</name> @@ -201,6 +196,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>ADDRESS_ID</name> @@ -211,11 +211,6 @@ </entityField> <entityConsumer> <name>Communications</name> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>AllCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -227,15 +222,15 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/communications/children/contactsmaincountry_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>AllCommunications</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Contracts</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Contract_entity</entityName> - <fieldName>Contracts</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -244,14 +239,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Productprices</name> <dependency> <name>dependency</name> - <entityName>Productprice_entity</entityName> - <fieldName>Productprices</fieldName> + <entityName>Contract_entity</entityName> + <fieldName>Contracts</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Productprices</name> <children> <entityParameter> <name>ContactId_param</name> @@ -260,10 +255,14 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Productprice_entity</entityName> + <fieldName>Productprices</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER</name> - <sortingField>NAME</sortingField> <dependencies> <entityDependency> <name>1a472ca0-4d27-453c-8de5-a046b86f22fb</name> @@ -300,11 +299,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -315,6 +309,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityField> <name>STANDARD_EMAIL_COMMUNICATION</name> @@ -330,11 +329,6 @@ </entityField> <entityConsumer> <name>PhoneCommunications</name> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>PhoneCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -342,14 +336,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>EmailCommunications</name> <dependency> <name>dependency</name> <entityName>Communication_entity</entityName> - <fieldName>EmailCommunications</fieldName> + <fieldName>PhoneCommunications</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>EmailCommunications</name> <children> <entityParameter> <name>ContactId_param</name> @@ -357,6 +351,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>EmailCommunications</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Countries</name> @@ -369,11 +368,6 @@ <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Organisation_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -385,14 +379,14 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordContactStates</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordContactStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -400,14 +394,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordOrganisationTypes</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordOrganisationTypes</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -415,6 +409,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -426,11 +425,6 @@ </entityConsumer> <entityConsumer> <name>KeywordPricePolitics</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -438,14 +432,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordWeaknesses</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordWeaknesses</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -453,14 +447,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStrenghts</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStrenghts</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -468,14 +462,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salesprojects</name> <dependency> <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Salesprojects</fieldName> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salesprojects</name> <children> <entityParameter> <name>ContactId_param</name> @@ -484,14 +478,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Offers</name> <dependency> <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> + <entityName>Salesproject_entity</entityName> + <fieldName>Salesprojects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Offers</name> <children> <entityParameter> <name>ContactId_param</name> @@ -500,14 +494,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Tasks</name> <dependency> <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Tasks</name> <children> <entityParameter> <name>RowId_param</name> @@ -518,6 +512,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>WithPrivate_param</name> @@ -528,11 +527,6 @@ </entityParameter> <entityConsumer> <name>ObjectTrees</name> - <dependency> - <name>dependency</name> - <entityName>ObjectTree_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectIds_param</name> @@ -543,14 +537,14 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/objecttrees/children/objecttypes_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>ObjectTree_entity</entityName> + <fieldName>TreeProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> @@ -559,14 +553,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>360DegreeObjects</name> <dependency> <name>dependency</name> - <entityName>360Degree_entity</entityName> - <fieldName>OrganisationObjects</fieldName> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>360DegreeObjects</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -577,6 +571,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/360degreeobjects/children/objectstatus_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>360Degree_entity</entityName> + <fieldName>OrganisationObjects</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> @@ -587,26 +586,6 @@ <entityProvider> <name>WithPersonIdFilter</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/withpersonidfilter/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>5a456b04-f0ca-4a45-9c1f-bdfdf074434a</name> - <entityName>Contact_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>a80c3db0-29db-433c-8f7c-4ebf6639ad6d</name> - <entityName>Person_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>748a3083-89c2-41b4-a233-3fd5364396e9</name> - <entityName>Competition_entity</entityName> - <fieldName>Organisation</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> @@ -639,6 +618,26 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>5a456b04-f0ca-4a45-9c1f-bdfdf074434a</name> + <entityName>Contact_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>a80c3db0-29db-433c-8f7c-4ebf6639ad6d</name> + <entityName>Person_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>748a3083-89c2-41b4-a233-3fd5364396e9</name> + <entityName>Competition_entity</entityName> + <fieldName>Organisation</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>AttributeId_param</name> @@ -653,20 +652,6 @@ <entityProvider> <name>WithAttribute</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/withattribute/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>10480df2-f0b6-4cb6-8bfb-4a468b994996</name> - <entityName>Competition_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>f368be61-1a15-449f-b37c-b1343069412c</name> - <entityName>Product_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>AttributeId_param</name> @@ -698,6 +683,20 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>10480df2-f0b6-4cb6-8bfb-4a468b994996</name> + <entityName>Competition_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>f368be61-1a15-449f-b37c-b1343069412c</name> + <entityName>Product_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>ExcludedContactIds_param</name> @@ -706,11 +705,6 @@ </entityParameter> <entityConsumer> <name>AttributeTree</name> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -721,6 +715,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>DATE_NEW</name> @@ -772,11 +771,6 @@ <entityConsumer> <name>AttributeConditions</name> <onValidation>%aditoprj%/entity/Organisation_entity/entityfields/attributeconditions/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -799,14 +793,14 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributeconditions/children/showempty_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LinkedAppointments</name> <dependency> <name>dependency</name> - <entityName>Appointment_entity</entityName> - <fieldName>LinkedAppointments</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LinkedAppointments</name> <children> <entityParameter> <name>LinkedObjectId_param</name> @@ -817,6 +811,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Appointment_entity</entityName> + <fieldName>LinkedAppointments</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Products</name> @@ -1094,11 +1093,6 @@ </entityParameter> <entityConsumer> <name>SelfDuplicatesUncached</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>SelfDuplicates</fieldName> - </dependency> <children> <entityParameter> <name>DuplicateActionsControl_param</name> @@ -1118,20 +1112,25 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/excludedcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>CommRestrictions</name> <dependency> <name>dependency</name> - <entityName>CommRestriction_Entity</entityName> - <fieldName>CommRestrictions</fieldName> + <entityName>Organisation_entity</entityName> + <fieldName>SelfDuplicates</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>CommRestrictions</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/commrestrictions/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CommRestriction_Entity</entityName> + <fieldName>CommRestrictions</fieldName> + </dependency> </entityConsumer> <entityField> <name>COMMRESTRICTIONS_ACTIVE</name> @@ -1186,11 +1185,6 @@ <entityConsumer> <name>Classifications</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>Classification_entity</entityName> - <fieldName>Classifications</fieldName> - </dependency> <children> <entityParameter> <name>ClassificationType_param</name> @@ -1208,6 +1202,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Classification_entity</entityName> + <fieldName>Classifications</fieldName> + </dependency> </entityConsumer> <entityField> <name>COUNT</name> @@ -1228,14 +1227,6 @@ <name>OrganisationsViaIndex</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/organisationsviaindex/documentation.adoc</documentation> <recordContainer>index</recordContainer> - <dependencies> - <entityDependency> - <name>e60b8983-166d-4280-a1a5-f990ad77eeb9</name> - <entityName>AroundLocation_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> @@ -1278,6 +1269,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>e60b8983-166d-4280-a1a5-f990ad77eeb9</name> + <entityName>AroundLocation_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityActionField> <name>openAroundLocation</name> @@ -1348,17 +1347,17 @@ </entityProvider> <entityConsumer> <name>DistrictResponsibles</name> - <dependency> - <name>dependency</name> - <entityName>DistrictResponsible_entity</entityName> - <fieldName>OrganisationResponsibles</fieldName> - </dependency> <children> <entityParameter> <name>OrgUid_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/districtresponsibles/children/orguid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DistrictResponsible_entity</entityName> + <fieldName>OrganisationResponsibles</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>FilterPreSet_param</name> @@ -1367,14 +1366,6 @@ <entityProvider> <name>NonselfDuplicates</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/nonselfduplicates/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>2e410b9e-5ebc-48ea-9562-da386202d7e8</name> - <entityName>Duplicates_entity</entityName> - <fieldName>DuplicateOrganisationsConsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>AttributeKeyId_param</name> @@ -1397,6 +1388,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>2e410b9e-5ebc-48ea-9562-da386202d7e8</name> + <entityName>Duplicates_entity</entityName> + <fieldName>DuplicateOrganisationsConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityActionGroup> <name>orgReportDispatch</name> @@ -1413,11 +1412,6 @@ </entityActionGroup> <entityConsumer> <name>AttributesFilter</name> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>FilterProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -1428,6 +1422,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributesfilter/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>FilterProvider</fieldName> + </dependency> </entityConsumer> </entityFields> <recordContainers> -- GitLab From 6e7eb77ec4a52ea5dee1be9d96f3238a372af049 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Fri, 27 Nov 2020 11:03:35 +0100 Subject: [PATCH 114/184] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20xRM][Tick?= =?UTF-8?q?etNr.:=201052123][Aufgabe=20-=20Umbenennung=20von=20"Gesch?= =?UTF-8?q?=C3=BCtzt"=20in=20"Privat]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entity/Task_entity/Task_entity.aod | 126 +++++++++--------- .../protectionlevel/titleProcess.js | 8 ++ .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 4 + 3 files changed, 75 insertions(+), 63 deletions(-) create mode 100644 entity/Task_entity/entityfields/protectionlevel/titleProcess.js diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod index 0ed30f9267a..f7b03fedd7f 100644 --- a/entity/Task_entity/Task_entity.aod +++ b/entity/Task_entity/Task_entity.aod @@ -96,10 +96,10 @@ </entityField> <entityField> <name>PROTECTIONLEVEL</name> - <title>Protected</title> <contentType>BOOLEAN</contentType> <contentTypeProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/contentTypeProcess.js</contentTypeProcess> <dropDownProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/dropDownProcess.js</dropDownProcess> + <titleProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/titleProcess.js</titleProcess> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/valueProcess.js</valueProcess> </entityField> <entityField> @@ -127,11 +127,6 @@ <entityConsumer> <name>MainDocuments</name> <stateProcess>%aditoprj%/entity/Task_entity/entityfields/maindocuments/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -142,14 +137,14 @@ <valueProcess>%aditoprj%/entity/Task_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Document_entity</entityName> + <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -161,14 +156,14 @@ <valueProcess>%aditoprj%/entity/Task_entity/entityfields/keywordstates/children/whitelistids_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ModuleTrees</name> <dependency> <name>dependency</name> - <entityName>ModuleTree_entity</entityName> - <fieldName>TreeProviders</fieldName> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ModuleTrees</name> <children> <entityParameter> <name>ID_param</name> @@ -183,6 +178,11 @@ <mandatory v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ModuleTree_entity</entityName> + <fieldName>TreeProviders</fieldName> + </dependency> </entityConsumer> <entityField> <name>PARENT_CONTEXT</name> @@ -229,11 +229,6 @@ </entityParameter> <entityConsumer> <name>KeywordPriorities</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -241,6 +236,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newOffer</name> @@ -259,36 +259,58 @@ </entityField> <entityConsumer> <name>KeywordProgress</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/keywordprogress/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Links</name> <state>EDITABLE</state> - <dependency> - <name>dependency</name> - <entityName>TaskLink_entity</entityName> - <fieldName>Link</fieldName> - </dependency> <children> <entityParameter> <name>TaskId_param</name> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/links/children/taskid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>TaskLink_entity</entityName> + <fieldName>Link</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Tasks</name> <documentation>%aditoprj%/entity/Task_entity/entityfields/tasks/documentation.adoc</documentation> + <children> + <entityParameter> + <name>RowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>PresetLinks_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ParentId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ParentContext_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ObjectId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>dd79df43-264c-494b-9c92-cadf19e61db6</name> @@ -357,28 +379,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>RowId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>PresetLinks_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ParentId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ParentContext_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ObjectId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>PresetLinks_param</name> @@ -407,26 +407,21 @@ </entityField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -437,6 +432,11 @@ <valueProcess>%aditoprj%/entity/Task_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityField> <name>TYPE</name> diff --git a/entity/Task_entity/entityfields/protectionlevel/titleProcess.js b/entity/Task_entity/entityfields/protectionlevel/titleProcess.js new file mode 100644 index 00000000000..c2997149287 --- /dev/null +++ b/entity/Task_entity/entityfields/protectionlevel/titleProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.translate"); + +//We already changed this title serveral times +//This will be the last time and it's called "Private". Period. +//The reason why this is in a titleProcess and not in the title property is just to write this comment you're reading. +//Note: Whithin a porject feel free to change the title +result.string(translate.text("Private")); \ No newline at end of file diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 9f80d362ab3..566c1d1c162 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -26,6 +26,10 @@ <key>Choose Team</key> <value>Team auswählen</value> </entry> + <entry> + <key>Private</key> + <value>Privat</value> + </entry> <entry> <key>Add app</key> <value>App hinzufügen</value> -- GitLab From 301b34e90f6aebaf2a0feafa32aa32fe14766eb3 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 26 Nov 2020 16:45:43 +0100 Subject: [PATCH 115/184] #1065277 Newsletter workflow --- .../children/synchronizedocuments/onActionProcess.js | 2 -- .../children/synchronizedocuments/stateProcess.js | 7 ++++--- process/CreateNotification_workflowService/process.js | 1 - process/SendEmail_workflowService/process.js | 6 ++---- process/Workflow_lib/process.js | 11 +++++++++++ 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js index 97975318752..2d871492297 100644 --- a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js +++ b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js @@ -7,5 +7,3 @@ neon.openContext("MSTTeamDocument", null, null, neon.OPERATINGSTATE_NEW, { "AssignmentName_param" : vars.get("$param.AssignmentName_param"), "AssignmentTable_param" : vars.get("$param.AssignmentTable_param") }); - - diff --git a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js index 38e484f314e..f5e9edcd5d6 100644 --- a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js +++ b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js @@ -1,11 +1,12 @@ +import("Util_lib"); import("system.vars"); import("system.neon"); import("system.result"); import("Sql_lib"); -var isArchived = newSelect("IS_ARCHIVED", "Data_alias") +var isArchived = Utils.toBoolean(newSelect("IS_ARCHIVED") .from("MST_TEAM") - .where("MST_TEAM.MST_TEAMID", "$param.MSTTeamId_param") - .cell() == "1"; + .whereIfSet("MST_TEAM.MST_TEAMID", "$param.MSTTeamId_param") + .cell(true)); result.string(isArchived ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/process/CreateNotification_workflowService/process.js b/process/CreateNotification_workflowService/process.js index 458f665d714..3aa7508f4b6 100644 --- a/process/CreateNotification_workflowService/process.js +++ b/process/CreateNotification_workflowService/process.js @@ -6,7 +6,6 @@ var variables = JSON.parse(vars.get("$local.value")); var config = notification.createConfig() .notificationType("WorkflowNotification") .addUsersWithIds([variables.notificationUser || variables.USER_ID]) - .initialState(notification.STATE_UNSEEN) .caption(variables.notificationCaption || "") .description(variables.notificationDescription || ""); diff --git a/process/SendEmail_workflowService/process.js b/process/SendEmail_workflowService/process.js index 14247ad4e4b..bdc3aab5db6 100644 --- a/process/SendEmail_workflowService/process.js +++ b/process/SendEmail_workflowService/process.js @@ -21,10 +21,8 @@ actionParams.processInstanceId = processInstanceId; var additionalPlaceholders = []; if (aditoUrl) { - additionalPlaceholders.push(linkPlaceholder = new Placeholder("workflowActionLink", Placeholder.types.CALLBACKFUNCTION, function () - { - return WorkflowLinkActions.getActionLink(aditoUrl, actionParams.linkActionType, actionParams.redirectLink, actionParams); - })); + var linkPlaceholder = WorkflowLinkActions.getActionLinkPlaceholder(actionParams.linkActionType, actionParams, actionParams.redirectLink, aditoUrl); + additionalPlaceholders.push(linkPlaceholder); } var email = Email.fromTemplate(documentTemplateId, recipientContactId, null, additionalPlaceholders); diff --git a/process/Workflow_lib/process.js b/process/Workflow_lib/process.js index 38627a87e22..05730801196 100644 --- a/process/Workflow_lib/process.js +++ b/process/Workflow_lib/process.js @@ -737,4 +737,15 @@ WorkflowLinkActions.parseAction = function (pEncodedAction) return null; } }; +} + +WorkflowLinkActions.getActionLinkPlaceholder = function (pLinkActionType, pActionParams, pRedirectLink, pBaseUrl) +{ + if (!pBaseUrl) + pBaseUrl = vars.get("$sys.origin"); + + return new Placeholder("workflowActionLink", Placeholder.types.CALLBACKFUNCTION, function () + { + return WorkflowLinkActions.getActionLink(pBaseUrl, pLinkActionType, pRedirectLink, pActionParams); + }); } \ No newline at end of file -- GitLab From 003c77e9dc99175e428c2485bb1430fd03c138dc Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 27 Nov 2020 10:08:08 +0100 Subject: [PATCH 116/184] others/guide adoc files moved and removed --- .../LogHistory_entity/LogHistory_entity.aod | 6 + entity/LogHistory_entity/documentation.adoc | 91 +++++- .../tablenames_param/documentation.adoc | 15 + .../loghistoryprovider/documentation.adoc | 2 + neonContext/Offer/Offer.aod | 3 + others/genJsdoc.bat | 3 - others/guide/CodingGuidelines.adoc | 8 - others/guide/CreateJsDoc.adoc | 40 --- others/guide/Loghistory.adoc | 87 ------ others/guide/PersonOrganisationContact.adoc | 39 --- others/guide/ProviderConsumerParameter.adoc | 92 ------ others/guide/TargetContext.adoc | 19 -- others/guide/how to write JDito code.adoc | 261 ------------------ others/guide/instanceableLibExample.adoc | 62 ----- others/guide/staticLibExample.adoc | 57 ---- others/guide/whichDatatype.adoc | 105 ------- process/Neon_lib/Neon_lib.aod | 1 + .../Neon_lib/documentation.adoc | 0 18 files changed, 116 insertions(+), 775 deletions(-) create mode 100644 entity/LogHistory_entity/entityfields/loghistoryprovider/children/tablenames_param/documentation.adoc delete mode 100644 others/genJsdoc.bat delete mode 100644 others/guide/CodingGuidelines.adoc delete mode 100644 others/guide/CreateJsDoc.adoc delete mode 100644 others/guide/Loghistory.adoc delete mode 100644 others/guide/PersonOrganisationContact.adoc delete mode 100644 others/guide/ProviderConsumerParameter.adoc delete mode 100644 others/guide/TargetContext.adoc delete mode 100644 others/guide/how to write JDito code.adoc delete mode 100644 others/guide/instanceableLibExample.adoc delete mode 100644 others/guide/staticLibExample.adoc delete mode 100644 others/guide/whichDatatype.adoc rename others/guide/how to copy objects with subitems.adoc => process/Neon_lib/documentation.adoc (100%) diff --git a/entity/LogHistory_entity/LogHistory_entity.aod b/entity/LogHistory_entity/LogHistory_entity.aod index 6499fc00e00..b7abfc4219a 100644 --- a/entity/LogHistory_entity/LogHistory_entity.aod +++ b/entity/LogHistory_entity/LogHistory_entity.aod @@ -39,6 +39,12 @@ <entityProvider> <name>LogHistoryProvider</name> <documentation>%aditoprj%/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc</documentation> + <children> + <entityParameter> + <name>tablenames_param</name> + <documentation>%aditoprj%/entity/LogHistory_entity/entityfields/loghistoryprovider/children/tablenames_param/documentation.adoc</documentation> + </entityParameter> + </children> <dependencies> <entityDependency> <name>23dbfa51-5340-48e3-bd60-e0dcb7d44ad3</name> diff --git a/entity/LogHistory_entity/documentation.adoc b/entity/LogHistory_entity/documentation.adoc index 20fa16faa47..b38670d44b7 100644 --- a/entity/LogHistory_entity/documentation.adoc +++ b/entity/LogHistory_entity/documentation.adoc @@ -2,5 +2,92 @@ Entity for the log entries in the individual modules. -This entity is based on the `AB_LOGHISTORY`-table. Note that this database table has no primary key associated to it. -This is because it is only a pit of log-record and not necessary. \ No newline at end of file +This entity is based on the `AB_LOGHISTORY`-table. + +== configure Loghistory + +:DATA_ALIAS: Data_alias +:EDITOR_ALIAS_DEFINITION: AliasDefinition-Editor + +=== the concept +//TODO: extend the concept description +Stoarge: Database-table: `AB_LOGHISTORY` + +Collecting Data: +---- +Audit -> process_audit -> Loghistory_lib: LogHistoryExecutor +---- + +Data is collected and pre-translated. Therefor only one Language can be applied for logging. +Because the loghistory is written via the auditing, only changes that are done with the proper Jdito-Methods will be logged. + +=== prerequisites + +Auditing has to be activated for all tables you want to log. + +.prerequisites of enabling Audit in general +* Auditing has to be enabled in your Server +* Auditing has to be enabled for your alias (default: +{DATA_ALIAS}+) +* Tables that shall be logged need some configs in the _{EDITOR_ALIAS_DEFINITION}_ +** property `idColumn` has to be set (a primary key is needed therefore) +** `auditMode` has to be set -Standard, -CLOB, or -BLOB (chosse the one you really need) + + +=== activate writing into loghistory + +Assuming that the + +* required database-tables exist +* JDito-processes already exist +* audit has been activated in general + +you are ready to configure _which_ column shall be logged and _how_. + +==== configure columns for logging + +There are several properties (custom and pre-exisiting) that can be set for configuring the logging: + +.configuration options per column +[options="header"] +|======= +|property |purpose |property-type +|+title+ |text that is used to display which column has been modified|pre-exisiting +|+log+ |defines whether a column needs to be logged or not; not exisisting equals `false` |custom: Booelan +|+tableRef+ |references table for automatically grouping data. This is usefull for ForeignKeys, e.g. a +OFFERITEM.OFFER_ID+ column could have a +tableRef+ "OFFER"|custom: String +|+primaryKey+ |this is not only used to enable auditing generally, but it's used to resolve +tableRef+ values correctly|pre-exisiting +|+keyword+ |defines a keyword contianer that should be used to transform a +KEYID+ into a display value|custom: String +|+autoMapTrueFalse4Log+ |if `true` the loghistory-executor tries to automatically translate a value into a "yes"/"no"-display value|custom: Booelan +|+translate4Log+ |defines a process to transform a technical value into a display value |custom: JDito +|======= + ++translate4Log+ is a mighty possibility to translate a ID-value into a displayvalue. However, you should keep several important things in mind: + +* translate text if necessary via the locale-parameter +* the process is called each time a change to that column is applied - keep it fast and simple + +.translate4Log example (skip imports for better readability) +[source,javascript] +---- +var params = Translate4LogParams.load();// <1> +var countryName = CountryUtils.getLatinNameByIso2(params.value, params.locale); // <2> +result.string(countryName);// <3> +---- +<1> load the parameters in a easy and fail-proof way +<2> locale is passed to the resolving function and in that function a translation is applied +<3> always return a string + +==== configure a consumer for retrieving the loghistory + +.Example for the +tablenames_param+ process +---- +import("system.vars"); +import("system.result"); +import("Context_lib"); + +var res = []; +res.push({id: vars.get("$field.CONTACTID"), tableNames: ["CONTACT", "COMMUNICATION", "ADDRESS", "AB_ATTRIBUTERELATION"]}); +res.push({id: vars.get("$field.PERSONID"), tableNames: ["PERSON"]}); + +res = JSON.stringify(res); +result.object(res); +---- \ No newline at end of file diff --git a/entity/LogHistory_entity/entityfields/loghistoryprovider/children/tablenames_param/documentation.adoc b/entity/LogHistory_entity/entityfields/loghistoryprovider/children/tablenames_param/documentation.adoc new file mode 100644 index 00000000000..3051d2df3f9 --- /dev/null +++ b/entity/LogHistory_entity/entityfields/loghistoryprovider/children/tablenames_param/documentation.adoc @@ -0,0 +1,15 @@ += tablenames_param + +.Example +---- +import("system.vars"); +import("system.result"); +import("Context_lib"); + +var res = []; +res.push({id: vars.get("$field.CONTACTID"), tableNames: ["CONTACT", "COMMUNICATION", "ADDRESS", "AB_ATTRIBUTERELATION"]}); +res.push({id: vars.get("$field.PERSONID"), tableNames: ["PERSON"]}); + +res = JSON.stringify(res); +result.object(res); +---- \ No newline at end of file diff --git a/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc b/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc index 2712d5d5c6d..4088dd1c6fa 100644 --- a/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc +++ b/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc @@ -1,3 +1,5 @@ += LogHistoryProvider + Generic provider for log history entries. A filter for given _tablenames_ is applied, see the documentation of the parameters for an example. \ No newline at end of file diff --git a/neonContext/Offer/Offer.aod b/neonContext/Offer/Offer.aod index e8a6d8d34e5..271bdfa9b49 100644 --- a/neonContext/Offer/Offer.aod +++ b/neonContext/Offer/Offer.aod @@ -44,5 +44,8 @@ <name>136dceaa-0eca-452a-9757-132fd54e8c55</name> <view>OfferPreviewMultiple_view</view> </neonViewReference> + <webserviceReference> + <name>277d4493-9a49-4e68-b00c-29d3d0e0b9d2</name> + </webserviceReference> </references> </neonContext> diff --git a/others/genJsdoc.bat b/others/genJsdoc.bat deleted file mode 100644 index db0775bbbb3..00000000000 --- a/others/genJsdoc.bat +++ /dev/null @@ -1,3 +0,0 @@ -SET mypath=%~dp0 - -jsdoc -r %mypath:~0,-1%\..\process -d %mypath:~0,-1%\jsdocOut \ No newline at end of file diff --git a/others/guide/CodingGuidelines.adoc b/others/guide/CodingGuidelines.adoc deleted file mode 100644 index 7fbd1bf92c5..00000000000 --- a/others/guide/CodingGuidelines.adoc +++ /dev/null @@ -1,8 +0,0 @@ -= Sample Document -Doc Writer <doc.writer@asciidoc.org>; John Smith <john.smith@asciidoc.org> -v1.0, 2013-05-20: First draft -:title: Sample Document -:tags: [document, example] - - -Preamble... diff --git a/others/guide/CreateJsDoc.adoc b/others/guide/CreateJsDoc.adoc deleted file mode 100644 index d428b85c65a..00000000000 --- a/others/guide/CreateJsDoc.adoc +++ /dev/null @@ -1,40 +0,0 @@ -How to build js-doc out of the lib-comments -=========================================== -:toc2: left -:numbered: - -== installation == -1. Nodejs: -https://nodejs.org/en/ -LTS-version (aktuell 10.15.0) - -download and install - -2. install jsdoc - -open CMD -[source] ----- -npm install -g jsdoc ----- - -== generate jsdoc == - -=== manually === -1. open CMD -2. navigate into the project-folder. e.g. -[source] ----- -C: -cd C:\Users\M.Mustermann\Documents\AditoProjects\xRM-Basic5.1 ----- -3. run command -[source] ----- -jsdoc -r process -d others\jsdocOut ----- -4. Open others\jsdocOut\index.html with a webbrowser - -=== with script in designer (Windows) === -1. In the Designer right click on others\genJsdoc.bat -> "Open in System" -2. Right click on others\jsdocOut\index.html -> "View" \ No newline at end of file diff --git a/others/guide/Loghistory.adoc b/others/guide/Loghistory.adoc deleted file mode 100644 index 6a2f284bf89..00000000000 --- a/others/guide/Loghistory.adoc +++ /dev/null @@ -1,87 +0,0 @@ -configure Loghistory -==================== -:DATA_ALIAS: Data_alias -:EDITOR_ALIAS_DEFINITION: AliasDefinition-Editor - -== the concept == -//TODO: extend the concept description -Stoarge: Database-table: `AB_LOGHISTORY` - -Collecting Data: ----- -Audit -> process_audit -> Loghistory_lib: LogHistoryExecutor ----- - -Data is collected and pre-translated. Therefor only one Language can be applied for logging. -Because the loghistory is written via the auditing, only changes that are done with the proper Jdito-Methods will be logged. - -== prerequisites == - -Auditing has to be activated for all tables you want to log. - -.prerequisites of enabling Audit in general -* Auditing has to be enabled in your Server -* Auditing has to be enabled for your alias (default: +{DATA_ALIAS}+) -* Tables that shall be logged need some configs in the _{EDITOR_ALIAS_DEFINITION}_ -** property `idColumn` has to be set (a primary key is needed therefore) -** `auditMode` has to be set -Standard, -CLOB, or -BLOB (chosse the one you really need) - - -== activate writing into loghistory == - -Assuming that the - -* required database-tables exist -* JDito-processes already exist -* audit has been activated in general - -you are ready to configure _which_ column shall be logged and _how_. - -=== configure columns for logging === - -There are several properties (custom and pre-exisiting) that can be set for configuring the logging: - -.configuration options per column -[options="header"] -|======= -|property |purpose |property-type -|+title+ |text that is used to display which column has been modified|pre-exisiting -|+log+ |defines whether a column needs to be logged or not; not exisisting equals `false` |custom: Booelan -|+tableRef+ |references table for automatically grouping data. This is usefull for ForeignKeys, e.g. a +OFFERITEM.OFFER_ID+ column could have a +tableRef+ "OFFER"|custom: String -|+primaryKey+ |this is not only used to enable auditing generally, but it's used to resolve +tableRef+ values correctly|pre-exisiting -|+keyword+ |defines a keyword contianer that should be used to transform a +KEYID+ into a display value|custom: String -|+autoMapTrueFalse4Log+ |if `true` the loghistory-executor tries to automatically translate a value into a "yes"/"no"-display value|custom: Booelan -|+translate4Log+ |defines a process to transform a technical value into a display value |custom: JDito -|======= - -+translate4Log+ is a mighty possibility to translate a ID-value into a displayvalue. However, you should keep several important things in mind: - -* translate text if necessary via the locale-parameter -* the process is called each time a change to that column is applied - keep it fast and simple - -.translate4Log example (skip imports for better readability) -[source,javascript] ----- -var params = Translate4LogParams.load();// <1> -var countryName = CountryUtils.getLatinNameByIso2(params.value, params.locale); // <2> -result.string(countryName);// <3> ----- -<1> load the parameters in a easy and fail-proof way -<2> locale is passed to the resolving function and in that function a translation is applied -<3> always return a string - -=== configure a consumer for retrieving the loghistory === - -.Exampel for the +tablenames_param+ process ----- -import("system.vars"); -import("system.result"); -import("Context_lib"); - -var res = []; -res.push({id: vars.get("$field.CONTACTID"), tableNames: ["CONTACT", "COMMUNICATION", "ADDRESS", "AB_ATTRIBUTERELATION"]}); -res.push({id: vars.get("$field.PERSONID"), tableNames: ["PERSON"]}); - -res = JSON.stringify(res);//currently only strings can be passed as param -result.object(res); ----- \ No newline at end of file diff --git a/others/guide/PersonOrganisationContact.adoc b/others/guide/PersonOrganisationContact.adoc deleted file mode 100644 index 7d7a1b33f97..00000000000 --- a/others/guide/PersonOrganisationContact.adoc +++ /dev/null @@ -1,39 +0,0 @@ -Person, Organisation, Contact -============================= -:toc2: left -:numbered: - -== Differences to old Adito == - -The old Adito basic had: - -- Pers -- Org -- Relation - -They are not gone, just renamed: - -- Pers = Person -- Org = Organisation -- Relation = Contact - -TODO: doku erweitern -erson, Organisation, Contact -=========================================== -:toc2: left -:numbered: - -== Differences to old Adito == - -The old Adito basic had: - -- Pers -- Org -- Relation - -They are not gone, just renamed: - -- Pers = Person -- Org = Organisation -- Relation = Contact - diff --git a/others/guide/ProviderConsumerParameter.adoc b/others/guide/ProviderConsumerParameter.adoc deleted file mode 100644 index ee9ff59bc7d..00000000000 --- a/others/guide/ProviderConsumerParameter.adoc +++ /dev/null @@ -1,92 +0,0 @@ -Provider - Consumer -=================== -:toc2: left -:numbered: - -=== Provider === -Is the old dfi. - -==== Purpose ==== -The provider provides access to an entity. -You can get data of another entity by connecting a consumer to a provider. - -==== Naming ==== -The names should provide information about *what the provider provides*. - -For example: -Communication_entity has 3 providers: - -- *AllCommunications* -- *EmailCommunications* -- *PhoneCommunications* - -If you connect to *AllCommunications* you get *all* communication types of a contact. -If you connect to *EmailCommunications* you get *only the Email* communication type of a contact. -If you connect to *PhoneCommunications* you get *only the Phone* communication type of a contact. - -*Important:* -*Do not always create a new provider when connecting a new entity. Maybe you can use an already existing provider.* -*Try to reuse providers if you need similar data for two dependencies* - -=== Consumer === -Is the old dfo. - -=== Purpose === -The Consumer *consumes* the data a provider provides. -It can be connected to a provider and fill the parameters of the provider. - -=== Naming === -Most of the time you get a list of "something" so you should call it the plural of what you get. - -Example: -Persons -Organisations - -If you have two Consumer to the same Entity, you should use speaking names. - -Example: -Documents (e.g. for all documents of a person) -MainDocuments (e.g. for only the main documents of a person) - -If you know you get only one row, you can use the singular. - -Example: -Person - -=== Parameter === -Parameters provide a way to tell a provider *what exactly you need*. - -==== Properties ==== -The most important properties are -code, exposed, triggerRecalculation and mandatory - -Parameters work with a fallback mechanism. -This means that if you set the code on the parameter directly then this is executed *only if you did not* provide the code on the parameter at the *provider* and/or *consumer*. -Likewise if you set the code on a parameter at the provider it will only be executed if a *consumer* which connects to this provider *has no code set* at the parameter. - -Here some examples for the *code* property: - -[options="header"] -|======================================================================================================================================================================================================================================================== -| Parameter | Provider | Consumer | Result | Notes -| default | default | default | Nothing executed | -| default | default | code set | Code from consumer executed | This is the mostly used scenario. -| default | code set | default | Code from provider executed | This is used if you need a default value for a parameter which is different on each provider. e.g. used by the Document_entity to determine if it should show main documents or not. -| code set | default | default | Code from parameter executed | -|======================================================================================================================================================================================================================================================== - -The checkbox-parameters can have *three* states: default, checked, unchecked. Default means the property is *gray* and the value from the previous instance is used. Checked and unchecked overwrite always the previous instance. - -The exposed property is a way to decide if a parameter should be visible by the next instance -Here some examples for the *exposed* property: - -[options="header"] -|======================================================================================================================================================== -| Parameter | Provider | Result | Notes -| default | default | NOT Exposed | because the default for exposed is: NOT exposed. -> the parameter won't be visible on the provider and consumer! -| set | set | Exposed | This means that the parameter can be set by the consumer. -| set | UNset | NOT Exposed | This will disable the parameter for one specific provider. -| set | default | Exposed | -|======================================================================================================================================================== - -*Note that there are currently (13.02.2019) some bugs and the handling of parameters with the default #PROVIDER may change.* \ No newline at end of file diff --git a/others/guide/TargetContext.adoc b/others/guide/TargetContext.adoc deleted file mode 100644 index 1d466a0da9c..00000000000 --- a/others/guide/TargetContext.adoc +++ /dev/null @@ -1,19 +0,0 @@ -Target Context -============== - -toc2: left -:numbered: - -== What? == -The target context is for forwarding the preview and the klick-action to another context. - -== Why? == -For example the ObjectRelation entity uses this feature to open the linked object directly. - -== Where? == -It is configured by two properties of the providers. - -* targetContextField -* targetIdField - -You can provide an entity-field for each of them which contains the contextId (currently the contextName 13.02.2019) and the rowId (UID) which should be used to open the preview or main view. \ No newline at end of file diff --git a/others/guide/how to write JDito code.adoc b/others/guide/how to write JDito code.adoc deleted file mode 100644 index 9dbbdb19d29..00000000000 --- a/others/guide/how to write JDito code.adoc +++ /dev/null @@ -1,261 +0,0 @@ -How to wirte JDito code -======================= -:toc2: left -:numbered: - -== basics == -* Keep everything english. Every title, caption, messages, comments, etc. should be english. Add german translation to the languages if necessary. -* in JavaScript-Strings use `"` instead of `'` - even if its only 1 character. `'` is for SQL (within JS-Strings) -* Parameters should start with p. - -== code structure == -=== vars and others (var, let) === -* avoid `let` as much as possible because you cannot debug these variables - -=== brackets === -* `{` are placed on a new line - -Example: -[source,javascript] ----- -for (i = 0, i < dataLen; i++) -{ - //code here -} - -myArray.forEach(function(pItem) -{ - // Do something -}); ----- - -=== loops === -nested loops should be defined with replicated indexer variables. -Therefore it's easy to see in which level of the counter you are. -Even better would be a good and describing name. - -Example: -[source,javascript] ----- -for (i = 0, i < dataLen; i++) -{ - for (ii = 0, ii < dataLen[i].length; ii++) - { - //code... - } -} - -for (row = 0, row < dataLen; row++) -{ - for (col = 0, col < dataLen[row].length; col++) - { - //code... - } -} ----- - - -== Functions - overview of different "types" == -This sections covers how to define different "types" of functions in libraries. - -=== by using static methods === -This will be mostly utility functions where there is no need to instantiate an object. You'll need this probably the most time. - --> Static object with static functions. - - -Definition: -[source,javascript] ----- -/** - * provides static methods for validation of communication data - * do not create an instance of this - * @static - * @class - */ -function CommValidationUtil(){}<1> - -/** - * returns a blueprint for validation extensions; these extensions are needed for validating comm data and can be passed to other functions - * @return {object} a object with properties that have a specific default value; normally you want to overwrite that value - */ -CommValidationUtil.getExtensionsBlueprint = function() <2> -{ - return { - countryCode: null - }; -} ----- -<1> the function-object that keeps everything together - this function should never be actually called (no direct call, no indirect call) -<2> an actual function that can be called - -And how to use it: -[source,javascript] ----- -import("Comm_lib"); - -var additionals = CommValidationUtil.getExtensionsBlueprint(); ----- - -=== by creating an object with functions === - -You may want to hold data and create objects where methods share that data. - -Here is an example for an object that can be created: -[source,javascript] ----- -/** - * object that provides featrues for a single keyword attribute; initalizes itself on creation with a specific keyword-attribute - * - * @param {String} pContainerName specifies the type of the keyword and therefore the list elements; - * e.g. "COUNTRY"; use an entry of the $KeywordRegistry here - * @param {String} pAttributeName the name of the keyword attribute that shall be initalized - * @param {String} [pDefault=undefined] the default value -> Does not throw an error, if default value exists. - * - * @class - */ -function KeywordAttribute(pContainerName, pAttributeName, pDefault) -{ - this.container = pContainerName; - this.attribute = pAttributeName; - this.defaultValue = pDefault; - - var keywordAttrData = newSelect("AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_ATTRIBUTEID, AB_KEYWORD_ATTRIBUTE.KIND") - .from("AB_KEYWORD_ATTRIBUTE") - .where("AB_KEYWORD_ATTRIBUTE.CONTAINER", pContainerName) - .and("AB_KEYWORD_ATTRIBUTE.NAME", pAttributeName) - .arrayRow(); - - if (keywordAttrData.length > 0) - { - this.id = keywordAttrData[0]; - this.type = keywordAttrData[1]; - this.dbField = this.type.trim(); - } - else if(pDefault == undefined) - { - throw new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", [this.attribute, this.container])); - } -} - -/** - * get the value for a specific keyId. - * Error if the keyword container does not have the attribute at all (you can check this with .exists()) - * Error if the attribute does not exist at the provided keyId and you have not specified a default - * - * @param {String} pKeyId the keyId - * - * @return {String} the loaded value (or the default) - */ -KeywordAttribute.prototype.getValue = function(pKeyId) -{ - if (this.exists()) - { - var attrValue = newSelect(this.dbField) - .from("AB_KEYWORD_ENTRY") - .join("AB_KEYWORD_ATTRIBUTERELATION", "AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID = AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID") - .where("AB_KEYWORD_ENTRY.CONTAINER", this.container) - .and("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTE_ID", this.id) - .and("AB_KEYWORD_ENTRY.KEYID", pKeyId) - .cell(); - - if (attrValue) - return attrValue; - - if (this.defaultValue) - return this.defaultValue; - - throw new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword \"%1\" from container \"%2\"", [this.attribute, pKeyId, this.container])); - } - else if (this.defaultValue == undefined) - throw new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", [this.attribute, this.container])); - else - return this.defaultValue; -} - -/** - * get a SqlBuilder object for this keyword attribute. You can easily add additional conditions to it. - * - * @return {SqlBuilder} a SqlBuilder which contains a select for the entry-id's, joins to entry and attribute - * and conditions for the container and the attribute-name. - */ -KeywordAttribute.prototype.getSqlBuilderSelect = function() -{ - return newSelect("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID") - .from("AB_KEYWORD_ATTRIBUTERELATION") - .join("AB_KEYWORD_ENTRY", "AB_KEYWORD_ENTRYID = AB_KEYWORD_ENTRY_ID", "attrEntry") - .join("AB_KEYWORD_ATTRIBUTE", "AB_KEYWORD_ATTRIBUTEID = AB_KEYWORD_ATTRIBUTE_ID") - .where(["AB_KEYWORD_ENTRY", "CONTAINER", "attrEntry"], this.container) - .and("AB_KEYWORD_ATTRIBUTE.NAME", this.attribute) -} - -/** - * check if the Container can have the attribute. - * @return {Boolean} true if it exists, false if not - */ -KeywordAttribute.prototype.exists = function() -{ - return this.id != undefined && this.type != undefined && this.dbField != undefined; -} - ----- - -=== private functions === - - -Private functions would be possible but make everything much more complicate. -So just start your functions / methods name with a _ if you need private methods. - ---> do not use functions which start with a _ outside of the class! - -Add @ignore to the comment of those functions to prevent showing them in the generated jsdoc. - -== JS-Doc == - -<1> JS-Doc comment: http://usejsdoc.org/ -<2> jsdoc-blocks have to start with /** otherwise JSDoc cannot generate a documentation -<3> use the correct form for optional/required parameters: http://usejsdoc.org/tags-param.html -Optional parameter: [alias=the current alias] -Required parameter: alias -Classes: @class -[source,javascript] ----- -/** - * Description... - * ... - * - * @param {String} [pAlias=the current alias] the database alias where the condition shall be executed later (important for column types of preparedStatements) - * @example Here is an example - * @class - */ -function SqlCondition(pAlias) -{ -... -} ----- -<4> examples are useful on more complex functions -<5> constructor function; init properties (do not set functions ("methods") here!) -<6> add functions ("methods") to the prototype, they are available through the prototype chain - -And how to use it (normally you'd want to use preparedStatements but for the sake of an easy example it's a bit shorter here) -See also HowToSqlConditionLib.adoc for a full documentation. -[source,javascript] ----- -import("system.vars"); -import("system.result"); -import("Sql_lib"); -import("Comm_lib"); - -var cond = new SqlCondition(); - -var mediumIds = CommExtensions.getContextualMediumIds(); -if (mediumIds.length > 0) - cond.and("COMM.MEDIUM_ID in (" + mediumIds.join(", ") + ")"); - -var idVal = vars.get("$local.idvalue"); -if (uids.length > 0) - cond.and("COMM.COMMID = '" + idVal + "' "); - -result.string(cond.toString("COMM.OPTIONAL = 't'")); ----- - diff --git a/others/guide/instanceableLibExample.adoc b/others/guide/instanceableLibExample.adoc deleted file mode 100644 index 66dfc0a312e..00000000000 --- a/others/guide/instanceableLibExample.adoc +++ /dev/null @@ -1,62 +0,0 @@ -= Example for a instanceable Lib = -:toc2: left -:numbered: - -Remember to always change the comments to fit your class! + -Use speaking names for ALL variables, classes and functions! - -[source,javascript] ----- -import("..."); - -/** - * instanceable example Utility class; - * - * @param {String} pParam1 is for ... - * - * @example var myUtil = new UtilClass("-"); - * @class - */ -function UtilClass(pParam1) -{ - // here is the constructor. - // create class variables like this: - this.myVariable = pParam1; -} - -/** - * a public function - * - * @param {String} pParam1 is for ... - * @param {String} pParam2 is for ... - * - * @example var myResult = myUtil.myFunction("p1", "p2"); - * - * @return {String} a result - */ -UtilClass.prototype.myFunction = function(pParam1, pParam2) -{ - return this._privateStaticFunction1(pParam1, pParam2, this.myVariable); -} - -/** - * a private function - * - * @param {String} pParam1 is for ... - * @param {String} pParam2 is for ... - * @param {String} pParam3 is for ... - * - * @return {String} a result - * @ignore - */ -UtilClass.prototype._myPrivateFunction = function(pParam1, pParam2, pParam3) -{ - if(pParam1 && pParam2 && pParam3) - { - ... - return pParam1 + pParam3 + pParam2; - } - - return ""; -} ----- \ No newline at end of file diff --git a/others/guide/staticLibExample.adoc b/others/guide/staticLibExample.adoc deleted file mode 100644 index d48e2eba91f..00000000000 --- a/others/guide/staticLibExample.adoc +++ /dev/null @@ -1,57 +0,0 @@ -= Example for a static Lib = -:toc2: left -:numbered: - -Remember to always change the comments to fit your class! + -Use speaking names for ALL variables, classes and functions! - -[source,javascript] ----- -import("..."); - -/** - * a static Example Utility class - * - * Do not create an instance of this! - * @class - */ -function ExampleUtils() {} // leave this function empty! A constructor is not needed for static functions. - -/** - * a public static function - * - * @param {String} pParam1 is for ... - * @param {String} pParam2 is for ... - * - * @example var myResult = ExampleUtils.staticFunction1("p1", "p2"); - * - * @return {String} a result - */ -ExampleUtils.staticFunction1 = function(pParam1, pParam2) -{ - return this._privateStaticFunction1(pParam1, pParam2, "-") -} - -/** - * a private static function - * - * Do not use outside of ExampleUtils! - * - * @param {String} pParam1 is for ... - * @param {String} pParam2 is for ... - * @param {String} pParam3 is for ... - * - * @return {String} a result - * @ignore - */ -ExampleUtils._privateStaticFunction1 = function(pParam1, pParam2, pParam3) -{ - if(pParam1 && pParam2 && pParam3) - { - ... - return pParam1 + pParam3 + pParam2; - } - - return ""; -} ----- \ No newline at end of file diff --git a/others/guide/whichDatatype.adoc b/others/guide/whichDatatype.adoc deleted file mode 100644 index 092ae1bf6ae..00000000000 --- a/others/guide/whichDatatype.adoc +++ /dev/null @@ -1,105 +0,0 @@ -Overview over datatypes -======================= -:toc2: left -:numbered: - -This is a simple overview about when to to use which datatype. - -== Boolean == -=== Datatype === ----- -TINYINT ----- -=== Usage === -0 => false -1 => true - -Add nullable="false" constraint, because for boolean null makes no sense and complicates searches and validations. - -== Text == -Text should be saved as Unicode. For this prefix the datatype with a 'N' (there are some exceptions like the UUID) - -=== Big text === -For informations, descriptions, ... ----- -NCLOB ----- - -=== Small / Normal text === -For Names, ... - -You have to define the maximum length. ----- -NVARCHAR(50) ----- - -=== Fixed size text === -If you are sure that the length is always fixed and will not change. - -You have to define the length. ----- -NCHAR(5) ----- - -=== UUID's, standardized codes === -For them unicode is mostly not needed. Only use unicode here if you are sure, it is needed. - -For UUID's, standardized codes (language codes), ... - -You have to define the length. ----- -CHAR(5) ----- - -UUID needs length 36: ----- -CHAR(36) ----- - -=== Decimal numbers === -If precision and fixed decimals (Nachkommastellen) are needed, use DECIMAL. -For prices, ... ----- -NUMERIC(10, 2) ----- - -Else you can use double. ----- -DOUBLE ----- - -=== Integer numbers === -In normal cases just use INTEGER - -If you know that very big integers or only very small Integers are needed, you can also use - -Byte count may not be the same on all databases. - -8 Byte - ----- -BIGINT ----- - -4 Byte - ----- -INTEGER ----- - -2 Byte - ----- -SMALLINT ----- - -1 Byte - ----- -TINYINT ----- - -=== Binary data === ----- -BLOB ----- \ No newline at end of file diff --git a/process/Neon_lib/Neon_lib.aod b/process/Neon_lib/Neon_lib.aod index ace4a1e8ec1..6c99555616c 100644 --- a/process/Neon_lib/Neon_lib.aod +++ b/process/Neon_lib/Neon_lib.aod @@ -2,6 +2,7 @@ <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> <name>Neon_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/Neon_lib/documentation.adoc</documentation> <process>%aditoprj%/process/Neon_lib/process.js</process> <variants> <element>LIBRARY</element> diff --git a/others/guide/how to copy objects with subitems.adoc b/process/Neon_lib/documentation.adoc similarity index 100% rename from others/guide/how to copy objects with subitems.adoc rename to process/Neon_lib/documentation.adoc -- GitLab From df131c9a14b486f499ff34a7bee14412ede3cc19 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Fri, 27 Nov 2020 13:33:31 +0100 Subject: [PATCH 117/184] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20xRM][Tick?= =?UTF-8?q?etNr.:=201069286][Vertriebsprojekt=20-=20Projektteam=20-=20es?= =?UTF-8?q?=20k=C3=B6nnen=20keine=20Mitglieder=20hinzugef=C3=BCgt=20werden?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entity/Order_entity/Order_entity.aod | 6 + entity/Person_entity/Person_entity.aod | 407 +++++++++--------- .../children/contactid_param/valueProcess.js | 4 + .../entityfields/orders/documentation.adoc | 1 + entity/Person_entity/grantDeleteProcess.js | 2 +- 5 files changed, 223 insertions(+), 197 deletions(-) create mode 100644 entity/Person_entity/entityfields/orders/children/contactid_param/valueProcess.js create mode 100644 entity/Person_entity/entityfields/orders/documentation.adoc diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod index ae39a7c4364..2d2ea6554be 100644 --- a/entity/Order_entity/Order_entity.aod +++ b/entity/Order_entity/Order_entity.aod @@ -28,6 +28,12 @@ <fieldName>Orders</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>bfc738ad-8af3-4d2b-9ed5-b3ca2212bb9e</name> + <entityName>Person_entity</entityName> + <fieldName>Orders</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityField> diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index b642f05df01..0c5b240aad1 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -89,11 +89,6 @@ </entityFieldGroup> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -108,6 +103,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityField> <name>CONTACTID</name> @@ -118,14 +118,6 @@ <name>OrganisationRelated</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/organisationrelated/documentation.adoc</documentation> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>41952879-c2f0-411f-8ca1-36c38914a629</name> - <entityName>Organisation_entity</entityName> - <fieldName>Contact</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -144,6 +136,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>41952879-c2f0-411f-8ca1-36c38914a629</name> + <entityName>Organisation_entity</entityName> + <fieldName>Contact</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>PERSON_ID</name> @@ -161,11 +161,6 @@ </entityField> <entityConsumer> <name>PersAddresses</name> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>ContactAddresses</fieldName> - </dependency> <children> <entityParameter> <name>DefaultAddressId_param</name> @@ -185,14 +180,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/persaddresses/children/replacestandardaddress_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Communications</name> <dependency> <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>AllCommunications</fieldName> + <entityName>Address_entity</entityName> + <fieldName>ContactAddresses</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Communications</name> <children> <entityParameter> <name>ContactId_param</name> @@ -210,29 +205,29 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/communications/children/contactsmaincountry_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>AllCommunications</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Organisations</name> <selectionMode>SINGLE</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>WithPersonIdFilter</fieldName> - </dependency> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Contracts</name> <dependency> <name>dependency</name> - <entityName>Contract_entity</entityName> - <fieldName>Contracts</fieldName> + <entityName>Organisation_entity</entityName> + <fieldName>WithPersonIdFilter</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Contracts</name> <children> <entityParameter> <name>ContactId_param</name> @@ -241,16 +236,16 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Contract_entity</entityName> + <fieldName>Contracts</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Pricelists</name> <state>AUTO</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/pricelists/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Productprice_entity</entityName> - <fieldName>Productprices</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -259,6 +254,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Productprice_entity</entityName> + <fieldName>Productprices</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Genders</name> @@ -313,11 +313,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -332,6 +327,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/documents/children/disallowcreate_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> @@ -356,14 +356,6 @@ <name>Contact</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/contact/documentation.adoc</documentation> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>f925c8e6-b096-4093-bd39-c9cd30a6a71a</name> - <entityName>Lead_entity</entityName> - <fieldName>ContactId</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>OrgId_param</name> @@ -391,16 +383,19 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>f925c8e6-b096-4093-bd39-c9cd30a6a71a</name> + <entityName>Lead_entity</entityName> + <fieldName>ContactId</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>OrgAddresses</name> <state>READONLY</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/orgaddresses/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAddressesByContact</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -412,6 +407,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/orgaddresses/children/defaultaddressid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAddressesByContact</fieldName> + </dependency> </entityConsumer> <entityField> <name>STANDARD_EMAIL_COMMUNICATION</name> @@ -428,11 +428,6 @@ <entityConsumer> <name>PhoneCommunications</name> <description>Used for standard communication</description> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>PhoneCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -442,15 +437,15 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>EmailCommunications</name> - <description>Used for standard communication</description> <dependency> <name>dependency</name> <entityName>Communication_entity</entityName> - <fieldName>EmailCommunications</fieldName> + <fieldName>PhoneCommunications</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>EmailCommunications</name> + <description>Used for standard communication</description> <children> <entityParameter> <name>ContactId_param</name> @@ -460,6 +455,11 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>EmailCommunications</fieldName> + </dependency> </entityConsumer> <entityField> <name>ADDRESS_ID</name> @@ -471,11 +471,6 @@ </entityField> <entityConsumer> <name>KeywordGenders</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -483,6 +478,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -494,40 +494,35 @@ </entityConsumer> <entityConsumer> <name>Offers</name> - <dependency> - <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salutations</name> <dependency> <name>dependency</name> - <entityName>SalutationDistinct_entity</entityName> - <fieldName>Salutations</fieldName> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salutations</name> <children> <entityParameter> <name>Language_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/salutations/children/language_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>SalutationDistinct_entity</entityName> + <fieldName>Salutations</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Person_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -542,14 +537,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributes/children/showdsgvomessage_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>SalutationTitles</name> <dependency> <name>dependency</name> - <entityName>SalutationTitleDistinct_entity</entityName> - <fieldName>SalutationTitles</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>SalutationTitles</name> <children> <entityParameter> <name>Salutation_param</name> @@ -560,15 +555,15 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/salutationtitles/children/language_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>SalutationTitleDistinct_entity</entityName> + <fieldName>SalutationTitles</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Tasks</name> <state>EDITABLE</state> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -583,14 +578,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ObjectTrees</name> <dependency> <name>dependency</name> - <entityName>ObjectTree_entity</entityName> - <fieldName>TreeProvider</fieldName> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ObjectTrees</name> <children> <entityParameter> <name>ObjectIds_param</name> @@ -601,6 +596,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/objecttrees/children/objecttypes_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ObjectTree_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>STATUS</name> @@ -612,25 +612,20 @@ </entityField> <entityConsumer> <name>KeywordContactStates</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ContactAndOrganisationAddresses</name> <dependency> <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAndContactAddresses</fieldName> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ContactAndOrganisationAddresses</name> <children> <entityParameter> <name>ContactId_param</name> @@ -641,6 +636,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/contactandorganisationaddresses/children/organisationid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAndContactAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>DEPARTMENT</name> @@ -663,11 +663,6 @@ </entityField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> @@ -676,14 +671,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>OtherContacts</name> <dependency> <name>dependency</name> - <entityName>Contact_entity</entityName> - <fieldName>PersonsContactsExceptOwn</fieldName> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>OtherContacts</name> <children> <entityParameter> <name>OwnContactId_param</name> @@ -694,6 +689,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/othercontacts/children/languagekey_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Contact_entity</entityName> + <fieldName>PersonsContactsExceptOwn</fieldName> + </dependency> </entityConsumer> <entityField> <name>ORGANISATION_NAME</name> @@ -706,20 +706,6 @@ <entityProvider> <name>Contacts</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/contacts/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>c98da62f-d6b2-4ddb-9101-92e9a60abdfb</name> - <entityName>VisitPlanEmployeeWeek_entity</entityName> - <fieldName>Persons</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>f56b1378-138d-4f88-b9df-274adce9f90c</name> - <entityName>VisitPlanEntry_entity</entityName> - <fieldName>Persons</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -746,14 +732,23 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>c98da62f-d6b2-4ddb-9101-92e9a60abdfb</name> + <entityName>VisitPlanEmployeeWeek_entity</entityName> + <fieldName>Persons</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>f56b1378-138d-4f88-b9df-274adce9f90c</name> + <entityName>VisitPlanEntry_entity</entityName> + <fieldName>Persons</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>360DegreeObjects</name> - <dependency> - <name>dependency</name> - <entityName>360Degree_entity</entityName> - <fieldName>PersonObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -764,14 +759,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/360degreeobjects/children/objectstatus_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> <dependency> <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <entityName>360Degree_entity</entityName> + <fieldName>PersonObjects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -786,6 +781,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributetree/children/showdsgvomessage_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>DATE_NEW</name> @@ -845,40 +845,35 @@ </entityParameter> <entityConsumer> <name>CommRestrictions</name> - <dependency> - <name>dependency</name> - <entityName>CommRestriction_Entity</entityName> - <fieldName>CommRestrictions</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/commrestrictions/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CommRestriction_Entity</entityName> + <fieldName>CommRestrictions</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>DSGVOEntries</name> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/dsgvoentries/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>DSGVO_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/dsgvoentries/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Appointments</name> <dependency> <name>dependency</name> - <entityName>Appointment_entity</entityName> - <fieldName>LinkedAppointments</fieldName> + <entityName>DSGVO_entity</entityName> + <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Appointments</name> <children> <entityParameter> <name>LinkedObjectId_param</name> @@ -889,6 +884,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Appointment_entity</entityName> + <fieldName>LinkedAppointments</fieldName> + </dependency> </entityConsumer> <entityField> <name>OpenTasks</name> @@ -925,11 +925,6 @@ </entityField> <entityConsumer> <name>SelfDuplicatesUncached</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>SelfDuplicates</fieldName> - </dependency> <children> <entityParameter> <name>DuplicateActionsControl_param</name> @@ -948,6 +943,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/selfduplicatesuncached/children/excludedcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>SelfDuplicates</fieldName> + </dependency> </entityConsumer> <entityField> <name>LEAD_LEADID</name> @@ -978,14 +978,6 @@ <name>QuickEntryContacts</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/quickentrycontacts/documentation.adoc</documentation> <titlePlural>Additional Contacts</titlePlural> - <dependencies> - <entityDependency> - <name>6d137850-63ba-4be0-9ca5-1464e71d4f77</name> - <entityName>QuickEntry_entity</entityName> - <fieldName>Contacts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -1008,6 +1000,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>6d137850-63ba-4be0-9ca5-1464e71d4f77</name> + <entityName>QuickEntry_entity</entityName> + <fieldName>Contacts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityActionField> <name>openEditDefaultsView</name> @@ -1254,14 +1254,6 @@ <entityProvider> <name>IdFilteredActiveContacts</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/idfilteredactivecontacts/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>511f3e4c-7493-4a31-a136-0ba80ba2ec85</name> - <entityName>Member_entity</entityName> - <fieldName>Contacts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ExcludedContactIds_param</name> @@ -1296,6 +1288,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>511f3e4c-7493-4a31-a136-0ba80ba2ec85</name> + <entityName>Member_entity</entityName> + <fieldName>Contacts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>COUNT</name> @@ -1330,29 +1330,21 @@ <name>Districts</name> <state>INVISIBLE</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/districts/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>District_entity</entityName> - <fieldName>ResponsibleDistricts</fieldName> - </dependency> <children> <entityParameter> <name>DistrictsByContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districts/children/districtsbycontactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>District_entity</entityName> + <fieldName>ResponsibleDistricts</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>NonselfDuplicates</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/nonselfduplicates/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>3a4352e2-9686-4c52-9d01-dbfad8c68ea7</name> - <entityName>Duplicates_entity</entityName> - <fieldName>DuplicatePersonsConsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -1375,22 +1367,45 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>3a4352e2-9686-4c52-9d01-dbfad8c68ea7</name> + <entityName>Duplicates_entity</entityName> + <fieldName>DuplicatePersonsConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>DistrictResponsibles</name> <state>INVISIBLE</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/stateProcess.js</stateProcess> + <children> + <entityParameter> + <name>OrgUid_param</name> + <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/children/orguid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependency> <name>dependency</name> <entityName>DistrictResponsible_entity</entityName> <fieldName>OrganisationResponsibles</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Orders</name> + <documentation>%aditoprj%/entity/Person_entity/entityfields/orders/documentation.adoc</documentation> <children> <entityParameter> - <name>OrgUid_param</name> - <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/children/orguid_param/valueProcess.js</valueProcess> + <name>ContactId_param</name> + <valueProcess>%aditoprj%/entity/Person_entity/entityfields/orders/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Order_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> </entityFields> <recordContainers> diff --git a/entity/Person_entity/entityfields/orders/children/contactid_param/valueProcess.js b/entity/Person_entity/entityfields/orders/children/contactid_param/valueProcess.js new file mode 100644 index 00000000000..7b6137b4d10 --- /dev/null +++ b/entity/Person_entity/entityfields/orders/children/contactid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.CONTACTID")); \ No newline at end of file diff --git a/entity/Person_entity/entityfields/orders/documentation.adoc b/entity/Person_entity/entityfields/orders/documentation.adoc new file mode 100644 index 00000000000..cadb57b42a5 --- /dev/null +++ b/entity/Person_entity/entityfields/orders/documentation.adoc @@ -0,0 +1 @@ +Consumer for loading a contacts related Orders. This is for example used to verify if the Person-row can be deleted. \ No newline at end of file diff --git a/entity/Person_entity/grantDeleteProcess.js b/entity/Person_entity/grantDeleteProcess.js index 876b00bdb6a..8ef35b97760 100644 --- a/entity/Person_entity/grantDeleteProcess.js +++ b/entity/Person_entity/grantDeleteProcess.js @@ -29,7 +29,7 @@ if(personCount == 1) .andNoEntityRows("Contract_entity", "Contracts", {ContactId_param : contactId}) //Contracts .andNoEntityRows("ObjectTree_entity", "TreeProvider", {ObjectIds_param : JSON.stringify([contactId, vars.get("$field.PERSON_ID")]), ObjectTypes_param : JSON.stringify([currentContext, "PrivatePerson"])}) .andNoEntityRows("CampaignParticipant_entity", "CampaignParticipantsProvider", {ContactId_param : contactId}) - .andNoEntityRows("Order_entity", "OrderProvider", {ContactId_param : contactId}) + .andNoEntityRows("Order_entity", "Orders", {ContactId_param : contactId}) .validate(); } else if (personCount == 0) //special case in QuickEntry where it should be possible to remove a new Person that is not saved in the db yet -- GitLab From 0c26711d5501b639f9aaa5e7cd83a1c546cf8325 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Fri, 27 Nov 2020 13:36:49 +0100 Subject: [PATCH 118/184] [Projekt: Entwicklung - xRM][TicketNr.: 1066209][weiteres Vorgehen nach Dublettenerkennung bei Firmenanlage] --- entity/Organisation_entity/Organisation_entity.aod | 7 +++++++ entity/Person_entity/Person_entity.aod | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index 6d472e1ac8a..dbf97ba2d22 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -1053,6 +1053,8 @@ <name>IntegrateSelectedIntoCurrentAction</name> <title>Integrate selected into current contact</title> <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isObjectAction v="false" /> <isSelectionAction v="true" /> <iconId>NEON:IMPORT</iconId> <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/stateProcess.js</stateProcess> @@ -1061,6 +1063,8 @@ <name>IntegrateCurrentIntoSelectedAction</name> <title>Integrate current into selected contact</title> <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/integratecurrentintoselectedaction/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isObjectAction v="false" /> <isSelectionAction v="true" /> <iconId>NEON:EXPORT</iconId> <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/integratecurrentintoselectedaction/stateProcess.js</stateProcess> @@ -1069,6 +1073,8 @@ <name>IgnoreDuplicate</name> <title>Ignore Duplicate</title> <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/ignoreduplicate/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isObjectAction v="false" /> <isSelectionAction v="true" /> <iconId>VAADIN:CLOSE</iconId> <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/ignoreduplicate/stateProcess.js</stateProcess> @@ -1077,6 +1083,7 @@ <name>IgnoreWholeCluster</name> <title>Ignore whole Cluster</title> <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/ignorewholecluster/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> <iconId>VAADIN:CLOSE</iconId> <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/ignorewholecluster/stateProcess.js</stateProcess> </entityActionField> diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index 0c5b240aad1..92985df6633 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -1120,6 +1120,8 @@ <name>IntegrateSelectedIntoCurrentAction</name> <title>Integrate selected into current contact</title> <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isObjectAction v="false" /> <isSelectionAction v="true" /> <iconId>NEON:IMPORT</iconId> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/stateProcess.js</stateProcess> @@ -1128,6 +1130,8 @@ <name>IntegrateCurrentIntoSelectedAction</name> <title>Integrate current into selected contact</title> <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/integratecurrentintoselectedaction/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isObjectAction v="false" /> <isSelectionAction v="true" /> <iconId>NEON:EXPORT</iconId> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/integratecurrentintoselectedaction/stateProcess.js</stateProcess> @@ -1136,6 +1140,8 @@ <name>IgnoreDuplicate</name> <title>Ignore Duplicate</title> <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/ignoreduplicate/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isObjectAction v="false" /> <isSelectionAction v="true" /> <iconId>VAADIN:CLOSE</iconId> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/ignoreduplicate/stateProcess.js</stateProcess> @@ -1144,6 +1150,7 @@ <name>IgnoreWholeCluster</name> <title>Ignore whole cluster</title> <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/ignorewholecluster/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> <iconId>VAADIN:CLOSE</iconId> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/ignorewholecluster/stateProcess.js</stateProcess> </entityActionField> -- GitLab From fb01665aab3c74960c8b66493c230243f5788367 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Fri, 27 Nov 2020 13:46:40 +0100 Subject: [PATCH 119/184] Organisation: fix: Indexquery did not work --- entity/Organisation_entity/recordcontainers/index/query.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entity/Organisation_entity/recordcontainers/index/query.js b/entity/Organisation_entity/recordcontainers/index/query.js index ee0f4bb6cea..7ccddd82379 100644 --- a/entity/Organisation_entity/recordcontainers/index/query.js +++ b/entity/Organisation_entity/recordcontainers/index/query.js @@ -39,7 +39,7 @@ var querySelect = newSelect([ "ADDRESS.CITY", "standardEmail.ADDR", "standardPhone.ADDR", - sqlHelper.conconcatWithSeparatorcat([sqlHelper.concatWithSeparator(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO"]) + sqlHelper.concatWithSeparatorcat([sqlHelper.concatWithSeparator(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO"]) ,sqlHelper.concatWithSeparator(["standardAddress.COUNTRY", "standardAddress.ZIP", "standardAddress.CITY"]) ], " - ") ]) -- GitLab From 66f8aac045ff9bad051b8f9a4da4a747cb38e063 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Fri, 27 Nov 2020 14:01:21 +0100 Subject: [PATCH 120/184] Organisation: fix: Indexquery did not work 2 --- entity/Organisation_entity/recordcontainers/index/query.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entity/Organisation_entity/recordcontainers/index/query.js b/entity/Organisation_entity/recordcontainers/index/query.js index 7ccddd82379..e26250598ed 100644 --- a/entity/Organisation_entity/recordcontainers/index/query.js +++ b/entity/Organisation_entity/recordcontainers/index/query.js @@ -39,7 +39,7 @@ var querySelect = newSelect([ "ADDRESS.CITY", "standardEmail.ADDR", "standardPhone.ADDR", - sqlHelper.concatWithSeparatorcat([sqlHelper.concatWithSeparator(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO"]) + sqlHelper.concatWithSeparator([sqlHelper.concatWithSeparator(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO"]) ,sqlHelper.concatWithSeparator(["standardAddress.COUNTRY", "standardAddress.ZIP", "standardAddress.CITY"]) ], " - ") ]) -- GitLab From 14e1f79d1ccc4a71b33503e1dd18a0ae1a146bfb Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Fri, 27 Nov 2020 14:18:51 +0100 Subject: [PATCH 121/184] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20xRM][Tick?= =?UTF-8?q?etNr.:=201068165][Kontakt=20kann=20nicht=20gel=C3=B6scht=20werd?= =?UTF-8?q?en]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entity/Person_entity/grantDeleteProcess.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entity/Person_entity/grantDeleteProcess.js b/entity/Person_entity/grantDeleteProcess.js index 8ef35b97760..36866c88c8b 100644 --- a/entity/Person_entity/grantDeleteProcess.js +++ b/entity/Person_entity/grantDeleteProcess.js @@ -29,7 +29,7 @@ if(personCount == 1) .andNoEntityRows("Contract_entity", "Contracts", {ContactId_param : contactId}) //Contracts .andNoEntityRows("ObjectTree_entity", "TreeProvider", {ObjectIds_param : JSON.stringify([contactId, vars.get("$field.PERSON_ID")]), ObjectTypes_param : JSON.stringify([currentContext, "PrivatePerson"])}) .andNoEntityRows("CampaignParticipant_entity", "CampaignParticipantsProvider", {ContactId_param : contactId}) - .andNoEntityRows("Order_entity", "Orders", {ContactId_param : contactId}) + .andNoEntityRows("Order_entity", "#PROVIDER", {ContactId_param : contactId}) .validate(); } else if (personCount == 0) //special case in QuickEntry where it should be possible to remove a new Person that is not saved in the db yet -- GitLab From 69313e3efe8b3653aad3cc482ed57754595433d9 Mon Sep 17 00:00:00 2001 From: Benjamin Ulrich <b.ulrich@adito.de> Date: Fri, 27 Nov 2020 14:08:46 +0000 Subject: [PATCH 122/184] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20xRM][Tick?= =?UTF-8?q?etNr.:=201069300][Klassifizierung=20update=20wird=20nicht=20gep?= =?UTF-8?q?aged=20und=20"-"=20wird=20gespeichert=20f=C3=BCr=20Firmen=20ohn?= =?UTF-8?q?e=20Klassifizierungen]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recordcontainers/jdito/contentProcess.js | 9 ++++++- .../recordcontainers/db/onDBInsert.js | 4 --- .../recordcontainers/db/onDBInsert.js | 6 ----- process/ClassificationFilter_lib/process.js | 18 ++++++++++--- .../process.js | 27 +++++++------------ 5 files changed, 32 insertions(+), 32 deletions(-) diff --git a/entity/Classification_entity/recordcontainers/jdito/contentProcess.js b/entity/Classification_entity/recordcontainers/jdito/contentProcess.js index 78879bee925..9af7e2ab58b 100644 --- a/entity/Classification_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Classification_entity/recordcontainers/jdito/contentProcess.js @@ -161,5 +161,12 @@ function _updateScore() var values = [calculatedClassification]; if(storedClassification[1] != undefined && calculatedClassification != storedClassification[1]) //Update the stored classification if the freshly calculated one differs - newWhere("CLASSIFICATIONSTORAGE.CLASSIFICATIONSTORAGEID", storedClassification[0]).updateData(true, table, columns, null, values); + { + newWhere("CLASSIFICATIONSTORAGE.CLASSIFICATIONSTORAGEID", storedClassification[0]).updateData(true, table, columns, null, values); + } + else if(storedClassification[1] == undefined) //insert if no classificationstorage exists yet + { + db.insertData(table, ["CLASSIFICATIONSTORAGEID", "CLASSIFICATIONVALUE", "OBJECT_ROWID", "OBJECT_TYPE"], null, + [util.getNewUUID(), calculatedClassification, objectRowIdParam, objectTypeParam]) + } } \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/onDBInsert.js b/entity/Organisation_entity/recordcontainers/db/onDBInsert.js index 434601a60b8..87c54eb133a 100644 --- a/entity/Organisation_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Organisation_entity/recordcontainers/db/onDBInsert.js @@ -1,13 +1,9 @@ import("system.vars"); -import("Classification_lib"); import("Workflow_lib"); - var uid = vars.get("$sys.uid"); var contextname = vars.get("$sys.currentcontextname"); -ClassificationUtils.insertEmptyClassification(uid, contextname); - //start the execution in afterOperatingState, because here the dataset is not yet inserted vars.set("$context.workflowQueue", {}); WorkflowSignalSender.inserted(); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js b/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js index 38fe9698031..ac292d8633e 100644 --- a/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js @@ -1,4 +1,3 @@ -import("Classification_lib"); import("Workflow_lib"); import("Context_lib"); import("Attribute_lib"); @@ -17,11 +16,6 @@ if (vars.get("$field.PROJECTTYPE")) .insertAttribute(vars.get("$field.PROJECTTYPE"), true); } -var salesprojectId = vars.get("$field.SALESPROJECTID"); -var contextname = vars.get("$sys.currentcontextname"); - -ClassificationUtils.insertEmptyClassification(salesprojectId, contextname); - //start the execution in afterOperatingState, because here the dataset is not yet inserted vars.set("$context.workflowQueue", {}); WorkflowSignalSender.inserted(); \ No newline at end of file diff --git a/process/ClassificationFilter_lib/process.js b/process/ClassificationFilter_lib/process.js index e2200e6e6e8..bf593e70773 100644 --- a/process/ClassificationFilter_lib/process.js +++ b/process/ClassificationFilter_lib/process.js @@ -239,8 +239,15 @@ ClassificationGroupFilterUtils.getFilterFields = function(pObjectType) classificationGroups.forEach(function(classificationGroup, idx){ var classificationGroupId = classificationGroup["CLASSIFICATIONGROUPID"]; var classificationGroupTitle = classificationGroup["#CONTENTTITLE"]; - - var representingSqlExpression = sqlHelper.substring("CLASSIFICATIONVALUE", idx+1, 1); + + //"case when" needed since we want to group both the ones that have no classification for said classificationgroup ("-") + //and the ones that have null as the value (since not all datasets have a CLASSIFICATIONSTORAGE dataset) together + // since both don't have an classification for that group + var representingSqlExpression = SqlBuilder.caseWhen(newWhere("CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE is null")) + .thenString("-") + .elseValue(sqlHelper.substring("CLASSIFICATIONVALUE", idx+1, 1)) + .toString(); + var name = ClassificationGroupFilterNameCoder.encode(classificationGroupId, representingSqlExpression); res.push({ name: name, @@ -318,7 +325,12 @@ ClassificationGroupFilterUtils.getFilterCondition = function(pObjectType, pFilte { var decodedFilterName = ClassificationGroupFilterNameCoder.decode(pFilterName); var condition = StringUtils.replaceAll(pCondition, pColumnPlaceholder, decodedFilterName.representingSqlExpression); - + + //"case when" needed since we want to filter both the ones that have no classification for said classificationgroup ("-") + //and the ones that have null as the value (since not all datasets have a CLASSIFICATIONSTORAGE dataset) the same way + // since both don't have an classification for that group + if(pOperatorName == "IS NULL") + condition += " OR " + decodedFilterName.representingSqlExpression +"='-'"; return condition; }; diff --git a/process/updateClassifications_serverProcess/process.js b/process/updateClassifications_serverProcess/process.js index 22f452a82db..5520e0170e2 100644 --- a/process/updateClassifications_serverProcess/process.js +++ b/process/updateClassifications_serverProcess/process.js @@ -111,23 +111,7 @@ for (i = 0; i < objectTypes.length; i++) //update for each object_type } //this is the "upgrade" part of this process: - //first: insert default values into the records that have no entries - idsWithoutStoredClassification = newSelect(currentObjectColumn) - .from(currentObjectTable) - .where(currentObjectColumn, newSelect("CLASSIFICATIONSTORAGE.OBJECT_ROWID").from("CLASSIFICATIONSTORAGE").where("CLASSIFICATIONSTORAGE.OBJECT_TYPE", objectTypes[i]), SqlBuilder.NOT_IN()) - - if(isOrganisation) - { - idsWithoutStoredClassification.and("CONTACT.PERSON_ID is null") - .and("CONTACT.ORGANISATION_ID", OrgUtils.getPrivateOrganisationId(), SqlBuilder.NOT_EQUAL()); - } - - idsWithoutStoredClassification = idsWithoutStoredClassification.arrayColumn(); - - if(idsWithoutStoredClassification) - ClassificationUtils.insertEmptyClassification(idsWithoutStoredClassification, objectTypes[i]); - - //second: update all entries with correct classificaiton values + //update all entries with correct classificaiton values //all groups of the objectType in the correct order, needed later to also add the "-" gradings if no classificationType has been set under that group orderedGroups = newSelect("distinct CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, CLASSIFICATIONGROUP.SORTING") @@ -206,7 +190,14 @@ for (i = 0; i < objectTypes.length; i++) //update for each object_type cond = newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", row_Id) .and("CLASSIFICATIONSTORAGE.OBJECT_TYPE", objectTypes[i]) .and("CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE", chainedGrading, SqlBuilder.NOT_EQUAL()); - var count = Number(cond.updateData(true, table, column, null, [chainedGrading])); + if(new RegExp("^-+$").test(chainedGrading) == true || chainedGrading == "-") + { + count = newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", row_Id).deleteData(true, "CLASSIFICATIONSTORAGE"); + } + else + { + count = Number(cond.updateData(true, table, column, null, [chainedGrading])); + } if (count > 0) { outputInformation[objectTypes[i]].updatedElements += count; -- GitLab From 1ea4108e5caabaf53ae95b3834e8fe312fb40e2c Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 27 Nov 2020 16:15:33 +0100 Subject: [PATCH 123/184] Newsletter workflow --- .../Data_alias/basic/2020.2.2/changelog.xml | 1 + .../2020.2.2/insert_newsletterAttribute.xml | 33 +++++++++++++++++ .../synchronizedocuments/onActionProcess.js | 2 +- .../MSTeamsDocument_entity.aod | 35 ++++++++----------- .../importdocuments/onActionProcess.js} | 8 ++--- .../recordcontainers/jdito/contentProcess.js | 9 ----- process/Workflow_lib/process.js | 10 ++++-- 7 files changed, 61 insertions(+), 37 deletions(-) create mode 100644 .liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml rename entity/MSTeamsDocument_entity/{recordcontainers/jdito/onInsert.js => entityfields/importdocuments/onActionProcess.js} (75%) delete mode 100644 entity/MSTeamsDocument_entity/recordcontainers/jdito/contentProcess.js diff --git a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml index 052c3a8db2d..7f5016480e9 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml @@ -5,4 +5,5 @@ <include relativeToChangelogFile="true" file="Knowledgemanagement/changelog_knowledgeManagement.xml"/> <include relativeToChangelogFile="true" file="insert_employeeCountAttribute.xml"/> <include relativeToChangelogFile="true" file="MSTeams/changelog.xml"/> + <include relativeToChangelogFile="true" file="insert_newsletterAttribute.xml"/> </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml b/.liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml new file mode 100644 index 00000000000..af877f23248 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml @@ -0,0 +1,33 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="s.listl" id="4b285b34-29bc-4446-8d95-37cfcff7bd58"> + <insert tableName="AB_ATTRIBUTE"> + <column name="AB_ATTRIBUTEID" value="cf985906-b4f9-443e-9d7b-edbeb60ca463"/> + <column name="ATTRIBUTE_NAME" value="Marketing"/> + <column name="ATTRIBUTE_TYPE" value="GROUP"/> + <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> + </insert> + <insert tableName="AB_ATTRIBUTE"> + <column name="AB_ATTRIBUTEID" value="e196975c-6cfd-46dc-9cb2-053893ec2faa"/> + <column name="ATTRIBUTE_PARENT_ID" value="cf985906-b4f9-443e-9d7b-edbeb60ca463"/> + <column name="ATTRIBUTE_NAME" value="Newsletter"/> + <column name="ATTRIBUTE_TYPE" value="BOOLEAN"/> + <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> + <column name="SORTING" valueNumeric="0"/> + </insert> + <insert tableName="AB_ATTRIBUTEUSAGE"> + <column name="AB_ATTRIBUTEUSAGEID" value="e9842896-628c-4c80-a0ef-811f35b8ae51"/> + <column name="AB_ATTRIBUTE_ID" value="cf985906-b4f9-443e-9d7b-edbeb60ca463"/> + <column name="OBJECT_TYPE" value="Person"/> + <column name="MAX_COUNT" valueNumeric="1"/> + </insert> + <insert tableName="AB_ATTRIBUTEUSAGE"> + <column name="AB_ATTRIBUTEUSAGEID" value="fc594860-76c5-4acb-9758-44ea1a1db5d0"/> + <column name="AB_ATTRIBUTE_ID" value="e196975c-6cfd-46dc-9cb2-053893ec2faa"/> + <column name="OBJECT_TYPE" value="Person"/> + <column name="MAX_COUNT" valueNumeric="1"/> + </insert> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js index 2d871492297..841ff10b184 100644 --- a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js +++ b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js @@ -1,7 +1,7 @@ import("system.neon"); import("system.vars"); -neon.openContext("MSTTeamDocument", null, null, neon.OPERATINGSTATE_NEW, { +neon.openContext("MSTTeamsDocument", "MSTeamsDocumentEdit_view", null, neon.OPERATINGSTATE_VIEW, { "MSTTeamId_param" : vars.get("$param.MSTTeamId_param"), "ObjectRowId_param" : vars.get("$param.AssignmentRowId_param"), "AssignmentName_param" : vars.get("$param.AssignmentName_param"), diff --git a/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod index 9929c440ae7..ac694130ae5 100644 --- a/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod +++ b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod @@ -4,7 +4,6 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/MSTeamsDocument_entity/documentation.adoc</documentation> <siblings /> - <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> @@ -14,12 +13,14 @@ <title>Documents</title> <dropDownProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/documents/dropDownProcess.js</dropDownProcess> <selectionMode>MULTI</selectionMode> + <state>EDITABLE</state> </entityField> <entityField> <name>CHANNEL</name> <title>Channel</title> <consumer>Channels</consumer> <mandatory v="true" /> + <state>EDITABLE</state> </entityField> <entityParameter> <name>ObjectRowId_param</name> @@ -38,17 +39,17 @@ </entityParameter> <entityConsumer> <name>Channels</name> - <dependency> - <name>dependency</name> - <entityName>MSTeamsChannel_entity</entityName> - <fieldName>ChannelsByName</fieldName> - </dependency> <children> <entityParameter> <name>TeamId_param</name> <valueProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>MSTeamsChannel_entity</entityName> + <fieldName>ChannelsByName</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>MSTTeamId_param</name> @@ -59,21 +60,15 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityActionField> + <name>importDocuments</name> + <onActionProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js</onActionProcess> + </entityActionField> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/MSTeamsDocument_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTeamsDocument_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>DOCUMENTS.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>dataless</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/MSTeamsDocument_entity/recordcontainers/jdito/onInsert.js b/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js similarity index 75% rename from entity/MSTeamsDocument_entity/recordcontainers/jdito/onInsert.js rename to entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js index d97ac448ef7..7237c6c01de 100644 --- a/entity/MSTeamsDocument_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js @@ -9,7 +9,7 @@ import("system.logging"); import("system.neon"); var rowData = vars.get("$local.rowdata"); -var documents = text.decodeMS(rowData["DOCUMENTS.value"]); +var documents = text.decodeMS(vars.get("$field.DOCUMENTS")); documents.forEach(function (document) { @@ -20,8 +20,8 @@ documents.forEach(function (document) var assignmentName = vars.get("$param.AssignmentName_param"); var assignmentRowId = vars.get("$param.ObjectRowId_param"); var alias = SqlUtils.getBinariesAlias(); - - var uid = db.insertBinary(assignmentTable, assignmentName, assignmentRowId, null, - file, documentName, "", "", alias, util.getNewUUID()); + + db.insertBinary(assignmentTable, assignmentName, assignmentRowId, null, + file, documentName, "", "", alias, util.getNewUUID()); }); diff --git a/entity/MSTeamsDocument_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsDocument_entity/recordcontainers/jdito/contentProcess.js deleted file mode 100644 index af9ece7caa7..00000000000 --- a/entity/MSTeamsDocument_entity/recordcontainers/jdito/contentProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.result"); -import("system.vars"); - -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; -if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id, ""];}); - -result.object(rows); \ No newline at end of file diff --git a/process/Workflow_lib/process.js b/process/Workflow_lib/process.js index 05730801196..375b30cc066 100644 --- a/process/Workflow_lib/process.js +++ b/process/Workflow_lib/process.js @@ -633,7 +633,7 @@ WorkflowLinkActions.types.RECEIVE_TASK.execute = function (pParameters) { if (!pParameters.processInstanceId) return; - workflow.triggerReceiveTask(pParameters.processInstanceId, pParameters.receiveTask || null); + workflow.triggerReceiveTask(pParameters.processInstanceId, pParameters.receiveTask || null, pParameters.variables || null); } /** @@ -643,7 +643,7 @@ WorkflowLinkActions.types.SIGNAL.execute = function (pParameters) { if (!pParameters.signal) return; - workflow.signalEventReceived(pParameters.signal); + workflow.signalEventReceived(pParameters.signal, pParameters.variables || null); } /** @@ -653,7 +653,7 @@ WorkflowLinkActions.types.MESSAGE.execute = function (pParameters) { if (!pParameters.processInstanceId || !pParameters.message) return; - workflow.messageEventReceived(pParameters.message, pParameters.processInstanceId); + workflow.messageEventReceived(pParameters.message, pParameters.processInstanceId, pParameters.variables || null); } /** @@ -679,6 +679,8 @@ WorkflowLinkActions.encodeAction = function (pType, pLink, pParams) actionObj.ms = pParams.message; if (pParams.receiveTask) actionObj.re = pParams.receiveTask; + if (pParams.variables) + actionObj.v = pParams.variables; actionObj.ty = pType; actionObj.ln = pLink; @@ -721,6 +723,8 @@ WorkflowLinkActions.parseAction = function (pEncodedAction) actionParams.message = parsedAction.ms; if (parsedAction.re) actionParams.receiveTask = parsedAction.re; + if (parsedAction.v) + actionParams.variables = parsedAction.v; return { type: parsedAction.ty || null, -- GitLab From d07fcdaa113e48934f42715ee39c14077d1508a3 Mon Sep 17 00:00:00 2001 From: Dianne Nowack <d.nowack@adito.de> Date: Mon, 30 Nov 2020 09:57:49 +0000 Subject: [PATCH 124/184] Update valueProcess.js --- entity/Task_entity/entityfields/priority/valueProcess.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/entity/Task_entity/entityfields/priority/valueProcess.js b/entity/Task_entity/entityfields/priority/valueProcess.js index 0639e8287e8..ee23436dbb5 100644 --- a/entity/Task_entity/entityfields/priority/valueProcess.js +++ b/entity/Task_entity/entityfields/priority/valueProcess.js @@ -4,5 +4,7 @@ import("system.neon"); import("system.vars"); import("KeywordRegistry_basic"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) +{ result.string($KeywordRegistry.taskPriority$low()); +} \ No newline at end of file -- GitLab From a55b9500e9ee6d7b40cb7ba0f3e3cd0f849da59e Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Mon, 30 Nov 2020 13:27:56 +0100 Subject: [PATCH 125/184] Fix several ScanServices --- .../SalesprojectMilestone_entity.aod | 34 ++-- .../SalesprojectSource_entity.aod | 16 +- .../_____LANGUAGE_EXTRA.aod | 183 ++++++++++++++++++ .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 180 +++++++++++++++++ .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 183 ++++++++++++++++++ 5 files changed, 566 insertions(+), 30 deletions(-) diff --git a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod index c420a5c09b4..8da44d60205 100644 --- a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod +++ b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod @@ -60,10 +60,6 @@ <name>SalesprojectMilestones</name> <recordContainer>db</recordContainer> <children> - <entityParameter> - <name>ObjectRowId_param</name> - <expose v="true" /> - </entityParameter> <entityParameter> <name>Kind_param</name> <expose v="false" /> @@ -77,17 +73,17 @@ </entityField> <entityConsumer> <name>Keywords</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>Kind_param</name> @@ -96,6 +92,12 @@ </entityParameter> <entityProvider> <name>StateMilestones</name> + <children> + <entityParameter> + <name>Kind_param</name> + <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/statemilestones/children/kind_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependencies> <entityDependency> <name>f705534d-dcf3-4049-a1ea-3f75e93aa2f0</name> @@ -104,15 +106,15 @@ <isConsumer v="false" /> </entityDependency> </dependencies> + </entityProvider> + <entityProvider> + <name>PhaseMilestones</name> <children> <entityParameter> <name>Kind_param</name> - <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/statemilestones/children/kind_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/phasemilestones/children/kind_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityProvider> - <entityProvider> - <name>PhaseMilestones</name> <dependencies> <entityDependency> <name>b132527b-990c-416a-b2d6-ddbe6f4397e2</name> @@ -121,12 +123,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Kind_param</name> - <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/phasemilestones/children/kind_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>SalesProjectPhases</name> diff --git a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod index 7e2e4769fec..4effdbc2cea 100644 --- a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod +++ b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod @@ -22,12 +22,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ObjectRowId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>SalesprojectId_param</name> @@ -61,11 +55,6 @@ </entityField> <entityConsumer> <name>KeywordSources</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -73,6 +62,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>INFO</name> diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 38af80580f7..6e143f7c08f 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -7383,6 +7383,189 @@ <entry> <key>Channels</key> </entry> + <entry> + <key>Private</key> + </entry> + <entry> + <key>Rechnungsbetrag</key> + </entry> + <entry> + <key>[TEST] Sql_lib - SqlMaskingUtils</key> + </entry> + <entry> + <key>Knowledgebase</key> + </entry> + <entry> + <key>Marketing workflow</key> + </entry> + <entry> + <key>Token</key> + </entry> + <entry> + <key>Edited by</key> + </entry> + <entry> + <key>Sales Project Analyses</key> + </entry> + <entry> + <key>Sales Project Id</key> + </entry> + <entry> + <key>Sales Project Convertion Rates</key> + </entry> + <entry> + <key>Set Campaign Step</key> + </entry> + <entry> + <key>Member</key> + </entry> + <entry> + <key>Tags</key> + </entry> + <entry> + <key>[TEST] Sql_lib - SqlBuilder</key> + </entry> + <entry> + <key>Feed</key> + </entry> + <entry> + <key>[TEST] KeywordAttribute_lib</key> + </entry> + <entry> + <key>Messages</key> + </entry> + <entry> + <key>Channel Name</key> + </entry> + <entry> + <key>Sales Project Phases</key> + </entry> + <entry> + <key>Start workflows</key> + </entry> + <entry> + <key>edited</key> + </entry> + <entry> + <key>Channel</key> + </entry> + <entry> + <key>Import from Teams</key> + </entry> + <entry> + <key>Invitation</key> + </entry> + <entry> + <key>send as mail</key> + </entry> + <entry> + <key>User token</key> + </entry> + <entry> + <key>Team name</key> + </entry> + <entry> + <key>Knowledge Roles</key> + </entry> + <entry> + <key>Valid</key> + </entry> + <entry> + <key>Audit Logs</key> + </entry> + <entry> + <key>Editorial</key> + </entry> + <entry> + <key>KnowledgeRoles</key> + </entry> + <entry> + <key>Remove from Campaign</key> + </entry> + <entry> + <key>Message</key> + </entry> + <entry> + <key>Add members</key> + </entry> + <entry> + <key>[TEST] .All</key> + </entry> + <entry> + <key>Newsfeed (Complete Article)</key> + </entry> + <entry> + <key>Notification</key> + </entry> + <entry> + <key>Load older messages</key> + </entry> + <entry> + <key>Newsletter</key> + </entry> + <entry> + <key>Adds an answer to the selected discussion</key> + </entry> + <entry> + <key>LinkedIn (Person)</key> + </entry> + <entry> + <key>Newsfeed Timeline</key> + </entry> + <entry> + <key>MS Teams</key> + </entry> + <entry> + <key>User tokens</key> + </entry> + <entry> + <key>[TEST] Keyword_lib</key> + </entry> + <entry> + <key>News</key> + </entry> + <entry> + <key>Sales Projects</key> + </entry> + <entry> + <key>Team</key> + </entry> + <entry> + <key>Created by</key> + </entry> + <entry> + <key>Employee count</key> + </entry> + <entry> + <key>Toggles the status of selected discussion between open and closed</key> + </entry> + <entry> + <key>Synchronize documents</key> + </entry> + <entry> + <key>AuditLogs</key> + </entry> + <entry> + <key>Audit Log</key> + </entry> + <entry> + <key>Admin</key> + </entry> + <entry> + <key>Show all audits</key> + </entry> + <entry> + <key>Sales Project milestone Id</key> + </entry> + <entry> + <key>LinkedIn (Organisation)</key> + </entry> + <entry> + <key>[TEST] UnitTest_lib</key> + </entry> + <entry> + <key>Exports the knowledge entry as a html file</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 566c1d1c162..2c2348c9da0 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -9800,6 +9800,186 @@ Bitte Datumseingabe prüfen</value> <key>#login</key> <value>Login Token</value> </entry> + <entry> + <key>Rechnungsbetrag</key> + </entry> + <entry> + <key>[TEST] Sql_lib - SqlMaskingUtils</key> + </entry> + <entry> + <key>Knowledgebase</key> + </entry> + <entry> + <key>Marketing workflow</key> + </entry> + <entry> + <key>Token</key> + </entry> + <entry> + <key>Edited by</key> + </entry> + <entry> + <key>Sales Project Analyses</key> + </entry> + <entry> + <key>Sales Project Id</key> + </entry> + <entry> + <key>Sales Project Convertion Rates</key> + </entry> + <entry> + <key>Set Campaign Step</key> + </entry> + <entry> + <key>Member</key> + </entry> + <entry> + <key>Tags</key> + </entry> + <entry> + <key>[TEST] Sql_lib - SqlBuilder</key> + </entry> + <entry> + <key>Feed</key> + </entry> + <entry> + <key>[TEST] KeywordAttribute_lib</key> + </entry> + <entry> + <key>Messages</key> + </entry> + <entry> + <key>Channel Name</key> + </entry> + <entry> + <key>Sales Project Phases</key> + </entry> + <entry> + <key>Start workflows</key> + </entry> + <entry> + <key>edited</key> + </entry> + <entry> + <key>Channel</key> + </entry> + <entry> + <key>Import from Teams</key> + </entry> + <entry> + <key>Invitation</key> + </entry> + <entry> + <key>send as mail</key> + </entry> + <entry> + <key>User token</key> + </entry> + <entry> + <key>Team name</key> + </entry> + <entry> + <key>Knowledge Roles</key> + </entry> + <entry> + <key>Valid</key> + </entry> + <entry> + <key>Audit Logs</key> + </entry> + <entry> + <key>Editorial</key> + </entry> + <entry> + <key>KnowledgeRoles</key> + </entry> + <entry> + <key>Remove from Campaign</key> + </entry> + <entry> + <key>Message</key> + </entry> + <entry> + <key>Add members</key> + </entry> + <entry> + <key>[TEST] .All</key> + </entry> + <entry> + <key>Newsfeed (Complete Article)</key> + </entry> + <entry> + <key>Notification</key> + </entry> + <entry> + <key>Load older messages</key> + </entry> + <entry> + <key>Newsletter</key> + </entry> + <entry> + <key>Adds an answer to the selected discussion</key> + </entry> + <entry> + <key>LinkedIn (Person)</key> + </entry> + <entry> + <key>Newsfeed Timeline</key> + </entry> + <entry> + <key>MS Teams</key> + </entry> + <entry> + <key>User tokens</key> + </entry> + <entry> + <key>[TEST] Keyword_lib</key> + </entry> + <entry> + <key>News</key> + </entry> + <entry> + <key>Sales Projects</key> + </entry> + <entry> + <key>Team</key> + </entry> + <entry> + <key>Created by</key> + </entry> + <entry> + <key>Employee count</key> + </entry> + <entry> + <key>Toggles the status of selected discussion between open and closed</key> + </entry> + <entry> + <key>Synchronize documents</key> + </entry> + <entry> + <key>AuditLogs</key> + </entry> + <entry> + <key>Audit Log</key> + </entry> + <entry> + <key>Admin</key> + </entry> + <entry> + <key>Show all audits</key> + </entry> + <entry> + <key>Sales Project milestone Id</key> + </entry> + <entry> + <key>LinkedIn (Organisation)</key> + </entry> + <entry> + <key>[TEST] UnitTest_lib</key> + </entry> + <entry> + <key>Exports the knowledge entry as a html file</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index e7cf1824f14..867c0450057 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -7464,6 +7464,189 @@ <entry> <key>Channels</key> </entry> + <entry> + <key>Private</key> + </entry> + <entry> + <key>Rechnungsbetrag</key> + </entry> + <entry> + <key>[TEST] Sql_lib - SqlMaskingUtils</key> + </entry> + <entry> + <key>Knowledgebase</key> + </entry> + <entry> + <key>Marketing workflow</key> + </entry> + <entry> + <key>Token</key> + </entry> + <entry> + <key>Edited by</key> + </entry> + <entry> + <key>Sales Project Analyses</key> + </entry> + <entry> + <key>Sales Project Id</key> + </entry> + <entry> + <key>Sales Project Convertion Rates</key> + </entry> + <entry> + <key>Set Campaign Step</key> + </entry> + <entry> + <key>Member</key> + </entry> + <entry> + <key>Tags</key> + </entry> + <entry> + <key>[TEST] Sql_lib - SqlBuilder</key> + </entry> + <entry> + <key>Feed</key> + </entry> + <entry> + <key>[TEST] KeywordAttribute_lib</key> + </entry> + <entry> + <key>Messages</key> + </entry> + <entry> + <key>Channel Name</key> + </entry> + <entry> + <key>Sales Project Phases</key> + </entry> + <entry> + <key>Start workflows</key> + </entry> + <entry> + <key>edited</key> + </entry> + <entry> + <key>Channel</key> + </entry> + <entry> + <key>Import from Teams</key> + </entry> + <entry> + <key>Invitation</key> + </entry> + <entry> + <key>send as mail</key> + </entry> + <entry> + <key>User token</key> + </entry> + <entry> + <key>Team name</key> + </entry> + <entry> + <key>Knowledge Roles</key> + </entry> + <entry> + <key>Valid</key> + </entry> + <entry> + <key>Audit Logs</key> + </entry> + <entry> + <key>Editorial</key> + </entry> + <entry> + <key>KnowledgeRoles</key> + </entry> + <entry> + <key>Remove from Campaign</key> + </entry> + <entry> + <key>Message</key> + </entry> + <entry> + <key>Add members</key> + </entry> + <entry> + <key>[TEST] .All</key> + </entry> + <entry> + <key>Newsfeed (Complete Article)</key> + </entry> + <entry> + <key>Notification</key> + </entry> + <entry> + <key>Load older messages</key> + </entry> + <entry> + <key>Newsletter</key> + </entry> + <entry> + <key>Adds an answer to the selected discussion</key> + </entry> + <entry> + <key>LinkedIn (Person)</key> + </entry> + <entry> + <key>Newsfeed Timeline</key> + </entry> + <entry> + <key>MS Teams</key> + </entry> + <entry> + <key>User tokens</key> + </entry> + <entry> + <key>[TEST] Keyword_lib</key> + </entry> + <entry> + <key>News</key> + </entry> + <entry> + <key>Sales Projects</key> + </entry> + <entry> + <key>Team</key> + </entry> + <entry> + <key>Created by</key> + </entry> + <entry> + <key>Employee count</key> + </entry> + <entry> + <key>Toggles the status of selected discussion between open and closed</key> + </entry> + <entry> + <key>Synchronize documents</key> + </entry> + <entry> + <key>AuditLogs</key> + </entry> + <entry> + <key>Audit Log</key> + </entry> + <entry> + <key>Admin</key> + </entry> + <entry> + <key>Show all audits</key> + </entry> + <entry> + <key>Sales Project milestone Id</key> + </entry> + <entry> + <key>LinkedIn (Organisation)</key> + </entry> + <entry> + <key>[TEST] UnitTest_lib</key> + </entry> + <entry> + <key>Exports the knowledge entry as a html file</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> -- GitLab From bab14c9e61835ec1d63ac290ef733697d79c5568 Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Mon, 30 Nov 2020 16:18:18 +0100 Subject: [PATCH 126/184] #1067434 Notifications: Subcategory added --- .../create_asys_notificationcontents.xml | 1 + .../_____SYSTEMALIAS/_____SYSTEMALIAS.aod | 14 ++++++++++ .../Notification_entity.aod | 26 +++++++++++++------ .../NotificationFilter_view.aod | 11 +++++++- 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml index fb1ae2f5ee8..448a4c3063e 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml @@ -17,6 +17,7 @@ <column name="RECIPIENTUSERIDS" type="CLOB"/> <column name="TYPECODE" type="VARCHAR(63)"/> <column name="VERSION" type="INTEGER"/> + <column name="SUBCATEGORY" type="VARCHAR(256)"/> </createTable> <createIndex indexName="idx_asysnoticontents_contid" tableName="ASYS_NOTIFICATIONCONTENTS"> diff --git a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod index 6f4f1b2dca5..9eaa60af5ab 100644 --- a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod +++ b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod @@ -1707,6 +1707,20 @@ <title></title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>SUBCATEGORY</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="256" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> diff --git a/entity/Notification_entity/Notification_entity.aod b/entity/Notification_entity/Notification_entity.aod index cf3203213ac..2668a0419e9 100644 --- a/entity/Notification_entity/Notification_entity.aod +++ b/entity/Notification_entity/Notification_entity.aod @@ -132,31 +132,31 @@ </entityField> <entityConsumer> <name>StateKeywords</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Notification_entity/entityfields/statekeywords/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>PrioKeywords</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>PrioKeywords</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Notification_entity/entityfields/priokeywords/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> @@ -170,6 +170,10 @@ <outputFormat>dd.MM.yyyy</outputFormat> <inputFormat>dd.MM.yyyy</inputFormat> </entityField> + <entityField> + <name>SUBCATEGORY</name> + <title>Subcategory</title> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -281,6 +285,12 @@ <name>CREATEDAY.value</name> <recordfield>ASYS_NOTIFICATIONCONTENTS.CREATEDATE</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SUBCATEGORY.value</name> + <recordfield>ASYS_NOTIFICATIONCONTENTS.SUBCATEGORY</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/neonView/NotificationFilter_view/NotificationFilter_view.aod b/neonView/NotificationFilter_view/NotificationFilter_view.aod index 26ee281b76c..6517c2f9eff 100644 --- a/neonView/NotificationFilter_view/NotificationFilter_view.aod +++ b/neonView/NotificationFilter_view/NotificationFilter_view.aod @@ -32,7 +32,7 @@ <dateField>CREATEDAY</dateField> <titleField>CAPTION</titleField> <descriptionField>DESCRIPTION</descriptionField> - <subdescriptionField>CREATEDATE</subdescriptionField> + <subdescriptionField>SUBCATEGORY</subdescriptionField> <iconIdField>ICON</iconIdField> <additionalInfoField>STATE</additionalInfoField> <entityField>#ENTITY</entityField> @@ -50,6 +50,7 @@ <entityField>#ENTITY</entityField> <isEditable v="false" /> <isSaveable v="false" /> + <informationField>SUBCATEGORY</informationField> <columns> <neonTableColumn> <name>1cff3be1-523d-4a5a-b7d1-389d7cbb726f</name> @@ -67,6 +68,10 @@ <name>ff33a6c1-7ac6-4acd-a083-e56a36f89977</name> <entityField>DESCRIPTION</entityField> </neonTableColumn> + <neonTableColumn> + <name>0e3756eb-05f6-4ab2-a6e9-984f5215f542</name> + <entityField>SUBCATEGORY</entityField> + </neonTableColumn> <neonTableColumn> <name>5cb09de4-4413-41e5-8a7c-4970a3cf6a62</name> <entityField>STATE</entityField> @@ -95,6 +100,10 @@ <name>446c3d62-efa4-4f1a-85d4-e4f6a45019c7</name> <entityField>DESCRIPTION</entityField> </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6caff937-2e67-4b28-b630-ae1dd5860f3b</name> + <entityField>SUBCATEGORY</entityField> + </neonTreeTableColumn> <neonTreeTableColumn> <name>4c82b79e-4c15-4298-bfbb-186c76fc5189</name> <entityField>STATE</entityField> -- GitLab From 93bb003f1142bc3813edda4fd04d0236128b4f7e Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Mon, 30 Nov 2020 16:33:21 +0100 Subject: [PATCH 127/184] Scanservice errors fixed --- readme.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 readme.md diff --git a/readme.md b/readme.md new file mode 100644 index 00000000000..67a1a52f76a --- /dev/null +++ b/readme.md @@ -0,0 +1,8 @@ +# xRM + +## Useful documents to get started + +* [Coding Guidelines](https://neon.adito.de/client/KnowledgeManagement/full?id=dc6e3066-2228-4d04-b9b6-dac792d5bfec) +* [Customizing Manual](https://neon.adito.de/client/KnowledgeManagement/full?id=534c07da-387a-46e2-b5ab-040a5c1b0ab2) +* [Designer Manual](https://neon.adito.de/client/KnowledgeManagement/full?id=56507a00-9c49-4be3-b4d5-9f83cb442ff7) +* [Documentation Overview](https://neon.adito.de/client/KnowledgeManagement/full?id=42a481e3-b27d-446a-8a0b-fe5bffafc2ec) \ No newline at end of file -- GitLab From a986deab0079c65911798626458fdc18721d6f1d Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Mon, 30 Nov 2020 16:33:31 +0100 Subject: [PATCH 128/184] [Projekt: Entwicklung - xRM][TicketNr.: 1068960][Liquibase-Skript Fehler; .liquibase/Data_alias/basic/2019.3.2/reworkDBIndexes.xml] --- .liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml b/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml index 62c9c29573a..c1d76b19cd2 100644 --- a/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml +++ b/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml @@ -10,10 +10,10 @@ <column name="ACTIVITY_ID"/> </createIndex> </changeSet> - <changeSet id="e7527e13-7546-4fa6-ac95-5cc3e1f27056" author="s.listl" dbms="!oracle"> + <changeSet id="e7527e13-7546-4fa6-ac95-5cc3e1f27056" author="s.listl"> <preConditions onFail="MARK_RAN"> <not> - <changeSetExecuted id="5a0b62f4-6770-454c-9a0e-d60ca16596dd" author="j.goderbauer"/> + <changeSetExecuted id="5a0b62f4-6770-454c-9a0e-d60ca16596dd" author="j.goderbauer" changeLogFile=".liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml"/> </not> </preConditions> <createIndex indexName="IDX_TICKET_TASK_ID" tableName="TICKET"> -- GitLab From 73f344ad5a6562511c01939a051d2347eac18fba Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Mon, 30 Nov 2020 16:48:15 +0100 Subject: [PATCH 129/184] #1067434 Notifications: adding subcategory on various .addNotification(...) calls --- process/buildSerialLetter_serverProcess/process.js | 2 +- process/importLead_serverProcess/process.js | 2 +- process/sendBulkMail_serverProcess/process.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/process/buildSerialLetter_serverProcess/process.js b/process/buildSerialLetter_serverProcess/process.js index 1d5cff1f394..b3210e860db 100644 --- a/process/buildSerialLetter_serverProcess/process.js +++ b/process/buildSerialLetter_serverProcess/process.js @@ -21,4 +21,4 @@ SingleBinaryUtils.set("SERIALLETTER", "SERIALLETTERFILE", letterId, document.con var message = translate.text("Download ready"); var description = translate.withArguments("Serial letter \"%0\" can now be downloaded", [document.title]); -notification.addNotification(util.getNewUUID(), text.encodeMS(["SerialLetter", letterId]), null, null, "DownloadReady", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); \ No newline at end of file +notification.addNotification(util.getNewUUID(), text.encodeMS(["SerialLetter", letterId]), null, null, "DownloadReady", null, notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); \ No newline at end of file diff --git a/process/importLead_serverProcess/process.js b/process/importLead_serverProcess/process.js index a24b084a933..35ac42b2b31 100644 --- a/process/importLead_serverProcess/process.js +++ b/process/importLead_serverProcess/process.js @@ -192,7 +192,7 @@ if(exeptions != "")//insert error document if (userId)// if there is an user - show a notification to this user when the import is complete { var description = translate.withArguments("%0 leads imported, %1 errors", [rows, errorCount]); - notification.addNotification(util.getNewUUID(), null, null, null, "LeadImport_Notification", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [userId], importName, description); + notification.addNotification(util.getNewUUID(), null, null, null, "LeadImport_Notification", null, notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [userId], importName, description); } diff --git a/process/sendBulkMail_serverProcess/process.js b/process/sendBulkMail_serverProcess/process.js index 711120feb20..7ed237beffb 100644 --- a/process/sendBulkMail_serverProcess/process.js +++ b/process/sendBulkMail_serverProcess/process.js @@ -23,5 +23,5 @@ if (user && !testRecipients) var message = translate.withArguments("Bulk mail \"%0\" was sent!", [mailName]); var description = translate.withArguments("%0 mails sent sucessfully, %1 mails failed. Process took %2 s.", [res.sucessful, res.failed, Math.round((datetime.date() - startTime) / datetime.ONE_SECOND)]); - notification.addNotification(util.getNewUUID(), null, null, null, "BulkMailSent", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); + notification.addNotification(util.getNewUUID(), null, null, null, "BulkMailSent", null, notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); } \ No newline at end of file -- GitLab From b38516db7defe1cf782e9f92d785f24eedf2c2d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20V=C3=B6gl?= <a.voegl@adito.de> Date: Mon, 30 Nov 2020 16:45:27 +0000 Subject: [PATCH 130/184] [Projekt: Entwicklung - xRM][TicketNr.: 1061957][360 Grad: Umbenennung ViewTemplate Treetable -> Tree] [Projekt: Entwicklung - xRM][TicketNr.: 1053175][Erweiterte 360-Grad Ansicht] --- .../translate4log/property.js | 2 +- entity/360Degree_entity/360Degree_entity.aod | 55 +- entity/360Degree_entity/documentation.adoc | 25 +- .../newcampaignparticipant/stateProcess.js | 4 +- .../children/newcontract/stateProcess.js | 4 +- .../children/newoffer/stateProcess.js | 4 +- .../children/neworder/stateProcess.js | 4 +- .../children/newsalesproject/stateProcess.js | 4 +- .../children/objecttype_param/valueProcess.js | 19 +- .../children/objecttype_param/valueProcess.js | 12 +- .../entityfields/year/valueProcess.js | 6 - .../recordcontainers/jdito/contentProcess.js | 162 ++--- .../object_rowid/displayValueProcess.js | 2 +- .../objectid/displayValueProcess.js | 2 +- .../AttributeUsage_entity.aod | 4 - .../getallcontexts_param/valueProcess.js | 2 - entity/Attribute_entity/Attribute_entity.aod | 4 - .../getallcontexts_param/valueProcess.js | 3 - .../CampaignStep_entity.aod | 1 + .../contentDescriptionProcess.js | 5 + entity/Campaign_entity/Campaign_entity.aod | 8 + .../contentDescriptionProcess.js | 5 + .../active.value/expression.js | 6 + .../Competition_entity/Competition_entity.aod | 4 - .../object_rowid/displayValueProcess.js | 2 +- .../object_rowid.displayvalue/expression.js | 4 - entity/Context_entity/Context_entity.aod | 5 - .../recordcontainers/jdito/contentProcess.js | 3 +- entity/Contract_entity/Contract_entity.aod | 15 + .../contentDescriptionProcess.js | 16 + entity/Contract_entity/contentTitleProcess.js | 4 +- .../active.value/expression.js | 6 + .../DocumentTemplatePlaceOfUse_entity.aod | 4 - .../getallcontexts_param/valueProcess.js | 3 - entity/Forecast_entity/Forecast_entity.aod | 4 - .../object_rowid/displayValueProcess.js | 2 +- .../object_rowid.displayvalue/expression.js | 4 - .../Leadimport_entity/Leadimport_entity.aod | 9 + .../contentDescriptionProcess.js | 5 + entity/Member_entity/Member_entity.aod | 4 - .../object_rowid/displayValueProcess.js | 2 +- .../object_rowid.displayvalue/expression.js | 10 - .../target_id/displayValueProcess.js | 2 +- .../recordcontainers/jdito/contentProcess.js | 2 +- entity/Object_entity/Object_entity.aod | 8 + .../recordcontainers/jdito/contentProcess.js | 2 +- entity/Offer_entity/Offer_entity.aod | 12 +- .../Offer_entity/contentDescriptionProcess.js | 12 + entity/Offer_entity/contentTitleProcess.js | 4 +- .../object_rowid/displayValueProcess.js | 2 +- .../active.value/expression.js | 6 + .../object_rowid.displayvalue/expression.js | 4 - entity/Order_entity/Order_entity.aod | 219 +++--- .../Order_entity/contentDescriptionProcess.js | 19 + entity/Order_entity/contentTitleProcess.js | 7 +- .../object_rowid/displayValueProcess.js | 2 +- .../active.value/expression.js | 6 + .../object_rowid.displayvalue/expression.js | 4 - .../offer_id.displayvalue/expression.js | 5 - .../Organisation_entity.aod | 1 + .../contentDescriptionProcess.js | 5 + entity/Product_entity/Product_entity.aod | 1 + .../contentDescriptionProcess.js | 5 + .../contact_id/displayValueProcess.js | 2 +- .../Salesproject_entity.aod | 267 +++---- .../contentDescriptionProcess.js | 14 + .../contentTitleProcess.js | 4 +- .../active.value/expression.js | 6 + .../SupportTicket_entity.aod | 15 + .../contentDescriptionProcess.js | 18 + .../contentTitleProcess.js | 7 +- .../active.value/expression.js | 7 + .../object_rowid/displayValueProcess.js | 2 +- entity/Task_entity/Task_entity.aod | 4 + .../Task_entity/contentDescriptionProcess.js | 5 + .../WorkflowStartConfig_entity.aod | 4 - .../getallcontexts_param/valueProcess.js | 3 - .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 4 + neonContext/SupportTicket/SupportTicket.aod | 1 + .../360DegreeFilter_view.aod | 15 +- process/Context_lib/process.js | 669 +++++------------- process/Order_lib/process.js | 2 +- process/Util_lib/process.js | 135 +++- 83 files changed, 989 insertions(+), 972 deletions(-) delete mode 100644 entity/360Degree_entity/entityfields/year/valueProcess.js delete mode 100644 entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js delete mode 100644 entity/Attribute_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js create mode 100644 entity/CampaignStep_entity/contentDescriptionProcess.js create mode 100644 entity/Campaign_entity/contentDescriptionProcess.js create mode 100644 entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js delete mode 100644 entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js create mode 100644 entity/Contract_entity/contentDescriptionProcess.js create mode 100644 entity/Contract_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js delete mode 100644 entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js delete mode 100644 entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js create mode 100644 entity/Leadimport_entity/contentDescriptionProcess.js delete mode 100644 entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js create mode 100644 entity/Offer_entity/contentDescriptionProcess.js create mode 100644 entity/Offer_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js delete mode 100644 entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js create mode 100644 entity/Order_entity/contentDescriptionProcess.js create mode 100644 entity/Order_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js delete mode 100644 entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js delete mode 100644 entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js create mode 100644 entity/Organisation_entity/contentDescriptionProcess.js create mode 100644 entity/Product_entity/contentDescriptionProcess.js create mode 100644 entity/Salesproject_entity/contentDescriptionProcess.js create mode 100644 entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js create mode 100644 entity/SupportTicket_entity/contentDescriptionProcess.js create mode 100644 entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js create mode 100644 entity/Task_entity/contentDescriptionProcess.js delete mode 100644 entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js diff --git a/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/object_rowid/customproperties/translate4log/property.js b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/object_rowid/customproperties/translate4log/property.js index aa7a1fe2a06..7305220193d 100644 --- a/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/object_rowid/customproperties/translate4log/property.js +++ b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/object_rowid/customproperties/translate4log/property.js @@ -12,4 +12,4 @@ var type = newSelect("OBJECT_TYPE") .where("SALESORDER.SALESORDERID", params.rowId) .cell(); -result.string(db.cell(ContextUtils.getNameSql(type, params.value))); +result.string(ContextUtils.getTitleByContext(type, params.value)); diff --git a/entity/360Degree_entity/360Degree_entity.aod b/entity/360Degree_entity/360Degree_entity.aod index 62c86300ec6..f527d3b4ebb 100644 --- a/entity/360Degree_entity/360Degree_entity.aod +++ b/entity/360Degree_entity/360Degree_entity.aod @@ -15,6 +15,7 @@ </siblings> <grantUpdate v="false" /> <grantDelete v="false" /> + <titlePlural>Links</titlePlural> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -25,6 +26,7 @@ </entityField> <entityField> <name>TITLE</name> + <title>Title</title> <linkedContextProcess>%aditoprj%/entity/360Degree_entity/entityfields/title/linkedContextProcess.js</linkedContextProcess> </entityField> <entityParameter> @@ -71,11 +73,10 @@ <entityField> <name>ENTITY_NAME</name> <title>Module</title> - <groupable v="true" /> <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/entity_name/valueProcess.js</valueProcess> </entityField> <entityField> - <name>DATE</name> + <name>DATE_NEW</name> <title>Date</title> <contentType>DATE</contentType> <resolution>DAY</resolution> @@ -105,12 +106,6 @@ </entityParameter> </children> </entityProvider> - <entityField> - <name>YEAR</name> - <title>Year</title> - <groupable v="true" /> - <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/year/valueProcess.js</valueProcess> - </entityField> <entityActionGroup> <name>newModule</name> <title>New module</title> @@ -166,13 +161,6 @@ <contentType>IMAGE</contentType> <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/icon/valueProcess.js</valueProcess> </entityField> - <entityField> - <name>ACTIVE</name> - <title>Active</title> - <contentType>TEXT</contentType> - <groupable v="true" /> - <dropDownProcess>%aditoprj%/entity/360Degree_entity/entityfields/active/dropDownProcess.js</dropDownProcess> - </entityField> <entityParameter> <name>BaseContextId_param</name> <expose v="true" /> @@ -185,6 +173,25 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>GROUP</name> + <title>Group</title> + <groupable v="true" /> + </entityField> + <entityField> + <name>DESCRIPTION</name> + <title>Description</title> + </entityField> + <entityField> + <name>YEAR</name> + <title>Year</title> + <groupable v="true" /> + </entityField> + <entityField> + <name>ACTIVE</name> + <title>Active</title> + <dropDownProcess>%aditoprj%/entity/360Degree_entity/entityfields/active/dropDownProcess.js</dropDownProcess> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -203,20 +210,32 @@ <jDitoRecordFieldMapping> <name>TARGET_CONTEXT.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>TARGET_CONTEXT.displayValue</name> + </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>TITLE.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> - <name>DATE.value</name> + <name>DESCRIPTION.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> - <name>ACTIVE.value</name> + <name>DATE_NEW.value</name> <isFilterable v="true" /> - <isLookupFilter v="true" /> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>YEAR.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>ENTITY_NAME.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>GROUP.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ACTIVE.value</name> + <isFilterable v="true" /> + </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> </recordContainers> diff --git a/entity/360Degree_entity/documentation.adoc b/entity/360Degree_entity/documentation.adoc index d14c31a7c93..b2ad150c078 100644 --- a/entity/360Degree_entity/documentation.adoc +++ b/entity/360Degree_entity/documentation.adoc @@ -3,9 +3,9 @@ The 360Degree_entity shows the Connection between data models. The entity has two providers for persons and organizations. -The 360Degree_entity shows direct connections, don´t be confused with the ObjectRelation_entity. +The 360Degree_entity shows direct connections, don´t be confused with the ObjectRelation_entity. -== Adding new modules to the 360° view +== Adding new modules to the 360° view You may want to display more modules within the 360degree view (for example after creating and implemeting your own module). .An Example: @@ -14,6 +14,23 @@ display it in the 360degree view. Heres is a list of what you need to do whenever you want to do this: -- Add an entry in the function `ContextUtils.getSelectMap` which is located in the `Context_lib` (check out the documentation there for further details). _Speaking of the example above you need to define there how to retrieve the t-shirt-data for a contact_ +- At first you have to fill/add certain Fields/Processes in your new Context. + - Add (These have to be written exactly like that, if not already existing): + - CONTACT_ID, this Field has to contain a CONTACTID. That will be used to find the Connection to your Person or your Organisation. + - DATE_NEW, this Field has to contain a Date as a Long Value. That will be used as the Date Value you can see in the Timeline View-Template. + - ACTIVE, in this Field you can specify which Datasets are active or not. You have to declare that in the Value Expression as a Case-When due to the Filter + - Fill (these can be filled in the specific Entity as a Process) + - #CONTENTTITLE, this will be the main display Text and the blue Link + - #CONTENTDESCRIPTION, this will be the smaller, mostly longer, Text beneath the #CONTENTTITLE + +- Add an elemnt (with the name of the context you want to add) in the process of the `ObjectType_param` in the *corresponding provider* which is located in the `360Degree_entity`. _We would extend the JSON-Object which is returned in the `PersonObjects`-provider by the name of our t-shirt-context: "TShirt" in our example +- +- In that JSON-Object can also add some Configuration Elements to change the results. + - setGroupBy: here you can declare a DB-Column that will be used as the new group by of that context. A good example is Order. We want to group by the Ordertype so we have to declare ORDERTYPE as our groupBy. + - If your DB-Value is related to a Keyword you also have to use groupByKeyword and add the Container as Value -- Add an entry (with the name of the context you want to add) in the process of the `ObjectType_param` in the *corresponding provider* which is located in the `360Degree_entity`. _We would extend the array which is returned in the `PersonObjects`-provider by the name of our t-shirt-context: "TShirt" in our example_ \ No newline at end of file +- If you have a Connection of 1:N in your Database Schema (like Activity and ActivityLink) you have to add specific Properties in your Context Object. Lets take ActivityLink as a Example. + - subContext: the Name of the "Link"-Context -> ActivityLink + - childField: The Field where the LinkID to your Parent is stored -> ACTIVITY_ID + - parentField: The field in your Parent Context where your Connection to your Child is stored -> ACTIVITYID + - contactIdField: The Field in the Link Context where your Contactid is stored -> OBJECT_ROWID \ No newline at end of file diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newcampaignparticipant/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newcampaignparticipant/stateProcess.js index 353aa9f3676..fbdfd3fd2e1 100644 --- a/entity/360Degree_entity/entityfields/newmodule/children/newcampaignparticipant/stateProcess.js +++ b/entity/360Degree_entity/entityfields/newmodule/children/newcampaignparticipant/stateProcess.js @@ -7,11 +7,11 @@ if (contextList) { var found = false; - contextList.forEach(function (context) + for(context in contextList) { if(context == "Campaign") found = true; - }); + } if(found) result.string(neon.COMPONENTSTATE_AUTO); else diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js index f1cfb310581..64c597b2e18 100644 --- a/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js +++ b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js @@ -6,11 +6,11 @@ var contextList = JSON.parse(vars.getString("$param.ObjectType_param")); if (contextList) { var found = false; - contextList.forEach(function (context) + for(context in contextList) { if(context == "Contract") found = true; - }); + } if(found) result.string(neon.COMPONENTSTATE_AUTO); else diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js index 02a2b07b699..ce3eb11c9bd 100644 --- a/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js +++ b/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js @@ -6,11 +6,11 @@ var contextList = JSON.parse(vars.getString("$param.ObjectType_param")); if (contextList) { var found = false; - contextList.forEach(function (context) + for(context in contextList) { if(context == "Offer") found = true; - }); + } if(found) result.string(neon.COMPONENTSTATE_AUTO); else diff --git a/entity/360Degree_entity/entityfields/newmodule/children/neworder/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/neworder/stateProcess.js index 1c2b2b9123c..6b9ec816416 100644 --- a/entity/360Degree_entity/entityfields/newmodule/children/neworder/stateProcess.js +++ b/entity/360Degree_entity/entityfields/newmodule/children/neworder/stateProcess.js @@ -6,11 +6,11 @@ var contextList = JSON.parse(vars.getString("$param.ObjectType_param")); if (contextList) { var found = false; - contextList.forEach(function (context) + for(context in contextList) { if(context == "Order") found = true; - }); + } if(found) result.string(neon.COMPONENTSTATE_AUTO); else diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js index f23023f7d17..6a18dc9adfd 100644 --- a/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js +++ b/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js @@ -7,11 +7,11 @@ if (contextList) { var found = false; - contextList.forEach(function (context) + for(context in contextList) { if(context == "Salesproject") found = true; - }); + } if(found) result.string(neon.COMPONENTSTATE_AUTO); else diff --git a/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js b/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js index 86503dcd7f3..9b0fe874baa 100644 --- a/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js +++ b/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js @@ -3,4 +3,21 @@ import("system.result"); //No campaign, since a campaign can only be linked with a person. //Even when all entries of persons are displayed in the organisation_entity: It's still nonsense to display campaigns per status. -result.object(["Salesproject", "Offer", "Order", "Contract", "SupportTicket"]); \ No newline at end of file + +var res = { + "Salesproject": {}, + "Offer": {}, + "Order": { + "setGroupBy":"ORDERTYPE", + "groupByKeyword":"OrderType" + }, + "Contract": {}, + "SupportTicket": { + "subContext":"TaskLink", + "childField":"TASK_ID", + "parentField":"TASK_TASKID", + "contactIdField":"OBJECT_ROWID" + } +} + +result.string(JSON.stringify(res)) \ No newline at end of file diff --git a/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js b/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js index 51c40eed05b..0764eff7f7b 100644 --- a/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js +++ b/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js @@ -1,4 +1,14 @@ import("system.vars"); import("system.result"); -result.object(["Offer", "Contract", "Campaign", "Order", "SupportTicket"]); \ No newline at end of file +var res = { + "Offer": {}, + "Order": { + "setGroupBy":"ORDERTYPE" + }, + "Contract": {}, + "SupportTicket": {}, + "Campaign": {} +} + +result.string(JSON.stringify(res)) \ No newline at end of file diff --git a/entity/360Degree_entity/entityfields/year/valueProcess.js b/entity/360Degree_entity/entityfields/year/valueProcess.js deleted file mode 100644 index c21dcc8cde6..00000000000 --- a/entity/360Degree_entity/entityfields/year/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.datetime"); -import("system.result"); -import("system.vars"); - -var dateVal = vars.get("$field.DATE"); -result.string(datetime.toDate(dateVal, "yyyy")); \ No newline at end of file diff --git a/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js b/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js index 3014803809e..f6417bb26a7 100644 --- a/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js @@ -1,36 +1,20 @@ -import("system.util"); -import("system.db"); -import("system.vars"); +import("system.datetime"); +import("system.logging"); +import("Util_lib"); +import("system.translate"); import("system.result"); +import("system.vars"); import("Context_lib"); -import("system.translate"); +import("Keyword_lib"); -if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param") && vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param")) -{ - var active; - var selectMap = ContextUtils.getSelectMap(); - if(vars.exists("$local.filter") && vars.get("$local.filter") ) - { - var filter = vars.get("$local.filter"); - if (filter.filter) - if(filter.filter.childs != null && filter.filter.childs.length > 0) - { - filter.filter.childs.forEach(function(child) - { - if(child.name === "ACTIVE") - active = child.key == 'true'; - }); - } - } - - var contextList = JSON.parse(vars.getString("$param.ObjectType_param")); - var contactId = vars.get("$param.ObjectRowId_param"); - var idValues; - if (vars.exists("$local.idvalues")) - idValues = vars.get("$local.idvalues"); - - var res = _get360Data(selectMap, contactId, contextList, active, idValues); - result.object(res); + +if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param") + && vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param")) +{ + var contextList = JSON.parse(vars.get("$param.ObjectType_param")); + var contactId = JSON.parse(vars.get("$param.ObjectRowId_param")); + var data = _get360Data(contactId, contextList); + result.object(data); } else { @@ -38,79 +22,65 @@ else } /** - * load all data for the 360Degree tree. - * @param {Object} pSelectMap the select map (result of ContextUtils.getSelectMap()) - * @param {String[]} pContactId the Contactid the 360 Degree tree should be loaded for - * @param {String[]} pContextList list of contexts to load. Note that subcontexts use their own list, defined in ContextUtils - * @param {Boolean} [pActive=undefined] if not undefined: it select only for active / inactive state - * @param {Array} [pUids=undefined] uids of the 360° entity that are used for filtering, each rowId needs the format: - * {id: "«rowid»", type: "«context id»"} + * collects all data for the 360Degree tree. + * @param {String} pContactId, the main Contactid that will be used for the Connections + * @param {String[]} pContextList, a list of Contexts that should be displayed * * @return {String[][]} the resulting data */ -function _get360Data(pSelectMap, pContactId, pContextList, pActive, pUids) +function _get360Data(pContactId, pContextList) { - //if there are uids for filtering, group them per context: - var uidContextMap = new Map();//Map where key is the type (contextname) and value is an array of the rowIds for that type - if (pUids) - { - pUids.forEach(function (uid){ - uid = JSON.parse(uid); - if (uidContextMap.has(uid.type)) - uidContextMap.get(uid.type).push(uid.id); - else - uidContextMap.set(uid.type, [uid.id]); - }); - } - var resultList = []; - pContextList.forEach(function (context) + var filter = vars.get("$sys.filter"); + for(var context in pContextList) { - var rowIds; - if (pUids) - { - //when a Uid-filter exists, but there is no context for filtering we can skip that context, - //otherwise we need to filter for the found row ids of that context - if (!uidContextMap.has(context)) - return; - else - rowIds = uidContextMap.get(context); - } - var data = db.table(ContextUtils.getContextDataSql(context, JSON.parse(pContactId), true, pActive, true, true, rowIds)); - data.forEach(function (row) + var group = context; + if(pContextList[context].hasOwnProperty("setGroupBy") && pContextList[context].hasOwnProperty("groupByKeyword")) + var groupKeyword = Utils.objectFromMap(new Map(KeywordUtils.getEntryNamesAndIdsByContainer(pContextList[context]["groupByKeyword"]))); + + var res = ContextUtils.getContextDataViaReadEntity(context, pContextList[context], filter, pContactId); + if(res.length > 0) { - var active; - if(pActive != undefined) //ACTIVE - active = translate.text(pActive); - else + res.forEach(function (row) { - if(pSelectMap[context].activeStates && pSelectMap[context].activeStates.indexOf(row[3]) > -1) - active = translate.text("true"); - else - active = translate.text("false"); - } - - var groupBy = row[4]; - if(groupBy == "") - groupBy = ContextUtils.getEntityTitle(context, true); - - var uid = JSON.stringify({id: row[0], type: context}); - resultList.push([ - uid, // UID - row[0], // TARGET_ID - context, // TARGET_CONTEXT - row[1], // TITLE - row[2], //DATE - active, - groupBy - ]); - }); - }); - - resultList.sort(function (a,b) { - if (a[4] < b[4]) return 1; - if (a[4] > b[4]) return -1; - return 0; - }) + var uid = JSON.stringify({ + "id": row["#UID"], + "type": context + }); + var targetid = row["#UID"]; + var title = row["#CONTENTTITLE"]; + var description = row["#CONTENTDESCRIPTION"]; + var dataDate = row["DATE_NEW"]; + var active = row["ACTIVE"]; + if(pContextList[context].hasOwnProperty("setGroupBy")) + group = row[pContextList[context]["setGroupBy"]] + + + if(pContextList[context].hasOwnProperty("setGroupBy")) + { + if( pContextList[context].hasOwnProperty("groupByKeyword") && groupKeyword) + group = groupKeyword[row[pContextList[context]["setGroupBy"]]] + else + group = row[pContextList[context]["setGroupBy"]] + } + + resultList.push([ + uid, // UID + targetid, // TARGET_ID + context, // TARGET_CONTEXT + translate.text(pContextList[context]), // TARGET_CONTEXT.displayValue + title, // TITLE + description, // DESCRIPTION + dataDate, // DATE + datetime.toDate(dataDate, "yyyy"), // YEAR + ContextUtils.getEntity(context), // ENTITY_NAME + translate.text(group), // GROUP + active // ACTIVE + ]); + }); + } + } + var sortArr = [9, false] + resultList = ArrayUtils.sortMulti(resultList, sortArr) return resultList; } \ No newline at end of file diff --git a/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js b/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js index 8b080bceea9..95c4eea5367 100644 --- a/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) { result.string(""); } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js b/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js index e95adef18a9..a44f299d8af 100644 --- a/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js +++ b/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECTID")) { result.string(""); } else if (vars.exists("$field.OBJECTTYPE") && vars.get("$field.OBJECTTYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECTTYPE"), vars.get("$field.OBJECTID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECTTYPE"), vars.get("$field.OBJECTID"))); } \ No newline at end of file diff --git a/entity/AttributeUsage_entity/AttributeUsage_entity.aod b/entity/AttributeUsage_entity/AttributeUsage_entity.aod index 281daa5f5aa..24f5a40c608 100644 --- a/entity/AttributeUsage_entity/AttributeUsage_entity.aod +++ b/entity/AttributeUsage_entity/AttributeUsage_entity.aod @@ -78,10 +78,6 @@ <fieldName>Exclusive</fieldName> </dependency> <children> - <entityParameter> - <name>GetAllContexts_param</name> - <valueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js</valueProcess> - </entityParameter> <entityParameter> <name>Blacklist_param</name> <valueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/context/children/blacklist_param/valueProcess.js</valueProcess> diff --git a/entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js b/entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js deleted file mode 100644 index ed5935fc124..00000000000 --- a/entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js +++ /dev/null @@ -1,2 +0,0 @@ -import("system.result"); -result.string(true); \ No newline at end of file diff --git a/entity/Attribute_entity/Attribute_entity.aod b/entity/Attribute_entity/Attribute_entity.aod index 26e2e934e59..f85aaaa9515 100644 --- a/entity/Attribute_entity/Attribute_entity.aod +++ b/entity/Attribute_entity/Attribute_entity.aod @@ -319,10 +319,6 @@ <name>Blacklist_param</name> <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/contexts/children/blacklist_param/valueProcess.js</valueProcess> </entityParameter> - <entityParameter> - <name>GetAllContexts_param</name> - <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js</valueProcess> - </entityParameter> <entityParameter> <name>InvertBlacklist_param</name> <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> diff --git a/entity/Attribute_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js b/entity/Attribute_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js deleted file mode 100644 index 40effa01784..00000000000 --- a/entity/Attribute_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string(true); \ No newline at end of file diff --git a/entity/CampaignStep_entity/CampaignStep_entity.aod b/entity/CampaignStep_entity/CampaignStep_entity.aod index 38abc14be1b..ef3741b8dfb 100644 --- a/entity/CampaignStep_entity/CampaignStep_entity.aod +++ b/entity/CampaignStep_entity/CampaignStep_entity.aod @@ -11,6 +11,7 @@ </siblings> <grantDeleteProcess>%aditoprj%/entity/CampaignStep_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/CampaignStep_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/CampaignStep_entity/contentDescriptionProcess.js</contentDescriptionProcess> <onValidation>%aditoprj%/entity/CampaignStep_entity/onValidation.js</onValidation> <imageProcess>%aditoprj%/entity/CampaignStep_entity/imageProcess.js</imageProcess> <titlePlural>Steps</titlePlural> diff --git a/entity/CampaignStep_entity/contentDescriptionProcess.js b/entity/CampaignStep_entity/contentDescriptionProcess.js new file mode 100644 index 00000000000..b07a72fe7cc --- /dev/null +++ b/entity/CampaignStep_entity/contentDescriptionProcess.js @@ -0,0 +1,5 @@ +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); \ No newline at end of file diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod index 37416e7b55c..571096dc232 100644 --- a/entity/Campaign_entity/Campaign_entity.aod +++ b/entity/Campaign_entity/Campaign_entity.aod @@ -13,6 +13,7 @@ </siblings> <grantDeleteProcess>%aditoprj%/entity/Campaign_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Campaign_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Campaign_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Campaign_entity/afterUiInit.js</afterUiInit> <useFavorites v="true" /> <iconId>VAADIN:GROUP</iconId> @@ -552,6 +553,9 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>ACTIVE</name> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -667,6 +671,10 @@ <isFilterable v="true" /> <filtertype>BASIC</filtertype> </consumerMapping> + <dbRecordFieldMapping> + <name>ACTIVE.value</name> + <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/Campaign_entity/contentDescriptionProcess.js b/entity/Campaign_entity/contentDescriptionProcess.js new file mode 100644 index 00000000000..b07a72fe7cc --- /dev/null +++ b/entity/Campaign_entity/contentDescriptionProcess.js @@ -0,0 +1,5 @@ +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js new file mode 100644 index 00000000000..0c4da8fb72e --- /dev/null +++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js @@ -0,0 +1,6 @@ +import("Context_lib"); +import("system.result"); +import("KeywordRegistry_basic"); + +var activArr = [$KeywordRegistry.campaignState$planning(), $KeywordRegistry.campaignState$approved()]; +result.string(ContextUtils.buildActiveCaseWhen(activArr, "CAMPAIGN.STATUS")); \ No newline at end of file diff --git a/entity/Competition_entity/Competition_entity.aod b/entity/Competition_entity/Competition_entity.aod index ac91f28ee4d..7e7298fd9a7 100644 --- a/entity/Competition_entity/Competition_entity.aod +++ b/entity/Competition_entity/Competition_entity.aod @@ -374,10 +374,6 @@ <name>PHASE.value</name> <recordfield>COMPETITION.PHASE</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_ROWID.displayValue</name> - <expression>%aditoprj%/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>COMPETITIONID.value</name> <recordfield>COMPETITION.COMPETITIONID</recordfield> diff --git a/entity/Competition_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Competition_entity/entityfields/object_rowid/displayValueProcess.js index 8b080bceea9..95c4eea5367 100644 --- a/entity/Competition_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/Competition_entity/entityfields/object_rowid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) { result.string(""); } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js deleted file mode 100644 index fb69d484cfa..00000000000 --- a/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("Context_lib"); - -result.string(ContextUtils.getNameSubselectSql("COMPETITION.OBJECT_TYPE", "COMPETITION.OBJECT_ROWID")) \ No newline at end of file diff --git a/entity/Context_entity/Context_entity.aod b/entity/Context_entity/Context_entity.aod index c82aab16b52..a8e3222ec7e 100644 --- a/entity/Context_entity/Context_entity.aod +++ b/entity/Context_entity/Context_entity.aod @@ -108,11 +108,6 @@ </entityParameter> </children> </entityProvider> - <entityParameter> - <name>GetAllContexts_param</name> - <expose v="true" /> - <description>PARAMETER</description> - </entityParameter> <entityParameter> <name>InvertBlacklist_param</name> <expose v="true" /> diff --git a/entity/Context_entity/recordcontainers/jdito/contentProcess.js b/entity/Context_entity/recordcontainers/jdito/contentProcess.js index 25682212551..1bdca6e2fa3 100644 --- a/entity/Context_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Context_entity/recordcontainers/jdito/contentProcess.js @@ -4,7 +4,6 @@ import("Context_lib"); var blacklist var invertBlacklist -var filterContexts = vars.get("$param.GetAllContexts_param") != "true"; var whitelist; if (vars.get("$local.idvalues") && vars.get("$local.idvalues").length > 0) @@ -23,4 +22,4 @@ else invertBlacklist = vars.get("$param.InvertBlacklist_param") == "true"; } -result.object(ContextUtils.getContexts(filterContexts, blacklist, invertBlacklist)); \ No newline at end of file +result.object(ContextUtils.getContexts(blacklist, invertBlacklist)); \ No newline at end of file diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod index 273e731918f..a31e274eac6 100644 --- a/entity/Contract_entity/Contract_entity.aod +++ b/entity/Contract_entity/Contract_entity.aod @@ -6,6 +6,7 @@ <title>Contract</title> <grantDeleteProcess>%aditoprj%/entity/Contract_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Contract_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Contract_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Contract_entity/afterUiInit.js</afterUiInit> <onValidation>%aditoprj%/entity/Contract_entity/onValidation.js</onValidation> <useFavorites v="true" /> @@ -402,6 +403,12 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>DATE_NEW</name> + </entityField> + <entityField> + <name>ACTIVE</name> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -544,6 +551,14 @@ <recordfield>CONTRACT.CONTRACTID</recordfield> <aggregateType>COUNT</aggregateType> </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>CONTRACT.CONTRACTSTART</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ACTIVE.value</name> + <expression>%aditoprj%/entity/Contract_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/Contract_entity/contentDescriptionProcess.js b/entity/Contract_entity/contentDescriptionProcess.js new file mode 100644 index 00000000000..03f72c03ff0 --- /dev/null +++ b/entity/Contract_entity/contentDescriptionProcess.js @@ -0,0 +1,16 @@ +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); + +var res = [translate.text("Payment method") + ": " + vars.get("$field.PAYMENT.displayValue")]; + +if(vars.get("$field.CONTRACTDUE")) + res.push(translate.text("Next due date") + ": " + vars.get("$field.CONTRACTDUE")); + +if(vars.get("$field.CONTRACTEND")) + res.push(translate.text("Contract expiry date") + ": " + vars.get("$field.CONTRACTEND")) + +res.push(translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Contract_entity/contentTitleProcess.js b/entity/Contract_entity/contentTitleProcess.js index 302a1d406e4..94a08f9ad5c 100644 --- a/entity/Contract_entity/contentTitleProcess.js +++ b/entity/Contract_entity/contentTitleProcess.js @@ -1,4 +1,6 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.CONTRACTCODE_DISPLAY_fieldGroup")); \ No newline at end of file +var res = [vars.get("$field.CONTRACTCODE_DISPLAY_fieldGroup"), vars.get("$field.CONTRACTSTATUS.displayValue")]; + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Contract_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Contract_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js new file mode 100644 index 00000000000..d788aeadb92 --- /dev/null +++ b/entity/Contract_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js @@ -0,0 +1,6 @@ +import("Context_lib"); +import("system.result"); +import("KeywordRegistry_basic"); + +var activArr = [$KeywordRegistry.contractState$validLimited(), $KeywordRegistry.contractState$validUnlimited(), $KeywordRegistry.contractState$notSigned()]; +result.string(ContextUtils.buildActiveCaseWhen(activArr, "CONTRACT.CONTRACTSTATUS")); \ No newline at end of file diff --git a/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod b/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod index 6db556011a3..3e77638a51c 100644 --- a/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod +++ b/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod @@ -43,10 +43,6 @@ <name>Blacklist_param</name> <valueProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/blacklist_param/valueProcess.js</valueProcess> </entityParameter> - <entityParameter> - <name>GetAllContexts_param</name> - <valueProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js</valueProcess> - </entityParameter> </children> </entityConsumer> <entityProvider> diff --git a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js b/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js deleted file mode 100644 index 40effa01784..00000000000 --- a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string(true); \ No newline at end of file diff --git a/entity/Forecast_entity/Forecast_entity.aod b/entity/Forecast_entity/Forecast_entity.aod index f553dde8f46..75fd4c7ae92 100644 --- a/entity/Forecast_entity/Forecast_entity.aod +++ b/entity/Forecast_entity/Forecast_entity.aod @@ -171,10 +171,6 @@ <name>OBJECT_ROWID.value</name> <recordfield>FORECAST.OBJECT_ROWID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_ROWID.displayValue</name> - <expression>%aditoprj%/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>OBJECT_TYPE.value</name> <recordfield>FORECAST.OBJECT_TYPE</recordfield> diff --git a/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js index 8b080bceea9..95c4eea5367 100644 --- a/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) { result.string(""); } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js deleted file mode 100644 index 856c1bb3cff..00000000000 --- a/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("Context_lib"); - -result.string(ContextUtils.getNameSubselectSql("FORECAST.OBJECT_TYPE", "FORECAST.OBJECT_ROWID")) \ No newline at end of file diff --git a/entity/Leadimport_entity/Leadimport_entity.aod b/entity/Leadimport_entity/Leadimport_entity.aod index e5241d647c8..e14d1cf8eba 100644 --- a/entity/Leadimport_entity/Leadimport_entity.aod +++ b/entity/Leadimport_entity/Leadimport_entity.aod @@ -10,6 +10,7 @@ <grantDelete v="true" /> <grantDeleteProcess>%aditoprj%/entity/Leadimport_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Leadimport_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Leadimport_entity/contentDescriptionProcess.js</contentDescriptionProcess> <iconId>NEON:IMPORT</iconId> <imageProcess>%aditoprj%/entity/Leadimport_entity/imageProcess.js</imageProcess> <titlePlural>Lead Imports</titlePlural> @@ -17,6 +18,14 @@ <entityFields> <entityProvider> <name>#PROVIDER</name> + <dependencies> + <entityDependency> + <name>451f0237-27f9-4018-a165-9bb4857d6565</name> + <entityName>Object_entity</entityName> + <fieldName>Leadimports</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>NAME</name> diff --git a/entity/Leadimport_entity/contentDescriptionProcess.js b/entity/Leadimport_entity/contentDescriptionProcess.js new file mode 100644 index 00000000000..5fa0cb58bc2 --- /dev/null +++ b/entity/Leadimport_entity/contentDescriptionProcess.js @@ -0,0 +1,5 @@ +import("system.datetime"); +import("system.vars"); +import("system.result"); +import("system.translate"); +result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); \ No newline at end of file diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index 8706484f0ff..a416ef148b2 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -412,10 +412,6 @@ <name>OBJECTMEMBERID.value</name> <recordfield>OBJECTMEMBER.OBJECTMEMBERID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_ROWID.displayValue</name> - <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>MEMBERROLE.displayValue</name> <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/memberrole.displayvalue/expression.js</expression> diff --git a/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js index 8b080bceea9..95c4eea5367 100644 --- a/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) { result.string(""); } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js deleted file mode 100644 index a5d62617bee..00000000000 --- a/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ /dev/null @@ -1,10 +0,0 @@ -import("system.vars"); -import("system.result"); -import("Context_lib"); - -//TODO: refactor: -//whenever we want to shrink data for a single object it's not needed to resolve the objects name where we're from -if (vars.get("$param.ObjectType_param") == null) - result.string(ContextUtils.getNameSubselectSql("OBJECTMEMBER.OBJECT_TYPE", "OBJECTMEMBER.OBJECT_ROWID")); -else - result.string("'OBJECT_ROWID.displayValue not loaded'"); \ No newline at end of file diff --git a/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js b/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js index d074689525f..81438bdcb9f 100644 --- a/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js +++ b/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js @@ -6,5 +6,5 @@ import("Context_lib"); if (vars.get("$field.TARGET_ID") && vars.get("$field.TARGET_CONTEXT")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.TARGET_CONTEXT"), vars.get("$field.TARGET_ID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.TARGET_CONTEXT"), vars.get("$field.TARGET_ID"))); } \ No newline at end of file diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js index d1d925c81b4..7980a2bd433 100644 --- a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js @@ -298,7 +298,7 @@ function _insertEntry(pTree, pEntryData, pNodeId, pLayer, pObjectType, pNewRelat pEntryData.forEach(function ([objectId, objectRelationId, objectType, relationTitle, info, objectRelationTypeId], i) { //TODO: entities.getRow, check if this is possible with fewer queries - var display = db.cell(ContextUtils.getNameSql(pObjectType, objectId)); + var display = ContextUtils.getTitleByContext(pObjectType, objectId); // TODO: Icon var uid = [objectId, i, objectRelationTypeId, pObjectType, pNodeId, objectType, objectRelationId, pHierarchy]; diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod index 1a571fad307..e3633e2483c 100644 --- a/entity/Object_entity/Object_entity.aod +++ b/entity/Object_entity/Object_entity.aod @@ -283,6 +283,14 @@ <fieldName>#PROVIDER</fieldName> </dependency> </entityConsumer> + <entityConsumer> + <name>Leadimports</name> + <dependency> + <name>dependency</name> + <entityName>Leadimport_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> + </entityConsumer> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/Object_entity/recordcontainers/jdito/contentProcess.js b/entity/Object_entity/recordcontainers/jdito/contentProcess.js index 27b0b7e83a1..bf77eb9a2d0 100644 --- a/entity/Object_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Object_entity/recordcontainers/jdito/contentProcess.js @@ -19,7 +19,7 @@ if (vars.get("$param.ObjectType_param")) if (vars.exists("$param.ContactId") && vars.get("$param.ContactId")) contactId = vars.get("$param.ContactId"); - result.object(db.table(ContextUtils.getContextDataSql(objectType, contactId, false, undefined, false, null, null, excludedIds))) + result.object(ContextUtils.loadContent(ContextUtils.getEntity(objectType), [contactId], ["#UID", "#CONTENTTITLE"], excludedIds)) } else { diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod index 0491466e0b6..e486ce29844 100644 --- a/entity/Offer_entity/Offer_entity.aod +++ b/entity/Offer_entity/Offer_entity.aod @@ -10,6 +10,7 @@ <grantUpdateProcess>%aditoprj%/entity/Offer_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/Offer_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Offer_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Offer_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Offer_entity/afterUiInit.js</afterUiInit> <useFavorites v="true" /> <iconId>VAADIN:CART</iconId> @@ -1052,6 +1053,9 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>ACTIVE</name> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -1243,10 +1247,6 @@ <name>OBJECT_TYPE.value</name> <recordfield>OFFER.OBJECT_TYPE</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_ROWID.displayValue</name> - <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>CONTACT_ID.value</name> <recordfield>OFFER.CONTACT_ID</recordfield> @@ -1304,6 +1304,10 @@ <name>OFFER_ID.value</name> <recordfield>OFFER.OFFER_ID</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ACTIVE.value</name> + <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/Offer_entity/contentDescriptionProcess.js b/entity/Offer_entity/contentDescriptionProcess.js new file mode 100644 index 00000000000..f1afab18db7 --- /dev/null +++ b/entity/Offer_entity/contentDescriptionProcess.js @@ -0,0 +1,12 @@ +import("Util_lib"); +import("system.eMath"); +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); + +var res = [translate.text("Total gross") + ": " + vars.get("$field.TotalGross.displayValue"), + translate.text("Probability") + ": " + vars.get("$field.PROBABILITY.displayValue"), + translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))]; + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Offer_entity/contentTitleProcess.js b/entity/Offer_entity/contentTitleProcess.js index 98f9e420320..e90d32e0f10 100644 --- a/entity/Offer_entity/contentTitleProcess.js +++ b/entity/Offer_entity/contentTitleProcess.js @@ -1,4 +1,6 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.OfferCode_VersNr_fieldgroup")); \ No newline at end of file +var res = [vars.get("$field.OfferCode_VersNr_fieldgroup"), vars.get("$field.STATUS.displayValue")] + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js index fe2b7c72502..8074aca46e2 100644 --- a/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$field.OBJECT_ROWID") == null) { result.string(""); } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js new file mode 100644 index 00000000000..6da46407ad5 --- /dev/null +++ b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js @@ -0,0 +1,6 @@ +import("Context_lib"); +import("system.result"); +import("KeywordRegistry_basic"); + +var activArr = [$KeywordRegistry.offerStatus$open(), $KeywordRegistry.offerStatus$checked(), $KeywordRegistry.offerStatus$sent()]; +result.string(ContextUtils.buildActiveCaseWhen(activArr, "OFFER.STATUS")); \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js deleted file mode 100644 index c0332af5cb5..00000000000 --- a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("Context_lib"); - -result.string(ContextUtils.getNameSubselectSql("OFFER.OBJECT_TYPE", "OFFER.OBJECT_ROWID")) \ No newline at end of file diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod index 2d2ea6554be..64b551ee2df 100644 --- a/entity/Order_entity/Order_entity.aod +++ b/entity/Order_entity/Order_entity.aod @@ -6,6 +6,7 @@ <title>Receipt</title> <grantDeleteProcess>%aditoprj%/entity/Order_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Order_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Order_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Order_entity/afterUiInit.js</afterUiInit> <useFavorites v="true" /> <iconId>VAADIN:DOLLAR</iconId> @@ -106,6 +107,11 @@ <entityConsumer> <name>Orderitems</name> <description></description> + <dependency> + <name>dependency</name> + <entityName>Orderitem_entity</entityName> + <fieldName>Orderitems</fieldName> + </dependency> <children> <entityParameter> <name>OrderId_param</name> @@ -131,11 +137,6 @@ <mandatory v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Orderitem_entity</entityName> - <fieldName>Orderitems</fieldName> - </dependency> </entityConsumer> <entityField> <name>NET</name> @@ -197,6 +198,11 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -207,15 +213,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>MainDocuments</name> <stateProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> + </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -226,28 +232,28 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Salesprojects</name> + <dependency> + <name>dependency</name> + <entityName>Salesproject_entity</entityName> + <fieldName>Salesprojects</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Salesprojects</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>KeywordCurrencies</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -255,14 +261,14 @@ <expose v="false" /> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -270,11 +276,6 @@ <expose v="false" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -293,6 +294,11 @@ </entityParameter> <entityConsumer> <name>Activities</name> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -307,11 +313,6 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> </entityConsumer> <entityField> <name>OFFER_ID</name> @@ -325,6 +326,11 @@ <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -339,15 +345,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Order_entity/entityfields/attributes/onValidation.js</onValidation> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -358,15 +364,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>AttributeTree</name> <stateProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -377,25 +383,20 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>LogHistories</name> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> </entityConsumer> <entityField> <name>ORDERTYPE</name> @@ -473,31 +474,31 @@ </entityField> <entityConsumer> <name>KeywordOrderTypes</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordordertypes/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>KeywordDunningLevels</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>KeywordDunningLevels</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddunninglevels/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityField> <name>OBJECT_ROWID</name> @@ -525,6 +526,11 @@ </entityField> <entityConsumer> <name>Objects</name> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -535,14 +541,14 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Contexts</name> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> + </dependency> <children> <entityParameter> <name>Blacklist_param</name> @@ -553,11 +559,6 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> - </dependency> </entityConsumer> <entityParameter> <name>PossibleConnectionTypes</name> @@ -610,46 +611,46 @@ </entityField> <entityConsumer> <name>KeywordPaymentTerms</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordpaymentterms/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>KeywordDeliveryTerms</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>KeywordDeliveryTerms</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddeliveryterms/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>PossibleAddresses</name> <documentation>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/documentation.adoc</documentation> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAndContactAddresses</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAndContactAddresses</fieldName> - </dependency> </entityConsumer> <entityField> <name>NOTICE</name> @@ -666,20 +667,25 @@ </entityField> <entityConsumer> <name>Offers</name> + <dependency> + <name>dependency</name> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>DocumentTemplateTexHeader</name> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -690,14 +696,14 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexheader/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>DocumentTemplateTexFooter</name> <dependency> <name>dependency</name> <entityName>DocumentTemplate_entity</entityName> <fieldName>DocumentTemplateProvider</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>DocumentTemplateTexFooter</name> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -708,11 +714,6 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexfooter/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> </entityConsumer> <entityField> <name>ChosenTexHeader</name> @@ -924,6 +925,14 @@ <expose v="true" /> <description></description> </entityParameter> + <entityField> + <name>DATE_NEW</name> + <contentType>DATE</contentType> + <resolution>DAY</resolution> + </entityField> + <entityField> + <name>ACTIVE</name> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -1080,14 +1089,6 @@ <name>OBJECT_ROWID.value</name> <recordfield>SALESORDER.OBJECT_ROWID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_ROWID.displayValue</name> - <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OFFER_ID.displayValue</name> - <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>OBJECT_TYPE.value</name> <recordfield>SALESORDER.OBJECT_TYPE</recordfield> @@ -1147,6 +1148,14 @@ <recordfield>SALESORDER.SALESORDERID</recordfield> <aggregateType>COUNT</aggregateType> </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>SALESORDER.SALESORDERDATE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ACTIVE.value</name> + <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtension> diff --git a/entity/Order_entity/contentDescriptionProcess.js b/entity/Order_entity/contentDescriptionProcess.js new file mode 100644 index 00000000000..bd351d26e62 --- /dev/null +++ b/entity/Order_entity/contentDescriptionProcess.js @@ -0,0 +1,19 @@ +import("system.logging"); +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +import("KeywordRegistry_basic"); + +var orderstatus = vars.get("$field.ORDERSTATUS") == "1" ? translate.text("Yes"): translate.text("No") + +var res = [translate.text("Sent") + ": " + orderstatus, + translate.text("Total gross") + ": " + vars.get("$field.TotalGross.displayValue")] + +if(vars.get("$field.PAYDATE")) + res.push(translate.text("Pay date") + ": " + datetime.toDate(vars.get("$field.PAYDATE"), translate.text("dd.MM.yyyy"))) + + +res.push(translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Order_entity/contentTitleProcess.js b/entity/Order_entity/contentTitleProcess.js index efca7174f4e..376625c4943 100644 --- a/entity/Order_entity/contentTitleProcess.js +++ b/entity/Order_entity/contentTitleProcess.js @@ -4,4 +4,9 @@ import("system.translate"); import("system.vars"); import("system.result"); -result.string(KeywordUtils.getViewValue($KeywordRegistry.orderType(), vars.get("$field.ORDERTYPE")) +" - "+ vars.get("$field.SALESORDERCODE")); +var res = [vars.get("$field.SALESORDERCODE")]; + +if(vars.get("$field.CANCELLATION") == "1") + res.push(translate.text("${ORDER_CANCELLED}")); + +result.string(res.join(" | ")); diff --git a/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js index 8b080bceea9..95c4eea5367 100644 --- a/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) { result.string(""); } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js new file mode 100644 index 00000000000..b6235593124 --- /dev/null +++ b/entity/Order_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js @@ -0,0 +1,6 @@ +import("Context_lib"); +import("system.result"); +import("KeywordRegistry_basic"); + +var activArr = [0, 1]; +result.string(ContextUtils.buildActiveCaseWhen(activArr, "SALESORDER.ORDERSTATUS")); \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js deleted file mode 100644 index bbe883a8296..00000000000 --- a/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("Context_lib"); - -result.string(ContextUtils.getNameSubselectSql("SALESORDER.OBJECT_TYPE", "SALESORDER.OBJECT_ROWID")) \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js deleted file mode 100644 index cb7fa7682e1..00000000000 --- a/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("Context_lib"); -import("system.db"); - -result.string(db.translateStatement(ContextUtils.getNameSql("Offer", null, "SALESORDER.OFFER_ID"))); \ No newline at end of file diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index dbf97ba2d22..076fe1f6213 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -7,6 +7,7 @@ <title>Company</title> <grantDeleteProcess>%aditoprj%/entity/Organisation_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Organisation_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Organisation_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Organisation_entity/afterUiInit.js</afterUiInit> <initFilterProcess>%aditoprj%/entity/Organisation_entity/initFilterProcess.js</initFilterProcess> <useFavorites v="true" /> diff --git a/entity/Organisation_entity/contentDescriptionProcess.js b/entity/Organisation_entity/contentDescriptionProcess.js new file mode 100644 index 00000000000..b07a72fe7cc --- /dev/null +++ b/entity/Organisation_entity/contentDescriptionProcess.js @@ -0,0 +1,5 @@ +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); \ No newline at end of file diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod index 2a6662b6f7d..b5487036312 100644 --- a/entity/Product_entity/Product_entity.aod +++ b/entity/Product_entity/Product_entity.aod @@ -9,6 +9,7 @@ </siblings> <grantDeleteProcess>%aditoprj%/entity/Product_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Product_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Product_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Product_entity/afterUiInit.js</afterUiInit> <useFavorites v="true" /> <iconId>VAADIN:HAMMER</iconId> diff --git a/entity/Product_entity/contentDescriptionProcess.js b/entity/Product_entity/contentDescriptionProcess.js new file mode 100644 index 00000000000..b07a72fe7cc --- /dev/null +++ b/entity/Product_entity/contentDescriptionProcess.js @@ -0,0 +1,5 @@ +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); \ No newline at end of file diff --git a/entity/Product_entity/entityfields/contact_id/displayValueProcess.js b/entity/Product_entity/entityfields/contact_id/displayValueProcess.js index 660715572ae..d29e2e10266 100644 --- a/entity/Product_entity/entityfields/contact_id/displayValueProcess.js +++ b/entity/Product_entity/entityfields/contact_id/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.result"); import("Context_lib"); -result.string(db.cell(ContextUtils.getNameSql("Organisation", vars.get("$field.CONTACT_ID")))); \ No newline at end of file +result.string(ContextUtils.getTitleByContext("Organisation", vars.get("$field.CONTACT_ID"))); \ No newline at end of file diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 26c7f691c11..bbe19fd7cf0 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -12,6 +12,7 @@ </siblings> <grantDeleteProcess>%aditoprj%/entity/Salesproject_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Salesproject_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Salesproject_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Salesproject_entity/afterUiInit.js</afterUiInit> <onValidation>%aditoprj%/entity/Salesproject_entity/onValidation.js</onValidation> <useFavorites v="true" /> @@ -146,34 +147,39 @@ </entityField> <entityConsumer> <name>SalesprojectSources</name> - <children> - <entityParameter> - <name>SalesprojectId_param</name> - <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectsources/children/salesprojectid_param/valueProcess.js</valueProcess> - </entityParameter> - </children> <dependency> <name>dependency</name> <entityName>SalesprojectSource_entity</entityName> <fieldName>SalesprojectSouces</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>SalesprojectPhaseMilestones</name> <children> <entityParameter> <name>SalesprojectId_param</name> - <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasemilestones/children/salesprojectid_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectsources/children/salesprojectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>SalesprojectPhaseMilestones</name> <dependency> <name>dependency</name> <entityName>SalesprojectMilestone_entity</entityName> <fieldName>PhaseMilestones</fieldName> </dependency> + <children> + <entityParameter> + <name>SalesprojectId_param</name> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasemilestones/children/salesprojectid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> </entityConsumer> <entityConsumer> <name>Forecasts</name> + <dependency> + <name>dependency</name> + <entityName>Forecast_entity</entityName> + <fieldName>Links</fieldName> + </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -186,15 +192,15 @@ <expose v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Forecast_entity</entityName> - <fieldName>Links</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Competitions</name> <selectionMode>MULTI</selectionMode> + <dependency> + <name>dependency</name> + <entityName>Competition_entity</entityName> + <fieldName>Links</fieldName> + </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -207,14 +213,14 @@ <expose v="true" /> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>Offers</name> <dependency> <name>dependency</name> - <entityName>Competition_entity</entityName> + <entityName>Offer_entity</entityName> <fieldName>Links</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>Offers</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -227,14 +233,14 @@ <expose v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>Links</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Activities</name> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> <children> <entityParameter> <name>PresetLinks_param</name> @@ -249,14 +255,14 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Members</name> + <dependency> + <name>dependency</name> + <entityName>Member_entity</entityName> + <fieldName>WithDistrictResponsibles</fieldName> + </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -281,11 +287,6 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Member_entity</entityName> - <fieldName>WithDistrictResponsibles</fieldName> - </dependency> </entityConsumer> <entityActionField> <name>newOffer</name> @@ -298,6 +299,11 @@ <entityConsumer> <name>Timetrackings</name> <refreshParent v="true" /> + <dependency> + <name>dependency</name> + <entityName>Timetracking_entity</entityName> + <fieldName>Timetrackings</fieldName> + </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -308,11 +314,6 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/timetrackings/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Timetracking_entity</entityName> - <fieldName>Timetrackings</fieldName> - </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> @@ -336,6 +337,11 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -350,15 +356,15 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>MainDocuments</name> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/maindocuments/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> + </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -369,11 +375,6 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> - </dependency> </entityConsumer> <entityActionField> <name>newTimetracking</name> @@ -384,6 +385,11 @@ </entityActionField> <entityConsumer> <name>KeywordProbabilties</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -392,14 +398,14 @@ <expose v="false" /> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -407,11 +413,6 @@ <expose v="false" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -431,17 +432,17 @@ <entityConsumer> <name>KeywordWonLost</name> <selectionMode>MULTI</selectionMode> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/keywordwonlost/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityField> <name>REASONS</name> @@ -458,17 +459,6 @@ </entityField> <entityProvider> <name>Salesprojects</name> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - <entityParameter> - <name>PresetTitle_param</name> - <expose v="false" /> - </entityParameter> - </children> <dependencies> <entityDependency> <name>0925d17f-a26a-4641-aaf4-0f74796fefa7</name> @@ -489,6 +479,17 @@ <isConsumer v="false" /> </entityDependency> </dependencies> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityParameter> + <name>PresetTitle_param</name> + <expose v="false" /> + </entityParameter> + </children> </entityProvider> <entityActionField> <name>newTask</name> @@ -499,6 +500,11 @@ <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/tasks/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -513,14 +519,17 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> </entityConsumer> <entityProvider> <name>OpenSalesprojects</name> + <dependencies> + <entityDependency> + <name>631f55f9-fb0f-4205-bdb8-6e3476268ab4</name> + <entityName>Offer_entity</entityName> + <fieldName>Salesprojects</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> <children> <entityParameter> <name>Status_param</name> @@ -531,14 +540,6 @@ <expose v="false" /> </entityParameter> </children> - <dependencies> - <entityDependency> - <name>631f55f9-fb0f-4205-bdb8-6e3476268ab4</name> - <entityName>Offer_entity</entityName> - <fieldName>Salesprojects</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityParameter> <name>Status_param</name> @@ -547,22 +548,27 @@ </entityParameter> <entityConsumer> <name>SalesprojectStateMilestones</name> + <dependency> + <name>dependency</name> + <entityName>SalesprojectMilestone_entity</entityName> + <fieldName>StateMilestones</fieldName> + </dependency> <children> <entityParameter> <name>SalesprojectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectstatemilestones/children/salesprojectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>SalesprojectMilestone_entity</entityName> - <fieldName>StateMilestones</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Salesproject_entity/entityfields/attributes/onValidation.js</onValidation> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -573,15 +579,15 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>AttributeTree</name> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributetree/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -592,29 +598,29 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>LogHistories</name> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Classifications</name> <refreshParent v="true" /> + <dependency> + <name>dependency</name> + <entityName>Classification_entity</entityName> + <fieldName>Classifications</fieldName> + </dependency> <children> <entityParameter> <name>ObjectRowid_param</name> @@ -629,11 +635,6 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/classifications/children/classificationtype_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Classification_entity</entityName> - <fieldName>Classifications</fieldName> - </dependency> </entityConsumer> <entityField> <name>RemainingTime</name> @@ -647,6 +648,11 @@ </entityField> <entityConsumer> <name>SalesprojectForecastCharts</name> + <dependency> + <name>dependency</name> + <entityName>Turnover_entity</entityName> + <fieldName>FilteredTurnovers</fieldName> + </dependency> <children> <entityParameter> <name>SalesprojectId_param</name> @@ -665,25 +671,20 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectforecastcharts/children/yearcounttoshow_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Turnover_entity</entityName> - <fieldName>FilteredTurnovers</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>SalesprojectPhaseStepper</name> + <dependency> + <name>dependency</name> + <entityName>SalesprojectPhase_entity</entityName> + <fieldName>Phases</fieldName> + </dependency> <children> <entityParameter> <name>CurrentPhase_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/currentphase_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>SalesprojectPhase_entity</entityName> - <fieldName>Phases</fieldName> - </dependency> </entityConsumer> <entityField> <name>PHASEINFO</name> @@ -706,17 +707,17 @@ </entityField> <entityConsumer> <name>ProjectTypeAttribute</name> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> <children> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/projecttypeattribute/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> </entityConsumer> <entityProvider> <name>QuickEntrySalesprojects</name> @@ -778,6 +779,12 @@ <title>Classification</title> <groupable v="true" /> </entityField> + <entityField> + <name>DATE_NEW</name> + </entityField> + <entityField> + <name>ACTIVE</name> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -944,6 +951,14 @@ <name>MST_TEAM_ID.displayValue</name> <recordfield>MST_TEAM.TEAMNAME</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>SALESPROJECT.STARTDATE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ACTIVE.value</name> + <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/Salesproject_entity/contentDescriptionProcess.js b/entity/Salesproject_entity/contentDescriptionProcess.js new file mode 100644 index 00000000000..3e00d9c6738 --- /dev/null +++ b/entity/Salesproject_entity/contentDescriptionProcess.js @@ -0,0 +1,14 @@ +import("Keyword_lib"); +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +import("KeywordRegistry_basic"); + +var res = [translate.text("Phase") + ": " + KeywordUtils.getViewValue($KeywordRegistry.salesprojectPhase(), vars.get("$field.PHASE")), + translate.text("Classification: ") + vars.get("$field.CLASSIFICATIONVALUE"), + translate.text("Volume") + ": " + vars.get("$field.VOLUME.displayValue"), + translate.text("Probability") + ": " + vars.get("$field.PROBABILITY.displayValue"), + translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))]; + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Salesproject_entity/contentTitleProcess.js b/entity/Salesproject_entity/contentTitleProcess.js index 5465ff4efe7..dd3706b77cb 100644 --- a/entity/Salesproject_entity/contentTitleProcess.js +++ b/entity/Salesproject_entity/contentTitleProcess.js @@ -1,4 +1,6 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.PROJECTTITLE")); \ No newline at end of file +var res = [vars.get("$field.PROJECTCODE"), vars.get("$field.PROJECTTITLE"), vars.get("$field.STATUS.displayValue")]; + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js new file mode 100644 index 00000000000..d91a07968d0 --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js @@ -0,0 +1,6 @@ +import("Context_lib"); +import("system.result"); +import("KeywordRegistry_basic"); + +var activArr = [$KeywordRegistry.salesprojectState$open(), $KeywordRegistry.salesprojectState$postponed()]; +result.string(ContextUtils.buildActiveCaseWhen(activArr, "SALESPROJECT.STATUS")); \ No newline at end of file diff --git a/entity/SupportTicket_entity/SupportTicket_entity.aod b/entity/SupportTicket_entity/SupportTicket_entity.aod index a289e1083cc..7449b209441 100644 --- a/entity/SupportTicket_entity/SupportTicket_entity.aod +++ b/entity/SupportTicket_entity/SupportTicket_entity.aod @@ -5,6 +5,7 @@ <documentation>%aditoprj%/entity/SupportTicket_entity/documentation.adoc</documentation> <title>Support Ticket</title> <contentTitleProcess>%aditoprj%/entity/SupportTicket_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/SupportTicket_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/SupportTicket_entity/afterUiInit.js</afterUiInit> <onValidation>%aditoprj%/entity/SupportTicket_entity/onValidation.js</onValidation> <useFavorites v="true" /> @@ -459,6 +460,12 @@ <name>TASK_ICON_COLOR</name> <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/task_icon_color/valueProcess.js</valueProcess> </entityField> + <entityField> + <name>DATE_NEW</name> + </entityField> + <entityField> + <name>ACTIVE</name> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -597,6 +604,14 @@ <recordfield>TICKET.TICKETID</recordfield> <aggregateType>COUNT</aggregateType> </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>TASK.START_DATE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ACTIVE.value</name> + <expression>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtension> diff --git a/entity/SupportTicket_entity/contentDescriptionProcess.js b/entity/SupportTicket_entity/contentDescriptionProcess.js new file mode 100644 index 00000000000..1d91623c4ae --- /dev/null +++ b/entity/SupportTicket_entity/contentDescriptionProcess.js @@ -0,0 +1,18 @@ +import("KeywordRegistry_basic"); +import("Keyword_lib"); +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); + +var res = []; + +if(vars.get("$field.TASK_EDITOR_CONTACT_ID")) + res = [translate.text("{$TICKET_EDITOR}") + ": " + vars.get("$field.TASK_EDITOR_CONTACT_ID.displayValue")]; + + res.push(translate.text("Maturity") + ": " + datetime.toDate(vars.get("$field.TASK_MATURITY_DATE"), translate.text("dd.MM.yyyy"))); + res.push(translate.text("Progress") + ": " + KeywordUtils.getViewValue($KeywordRegistry.taskProgress(), vars.get("$field.TASK_PROGRESS"))); + res.push(translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); + +result.string(res.join(" | ")); + \ No newline at end of file diff --git a/entity/SupportTicket_entity/contentTitleProcess.js b/entity/SupportTicket_entity/contentTitleProcess.js index aae1064b78e..626ec76cac0 100644 --- a/entity/SupportTicket_entity/contentTitleProcess.js +++ b/entity/SupportTicket_entity/contentTitleProcess.js @@ -1,4 +1,9 @@ +import("KeywordRegistry_basic"); +import("Keyword_lib"); import("system.vars"); import("system.result"); -result.string(vars.get("$field.TASK_SUBJECT")) \ No newline at end of file + +var res = [vars.get("$field.TASK_SUBJECT"), vars.get("$field.TASK_STATUS.displayValue")]; + +result.string(res.join(" | ")) \ No newline at end of file diff --git a/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js new file mode 100644 index 00000000000..26673fbc448 --- /dev/null +++ b/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js @@ -0,0 +1,7 @@ +import("Context_lib"); +import("system.result"); +import("KeywordRegistry_basic"); + +var activArr = [$KeywordRegistry.taskStatus$new(), $KeywordRegistry.taskStatus$unassigned(), $KeywordRegistry.taskStatus$assigned(), +$KeywordRegistry.taskStatus$inProgress(), $KeywordRegistry.taskStatus$waiting(), $KeywordRegistry.taskStatus$customerChecks()]; +result.string(ContextUtils.buildActiveCaseWhen(activArr, "TASK.STATUS")); \ No newline at end of file diff --git a/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js b/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js index c87f4789fa9..23f715a5e9d 100644 --- a/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js @@ -6,5 +6,5 @@ import("Context_lib"); if(vars.get("$field.OBJECT_ROWID") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod index f7b03fedd7f..45f3ee0f0cf 100644 --- a/entity/Task_entity/Task_entity.aod +++ b/entity/Task_entity/Task_entity.aod @@ -6,6 +6,7 @@ <title>Task</title> <grantDeleteProcess>%aditoprj%/entity/Task_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Task_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Task_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Task_entity/afterUiInit.js</afterUiInit> <onValidation>%aditoprj%/entity/Task_entity/onValidation.js</onValidation> <initFilterProcess>%aditoprj%/entity/Task_entity/initFilterProcess.js</initFilterProcess> @@ -503,6 +504,9 @@ <name>ICON_COLOR</name> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/icon_color/valueProcess.js</valueProcess> </entityField> + <entityField> + <name>DATE_NEW</name> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Task_entity/contentDescriptionProcess.js b/entity/Task_entity/contentDescriptionProcess.js new file mode 100644 index 00000000000..b07a72fe7cc --- /dev/null +++ b/entity/Task_entity/contentDescriptionProcess.js @@ -0,0 +1,5 @@ +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); \ No newline at end of file diff --git a/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod b/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod index beafceffdfe..e57032a87e2 100644 --- a/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod +++ b/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod @@ -63,10 +63,6 @@ <name>InvertBlacklist_param</name> <valueProcess>%aditoprj%/entity/WorkflowStartConfig_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> - <entityParameter> - <name>GetAllContexts_param</name> - <valueProcess>%aditoprj%/entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js</valueProcess> - </entityParameter> </children> </entityConsumer> <entityConsumer> diff --git a/entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js b/entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js deleted file mode 100644 index 40effa01784..00000000000 --- a/entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string(true); \ No newline at end of file diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 2c2348c9da0..2abce19573c 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -6,6 +6,10 @@ <country></country> <variant></variant> <keyValueMap> + <entry> + <key>Illegal Parent Operator in buildFilterObj-Function:</key> + <value>Übergebener Operator ungültig in Funktion "buildFilterObj"</value> + </entry> <entry> <key>Probability AI</key> <value>Wahrscheinlichkeit KI</value> diff --git a/neonContext/SupportTicket/SupportTicket.aod b/neonContext/SupportTicket/SupportTicket.aod index 5115f0e09bb..b0233b40612 100644 --- a/neonContext/SupportTicket/SupportTicket.aod +++ b/neonContext/SupportTicket/SupportTicket.aod @@ -4,6 +4,7 @@ <title>Support Ticket</title> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/neonContext/SupportTicket/documentation.adoc</documentation> + <icon>VAADIN:CHAT</icon> <mainView>SupportTicketMain_view</mainView> <filterView>SupportTicketFilter_view</filterView> <editView>SupportTicketEdit_view</editView> diff --git a/neonView/360DegreeFilter_view/360DegreeFilter_view.aod b/neonView/360DegreeFilter_view/360DegreeFilter_view.aod index fcb25887036..bf84f6db4d7 100644 --- a/neonView/360DegreeFilter_view/360DegreeFilter_view.aod +++ b/neonView/360DegreeFilter_view/360DegreeFilter_view.aod @@ -2,7 +2,7 @@ <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> <name>360DegreeFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <filterable v="false" /> + <filterable v="true" /> <layout> <groupLayout> <name>layout</name> @@ -10,22 +10,25 @@ </layout> <children> <treeViewTemplate> - <name>Treetable</name> + <name>Tree</name> <favoriteActionGroup2>newModule</favoriteActionGroup2> <titleField>TITLE</titleField> - <descriptionField>DATE</descriptionField> + <descriptionField>DESCRIPTION</descriptionField> <iconField>ICON</iconField> + <hideContentSearch v="false" /> <entityField>#ENTITY</entityField> + <linkedColumns /> <defaultGroupFields> - <element>ENTITY_NAME</element> + <element>GROUP</element> </defaultGroupFields> + <fixedFilterFields /> </treeViewTemplate> <timelineViewTemplate> <name>Timeline</name> <favoriteActionGroup2>newModule</favoriteActionGroup2> - <dateField>DATE</dateField> + <dateField>DATE_NEW</dateField> <titleField>TITLE</titleField> - <descriptionField>ENTITY_NAME</descriptionField> + <descriptionField>GROUP</descriptionField> <iconIdField>ICON</iconIdField> <hideContentSearch v="false" /> <entityField>#ENTITY</entityField> diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index 7aa6dedab7b..b7bf2e8a17a 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -1,3 +1,4 @@ +import("system.logging"); import("Util_lib"); import("system.entities"); import("system.tools"); @@ -29,7 +30,7 @@ function ContextUtils() {} */ ContextUtils.getCurrentContextId = function() { - return vars.getString("$sys.currentcontextname"); + return vars.getString("$sys.currentcontextname"); } /** @@ -145,7 +146,7 @@ ContextUtils.getContextConsumer = function(pContextId) case ContextUtils.getContextName("PrivatePerson"): return "PrivatePersons"; case ContextUtils.getContextName("Leadimport"): - return "Leadimport"; + return "Leadimports"; case ContextUtils.getContextName("Task"): return "Tasks"; case ContextUtils.getContextName("SupportTicket"): @@ -171,9 +172,9 @@ ContextUtils.loadContentTitle = function(pEntity, pUid, pProvider) return ""; var conf = entities.createConfigForLoadingRows() - .entity(pEntity) - .uid(pUid) - .fields(["#CONTENTTITLE"]); + .entity(pEntity) + .uid(pUid) + .fields(["#CONTENTTITLE"]); if (pProvider) conf.provider(pProvider); @@ -182,35 +183,107 @@ ContextUtils.loadContentTitle = function(pEntity, pUid, pProvider) return rows.length === 1 ? rows[0]["#CONTENTTITLE"] : ""; } + +/** + * loads the contentdescription by using entities.getRow + * @param {String} pEntity The entity name you want to load the title for + * @param {String} pUid the uid for which to load the title + * @param {String} [pProvider] providername when instead of the default provider another provider shall be used + * + * @return the #CONTENTDESCRIPTION or "" + */ +ContextUtils.loadContentDescription = function(pEntity, pUid, pProvider) +{ + if (!pUid) + return ""; + + var conf = entities.createConfigForLoadingRows() + .entity(pEntity) + .uid(pUid) + .fields(["#CONTENTDESCRIPTION"]); + + if (pProvider) + conf.provider(pProvider); + + var rows = entities.getRows(conf); + return rows.length === 1 ? rows[0]["#CONTENTDESCRIPTION"] : ""; +} + +/** + * loads specified Fields for one Row by using entities.getRow + * @param {String} pEntity The entity name you want to load the title for + * @param {String[]} [pUid] the uids for which to load the content + * @param {String[]} [pFields] fields you want as result + * @param {String[]} [pExcludeIDs] uids you want to exclude from the list + * @param {String} pProvider providername when instead of the default provider another provider shall be used + * + * @return the Values of the Fields + */ +ContextUtils.loadContent = function(pEntity, pUid, pFields, pExcludeIDs, pProvider) +{ + if (!pEntity) + return []; + + var conf = entities.createConfigForLoadingRows() + .entity(pEntity) + .uids(pUid) + .fields(pFields); + + if (pProvider) + conf.provider(pProvider); + + if (pExcludeIDs) + { + var childsArray = [{ + "type":"row", + "name":"#UID", + "operator":"NOT_IN", + "value": JSON.stringify(pExcludeIDs), + "key": JSON.stringify(pExcludeIDs), + "contenttype":"TEXT" + }]; + + + var pFilterParent = { + "type":"group", + "operator":"OR", + "childs": childsArray + }; + + conf.filter(JSON.stringify(pFilterParent)); + } + + var rows = entities.getRows(conf); + return rows && rows.length > 0 ? rows : []; +} + + /** * - * @param {Boolean} [pFilter=false] filter only for contexts which have a mapping in ContextUtils.getSelectMap - * @param {String[]} [pBlacklist] contextIds that shall not be included (so this is a additional filter to the pFilter param) + * @param {String[]} [pBlacklist] contextIds that shall not be included * @param {Boolean} [pInvertBlacklist=false] decides whether the items in pBlacklist are excluded (false) or * everything that is NOT in pBlacklist is excluded (true) * (-> if it is a whitelist or blacklist) * * @return {String[][]} the contexts [[contextId, contextName, contextTitle], [... ], ...] */ -ContextUtils.getContexts = function(pFilter, pBlacklist, pInvertBlacklist) +ContextUtils.getContexts = function(pBlacklist, pInvertBlacklist) { - if (pFilter == undefined) - pFilter = false; if (pInvertBlacklist == undefined) pInvertBlacklist = false; + var contexts = project.getDataModels(project.DATAMODEL_KIND_CONTEXT); + var contextsStandardList = ["Organisation", "Person", "PrivatePerson", "Activity", "Salesproject", "Contract", "Offer", "Order", "Product", "Task", + "Campaign", "CampaignStep", "SupportTicket", "Leadimport"]; - if (pFilter) - { - contexts = contexts.filter(function(pContext) { - if (pBlacklist && pBlacklist.indexOf(pContext[0]) > -1 != pInvertBlacklist) - return false; - // filter only contexts which have defined mappings in Context_lib - return ContextUtils.getSelectMap ()[pContext[0]] != undefined; - }); - } - else if (pBlacklist) + contexts = contexts.filter(function(pContext) { + if (contextsStandardList.indexOf(pContext[0]) > -1) + return true; + return false; + }); + + if (pBlacklist) { contexts = contexts.filter(function(pContext) { if (pBlacklist && pBlacklist.indexOf(pContext[0]) > -1 != pInvertBlacklist) @@ -220,16 +293,16 @@ ContextUtils.getContexts = function(pFilter, pBlacklist, pInvertBlacklist) } return contexts.map(ContextUtils._contextDataMapping).sort(function(pContext1, pContext2) - { - // sort after ContextTitle - if (pContext1[2] > pContext2[2]) - return 1; + { + // sort after ContextTitle + if (pContext1[2] > pContext2[2]) + return 1; - if (pContext1[2] < pContext2[2]) - return -1; + if (pContext1[2] < pContext2[2]) + return -1; - return 0; - }); + return 0; + }); } /** @@ -259,489 +332,131 @@ ContextUtils._contextDataMapping = function(pContext) return [pContext[0], contextName, (pContext[1] ? pContext[1] : contextName)]; } + /** - * represents a single context selection for one context - * this is usefull for objectlinks and 360° definition - * most properties are read only and can only be written with a setter + * gets the Title for a specific Context * - * @param {String} [pTableName] presets the matching property of the object - * @param {String} [pIdField] presets the matching property of the object - * @param {String} [pTitleExpression] presets the matching property of the object + * @param {String} pContextId the name of the context + * @param {String} pRowId Uid of certain Context * - * TODO: mostly temporary function until you can get fields from another Entity - * - * @class + * @return {String} The #CONTENTTITLE */ -function ContextSelector(pTableName, pIdField, pTitleExpression) +ContextUtils.getTitleByContext = function(pContextId, pRowId) { - //the >>this.propertyX = null;<< is for autocomplete in the designer - - /** - * title-definition; db-column or another sql-expression (like concating fields) as long as it returns one field - * read-only property; set it with a matching setter - * @property titleExpression - */ - this.titleExpression = null; ProtoPropertyUtils.makeSemiReadOnly(this, "titleExpression"); - this.setTitleExpression(pTitleExpression); - - /** - * name of the database-table - * read-only property; set it with a matching setter - * @property tableName - */ - this.tableName = null; ProtoPropertyUtils.makeSemiReadOnly(this, "tableName"); - this.setTableName(pTableName); - - /** - * db-field for the ID of one record (UID of matching context) - * read-only property; set it with a matching setter - * @property idField - */ - this.idField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "idField"); - this.setIdField(pIdField); - - /** - * expression for additional joins to be made (addotopmaö pt table-name) - * read-only property; set it with a matching setter - * @property joinExpression - */ - this.joinExpression = null; ProtoPropertyUtils.makeSemiReadOnly(this, "joinExpression"); - /** - * db-field for the ID of the relation to a CONTACT-record - * read-only property; set it with a matching setter - * @property contactIdField - */ - this.contactIdField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "contactIdField"); - /** - * db-field that represents the date of creation - * read-only property; set it with a matching setter - * @property creationDateField - */ - this.creationDateField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "creationDateField"); - /** - * db-field where the STATE-information (active/inactive) is stored (see the activeStates-property) - * read-only property; set it with a matching setter - * @property stateField - */ - this.stateField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "stateField"); - /** - * array that contains IDs of states that represent an "active"-state - * read-only property; set it with a matching setter - * @property activeStates - */ - this.activeStates = null; ProtoPropertyUtils.makeSemiReadOnly(this, "activeStates"); - this.condition = null; ProtoPropertyUtils.makeSemiReadOnly(this, "condition"); - /** - * db-field that will be used as groubBy - * read-only property; set it with a matching setter - * @property groupBy - */ - this.groupBy = null; ProtoPropertyUtils.makeSemiReadOnly(this, "groupBy"); - /** - * an object which contains the subcontexts and the prepared select to get the contactIds of them. - * - * { V-- SqlBuilder with all conditions needed V-IdCollumn name (with Tablename!) V-the contexts to show for this subcontext - * "Person": "Person": [newSelect("CONTACTID").from("CONTACT").where("PERSON_ID is not null"), "CONTACT.ORGANISATION_ID", ["Offer", "Order", "Contract", "SupportTicket"]], - * - * "Offer" ... // you can add as many subcontexts as you wish - * } - * read-only property; set it with a matching setter - * @property subContexts - */ - this.subContexts = null; ProtoPropertyUtils.makeSemiReadOnly(this, "subContexts"); + return ContextUtils.loadContentTitle(ContextUtils.getEntity(pContextId), pRowId); } + + /** - * creates a new instance of a ContextSelector and returns it - * if given it also sets some properties (property names with matching function-parameters) - * @static - */ -ContextSelector.create = function(pTableName, pIdField, pTitleExpression) -{ - return new ContextSelector(pTableName, pIdField, pTitleExpression); -}; -/** - * @param {String} pField the fieldname that shall be returned as full string - * @return {String} full field containing tablename and the column; if the column itself is already a full qualified field that field is returned - */ -ContextSelector.prototype.getFullField = function(pField) -{ - //always keep undefined (and null) just undefined since it's never a fullQualifier and tablename.undefined is useless - if (pField == undefined) - return undefined; - if (SqlUtils.isFullFieldQualifier(pField)) - return pField; - else - return this.tableName + "." + pField; -}; -/** - * @return {String} full id field containing tablename and column; if the column itself is already a full qualified field that field is returned - */ -ContextSelector.prototype.getFullIdField = function() -{ - return this.getFullField(this.idField); -}; -/** - * @return {String} full from-expression with tablename and join-part - */ -ContextSelector.prototype.getFullFromClause = function() -{ - if (this.joinExpression) - return " " + this.tableName + " " + this.joinExpression + " "; - else - return this.tableName; - -}; -/** - * @return {Object} in the following format: - * { - * "{contactid1}": [SqlBuilder, ContextArray], - * ... - * ... - * } + * gets Data from a specific Context with entities. Functions + * + * @param {String} pContextId the title of the context + * @param {String[]} [pContextConfig] Config defined in the Provider Parameter + * @param {Object} [pFilterObj] prepeared Filter Object + * @param {String[]} [pContactId] Array of all the Contactids you want to search through + * + * @return {String[][]} An Array of Fields (["#UID", "#TITLE", "#MAPPING", "#CONTENTDESCRIPTION", "#CONTENTTITLE", "CONTACT_ID", "DATE_NEW"]) for a certain Context */ -ContextSelector.prototype.getSubContexts = function(pParentRowId) -{ - if (this.subContexts) +ContextUtils.getContextDataViaReadEntity = function(pContextId, pContextConfig, pFilterObj, pContactId) +{ + if(pContextConfig.childField && pContextConfig.parentField && pContextConfig.contactIdField && pContextConfig.subContext) { - var sqls = {}; - for (let contextId in this.subContexts) - { - // Copy the builder to prevent modifying the builder in this.subContexts - var select = this.subContexts[contextId][0].copy(); - - // add id-condition - if (select.whereWasCalled()) - { - select.and(this.subContexts[contextId][1], pParentRowId); - } - else - { - select.where(this.subContexts[contextId][1], pParentRowId); - } - - sqls[contextId] = [select, this.subContexts[contextId][2]]; - } + var prefilter = Utils.buildFilterObj({}, pContextConfig.contactIdField, "IN", "TEXT", JSON.stringify(pContactId), JSON.stringify(pContactId), "OR"); + var resObj = []; + + var subConf = entities.createConfigForLoadingRows() + .entity(ContextUtils.getEntity(pContextConfig.subContext)) + .fields([pContextConfig.childField]) + .filter(JSON.stringify(prefilter.filter)) - return sqls; + var subRes = entities.getRows(subConf); + for(var id in subRes) + resObj.push(subRes[id][pContextConfig.childField]); + + pFilterObj = Utils.buildFilterObj(pFilterObj, pContextConfig.parentField, "IN", "TEXT", JSON.stringify(resObj), JSON.stringify(resObj), "AND"); } else - return {}; - -}; -//setters which to nothing special; no need to document them -ContextSelector.prototype.setTitleExpression = function(pValue) -{ - this._titleExpression = pValue; - return this; -}; -ContextSelector.prototype.setTableName = function(pValue) -{ - this._tableName = pValue; - return this; -}; -ContextSelector.prototype.setIdField = function(pValue) -{ - this._idField = pValue; - return this; -}; -ContextSelector.prototype.setJoinExpression = function(pValue) -{ - this._joinExpression = pValue; - return this; -}; -ContextSelector.prototype.setContactIdField = function(pValue) -{ - this._contactIdField = pValue; - return this; -}; -ContextSelector.prototype.setCreationDateField = function(pValue) -{ - this._creationDateField = pValue; - return this; -}; -ContextSelector.prototype.setStateField = function(pValue) -{ - this._stateField = pValue; - return this; -}; -ContextSelector.prototype.setActiveStates = function(pValue) -{ - this._activeStates = pValue; - return this; -}; -/** - * sets the condition property of a ContextSelector-object - * @param {SqlBuilder} pSqlBuilder condition as SqlBuilder-object - */ -ContextSelector.prototype.setCondition = function(pSqlBuilder) -{ - this._condition = pSqlBuilder; - return this; -}; -ContextSelector.prototype.setSubContexts = function(pContexts) -{ - this._subContexts = pContexts; - return this; -}; -ContextSelector.prototype.setGroupBy = function(pValue) -{ - this._groupBy = pValue; - return this; -}; - -/** - * TODO: !!!temporary function until you can get fields from another Entity!!! - */ -ContextUtils.getSelectMap = function() -{ - var maskingUtils = new SqlMaskingUtils(); - var isOracle = maskingUtils.dbType == db.DBTYPE_ORACLE10_CLUSTER - || maskingUtils.dbType == db.DBTYPE_ORACLE10_OCI - || maskingUtils.dbType == db.DBTYPE_ORACLE10_THIN; + { + pFilterObj = Utils.buildFilterObj(pFilterObj, "CONTACT_ID", "IN", "TEXT", JSON.stringify(pContactId), JSON.stringify(pContactId), "AND"); + } + + var fields = ["#UID", "#TITLE", "#MAPPING", "#CONTENTDESCRIPTION", "#CONTENTTITLE", "CONTACT_ID", "DATE_NEW", "ACTIVE"]; + if(pContextConfig.setGroupBy) + fields.push(pContextConfig.setGroupBy); + + + var conf = entities.createConfigForLoadingRows() + .entity(ContextUtils.getEntity(pContextId)) + .fields(fields) - return { - "Organisation": ContextSelector.create("ORGANISATION", "CONTACT.CONTACTID", "ORGANISATION.NAME") - .setJoinExpression("join CONTACT on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null") - .setCondition(newWhere("ORGANISATION.ORGANISATIONID", "0", SqlBuilder.NOT_EQUAL())) - .setSubContexts({ - "Person": [newSelect("CONTACTID").from("CONTACT").where("PERSON_ID is not null"), "CONTACT.ORGANISATION_ID", ["Offer", "Order", "Contract", "SupportTicket"]] - }) - ,"Person": ContextSelector.create("CONTACT", "CONTACTID") - .setTitleExpression(maskingUtils.concatWithSeparator([ - new ContactTitleRenderer(Contact.createWithColumnPreset()).asSql() - ,"' - '"//looks pretty bad; TODO: workaround till Lookups can be loaded over a link-entity; then use displayProc - ,"defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO" - ,"' - '" - ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY" - ]," ")) - .setJoinExpression("join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID " - + " join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID " - + " left join ADDRESS defaultAddress on defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID") - ,"PrivatePerson": ContextSelector.create("PERSON", "PERSONID") - .setTitleExpression(maskingUtils.concatWithSeparator([ - new ContactTitleRenderer(Contact.createWithColumnPresetForPrivatePerson()).asSql() - ,"' - '"//looks pretty bad; TODO: workaround till Lookups can be loaded over a link-entity; then use displayProc - ,"defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO" - ,"' - '" - ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY" - ]," ")) - .setJoinExpression("left join CONTACT on PERSON.PERSONID = CONTACT.PERSON_ID and CONTACT.ORGANISATION_ID = '0' left join ADDRESS defaultAddress on defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID") - .setContactIdField("CONTACT.CONTACTID") - ,"Activity": ContextSelector.create("ACTIVITY", "ACTIVITYID", "SUBJECT") - ,"Salesproject": ContextSelector.create("SALESPROJECT", "SALESPROJECTID") - .setTitleExpression(maskingUtils.concatenate([ - "'" + translate.text("Salesproject") + "'", - "' '", - maskingUtils.cast("PROJECTCODE", SQLTYPES.VARCHAR, 10), - "' | '", - "PROJECTTITLE" - ])) - .setContactIdField("CONTACT_ID") - .setCreationDateField("STARTDATE") - .setStateField("STATUS") - .setActiveStates([$KeywordRegistry.salesprojectState$open(), $KeywordRegistry.salesprojectState$postponed()]) - ,"Contract": ContextSelector.create("CONTRACT", "CONTRACTID") - .setTitleExpression(maskingUtils.cast(maskingUtils.concatWithSeparator([ - KeywordUtils.getResolvedTitleSqlPart("ContractType", "CONTRACTTYPE"), - maskingUtils.cast("CONTRACTCODE", SQLTYPES.VARCHAR, 10) - ], " "), isOracle ? SQLTYPES.NVARCHAR : SQLTYPES.VARCHAR, 50)) - .setContactIdField("CONTACT_ID") - .setCreationDateField("CONTRACTSTART") - .setStateField("CONTRACTSTATUS") - .setActiveStates([$KeywordRegistry.contractState$validLimited(), $KeywordRegistry.contractState$validUnlimited(), $KeywordRegistry.contractState$notSigned()]) - ,"Offer": ContextSelector.create("OFFER", "OFFERID") - .setTitleExpression(maskingUtils.cast(maskingUtils.concatenate([ - "'" + translate.text("Offer") + "'", - "' '", - maskingUtils.cast("OFFERCODE", SQLTYPES.VARCHAR, 10), - "'-'", - maskingUtils.cast("VERSNR", SQLTYPES.VARCHAR, 10) - ]), isOracle ? SQLTYPES.NVARCHAR : SQLTYPES.VARCHAR, 50)) - .setContactIdField("CONTACT_ID") - .setCreationDateField("OFFERDATE") - .setStateField("STATUS") - .setActiveStates([$KeywordRegistry.offerStatus$open(), $KeywordRegistry.offerStatus$checked(), $KeywordRegistry.offerStatus$sent()]) - ,"Order": ContextSelector.create("SALESORDER", "SALESORDERID") - .setTitleExpression(maskingUtils.cast(maskingUtils.concatWithSeparator([ - KeywordUtils.getResolvedTitleSqlPart("OrderType", "ORDERTYPE"), - maskingUtils.cast("SALESORDERCODE", SQLTYPES.VARCHAR, 10) - ], " "), isOracle ? SQLTYPES.NVARCHAR : SQLTYPES.VARCHAR, 50)) - .setContactIdField("CONTACT_ID") - .setCreationDateField("SALESORDERDATE") - .setStateField("ORDERSTATUS") - .setActiveStates([0, 1]) - ,"Product": ContextSelector.create("PRODUCT", "PRODUCTID") - .setTitleExpression(maskingUtils.concatenate([ - "PRODUCTCODE", - "' | '", - "PRODUCTNAME" - ])) - ,"Task": ContextSelector.create("TASK", "TASKID", "SUBJECT") - ,"Campaign": ContextSelector.create("CAMPAIGN", "CAMPAIGNID") - .setTitleExpression(maskingUtils.concatWithSeparator(["CAMPAIGN.NAME", "CAMPAIGNSTEP.NAME"], " - ", false)) - .setContactIdField("CAMPAIGNPARTICIPANT.CONTACT_ID") - .setJoinExpression("left join CAMPAIGNPARTICIPANT on CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID " + - "left join CAMPAIGNSTEP on CAMPAIGNSTEP.CAMPAIGNSTEPID = CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID") - .setCreationDateField("CAMPAIGNSTEP.DATE_START") - .setStateField("CAMPAIGN.STATUS") - .setActiveStates([$KeywordRegistry.campaignState$planning(), $KeywordRegistry.campaignState$approved()]) - ,"CampaignStep" : ContextSelector.create("CAMPAIGNSTEP", "CAMPAIGNSTEPID", "NAME") - ,"SupportTicket": ContextSelector.create("TICKET", "TICKETID", "TASK.SUBJECT") - .setJoinExpression("left join TASK on TASK.TASKID = TICKET.TASK_ID left join TASKLINK on TASKLINK.TASK_ID = TASK.TASKID") - .setCondition(newWhere("TICKET.TICKETTYPE", $KeywordRegistry.ticketType$supportTicket())) - .setContactIdField("TASKLINK.OBJECT_ROWID") - .setStateField("TASK.STATUS") - .setActiveStates([ - $KeywordRegistry.taskStatus$new(), - $KeywordRegistry.taskStatus$unassigned(), - $KeywordRegistry.taskStatus$assigned(), - $KeywordRegistry.taskStatus$inProgress(), - $KeywordRegistry.taskStatus$waiting(), - $KeywordRegistry.taskStatus$customerChecks(), - ]) - .setCreationDateField("TASK.START_DATE") - ,"BulkMail" : ContextSelector.create("BULKMAIL", "BULKMAILID", "NAME") - ,"SerialLetter" : ContextSelector.create("SERIALLETTER", "SERIALLETTERID", "TITLE") - ,"Leadimport": ContextSelector.create("LEADIMPORT", "LEADIMPORTID") - .setTitleExpression("LEADIMPORT.NAME") + if(pFilterObj) + conf.filter(JSON.stringify(pFilterObj.filter)) + + var res = []; + try//if Permissions prevent the user to read data from this context, entites.getRows throws an error. But we still wanna see the other Contexts + { + res = entities.getRows(conf); } -} - -/** - * TODO: !!!temporary function until you can get fields from another Entity!!! - */ -ContextUtils.getNameSubselectSql = function(pContextIdDbField, pRowIdDbField) -{ - var select = SqlBuilder.caseStatement() - - var selectMap = ContextUtils.getSelectMap(); - for (let contextId in selectMap) + catch(ex) { - let titleSelect = newSelect(selectMap[contextId].titleExpression) - .from(selectMap[contextId].getFullFromClause()) - .where(selectMap[contextId].getFullIdField() + " = " + pRowIdDbField); - - select.when(pContextIdDbField, contextId).then(titleSelect); + logging.log(ex) } - - return select.toString(); -} - -/** - * TODO: !!!temporary function until you can get fields from another Entity!!! - */ -ContextUtils.getNameSql = function(pContextId, pRowId, pRowIdField) -{ - var selectMap = ContextUtils.getSelectMap () - if (selectMap[pContextId] != undefined) + if(res.length > 0) { - var sql = newSelect(selectMap[pContextId].titleExpression) - .from(selectMap[pContextId].getFullFromClause()); - if (pRowIdField) - sql.where(selectMap[pContextId].getFullIdField() + " = " + pRowIdField); - else - sql.whereIfSet(selectMap[pContextId].getFullIdField(), pRowId); - return sql.build(SqlBuilder.NORESULT_CONDITION()); + if(pContextConfig.subContext) + { + if(res[0]["#UID"] == undefined || res[0]["#TITLE"] == undefined || res[0]["#MAPPING"] == undefined || res[0]["#CONTENTDESCRIPTION"] == undefined + || res[0]["#CONTENTTITLE"] == undefined || res[0]["DATE_NEW"] == undefined || res[0]["ACTIVE"] == undefined) + throw new Error(translate.text("Some prereserved EntityFields which are necessary fot 360° are not available. Context: "+pContextId + +" Data: "+JSON.stringify(res))); + } + else if(res[0]["CONTACT_ID"] == undefined) + throw new Error(translate.text("CONTACT_ID is not defined! Context: "+pContextId)); } - else - return "select 1 from person where 1=2"; + return res; } /** - * TODO: !!!temporary function until you can get fields from another Entity!!! + * gets the ContactId by using ContextUtils.loadContent() + * @param {String} pContextId The Context name + * @param {String} pRowId the uid for which to get the Contactid + * + * @return the Contactid of certain Context and Uid */ ContextUtils.getContactId = function(pContextId, pRowId) { - var selectMap = ContextUtils.getSelectMap() - if (selectMap[pContextId] != undefined && selectMap[pContextId].contactIdField) - { - return newSelect(selectMap[pContextId].contactIdField) - .from(selectMap[pContextId].tableName) - .where(selectMap[pContextId].getFullIdField(), pRowId) - .cell(); - } - else - return ""; + var res = ContextUtils.loadContent(ContextUtils.getEntity(pContextId), [pRowId], ["CONTACT_ID"])[0]["CONTACT_ID"]; + return res; } + /** - * TODO: !!!temporary function until you can get fields from another Entity!!! - * nur 360 + * gets the Count of Connections by Contactid + * @param {String} pContextId The Context name + * @param {String} pContactId The Contactid * + * @return count of datasets for that specific Context */ -ContextUtils.getContextDataSql = function(pContextId, pContactId, pWithDate, pActive, pWithState, pWithGroupBy, pUidsForFiltering, pExcludeIds) +ContextUtils.getCountByContactId = function(pContextId, pContactId) { - var selectMap = ContextUtils.getSelectMap(); - var ownContextSelector = selectMap[pContextId]; - var columns = [ownContextSelector.getFullIdField(), ownContextSelector.titleExpression]; - - if (pWithDate === true) - columns.push(ownContextSelector.getFullField(ownContextSelector.creationDateField) || "''"); - - if (pWithState === true) - { - if (ownContextSelector.stateField) - columns.push(ownContextSelector.getFullField(ownContextSelector.stateField) || "''"); - else - columns.push("''"); - } - - if (pWithGroupBy === true) - { - if (ownContextSelector.groupBy) - columns.push(ownContextSelector.getFullField(ownContextSelector.groupBy) || "''"); - else - columns.push("''"); - } - - var contextDataSelect = newSelect( columns.join(", ") ) - .from(ownContextSelector.getFullFromClause()) - .where(ownContextSelector.getFullField(ownContextSelector.contactIdField), pContactId, SqlBuilder.IN()) - .andIfSet(ownContextSelector.getFullIdField(), pUidsForFiltering, SqlBuilder.IN()) - .andIfSet(ownContextSelector.getFullIdField(), pExcludeIds, SqlBuilder.NOT_IN()); - - if (pActive != undefined) - { - var activeStates = ownContextSelector.activeStates; - if(activeStates != null && activeStates.length > 0) - { - var condSub = newWhere(); - activeStates.forEach(function (state) - { - if (ownContextSelector.stateField) - { - if(pActive) - condSub.or(ownContextSelector.getFullField(ownContextSelector.stateField), state) - else - condSub.and(ownContextSelector.getFullField(ownContextSelector.stateField), state, SqlBuilder.NOT_EQUAL()) - } - - }); - contextDataSelect.andIfSet(condSub); - } - } - contextDataSelect.andIfSet(ownContextSelector.condition); - return contextDataSelect.build(); + return ContextUtils.getContextDataViaReadEntity(pContextId, pContactId).length; } /** - * TODO: !!!temporary function until you can get fields from another Entity!!! + * decides if a record is activ or not + * @param {String[]} pActiveStates, 1-dimensional Array of Active States + * @param {String} pDBFieldName, a DBField for comparison + * + * @return a case when that resolves the active states to true and everything else to false in that Column */ -ContextUtils.getCountByContactId = function(pContextId, pContactId) +ContextUtils.buildActiveCaseWhen = function(pActiveStates, pDBFieldName) { - var contextObject = ContextUtils.getSelectMap()[pContextId]; - var tableName = contextObject.tableName; - var contactField = contextObject.getFullField(contextObject.contactIdField) - var join = contextObject.joinExpression; - if (tableName && contactField) - { - return newSelect("count(*)") - .from(tableName + (join ? join : "")) - .where(contactField, pContactId) - .cell(true, "0"); - return count; - } - return 0; + var extendedStates = []; + for(var i = 0; i < pActiveStates.length; i++) + extendedStates.push([pActiveStates[i], 'true']); + + //As default value we choose false, so we only have true or false and therefore we can filter more easily + return SqlUtils.translateStatementWithQuotes(SqlUtils.getResolvingCaseWhen(extendedStates, pDBFieldName, false)).replace("else '' end", "else 'false' end"); } function AdminViewUtils () {} @@ -763,7 +478,7 @@ AdminViewUtils.open = function (pUidField, pFields) else pUidField += " (UID)"; var rows = [ - [pUidField, pUidField, uid, "TEXT"] + [pUidField, pUidField, uid, "TEXT"] ]; if (pFields) { diff --git a/process/Order_lib/process.js b/process/Order_lib/process.js index 10c273583ad..74651b5982c 100644 --- a/process/Order_lib/process.js +++ b/process/Order_lib/process.js @@ -383,7 +383,7 @@ OrderUtils.buildOrderReport = function (pOrderID) "SUMITEMSUM" : sumItemSum, "TOTAL" : text.formatDouble(total, "#,##0.00", true), "printDiscount" : printDiscount ? "1" : "0", - "Person" : db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))) + "Person" : ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")) }; diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index b520401112a..ca3962c9236 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -363,6 +363,95 @@ Utils.objectValues = function (pObject) }); } + +/** + * builds/extends a filter-Object, can be used for e. g. entity.filter(), neon.setFilter, etc... + * Note: If a filter-Objects gets extended the new Filter will be added before the old one. + * @example + * It will look like this: + { + "filter":{ + "type":"group", -| + "operator":"AND", | + "childs":[ | + { | + "type":"row", |- New Condition + "name":"ACTIVE", | + "operator":"EQUAL", | + "value":"Ja", | + "key":"true", | + "contenttype":"TEXT" -| + }, + { + "type":"group", -| + "operator":"AND", | + "childs":[ | + { | + "type":"row", |- Old condition + "name":"DATE_NEW", | + "operator":"TIMEFRAME_EQUAL", | + "value":"Heute", | + "key":"REL=ADJUSTED;UNIT=DAY", | + "contenttype":"DATE" -| + } + ] + } + ] + } + } + * @param {Object} pFilterObj, the existing Filter-Object, for a new Obj use {} or null + * @param {String} pFieldName, all Fields which are filterable in that certain Entity + * @param {String} pOperator, Filteroperators, (look up "_getCondition"-Function in JditoFilter_lib for all available operator) + * @param {String} pContentType, the Contenttype of the Filter, ("TEXT",... etc) + * @param {String} pValue, this will be used as Value in the Frontend + * @param {String} pKey, this will be used as Value in the Backend + * @param {String} pParentOperator, "OR" or "AND" for the Group Operator, null = AND + * + * @return new/extended Filter-Object + */ +Utils.buildFilterObj = function(pFilterObj, pFieldName, pOperator, pContentType, pValue, pKey, pParentOperator) +{ + + if(pParentOperator && pParentOperator != "AND" && pParentOperator != "OR") + throw new Error(translate.text("Illegal Parent Operator in buildFilterObj-Function: "+pParentOperator)); + + + var subFilterObj = { + "type":"row", + "name":pFieldName, + "operator":pOperator, + "value": pValue, + "key": pKey, + "contenttype":pContentType + }; + + var parentFilter = { + "filter" : { + "type":"group", + "operator":pParentOperator, + "childs": [subFilterObj] + } + }; + + + if(pFilterObj && pFilterObj.filters && pFilterObj.filters.childs.length > 0) + { + + var push = true; + for(var i = 0; i < pFilterObj.filters.childs.length; i++) + { + if(JSON.stringify(pFilterObj.filters.childs[i]) == JSON.stringify(subFilterObj)) + push = false; + } + if(push) + { + parentFilter.filter.childs = parentFilter.filter.childs.concat([pFilterObj.filters]); + } + + } + return parentFilter; +} + /** * Class containing static utility functions for regular expression objects (RegExp) * Do not create an instance of this @@ -469,10 +558,10 @@ StringUtils.replaceAll = function(pPlainInputStr, pPlainSearchStr, pReplacement, */ StringUtils.concat = function(pSeparator, pElements) { - var res = pElements.filter(function(e){ - return e != null && e != ""; - }).join(pSeparator); - return res; + var res = pElements.filter(function(e){ + return e != null && e != ""; + }).join(pSeparator); + return res; }; /** @@ -514,18 +603,18 @@ StringUtils.pad36 = function(pValue) */ StringUtils.unescapeSlashes = function(pValue) { - // add another escaped slash if the string ends with an odd - // number of escaped slashes which will crash JSON.parse - let parsedStr = pValue.replace(/(^|[^\\])(\\\\)*\\$/, "$&\\"); - // escape " - parsedStr = parsedStr.replace(/"/, '\\"'); - try { - parsedStr = JSON.parse('"' + parsedStr + '"'); - } catch(e) { - logging.log(e); - return pValue; - } - return parsedStr ; + // add another escaped slash if the string ends with an odd + // number of escaped slashes which will crash JSON.parse + let parsedStr = pValue.replace(/(^|[^\\])(\\\\)*\\$/, "$&\\"); + // escape " + parsedStr = parsedStr.replace(/"/, '\\"'); + try { + parsedStr = JSON.parse('"' + parsedStr + '"'); + } catch(e) { + logging.log(e); + return pValue; + } + return parsedStr ; } /** @@ -1058,9 +1147,9 @@ NumberSequencingUtils.validateUniqueNumber = function(pNumber, pColumn, pTable, NumberSequencingUtils.getMaxUniqueNumber = function(pColumn, pTable, pCondition) { return newSelect(new SqlMaskingUtils().max(pColumn)) - .from(pTable) - .whereIfSet(pCondition) - .cell() || "0"; + .from(pTable) + .whereIfSet(pCondition) + .cell() || "0"; } /** @@ -1090,7 +1179,9 @@ TreeUtils.sortArrayForTree = function (pArray, pUidIndex, pParentIdIndex) var rows = {}; var allIds = {}; - pArray.forEach(function (row) {allIds[row[pUidIndex]] = true;}); + pArray.forEach(function (row) { + allIds[row[pUidIndex]] = true; + }); var index = 0; do { @@ -1104,7 +1195,7 @@ TreeUtils.sortArrayForTree = function (pArray, pUidIndex, pParentIdIndex) }; }, rows); - /* stop if no new items were added, otherwise incorrect data (for instance + /* stop if no new items were added, otherwise incorrect data (for instance an item that is it's own parent) could cause an infinite loop */ } while (oldIndex != index); var sortedArray = new Array(index); @@ -1158,7 +1249,7 @@ ConsecutiveCodeUtils.setCode = function(pId, pTable, pIdCol, pCodeCol) max = -1; newWhereIfSet(pTable + "." + pIdCol, pId) - .updateData(true, pTable, [pCodeCol], null, [parseInt(max)+1]); + .updateData(true, pTable, [pCodeCol], null, [parseInt(max)+1]); } function IdUtils() {} -- GitLab From 409ae5c245f8c49e54b8c576a46e8987b2e1f97a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20V=C3=B6gl?= <a.voegl@adito.de> Date: Mon, 30 Nov 2020 16:57:40 +0000 Subject: [PATCH 131/184] Quality of Life changes & smaller Fixes due to in inconsistency [Projekt: Entwicklung - xRM][TicketNr.: 1067652][Fehler Campagin und CampaignParticipants] --- .../alter_CampaignParticipantResponsible.xml | 10 + .../Data_alias/basic/2020.2.2/changelog.xml | 1 + .../CampaignAddParticipants_entity.aod | 24 +- .../addparticipants/onActionProcess.js | 2 +- .../CampaignAnalysis_entity.aod | 1 + .../CampaignCostChart_entity.aod | 1 + .../CampaignCost_entity.aod | 18 ++ .../expression.js | 3 + .../CampaignParticipantChart_entity.aod | 1 + .../CampaignParticipant_entity.aod | 227 +++++++++++++----- .../advertisingban_icon/colorProcess.js | 15 +- .../displayValueProcess.js | 11 +- .../children/campaignid_param/valueProcess.js | 11 +- .../contact_id/displayValueProcess.js | 8 +- .../contact_id/linkedContextProcess.js | 5 - .../entityfields/contact_id/valueProcess.js | 5 - .../stateProcess.js | 16 -- .../onActionProcess.js | 36 --- .../hasadvertisingban/dropDownProcess.js | 7 - .../displayValueProcess.js | 5 + .../responsible_contact_id/valueProcess.js | 6 + .../conditionProcess.js | 0 .../recordcontainers/db/fromClauseProcess.js | 5 + .../onDBInsert.js | 0 .../advertisingban_icon.value/expression.js | 7 + .../expression.js | 3 + .../expression.js | 14 ++ .../expression.js | 3 + .../expression.js | 3 + .../expression.js | 0 .../expression.js | 0 .../anycontacts/filterConditionProcess.js | 10 - .../expression.js | 3 + .../expression.js | 3 + .../hasadvertisingban.value/expression.js | 11 - .../CampaignPlanning_entity.aod | 1 + .../CampaignStep_entity.aod | 56 +++-- .../valueProcess.js | 14 +- .../displayValueProcess.js | 8 +- .../employee_contact_id/valueProcess.js | 4 +- .../onlyactives_param/valueProcess.js | 2 + .../containername_param/valueProcess.js | 1 - .../containername_param/valueProcess.js | 6 +- .../maxparticipants/onValidation.js | 5 +- .../status/displayValueProcess.js | 6 - .../entityfields/status/valueProcess.js | 4 +- .../stepmedium/displayValueProcess.js | 6 - .../expression.js | 3 + .../expression.js | 3 + .../status.displayvalue/expression.js | 3 +- .../stepmedium.displayvalue/expression.js | 5 + entity/Campaign_entity/Campaign_entity.aod | 133 +++------- entity/Campaign_entity/afterUiInit.js | 5 + .../copycampaign/onActionProcess.js | 10 +- .../entityfields/description/valueProcess.js | 8 - .../employee_contact_id/valueProcess.js | 9 +- .../entityfields/name/valueProcess.js | 8 - .../status/displayValueProcess.js | 6 - .../entityfields/status/valueProcess.js | 11 +- .../children/objectid_param/valueProcess.js | 8 +- .../children/rowid_param/valueProcess.js | 6 +- .../recordcontainers/db/conditionProcess.js | 8 +- .../filterConditionProcess.js | 27 --- .../filterValuesProcess.js | 11 - .../dateend_filter/filterConditionProcess.js | 17 -- .../filterConditionProcess.js | 17 -- .../favorite_filter/filterConditionProcess.js | 11 - .../favorite_filter/filterValuesProcess.js | 5 - .../member_filter/filterConditionProcess.js | 26 -- .../member_filter/filterValuesProcess.js | 13 - .../filterConditionProcess.js | 26 -- .../participant_filter/filterValuesProcess.js | 16 -- .../recordcontainers/db/fromClauseProcess.js | 17 -- .../recordcontainers/db/onDBInsert.js | 4 +- .../date_end.value/expression.js | 12 +- .../date_start.value/expression.js | 11 +- .../expression.js | 3 + .../status.displayvalue/expression.js | 4 +- .../KeywordEntry_entity.aod | 6 + .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 4 + .../CampaignParticipant.aod | 1 - .../CampaignCostChart_view.aod | 2 +- .../CampaignCostExtendedFilter_view.aod | 2 + .../CampaignCostFilter_view.aod | 5 + .../CampaignCostFix_view.aod | 2 + .../CampaignCostVariable_view.aod | 4 + .../CampaignFilter_view.aod | 2 +- .../CampaignMain_view/CampaignMain_view.aod | 5 - .../CampaignParticipantEdit_view.aod | 7 +- .../CampaignParticipantFilter_view.aod | 25 +- .../CampaignStepFilter_view.aod | 7 +- .../CampaignStepMembers_view.aod | 10 + .../CampaignStepsGantt_view.aod | 1 - process/Campaign_lib/process.js | 21 +- process/Contact_lib/process.js | 30 +++ process/Organisation_lib/process.js | 15 ++ 96 files changed, 583 insertions(+), 600 deletions(-) create mode 100644 .liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsible.xml create mode 100644 entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/netperparticipant_aggregate.value/expression.js delete mode 100644 entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js delete mode 100644 entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js delete mode 100644 entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js delete mode 100644 entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js delete mode 100644 entity/CampaignParticipant_entity/entityfields/hasadvertisingban/dropDownProcess.js create mode 100644 entity/CampaignParticipant_entity/entityfields/responsible_contact_id/displayValueProcess.js create mode 100644 entity/CampaignParticipant_entity/entityfields/responsible_contact_id/valueProcess.js rename entity/CampaignParticipant_entity/recordcontainers/{participantsdbrecordcontainer => db}/conditionProcess.js (100%) create mode 100644 entity/CampaignParticipant_entity/recordcontainers/db/fromClauseProcess.js rename entity/CampaignParticipant_entity/recordcontainers/{participantsdbrecordcontainer => db}/onDBInsert.js (100%) create mode 100644 entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/advertisingban_icon.value/expression.js create mode 100644 entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js create mode 100644 entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/organisation_contact_id.value/expression.js create mode 100644 entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/person_contact_id.displayvalue/expression.js create mode 100644 entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js rename entity/CampaignParticipant_entity/recordcontainers/{participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.value => db/recordfieldmappings/standard_email_communication.displayvalue}/expression.js (100%) rename entity/CampaignParticipant_entity/recordcontainers/{participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.value => db/recordfieldmappings/standard_phone_communication.displayvalue}/expression.js (100%) delete mode 100644 entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js create mode 100644 entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstep_id.displayvalue/expression.js create mode 100644 entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstepcurrentparticipantcount.value/expression.js delete mode 100644 entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js create mode 100644 entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js rename entity/CampaignStep_entity/entityfields/{campaignstepmedium => keywordstepmedium}/children/containername_param/valueProcess.js (81%) delete mode 100644 entity/CampaignStep_entity/entityfields/status/displayValueProcess.js delete mode 100644 entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js create mode 100644 entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/currentparticipantsperstep.value/expression.js create mode 100644 entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js create mode 100644 entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/stepmedium.displayvalue/expression.js delete mode 100644 entity/Campaign_entity/entityfields/description/valueProcess.js delete mode 100644 entity/Campaign_entity/entityfields/name/valueProcess.js delete mode 100644 entity/Campaign_entity/entityfields/status/displayValueProcess.js delete mode 100644 entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js delete mode 100644 entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js delete mode 100644 entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js delete mode 100644 entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js delete mode 100644 entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js delete mode 100644 entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js delete mode 100644 entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js delete mode 100644 entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js delete mode 100644 entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js delete mode 100644 entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js delete mode 100644 entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js create mode 100644 entity/Campaign_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js create mode 100644 neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod diff --git a/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsible.xml b/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsible.xml new file mode 100644 index 00000000000..349148d6651 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsible.xml @@ -0,0 +1,10 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="a.voegl" id="2a30b35b-9882-468e-98a6-a10f0561a681"> + <addColumn tableName="CAMPAIGNPARTICIPANT"> + <column name="RESPONSIBLE_CONTACT_ID" type="CHAR(36)"/> + </addColumn> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml index 7f5016480e9..8b27ac25ad0 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml @@ -4,6 +4,7 @@ <include relativeToChangelogFile="true" file="insert_commMediumTitleKeywordAttribute.xml"/> <include relativeToChangelogFile="true" file="Knowledgemanagement/changelog_knowledgeManagement.xml"/> <include relativeToChangelogFile="true" file="insert_employeeCountAttribute.xml"/> + <include relativeToChangelogFile="true" file="alter_CampaignParticipantResponsible.xml"/> <include relativeToChangelogFile="true" file="MSTeams/changelog.xml"/> <include relativeToChangelogFile="true" file="insert_newsletterAttribute.xml"/> </databaseChangeLog> diff --git a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod index 03225b22011..339e6914d5f 100644 --- a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod +++ b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod @@ -6,6 +6,7 @@ <title>Add participants to Campaign</title> <siblings> <element>CampaignParticipant_entity</element> + <element>Campaign_entity</element> </siblings> <recordContainer>datalessConfig</recordContainer> <entityFields> @@ -59,6 +60,11 @@ </entityConsumer> <entityConsumer> <name>CampaignStepConsumer</name> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> <children> <entityParameter> <name>campaignId_param</name> @@ -66,12 +72,11 @@ <expose v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> </entityConsumer> + <entityField> + <name>UID</name> + <state>EDITABLE</state> + </entityField> <entityParameter> <name>currentCampaignId_param</name> <expose v="true" /> @@ -152,6 +157,15 @@ </entityProvider> </entityFields> <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> <datalessRecordContainer> <name>datalessConfig</name> <alias>Data_alias</alias> diff --git a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js index b2c37dfa07d..f1697b24ba8 100644 --- a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js +++ b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js @@ -31,7 +31,7 @@ else participantCondition = JSON.parse(vars.getString("$param.campaignParticipantsCondition_param")).condition; _handleCondition(campaignId, conditionSourceTableName, participantCondition); } - +neon.refreshAll(); if (!vars.exists("$param.currentCampaignId_param") || !vars.get("$param.currentCampaignId_param")) neon.openContext("Campaign", "CampaignMain_view", [campaignId], neon.OPERATINGSTATE_VIEW, null); diff --git a/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod b/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod index 137b70c4aa9..ff9e8a25ad8 100644 --- a/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod +++ b/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod @@ -6,6 +6,7 @@ <siblings> <element>CampaignCost_entity</element> </siblings> + <usePermissions v="false" /> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> diff --git a/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod b/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod index de366ec455d..f5d7ee451e4 100644 --- a/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod +++ b/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod @@ -6,6 +6,7 @@ <siblings> <element>CampaignCost_entity</element> </siblings> + <usePermissions v="false" /> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> diff --git a/entity/CampaignCost_entity/CampaignCost_entity.aod b/entity/CampaignCost_entity/CampaignCost_entity.aod index 2af24acc0d0..096e8a8d95b 100644 --- a/entity/CampaignCost_entity/CampaignCost_entity.aod +++ b/entity/CampaignCost_entity/CampaignCost_entity.aod @@ -7,6 +7,7 @@ <element>CampaignAnalysis_entity</element> <element>CampaignCostChart_entity</element> </siblings> + <usePermissions v="false" /> <titlePlural>Cost entries</titlePlural> <recordContainer>db</recordContainer> <entityFields> @@ -236,6 +237,14 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityAggregateField> + <name>NET_aggregate</name> + <parentField>NET</parentField> + </entityAggregateField> + <entityAggregateField> + <name>NETPERPARTICIPANT_aggregate</name> + <parentField>netPerParticipant</parentField> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -312,6 +321,15 @@ <name>CURRENCY.value</name> <recordfield>CAMPAIGN.CURRENCY</recordfield> </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>NET_aggregate.value</name> + <recordfield>CAMPAIGNCOST.NET</recordfield> + <aggregateType>SUM</aggregateType> + </aggregateFieldDbMapping> + <aggregateFieldDbMapping> + <name>NETPERPARTICIPANT_aggregate.value</name> + <expression>%aditoprj%/entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/netperparticipant_aggregate.value/expression.js</expression> + </aggregateFieldDbMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/netperparticipant_aggregate.value/expression.js b/entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/netperparticipant_aggregate.value/expression.js new file mode 100644 index 00000000000..18b449265da --- /dev/null +++ b/entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/netperparticipant_aggregate.value/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +result.string("SUM(CAMPAIGNCOST.NET/(select COUNT(*) from CAMPAIGNPARTICIPANT where CAMPAIGNCOST.CAMPAIGN_ID = CAMPAIGNPARTICIPANT.CAMPAIGN_ID " + +" and CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID = CAMPAIGNSTEP.CAMPAIGNSTEPID))"); \ No newline at end of file diff --git a/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod b/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod index 9f4d833b4dd..6291fe367fc 100644 --- a/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod +++ b/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod @@ -8,6 +8,7 @@ <element>CampaignStep_entity</element> <element>CampaignAddParticipants_entity</element> </siblings> + <usePermissions v="false" /> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> diff --git a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod index 42f0af8d639..47b0a225372 100644 --- a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod +++ b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod @@ -7,34 +7,21 @@ <siblings> <element>CampaignAddParticipants_entity</element> <element>CampaignParticipantChart_entity</element> + <element>Campaign_entity</element> </siblings> <afterOperatingState>%aditoprj%/entity/CampaignParticipant_entity/afterOperatingState.js</afterOperatingState> - <useFavorites v="true" /> + <usePermissions v="false" /> <titlePlural>Participants</titlePlural> - <recordContainer>ParticipantsDbRecordContainer</recordContainer> + <recordContainer>db</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> + <recordContainer>db</recordContainer> </entityProvider> <entityProvider> <name>CampaignParticipantsProvider</name> - <targetContextField>CONTACTCONTEXT</targetContextField> - <targetIdField>CONTACT_ID</targetIdField> <documentation>%aditoprj%/entity/CampaignParticipant_entity/entityfields/campaignparticipantsprovider/documentation.adoc</documentation> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>CampaignId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>CampaignStepId_param</name> - <expose v="true" /> - </entityParameter> - </children> + <recordContainer>db</recordContainer> <dependencies> <entityDependency> <name>f28945cd-4613-4dfa-91f7-a7d9d64cef58</name> @@ -49,6 +36,20 @@ <isConsumer v="false" /> </entityDependency> </dependencies> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>CampaignId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>CampaignStepId_param</name> + <expose v="true" /> + </entityParameter> + </children> </entityProvider> <entityParameter> <name>CampaignStepId_param</name> @@ -113,11 +114,9 @@ <name>CONTACT_ID</name> <title>Participant</title> <consumer>AnyContacts</consumer> - <linkedContextProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess> <mandatory v="true" /> <state>READONLY</state> <stateProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/stateProcess.js</stateProcess> - <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess> </entityField> <entityField> @@ -145,6 +144,11 @@ <entityConsumer> <name>CampaignSteps</name> <refreshParent v="true" /> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> <children> <entityParameter> <name>campaignId_param</name> @@ -152,11 +156,6 @@ <expose v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> </entityConsumer> <entityField> <name>CONTACTCONTEXT</name> @@ -170,20 +169,12 @@ <title>Update campaign step</title> <onActionProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> - <isSelectionAction v="false" /> + <isSelectionAction v="true" /> <iconId>NEON:GROUP_APPOINTMENT</iconId> - <state>DISABLED</state> - <stateProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js</stateProcess> + <state>AUTO</state> <tooltip>Update campaign step</tooltip> <tooltipProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/tooltipProcess.js</tooltipProcess> </entityActionField> - <entityActionField> - <name>startMarketingWorkflows</name> - <title>Start marketing mailing</title> - <onActionProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess> - <isObjectAction v="false" /> - <iconId>VAADIN:ENVELOPES</iconId> - </entityActionField> </children> </entityActionGroup> <entityField> @@ -212,17 +203,17 @@ </entityConsumer> <entityConsumer> <name>CommRestrictionIcon</name> + <dependency> + <name>dependency</name> + <entityName>KeywordAttribute_entity</entityName> + <fieldName>SpecificContainerKeyword</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/commrestrictionicon/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordAttribute_entity</entityName> - <fieldName>SpecificContainerKeyword</fieldName> - </dependency> </entityConsumer> <entityField> <name>STANDARD_EMAIL_COMMUNICATION</name> @@ -237,29 +228,102 @@ <entityProvider> <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> + <recordContainer>db</recordContainer> </entityProvider> <entityField> - <name>HASADVERTISINGBAN</name> - <title>Advertising ban</title> - <contentType>BOOLEAN</contentType> - <dropDownProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/hasadvertisingban/dropDownProcess.js</dropDownProcess> + <name>CONTACT_ORGANISATION_ID</name> + <title>Organisation</title> + <linkedContext>Organisation</linkedContext> + </entityField> + <entityField> + <name>CONTACT_PERSON_ID</name> + <title>Participant</title> + <linkedContext>Person</linkedContext> </entityField> + <entityField> + <name>PERSON_CONTACT_ID</name> + <title>Person</title> + <consumer>Persons</consumer> + <linkedContext>Person</linkedContext> + </entityField> + <entityField> + <name>ORGANISATION_CONTACT_ID</name> + <title>Organisation</title> + <consumer>Organisations</consumer> + <groupable v="true" /> + <linkedContext>Organisation</linkedContext> + </entityField> + <entityConsumer> + <name>Persons</name> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>Contacts</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>Organisations</name> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>Organisations</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>RESPONSIBLE_CONTACT_ID</name> + <title>Verantwortlicher</title> + <consumer>ResponsibleEmployees</consumer> + <groupable v="true" /> + <linkedContext>Person</linkedContext> + <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityConsumer> + <name>ResponsibleEmployees</name> + <dependency> + <name>dependency</name> + <entityName>Employee_entity</entityName> + <fieldName>Employees</fieldName> + </dependency> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> - <name>ParticipantsDbRecordContainer</name> + <name>db</name> <alias>Data_alias</alias> <hasDependentRecords v="true" /> - <conditionProcess>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/conditionProcess.js</conditionProcess> - <onDBInsert>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/onDBInsert.js</onDBInsert> + <fromClauseProcess>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> + <conditionProcess>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <onDBInsert>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/onDBInsert.js</onDBInsert> <linkInformation> <linkInformation> - <name>12b5bf2e-e376-4c40-9799-fb07961a455d</name> + <name>02d0ac80-2767-401c-bdc1-aac3e8abf0e4</name> <tableName>CAMPAIGNPARTICIPANT</tableName> <primaryKey>CAMPAIGNPARTICIPANTID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> + <linkInformation> + <name>6c320211-601b-47bf-a562-003886666040</name> + <tableName>CONTACT</tableName> + <primaryKey>CONTACTID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + <linkInformation> + <name>e1719eb5-112c-4acd-8f72-58a688d5f058</name> + <tableName>PERSON</tableName> + <primaryKey>PERSONID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + <linkInformation> + <name>8be80af4-69ea-4a5d-b404-8a26c1f8d8da</name> + <tableName>ORGANISATION</tableName> + <primaryKey>ORGANISATIONID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> </linkInformation> <recordFieldMappings> <dbRecordFieldMapping> @@ -300,25 +364,68 @@ <recordfield>CAMPAIGNPARTICIPANT.CAMPAIGNPARTICIPANTID</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> - <name>STANDARD_EMAIL_COMMUNICATION.value</name> - <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.value/expression.js</expression> - <isFilterable v="true" /> + <name>STANDARD_PHONE_COMMUNICATION.displayValue</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_phone_communication.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>STANDARD_EMAIL_COMMUNICATION.displayValue</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_email_communication.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ADVERTISINGBAN_ICON.value</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/advertisingban_icon.value/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_PERSON_ID.displayValue</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CAMPAIGNSTEP_ID.displayValue</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstep_id.displayvalue/expression.js</expression> </dbRecordFieldMapping> <dbRecordFieldMapping> - <name>STANDARD_PHONE_COMMUNICATION.value</name> - <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.value/expression.js</expression> + <name>campaignStepCurrentParticipantCount.value</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstepcurrentparticipantcount.value/expression.js</expression> </dbRecordFieldMapping> - <consumerMapping> - <name>AnyContacts</name> - <filterConditionProcess>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js</filterConditionProcess> + <dbRecordFieldMapping> + <name>ORGANISATION_CONTACT_ID.value</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/organisation_contact_id.value/expression.js</expression> <isFilterable v="true" /> - <filtertype>BASIC</filtertype> - </consumerMapping> + </dbRecordFieldMapping> <dbRecordFieldMapping> - <name>HASADVERTISINGBAN.value</name> - <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js</expression> + <name>PERSON_CONTACT_ID.value</name> + <recordfield>CONTACT.CONTACTID</recordfield> <isFilterable v="true" /> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PERSON_CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/person_contact_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>RESPONSIBLE_CONTACT_ID.value</name> + <recordfield>CAMPAIGNPARTICIPANT.RESPONSIBLE_CONTACT_ID</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>RESPONSIBLE_CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ORGANISATION_ID.displayValue</name> + <recordfield>ORGANISATION.NAME</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ORGANISATION_ID.value</name> + <recordfield>CONTACT.ORGANISATION_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_PERSON_ID.value</name> + <recordfield>CONTACT.PERSON_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ORGANISATION_CONTACT_ID.displayValue</name> + <recordfield>ORGANISATION.NAME</recordfield> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/colorProcess.js b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/colorProcess.js index f322e15de7a..1bcf3daac52 100644 --- a/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/colorProcess.js +++ b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/colorProcess.js @@ -1,7 +1,16 @@ -import("Util_lib"); import("system.result"); +import("Sql_lib"); +import("system.db"); import("system.vars"); import("system.neon"); +import("Campaign_lib"); -var hasAdvertisingBan = Utils.toBoolean(vars.get("$field.HASADVERTISINGBAN")); -result.string(hasAdvertisingBan ? neon.PRIORITY_MEDIUM_COLOR : neon.PRIORITY_LOW_COLOR); \ No newline at end of file +if(vars.get("$field.ADVERTISINGBAN_ICON") > 0) +{ + result.string(neon.PRIORITY_MEDIUM_COLOR); +} +else +{ + result.string(neon.PRIORITY_LOW_COLOR); +} + diff --git a/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/displayValueProcess.js b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/displayValueProcess.js index 7ff3faa94c8..837878d3b76 100644 --- a/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/displayValueProcess.js +++ b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/displayValueProcess.js @@ -1,7 +1,12 @@ -import("Util_lib"); import("system.result"); import("system.vars"); // Now show warning always, if any commrestriction exists. No matter which medium the current step has. -var hasAdvertisingBan = Utils.toBoolean(vars.get("$field.HASADVERTISINGBAN")); -result.string(hasAdvertisingBan ? "VAADIN:WARNING" : "VAADIN:CHECK"); \ No newline at end of file +if (vars.get("$field.ADVERTISINGBAN_ICON") == 0) +{ + result.string("VAADIN:CHECK"); +} +else +{ + result.string("VAADIN:WARNING"); +} \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js index a22fac8bd53..eb6914514d8 100644 --- a/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js +++ b/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js @@ -1,8 +1,9 @@ import("system.vars"); import("system.result"); -import("system.neon"); -if (vars.get("$sys.viewmode") == neon.FRAME_VIEWMODE_TABLE) - result.string(vars.get("$param.CampaignId_param")); -else - result.string(vars.get("$field.CAMPAIGN_ID")); \ No newline at end of file +var campaignID = vars.get("$field.CAMPAIGN_ID"); + +if(!campaignID) + campaignID = vars.get("$param.CampaignId_param"); + +result.string(campaignID); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js b/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js index 1e3714bbbc7..85822946ab4 100644 --- a/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js +++ b/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js @@ -3,10 +3,4 @@ import("system.vars"); import("Contact_lib"); import("system.neon"); -let contactId = vars.getString("$field.CONTACT_ID"); -let displayValue = ""; - -if(contactId != "") - displayValue = ContactUtils.getFullTitleByContactId(contactId); - -result.string(displayValue); +result.string(ContactUtils.getFullTitleByContactId(vars.getString("$field.CONTACT_ID"))); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js b/entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js deleted file mode 100644 index 2e504d63e3b..00000000000 --- a/entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.vars"); -import("system.result"); -import("Contact_lib"); - -result.string(ContactUtils.getContextByContactId(vars.getString("$field.CONTACT_ID"))); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js deleted file mode 100644 index 7a0567f6850..00000000000 --- a/entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("system.vars"); - -if(vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param")) - result.string(vars.get("$param.ContactId_param")); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js deleted file mode 100644 index d55386c662b..00000000000 --- a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js +++ /dev/null @@ -1,16 +0,0 @@ -import("Campaign_lib"); -import("system.vars"); -import("system.neon"); -import("system.result"); - -var campaignId = vars.get("$field.CAMPAIGN_ID"); -var participantCount = CampaignUtils.getParticipantCount(campaignId); - -if(participantCount > 0) -{ - result.string(neon.COMPONENTSTATE_EDITABLE); -} -else -{ - result.string(neon.COMPONENTSTATE_DISABLED); -} \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js deleted file mode 100644 index 40e60ff20d2..00000000000 --- a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js +++ /dev/null @@ -1,36 +0,0 @@ -import("Util_lib"); -import("system.entities"); -import("Context_lib"); -import("system.vars"); -import("system.neon"); - -var rows = vars.get("$sys.selectionRows"); -var filter = vars.get("$sys.filter").filter; -var targets = []; - -if (Utils.isNullOrEmpty(rows)) -{ - let loadConfig = entities.createConfigForLoadingRows() - .entity("CampaignParticipant_entity") - .provider("CampaignParticipantsProvider") - .fields(["CONTACT_ID", "CONTACTCONTEXT"]) - .addParameter("CampaignId_param", vars.get("$param.CampaignId_param")) - .addParameter("CampaignStepId_param", vars.get("$param.CampaignStepId_param")) - .addParameter("ContactId_param", vars.get("$param.ContactId_param")); - - if (filter) - loadConfig.filter(JSON.stringify(filter)); - - rows = entities.getRows(loadConfig); -} - -rows = rows.map(function (row) -{ - return [row["CONTACT_ID"], row["CONTACTCONTEXT"]]; -}); - - -neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { - "ObjectIds_param": JSON.stringify(rows), - "ObjectType_param": ContextUtils.getCurrentContextId() -}); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/hasadvertisingban/dropDownProcess.js b/entity/CampaignParticipant_entity/entityfields/hasadvertisingban/dropDownProcess.js deleted file mode 100644 index 3373b8a886d..00000000000 --- a/entity/CampaignParticipant_entity/entityfields/hasadvertisingban/dropDownProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.translate"); -import("system.result"); - -result.object([ - ["1", translate.text("Yes")], - ["0", translate.text("No")] -]); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/displayValueProcess.js b/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/displayValueProcess.js new file mode 100644 index 00000000000..92bb44a696f --- /dev/null +++ b/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("Contact_lib"); + +result.string(ContactUtils.getTitleByContactId(vars.get("$field.RESPONSIBLE_CONTACT_ID"))); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/valueProcess.js new file mode 100644 index 00000000000..a952fcd46b8 --- /dev/null +++ b/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + result.string(vars.get("$global.user.contactId")); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/conditionProcess.js b/entity/CampaignParticipant_entity/recordcontainers/db/conditionProcess.js similarity index 100% rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/conditionProcess.js rename to entity/CampaignParticipant_entity/recordcontainers/db/conditionProcess.js diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/fromClauseProcess.js b/entity/CampaignParticipant_entity/recordcontainers/db/fromClauseProcess.js new file mode 100644 index 00000000000..8603fcea047 --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/db/fromClauseProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +result.string("CAMPAIGNPARTICIPANT " + +" join CONTACT on CONTACTID = CONTACT_ID " + +" left join PERSON ON PERSONID = PERSON_ID " + +" join ORGANISATION on ORGANISATION_ID = ORGANISATIONiD"); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/onDBInsert.js b/entity/CampaignParticipant_entity/recordcontainers/db/onDBInsert.js similarity index 100% rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/onDBInsert.js rename to entity/CampaignParticipant_entity/recordcontainers/db/onDBInsert.js diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/advertisingban_icon.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/advertisingban_icon.value/expression.js new file mode 100644 index 00000000000..3343ac44d8f --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/advertisingban_icon.value/expression.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("Contact_lib"); +import("Sql_lib"); +import("system.result"); + +// Now show warning always, if any commrestriction exists. No matter which medium the current step has. +result.string("(" + ContactUtils.getCommRestrictionCount(undefined, vars.get("$sys.date")) + ")"); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js new file mode 100644 index 00000000000..d28cdbab4f0 --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Person_lib"); +result.string(PersUtils.getResolvingDisplaySubSql("CONTACT_ID")); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/organisation_contact_id.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/organisation_contact_id.value/expression.js new file mode 100644 index 00000000000..93edad8b41d --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/organisation_contact_id.value/expression.js @@ -0,0 +1,14 @@ +import("system.SQLTYPES"); +import("Sql_lib"); +import("system.result"); + +result.string(SqlBuilder.caseWhen(newWhere(newSelect("COUNT(*)") + .from("CONTACT") + .where("CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID") + .and("CONTACT.PERSON_ID is null"), "0", SqlBuilder.GREATER(), SQLTYPES.INTEGER)) + .then("CAMPAIGNPARTICIPANT.CONTACT_ID") + .elseValue(newSelect("c1.CONTACTID") + .from("CONTACT", "c1") + .join("CONTACT", "c1.ORGANISATION_ID = c2.ORGANISATION_ID", "c2") + .where("c2.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID") + .and("c1.PERSON_ID is null")).toString()) \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/person_contact_id.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/person_contact_id.displayvalue/expression.js new file mode 100644 index 00000000000..8e485513f89 --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/person_contact_id.displayvalue/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Person_lib"); +result.string(PersUtils.getResolvingDisplaySubSql("CAMPAIGNPARTICIPANT.CONTACT_ID")); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js new file mode 100644 index 00000000000..29d2f306f74 --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Person_lib"); +result.string(PersUtils.getResolvingDisplaySubSql("CAMPAIGNPARTICIPANT.RESPONSIBLE_CONTACT_ID")); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_email_communication.displayvalue/expression.js similarity index 100% rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.value/expression.js rename to entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_email_communication.displayvalue/expression.js diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_phone_communication.displayvalue/expression.js similarity index 100% rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.value/expression.js rename to entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_phone_communication.displayvalue/expression.js diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js deleted file mode 100644 index c37a5f4a9b9..00000000000 --- a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js +++ /dev/null @@ -1,10 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Contact_lib"); -import("Sql_lib"); - -var condition = newWhere(null, ContactUtils.getFullContactSqlBuilder("CONTACTID") - .where("CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID") - .and(vars.get("$local.condition")), SqlBuilder.EXISTS()); - -result.string(condition.toString()); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstep_id.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstep_id.displayvalue/expression.js new file mode 100644 index 00000000000..c2a7f5503d9 --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstep_id.displayvalue/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Sql_lib"); +result.string(newSelect("CAMPAIGNSTEP.NAME").from("CAMPAIGNSTEP").where("CAMPAIGNSTEP.CAMPAIGNSTEPID = CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID").toString()); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstepcurrentparticipantcount.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstepcurrentparticipantcount.value/expression.js new file mode 100644 index 00000000000..7d896cba463 --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstepcurrentparticipantcount.value/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Sql_lib"); +result.string(newSelect("COUNT(*)").from("CAMPAIGNPARTICIPANT", "p1").where("p1.CAMPAIGNSTEP_ID = CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID").toString()); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js deleted file mode 100644 index b1292f54399..00000000000 --- a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js +++ /dev/null @@ -1,11 +0,0 @@ -import("system.vars"); -import("Contact_lib"); -import("Sql_lib"); -import("system.result"); - -var commRestrictionContactSubSql = newSelect("CONTACT.CONTACTID") - .from("CONTACT") - .where("CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID") - .and(ContactUtils.getCommRestrictionCondition()); - -result.string(SqlBuilder.caseWhen(null, commRestrictionContactSubSql, SqlBuilder.EXISTS()).thenString("1").elseString("0").toString()); \ No newline at end of file diff --git a/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod b/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod index 2de87bf6e8c..f274ff68901 100644 --- a/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod +++ b/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod @@ -9,6 +9,7 @@ <element>CampaignStep_entity</element> </siblings> <iconId>NEON:GROUP_APPOINTMENT</iconId> + <usePermissions v="false" /> <recordContainer>jditoRecordContainer</recordContainer> <entityFields> <entityProvider> diff --git a/entity/CampaignStep_entity/CampaignStep_entity.aod b/entity/CampaignStep_entity/CampaignStep_entity.aod index ef3741b8dfb..ae04d014704 100644 --- a/entity/CampaignStep_entity/CampaignStep_entity.aod +++ b/entity/CampaignStep_entity/CampaignStep_entity.aod @@ -14,6 +14,7 @@ <contentDescriptionProcess>%aditoprj%/entity/CampaignStep_entity/contentDescriptionProcess.js</contentDescriptionProcess> <onValidation>%aditoprj%/entity/CampaignStep_entity/onValidation.js</onValidation> <imageProcess>%aditoprj%/entity/CampaignStep_entity/imageProcess.js</imageProcess> + <usePermissions v="false" /> <titlePlural>Steps</titlePlural> <recordContainer>db</recordContainer> <entityFields> @@ -59,6 +60,7 @@ <title>Responsible</title> <consumer>Employees</consumer> <groupable v="true" /> + <linkedContext>Person</linkedContext> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js</displayValueProcess> @@ -96,7 +98,6 @@ <groupable v="true" /> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/status/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/status/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>SORTING</name> @@ -245,6 +246,12 @@ <entityName>Employee_entity</entityName> <fieldName>Employees</fieldName> </dependency> + <children> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js</valueProcess> + </entityParameter> + </children> </entityConsumer> <entityConsumer> <name>CampaignStepCosts</name> @@ -376,27 +383,11 @@ <expose v="true" /> <description>PARAMETER</description> </entityParameter> - <entityConsumer> - <name>CampaignStepMedium</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/campaignstepmedium/children/containername_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> - </entityConsumer> <entityField> <name>STEPMEDIUM</name> <title>Medium</title> - <consumer>CampaignStepMedium</consumer> + <consumer>KeywordStepMedium</consumer> <groupable v="true" /> - <displayValueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js</displayValueProcess> </entityField> <entityActionField> <name>newBulkMail</name> @@ -423,6 +414,23 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>CurrentParticipantsPerStep</name> + </entityField> + <entityConsumer> + <name>KeywordStepMedium</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/keywordstepmedium/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> @@ -521,6 +529,18 @@ <name>STEPMEDIUM.value</name> <recordfield>CAMPAIGNSTEP.STEPMEDIUM</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CurrentParticipantsPerStep.value</name> + <expression>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/currentparticipantsperstep.value/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>STEPMEDIUM.displayValue</name> + <expression>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/stepmedium.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>EMPLOYEE_CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/CampaignStep_entity/entityfields/currentmaxparticipantsinfo/valueProcess.js b/entity/CampaignStep_entity/entityfields/currentmaxparticipantsinfo/valueProcess.js index 86c117c70dd..e9ba9c24747 100644 --- a/entity/CampaignStep_entity/entityfields/currentmaxparticipantsinfo/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/currentmaxparticipantsinfo/valueProcess.js @@ -2,6 +2,14 @@ import("system.result"); import("system.vars"); import("Campaign_lib"); -let currentParticipantsCount = CampaignUtils.getParticipantCountForStep(vars.get("$field.CAMPAIGNSTEPID"), vars.get("$field.CAMPAIGN_ID")); -let maxParticipantsStepCount = vars.get("$field.MAXPARTICIPANTS"); -result.string(currentParticipantsCount + "/" + maxParticipantsStepCount); \ No newline at end of file +var currentParticipantsCount = vars.get("$field.CurrentParticipantsPerStep"); +var maxParticipantsStepCount = vars.get("$field.MAXPARTICIPANTS"); +var res = []; + +if(currentParticipantsCount) + res.push(currentParticipantsCount); + +if(maxParticipantsStepCount) + res.push(maxParticipantsStepCount); + +result.string(res.join("/")); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js b/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js index 351d4b3f2c2..037d5e264ba 100644 --- a/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js +++ b/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js @@ -1,5 +1,5 @@ -import("system.vars"); -import("system.result"); -import("Contact_lib"); - +import("system.vars"); +import("system.result"); +import("Contact_lib"); + result.string(ContactUtils.getTitleByContactId(vars.get("$field.EMPLOYEE_CONTACT_ID"))); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js b/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js index 0e00e387dfc..85f342bc9d6 100644 --- a/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js @@ -3,5 +3,5 @@ import("system.neon"); import("system.vars"); import("Employee_lib"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(EmployeeUtils.getCurrentContactId()); \ No newline at end of file +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + result.string(EmployeeUtils.getCurrentContactId()); diff --git a/entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js new file mode 100644 index 00000000000..cda204045d2 --- /dev/null +++ b/entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js @@ -0,0 +1,2 @@ +import("system.result"); +result.string(true); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js index 3567518a6da..09fcdcf23e8 100644 --- a/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js @@ -1,5 +1,4 @@ import("system.result"); -import("Keyword_lib"); import("KeywordRegistry_basic"); result.string($KeywordRegistry.campaignStepState()); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/campaignstepmedium/children/containername_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/keywordstepmedium/children/containername_param/valueProcess.js similarity index 81% rename from entity/CampaignStep_entity/entityfields/campaignstepmedium/children/containername_param/valueProcess.js rename to entity/CampaignStep_entity/entityfields/keywordstepmedium/children/containername_param/valueProcess.js index a944db32595..87e20a83401 100644 --- a/entity/CampaignStep_entity/entityfields/campaignstepmedium/children/containername_param/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/keywordstepmedium/children/containername_param/valueProcess.js @@ -1,5 +1,3 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - +import("KeywordRegistry_basic"); +import("system.result"); result.string($KeywordRegistry.communicationMediumCampaign()); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js b/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js index fd6b6aef2f6..de688c4d15d 100644 --- a/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js +++ b/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js @@ -1,3 +1,4 @@ +import("system.translate"); import("Campaign_lib"); import("system.result"); import("Entity_lib"); @@ -7,4 +8,6 @@ var currentParticipantsCount = parseInt(vars.get("$field.CurrentMaxParticipantsI var newMaxParticipantsCount = parseInt(vars.get("local.value")); if(newMaxParticipantsCount < currentParticipantsCount) - result.string(CampaignUtils.getMaxParticipantsValidationMessage()); \ No newline at end of file + result.string(CampaignUtils.getMaxParticipantsValidationMessage()); +else if(newMaxParticipantsCount <= 0) + result.string(translate.text("The max participants count can not be equal or less then 0")); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/status/displayValueProcess.js b/entity/CampaignStep_entity/entityfields/status/displayValueProcess.js deleted file mode 100644 index d0247bf23ab..00000000000 --- a/entity/CampaignStep_entity/entityfields/status/displayValueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignStepState(), vars.get("$field.STATUS"))); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/status/valueProcess.js b/entity/CampaignStep_entity/entityfields/status/valueProcess.js index dc5efe1d6fe..ed6f79285d3 100644 --- a/entity/CampaignStep_entity/entityfields/status/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/status/valueProcess.js @@ -1,7 +1,7 @@ +import("KeywordRegistry_basic"); import("system.vars"); import("system.result"); import("system.neon"); -import("KeywordRegistry_basic"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) - result.string($KeywordRegistry.campaignStepState$open()); \ No newline at end of file + result.string($KeywordRegistry.campaignStepState$open); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js b/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js deleted file mode 100644 index 429287a14cd..00000000000 --- a/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); -import("KeywordRegistry_basic"); -import("Keyword_lib"); - -result.string(KeywordUtils.getViewValue($KeywordRegistry.communicationMediumCampaign(), vars.get("$field.STEPMEDIUM"))); diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/currentparticipantsperstep.value/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/currentparticipantsperstep.value/expression.js new file mode 100644 index 00000000000..adbfaa81f0f --- /dev/null +++ b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/currentparticipantsperstep.value/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Sql_lib"); +result.string(newSelect("COUNT(*)").from("CAMPAIGNPARTICIPANT").where("CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID = CAMPAIGNSTEP.CAMPAIGNSTEPID").toString()); \ No newline at end of file diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js new file mode 100644 index 00000000000..54ff36ce1d1 --- /dev/null +++ b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Person_lib"); +result.string(PersUtils.getResolvingDisplaySubSql("CAMPAIGNSTEP.EMPLOYEE_CONTACT_ID")); \ No newline at end of file diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js index f0e8a44adee..dd2e2affd49 100644 --- a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js +++ b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js @@ -1,6 +1,5 @@ import("system.result"); import("Keyword_lib"); -import("KeywordRegistry_basic"); -var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.campaignStepState(), "CAMPAIGNSTEP.STATUS"); +var sql = KeywordUtils.getResolvedTitleSqlPart("CampaignManagementStepStates", "CAMPAIGNSTEP.STATUS"); result.string(sql); \ No newline at end of file diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/stepmedium.displayvalue/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/stepmedium.displayvalue/expression.js new file mode 100644 index 00000000000..260b5474d57 --- /dev/null +++ b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/stepmedium.displayvalue/expression.js @@ -0,0 +1,5 @@ +import("system.result"); +import("Keyword_lib"); + +var sql = KeywordUtils.getResolvedTitleSqlPart("CommunicationMediumCampaign", "CAMPAIGNSTEP.STEPMEDIUM"); +result.string(sql); \ No newline at end of file diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod index 571096dc232..c2114b2939d 100644 --- a/entity/Campaign_entity/Campaign_entity.aod +++ b/entity/Campaign_entity/Campaign_entity.aod @@ -10,6 +10,8 @@ <element>CampaignCost_entity</element> <element>CampaignCostChart_entity</element> <element>CampaignStep_entity</element> + <element>CampaignAddParticipants_entity</element> + <element>CampaignParticipant_entity</element> </siblings> <grantDeleteProcess>%aditoprj%/entity/Campaign_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Campaign_entity/contentTitleProcess.js</contentTitleProcess> @@ -46,7 +48,6 @@ <name>NAME</name> <title>Name</title> <mandatory v="true" /> - <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/name/valueProcess.js</valueProcess> </entityField> <entityField> <name>DATE_START</name> @@ -72,6 +73,7 @@ <title>Person in charge</title> <consumer>Employee</consumer> <groupable v="true" /> + <linkedContext>Person</linkedContext> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Campaign_entity/entityfields/employee_contact_id/displayValueProcess.js</displayValueProcess> @@ -80,7 +82,6 @@ <name>DESCRIPTION</name> <title>Description</title> <contentType>LONG_TEXT</contentType> - <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/description/valueProcess.js</valueProcess> </entityField> <entityField> <name>USER_NEW</name> @@ -128,7 +129,6 @@ <groupable v="true" /> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/status/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/Campaign_entity/entityfields/status/displayValueProcess.js</displayValueProcess> </entityField> <entityConsumer> <name>KeywordStates</name> @@ -185,10 +185,6 @@ <fieldName>CampaignParticipantsProvider</fieldName> </dependency> <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - </entityParameter> <entityParameter> <name>CampaignStepId_param</name> <expose v="true" /> @@ -207,6 +203,12 @@ <entityName>Employee_entity</entityName> <fieldName>Employees</fieldName> </dependency> + <children> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/employee/children/onlyactives_param/valueProcess.js</valueProcess> + </entityParameter> + </children> </entityConsumer> <entityConsumer> <name>CampaignCosts</name> @@ -272,25 +274,6 @@ </entityParameter> </children> </entityConsumer> - <entityConsumer> - <name>Tasks</name> - <title>Tasks</title> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> - <children> - <entityParameter> - <name>ObjectId_param</name> - <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>RowId_param</name> - <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> <entityActionField> <name>newActivity</name> <title>New activity</title> @@ -440,26 +423,6 @@ <iconId>VAADIN:CURLY_BRACKETS</iconId> <stateProcess>%aditoprj%/entity/Campaign_entity/entityfields/openadminview/stateProcess.js</stateProcess> </entityActionField> - <entityParameter> - <name>originalCampaignIdCopy_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>description_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>emplContactId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>name_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>state_param</name> - <expose v="true" /> - </entityParameter> <entityConsumer> <name>Documents</name> <dependency> @@ -517,6 +480,10 @@ <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/keywordcurrency/children/containername_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/keywordcurrency/children/onlyactives_param/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> <entityField> @@ -556,12 +523,33 @@ <entityField> <name>ACTIVE</name> </entityField> + <entityParameter> + <name>Copy_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>Tasks</name> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> + <children> + <entityParameter> + <name>ObjectId_param</name> + <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>RowId_param</name> + <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> <name>db</name> <alias>Data_alias</alias> - <fromClauseProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> <conditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <onDBInsert>%aditoprj%/entity/Campaign_entity/recordcontainers/db/onDBInsert.js</onDBInsert> <onDBUpdate>%aditoprj%/entity/Campaign_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> @@ -675,6 +663,10 @@ <name>ACTIVE.value</name> <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>EMPLOYEE_CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> @@ -684,53 +676,6 @@ <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess> <filtertype>BASIC</filtertype> </filterExtensionSet> - <filterExtension> - <name>DateStart_filter</name> - <title>Startdate</title> - <contentType>DATE</contentType> - <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js</filterConditionProcess> - <filtertype>BASIC</filtertype> - </filterExtension> - <filterExtension> - <name>DateEnd_filter</name> - <title>Enddate</title> - <contentType>DATE</contentType> - <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js</filterConditionProcess> - <filtertype>BASIC</filtertype> - </filterExtension> - <filterExtension> - <name>Participant_filter</name> - <title>Participants</title> - <contentType>TEXT</contentType> - <filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js</filterValuesProcess> - <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js</filterConditionProcess> - <filtertype>BASIC</filtertype> - </filterExtension> - <filterExtension> - <name>CampaignStep_filter</name> - <title>Steps</title> - <contentType>TEXT</contentType> - <filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js</filterValuesProcess> - <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js</filterConditionProcess> - <filtertype>BASIC</filtertype> - </filterExtension> - <filterExtension> - <name>Member_filter</name> - <title>Members</title> - <contentType>TEXT</contentType> - <filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js</filterValuesProcess> - <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js</filterConditionProcess> - <filtertype>BASIC</filtertype> - </filterExtension> - <filterExtension> - <name>Favorite_filter</name> - <title>Favoritegroup</title> - <contentType>TEXT</contentType> - <filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js</filterValuesProcess> - <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js</filterConditionProcess> - <groupedRecordField></groupedRecordField> - <filtertype>BASIC</filtertype> - </filterExtension> </filterExtensions> </dbRecordContainer> </recordContainers> diff --git a/entity/Campaign_entity/afterUiInit.js b/entity/Campaign_entity/afterUiInit.js index 40048a41371..d71e3ce2b92 100644 --- a/entity/Campaign_entity/afterUiInit.js +++ b/entity/Campaign_entity/afterUiInit.js @@ -6,4 +6,9 @@ import("Attribute_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) { AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes"); + + if(vars.exists("$param.Copy_param") && vars.get("$param.Copy_param")) + { + neon.setFieldValues(JSON.parse(vars.get("$param.Copy_param"))["FIELDS"]); + } } diff --git a/entity/Campaign_entity/entityfields/copycampaign/onActionProcess.js b/entity/Campaign_entity/entityfields/copycampaign/onActionProcess.js index d0e4f15cee9..10b5370070b 100644 --- a/entity/Campaign_entity/entityfields/copycampaign/onActionProcess.js +++ b/entity/Campaign_entity/entityfields/copycampaign/onActionProcess.js @@ -1,11 +1,11 @@ import("system.vars"); import("Campaign_lib"); -var campaignid = vars.getString("$field.CAMPAIGNID"); -var description = vars.getString("$field.DESCRIPTION"); -var emplContactId = vars.getString("$field.EMPLOYEE_CONTACT_ID"); -var name = vars.getString("$field.NAME"); -var state = vars.getString("$field.STATUS"); +var campaignid = vars.get("$field.CAMPAIGNID"); +var description = vars.get("$field.DESCRIPTION"); +var emplContactId = vars.get("$field.EMPLOYEE_CONTACT_ID"); +var name = vars.get("$field.NAME"); +var state = vars.get("$field.STATUS"); CampaignUtils.copyCampaign(campaignid, description, emplContactId, name, state); \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/description/valueProcess.js b/entity/Campaign_entity/entityfields/description/valueProcess.js deleted file mode 100644 index f410607cb79..00000000000 --- a/entity/Campaign_entity/entityfields/description/valueProcess.js +++ /dev/null @@ -1,8 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.description_param") && vars.get("$param.description_param") && !vars.get("$this.value")) -{ - result.string(vars.get("$param.description_param")); -} \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js b/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js index 04046053e32..4b00f2d048b 100644 --- a/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js +++ b/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js @@ -3,10 +3,5 @@ import("system.neon"); import("system.vars"); import("Employee_lib"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) -{ - if(vars.exists("$param.emplContactId_param") && vars.get("$param.emplContactId_param") && !vars.get("$this.value")) - result.string(vars.get("$param.emplContactId_param")); - else if(vars.get("$this.value") == null) - result.string(EmployeeUtils.getCurrentContactId()); -} \ No newline at end of file +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + result.string(EmployeeUtils.getCurrentContactId()); \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/name/valueProcess.js b/entity/Campaign_entity/entityfields/name/valueProcess.js deleted file mode 100644 index 2c8e28aa36e..00000000000 --- a/entity/Campaign_entity/entityfields/name/valueProcess.js +++ /dev/null @@ -1,8 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.name_param") && vars.get("$param.name_param") && !vars.get("$this.value")) -{ - result.string(vars.get("$param.name_param")); -} \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/status/displayValueProcess.js b/entity/Campaign_entity/entityfields/status/displayValueProcess.js deleted file mode 100644 index 2b82fe77f1e..00000000000 --- a/entity/Campaign_entity/entityfields/status/displayValueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignState(), vars.get("$field.STATUS"))); \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/status/valueProcess.js b/entity/Campaign_entity/entityfields/status/valueProcess.js index e772e08d2c7..c3b6c3a0362 100644 --- a/entity/Campaign_entity/entityfields/status/valueProcess.js +++ b/entity/Campaign_entity/entityfields/status/valueProcess.js @@ -1,12 +1,7 @@ +import("KeywordRegistry_basic"); import("system.neon"); import("system.vars"); import("system.result"); -import("KeywordRegistry_basic"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) -{ - if(vars.exists("$param.state_param") && vars.get("$param.state_param") && !vars.get("$this.value")) - result.string(vars.get("$param.state_param")); - else if (vars.get("$this.value") == null) - result.string($KeywordRegistry.campaignState$planning()); -} \ No newline at end of file +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + result.string($KeywordRegistry.campaignState$planning); \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js b/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js index 5996e99db23..e8b4e72e74a 100644 --- a/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js +++ b/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js @@ -1,4 +1,4 @@ -import("system.result"); -import("Context_lib"); - -result.string(ContextUtils.getCurrentContextId()); \ No newline at end of file +import("system.result"); +import("Context_lib"); + +result.string(ContextUtils.getCurrentContextId()); diff --git a/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js b/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js index 44d452d9b78..3814648f507 100644 --- a/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js +++ b/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js @@ -1,4 +1,4 @@ -import("system.vars"); -import("system.result"); - +import("system.vars"); +import("system.result"); + result.string(vars.get("$field.CAMPAIGNID")); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/conditionProcess.js b/entity/Campaign_entity/recordcontainers/db/conditionProcess.js index ea77837ea6f..e5c5faf2b6e 100644 --- a/entity/Campaign_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Campaign_entity/recordcontainers/db/conditionProcess.js @@ -7,11 +7,11 @@ import("Sql_lib"); var recordState = vars.get("$sys.recordstate"); -var condition = newWhere(); +var cond = newWhere(); + if(vars.get("$param.ShowOnlyCurrentUsersCampaigns_param") == 'true') { - condition.and("CAMPAIGN.EMPLOYEE_CONTACT_ID", EmployeeUtils.getCurrentContactId()); + cond.and("CAMPAIGN.EMPLOYEE_CONTACT_ID", EmployeeUtils.getCurrentContactId()); } - -result.string(condition.toString()); \ No newline at end of file +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js deleted file mode 100644 index d0dddcc8b37..00000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js +++ /dev/null @@ -1,27 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Sql_lib"); -import("Util_lib"); -import("Campaign_lib"); - - -var valueSubSelect = "(select CAMPAIGNSTEPID from CAMPAIGNSTEP where CAMPAIGN.CAMPAIGNID = CAMPAIGNSTEP.CAMPAIGN_ID)"; -var countSubSelect = "(select count(*) from CAMPAIGNSTEP where CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID)"; -var condition = ""; - -switch(vars.get("$local.comparison")) { - case "ISNOTNULL": - condition = countSubSelect + " > 0"; - break; - case "ISNULL": - condition = countSubSelect + " = 0"; - break; - case "NOT_EQUAL": - condition = vars.get("$local.value") + " not in " + valueSubSelect; - break; - case "EQUAL": - condition = vars.get("$local.value") + " in " + valueSubSelect; - break; -} - -result.object(condition); diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js deleted file mode 100644 index 13b3ff34c39..00000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js +++ /dev/null @@ -1,11 +0,0 @@ -import("system.result"); -import("Sql_lib"); - - -var campaignStepValues = new SqlBuilder() - .select("CAMPAIGNSTEPID, NAME") - .from("CAMPAIGNSTEP") - .orderBy("NAME") - .table(); - -result.object(campaignStepValues); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js deleted file mode 100644 index c5895859892..00000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js +++ /dev/null @@ -1,17 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Sql_lib"); -import("Util_lib"); - - -var subSelect = new SqlBuilder() - .select("max(CAMPAIGNSTEP.DATE_END)") - .from("CAMPAIGNSTEP") - .where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID") - .toString(); - -subSelect = "(" + subSelect + ")"; - -var condition = StringUtils.replaceAll(vars.get("$local.condition"), vars.get("$local.columnPlaceholder"), subSelect); - -result.object(condition); diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js deleted file mode 100644 index 2d15b9e58f2..00000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js +++ /dev/null @@ -1,17 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Sql_lib"); -import("Util_lib"); - - -var subSelect = new SqlBuilder() - .select("min(CAMPAIGNSTEP.DATE_START)") - .from("CAMPAIGNSTEP") - .where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID") - .toString(); - -subSelect = "(" + subSelect + ")"; - -var condition = StringUtils.replaceAll(vars.get("$local.condition"), vars.get("$local.columnPlaceholder"), subSelect); - -result.object(condition); diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js deleted file mode 100644 index 5a2fdfdb69a..00000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js +++ /dev/null @@ -1,11 +0,0 @@ -import("Favorites_lib"); -import("system.result"); -import("Sql_lib"); - -var favoFilterCond = newWhere(); -var rowIds = FavoritesUtil.getRowIdsOfFavoriteGroup(); - -for(i = 0; i < rowIds.length; i++) - favoFilterCond.or("CAMPAIGN.CAMPAIGNID", rowIds[i], SqlBuilder.EQUAL()); - -result.string(favoFilterCond.toString()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js deleted file mode 100644 index 419128ca73f..00000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("Context_lib"); -import("system.result"); -import("Favorites_lib"); - -result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js deleted file mode 100644 index 48c84a8dcbb..00000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js +++ /dev/null @@ -1,26 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Sql_lib"); -import("Util_lib"); - - -var valueSubSelect = "(select CONTACT_ID from OBJECTMEMBER where OBJECTMEMBER.OBJECT_ROWID = CAMPAIGN.CAMPAIGNID)"; -var countSubSelect = "(select count(*) from OBJECTMEMBER where OBJECTMEMBER.OBJECT_ROWID = CAMPAIGN.CAMPAIGNID)"; -var condition = ""; - -switch(vars.get("$local.comparison")) { - case "ISNOTNULL": - condition = countSubSelect + " > 0"; - break; - case "ISNULL": - condition = countSubSelect + " = 0"; - break; - case "NOT_EQUAL": - condition = vars.get("$local.value") + " not in " + valueSubSelect; - break; - case "EQUAL": - condition = vars.get("$local.value") + " in " + valueSubSelect; - break; -} - -result.object(condition); diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js deleted file mode 100644 index 569b13dcd32..00000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js +++ /dev/null @@ -1,13 +0,0 @@ -import("system.result"); -import("Sql_lib"); -import("Person_lib"); - - -var query = new SqlBuilder() - .select("OBJECTMEMBER.CONTACT_ID, (" + PersUtils.getResolvingDisplaySubSql("OBJECTMEMBER.CONTACT_ID") + ") as C") - .from("OBJECTMEMBER") - .join("CAMPAIGN", "OBJECTMEMBER.OBJECT_ROWID = CAMPAIGN.CAMPAIGNID") - .join("CONTACT", "OBJECTMEMBER.CONTACT_ID = CONTACT.CONTACTID") - ; - -result.object(query.table()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js deleted file mode 100644 index be23e1087b3..00000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js +++ /dev/null @@ -1,26 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Sql_lib"); -import("Util_lib"); - - -var valueSubSelect = "(select CONTACT_ID from CAMPAIGNPARTICIPANT where CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID)"; -var countSubSelect = "(select count(*) from CAMPAIGNPARTICIPANT where CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID)"; -var condition = ""; - -switch(vars.get("$local.comparison")) { - case "ISNOTNULL": - condition = countSubSelect + " > 0"; - break; - case "ISNULL": - condition = countSubSelect + " = 0"; - break; - case "NOT_EQUAL": - condition = vars.get("$local.value") + " not in " + valueSubSelect; - break; - case "EQUAL": - condition = vars.get("$local.value") + " in " + valueSubSelect; - break; -} - -result.object(condition); diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js deleted file mode 100644 index 0ff2d9c975b..00000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js +++ /dev/null @@ -1,16 +0,0 @@ -import("system.result"); -import("Sql_lib"); -import("Person_lib"); - - -var contactDisplaySelect = "case when CONTACT.PERSON_ID is null" - + " then (select ORGANISATION.NAME FROM ORGANISATION join CONTACT on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID where CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID)" - + " else (" + PersUtils.getResolvingDisplaySubSql("CAMPAIGNPARTICIPANT.CONTACT_ID") + ")" - + " end"; -var query = new SqlBuilder() - .select("distinct CAMPAIGNPARTICIPANT.CONTACT_ID, (" + contactDisplaySelect + ") as C") - .from("CAMPAIGNPARTICIPANT") - .join("CONTACT on CAMPAIGNPARTICIPANT.CONTACT_ID = CONTACT.CONTACTID", "", "", "inner") - ; - -result.object(query.table()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js b/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js deleted file mode 100644 index f1704c63ce0..00000000000 --- a/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js +++ /dev/null @@ -1,17 +0,0 @@ -import("system.result"); -import("system.neon"); -import("system.vars"); - - -var recordState = vars.get("$sys.recordstate"); -var res = "CAMPAIGN"; - -if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) { - res += " join (select min(DATE_START) as STEPDATESTART_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) STEPDATESTART_TABLEALIAS" - + " on STEPDATESTART_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID " - + " join (select max(DATE_END) as STEPDATEEND_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) STEPDATEEND_TABLEALIAS" - + " on STEPDATEEND_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID "; - -} - -result.string(res); diff --git a/entity/Campaign_entity/recordcontainers/db/onDBInsert.js b/entity/Campaign_entity/recordcontainers/db/onDBInsert.js index 3c0830aabed..ecc62088cac 100644 --- a/entity/Campaign_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Campaign_entity/recordcontainers/db/onDBInsert.js @@ -12,8 +12,8 @@ import("Campaign_lib"); var rowdata = vars.get("$local.rowdata"); var campaignId = vars.get("$local.uid"); -if (vars.get("$param.originalCampaignIdCopy_param")) - CampaignUtils.copyCampaignSteps(vars.getString("$param.originalCampaignIdCopy_param"), campaignId); +if (vars.get("$param.Copy_param")) + CampaignUtils.copyCampaignSteps(JSON.parse(vars.get("$param.Copy_param"))["CAMPAIGNID"], campaignId); else { var threeWeeks = datetime.ONE_WEEK * 3; diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_end.value/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_end.value/expression.js index 510c61f4799..26ead684de6 100644 --- a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_end.value/expression.js +++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_end.value/expression.js @@ -1,12 +1,4 @@ -import("system.neon"); import("system.result"); -import("system.vars"); +import("Sql_lib"); - -var recordState = vars.get("$sys.recordstate"); - -if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) { - result.string("STEPDATEEND_ALIAS"); -} else { - result.string("0"); -} +result.string(newSelect("max(CAMPAIGNSTEP.DATE_END)").from("CAMPAIGNSTEP").where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID").toString()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_start.value/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_start.value/expression.js index 77d1b3dde65..4659e92e558 100644 --- a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_start.value/expression.js +++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_start.value/expression.js @@ -1,12 +1,5 @@ import("system.neon"); import("system.result"); -import("system.vars"); +import("Sql_lib"); - -var recordState = vars.get("$sys.recordstate"); - -if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) { - result.string("STEPDATESTART_ALIAS"); -} else { - result.string("0"); -} \ No newline at end of file +result.string(newSelect("min(CAMPAIGNSTEP.DATE_START)").from("CAMPAIGNSTEP").where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID").toString()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js new file mode 100644 index 00000000000..f0023d115c5 --- /dev/null +++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js @@ -0,0 +1,3 @@ +import("Person_lib"); +import("system.result"); +result.string(PersUtils.getResolvingDisplaySubSql("CAMPAIGN.EMPLOYEE_CONTACT_ID")); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js index f67e50c289f..d5024a1449d 100644 --- a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js +++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js @@ -1,6 +1,6 @@ -import("system.result"); -import("Keyword_lib"); import("KeywordRegistry_basic"); +import("Keyword_lib"); +import("system.result"); var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.campaignState(), "CAMPAIGN.STATUS"); result.string(sql); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index ad9c6c66275..198706a9c3b 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -589,6 +589,12 @@ <fieldName>KeywordVisitRecommendationSource</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>10ced13f-78ae-4e99-a315-82f1f7389029</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>KeywordStepMedium</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> <children> <entityParameter> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 2abce19573c..5fefee70bc8 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -6,6 +6,10 @@ <country></country> <variant></variant> <keyValueMap> + <entry> + <key>The max participants count can not be equal or less then 0</key> + <value>Die maximale Teilnehmerzahl muss größer 0 sein!</value> + </entry> <entry> <key>Illegal Parent Operator in buildFilterObj-Function:</key> <value>Übergebener Operator ungültig in Funktion "buildFilterObj"</value> diff --git a/neonContext/CampaignParticipant/CampaignParticipant.aod b/neonContext/CampaignParticipant/CampaignParticipant.aod index 503b93a8e3b..80eda39dc4d 100644 --- a/neonContext/CampaignParticipant/CampaignParticipant.aod +++ b/neonContext/CampaignParticipant/CampaignParticipant.aod @@ -4,7 +4,6 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterView>CampaignParticipantFilter_view</filterView> <editView>CampaignParticipantEdit_view</editView> - <previewView>CampaignParticipantPreview_view</previewView> <entity>CampaignParticipant_entity</entity> <references> <neonViewReference> diff --git a/neonView/CampaignCostChart_view/CampaignCostChart_view.aod b/neonView/CampaignCostChart_view/CampaignCostChart_view.aod index 24159367f94..9c8daa4a4eb 100644 --- a/neonView/CampaignCostChart_view/CampaignCostChart_view.aod +++ b/neonView/CampaignCostChart_view/CampaignCostChart_view.aod @@ -5,7 +5,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>CampaignCostsChart</name> - <title>Campaign Costs</title> + <title>Campaign costs</title> <description>Shows campaing costs graphically processed</description> <fragment>Campaign/full</fragment> <singleton v="true" /> diff --git a/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod b/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod index 15bdd074a0c..bbd116c757e 100644 --- a/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod +++ b/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod @@ -13,6 +13,8 @@ <tableViewTemplate> <name>CampaignCost</name> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <columns> <neonTableColumn> <name>5202d410-fc4d-4109-93b1-8743954a25e2</name> diff --git a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod index 1cfa11b98bd..058c9bca2a2 100644 --- a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod +++ b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod @@ -12,6 +12,8 @@ <tableViewTemplate> <name>CampaignCost</name> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <columns> <neonTableColumn> <name>651c5bd4-8f87-40d4-9d1f-38549b1e5fdf</name> @@ -26,6 +28,9 @@ <treeTableViewTemplate> <name>Treetable</name> <entityField>#ENTITY</entityField> + <linkedColumns /> + <defaultGroupFields /> + <fixedFilterFields /> <columns> <neonTreeTableColumn> <name>9d36a33f-b619-4922-9811-acd73bf67b22</name> diff --git a/neonView/CampaignCostFix_view/CampaignCostFix_view.aod b/neonView/CampaignCostFix_view/CampaignCostFix_view.aod index 4397f42cbf1..cd0b9ebdd1b 100644 --- a/neonView/CampaignCostFix_view/CampaignCostFix_view.aod +++ b/neonView/CampaignCostFix_view/CampaignCostFix_view.aod @@ -14,6 +14,8 @@ <tableViewTemplate> <name>CampaignCostFix</name> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <columns> <neonTableColumn> <name>1b2b3ce3-eaff-472b-a873-5e054adac89a</name> diff --git a/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod b/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod index c29615b901e..dd68e125ee0 100644 --- a/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod +++ b/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod @@ -15,9 +15,11 @@ <treeTableViewTemplate> <name>CostTreeTable</name> <entityField>#ENTITY</entityField> + <linkedColumns /> <defaultGroupFields> <element>CAMPAIGNSTEP_ID</element> </defaultGroupFields> + <fixedFilterFields /> <columns> <neonTreeTableColumn> <name>457caff8-0403-425f-839c-62e5d05fe3a1</name> @@ -26,10 +28,12 @@ <neonTreeTableColumn> <name>2adbd887-f1df-43ff-bde9-12c8273af7a9</name> <entityField>NET</entityField> + <aggregateEntityField>NET_aggregate</aggregateEntityField> </neonTreeTableColumn> <neonTreeTableColumn> <name>f8c6439c-9536-477b-af19-26719902e12e</name> <entityField>netPerParticipant</entityField> + <aggregateEntityField>NETPERPARTICIPANT_aggregate</aggregateEntityField> </neonTreeTableColumn> <neonTreeTableColumn> <name>8239e81b-d69c-4ea9-b55d-83e79d1693cf</name> diff --git a/neonView/CampaignFilter_view/CampaignFilter_view.aod b/neonView/CampaignFilter_view/CampaignFilter_view.aod index 4d7c3aac1c1..0dcb198305d 100644 --- a/neonView/CampaignFilter_view/CampaignFilter_view.aod +++ b/neonView/CampaignFilter_view/CampaignFilter_view.aod @@ -8,7 +8,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>CurrentUsersOwnedCampaigns</name> - <title>My Campaigns</title> + <title>My campaigns</title> <description>Show my campaigns</description> <fragment>Campaign/filter</fragment> <singleton v="true" /> diff --git a/neonView/CampaignMain_view/CampaignMain_view.aod b/neonView/CampaignMain_view/CampaignMain_view.aod index 789dbfbf943..7b18c973408 100644 --- a/neonView/CampaignMain_view/CampaignMain_view.aod +++ b/neonView/CampaignMain_view/CampaignMain_view.aod @@ -46,11 +46,6 @@ <entityField>Activities</entityField> <view>ActivityFilter_view</view> </neonViewReference> - <neonViewReference> - <name>e28e5598-9366-4f5a-be8f-70dd3cc0399a</name> - <entityField>Tasks</entityField> - <view>TaskFilter_view</view> - </neonViewReference> <neonViewReference> <name>3b87a113-aa39-4d20-8902-ad2a9f6aba5f</name> <entityField>Documents</entityField> diff --git a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod index 6539d7a4d36..f397e74e04e 100644 --- a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod +++ b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod @@ -14,6 +14,7 @@ <children> <scoreCardViewTemplate> <name>CampaignStepInfos_Score</name> + <fieldActions /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> @@ -41,9 +42,13 @@ <entityField>CAMPAIGNSTEP_ID</entityField> </entityFieldLink> <entityFieldLink> - <name>94aa9a4d-e2e5-4a1b-b6f8-4d5aed87fe53</name> + <name>65fd8c83-7990-4109-8a08-5c0c56cb3426</name> <entityField>CONTACT_ID</entityField> </entityFieldLink> + <entityFieldLink> + <name>572ffba6-15c8-4d82-8f78-7e03ca1215ce</name> + <entityField>RESPONSIBLE_CONTACT_ID</entityField> + </entityFieldLink> </fields> </genericViewTemplate> </children> diff --git a/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod b/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod index 0f7b7272655..f97bbe8c0fb 100644 --- a/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod +++ b/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod @@ -15,6 +15,8 @@ <name>ParticipantsTable</name> <favoriteActionGroup1>FilterViewActionGroup</favoriteActionGroup1> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <isCreatable v="true" /> <isEditable v="true" /> <columns> @@ -24,12 +26,20 @@ </neonTableColumn> <neonTableColumn> <name>0b6dd644-a692-4c1a-9ab7-c38608e63eac</name> - <entityField>CONTACT_ID</entityField> + <entityField>PERSON_CONTACT_ID</entityField> + </neonTableColumn> + <neonTableColumn> + <name>74ef2d05-72d0-4406-915d-0c0facd351c2</name> + <entityField>ORGANISATION_CONTACT_ID</entityField> </neonTableColumn> <neonTableColumn> <name>1649e2e9-e3b3-4a41-960d-39002cb6b2d8</name> <entityField>CAMPAIGNSTEP_ID</entityField> </neonTableColumn> + <neonTableColumn> + <name>19da14e0-31c5-4a2a-9291-d0b5b4bd0fc4</name> + <entityField>RESPONSIBLE_CONTACT_ID</entityField> + </neonTableColumn> <neonTableColumn> <name>20c9aed5-cf30-484b-a68b-c1f6ca0459db</name> <entityField>STANDARD_EMAIL_COMMUNICATION</entityField> @@ -44,6 +54,9 @@ <name>Treetable</name> <favoriteActionGroup1>FilterViewActionGroup</favoriteActionGroup1> <entityField>#ENTITY</entityField> + <linkedColumns /> + <defaultGroupFields /> + <fixedFilterFields /> <columns> <neonTreeTableColumn> <name>9ded1920-58ef-4fc1-ac92-07522c7c06d4</name> @@ -51,12 +64,20 @@ </neonTreeTableColumn> <neonTreeTableColumn> <name>f406134b-b1c3-4fae-9f6d-771827d0fb01</name> - <entityField>CONTACT_ID</entityField> + <entityField>PERSON_CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>4c485b2e-bf95-4205-8e01-bcf4edbc5a03</name> + <entityField>ORGANISATION_CONTACT_ID</entityField> </neonTreeTableColumn> <neonTreeTableColumn> <name>c7831772-15e4-49bb-ba84-647136c3002e</name> <entityField>CAMPAIGNSTEP_ID</entityField> </neonTreeTableColumn> + <neonTreeTableColumn> + <name>8c5c3311-0127-4977-af27-8ab582d08733</name> + <entityField>RESPONSIBLE_CONTACT_ID</entityField> + </neonTreeTableColumn> <neonTreeTableColumn> <name>664cb6d0-48f9-48bf-9934-2fdb40501771</name> <entityField>STANDARD_EMAIL_COMMUNICATION</entityField> diff --git a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod index dc45eb0e658..39d69eb7a25 100644 --- a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod +++ b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod @@ -4,7 +4,7 @@ <title>Campaign steps </title> <description></description> <majorModelMode>DISTRIBUTED</majorModelMode> - <filterable v="false" /> + <filterable v="true" /> <layout> <groupLayout> <name>layout</name> @@ -13,7 +13,6 @@ <children> <tableViewTemplate> <name>StepsTable</name> - <inlineEdit v="true" /> <entityField>#ENTITY</entityField> <isEditable v="true" /> <autoNewRow v="true" /> @@ -30,6 +29,10 @@ <name>d9ca59de-1441-494a-91f0-1cff91c575de</name> <entityField>NAME</entityField> </neonTableColumn> + <neonTableColumn> + <name>166b2a17-1142-4c1d-b403-362afb227469</name> + <entityField>PREDECESSORSTEP_ID</entityField> + </neonTableColumn> <neonTableColumn> <name>75d15a06-1591-4f5c-9be6-df98e32e3834</name> <entityField>EMPLOYEE_CONTACT_ID</entityField> diff --git a/neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod b/neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod new file mode 100644 index 00000000000..7d6034293b0 --- /dev/null +++ b/neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>CampaignStepMembers_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> +</neonView> diff --git a/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod b/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod index bc3590f6e3b..f175784272c 100644 --- a/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod +++ b/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod @@ -2,7 +2,6 @@ <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> <name>CampaignStepsGantt_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <filterable v="true" /> <layout> <noneLayout> <name>layout</name> diff --git a/process/Campaign_lib/process.js b/process/Campaign_lib/process.js index 6902d8c5c76..f3934b93366 100644 --- a/process/Campaign_lib/process.js +++ b/process/Campaign_lib/process.js @@ -627,13 +627,20 @@ CampaignUtils.GetContactCountByCondition = function(pCondition, pLookInCampaignO */ CampaignUtils.copyCampaign = function(pCampaignid, pDescription, pEmplContactId, pName, pState) { - var params = { - "originalCampaignIdCopy_param" : pCampaignid, - "description_param" : pDescription, - "emplContactId_param" : pEmplContactId, - "name_param" : pName || "", - "state_param" : pState || "" - }; + var fieldValues = {} + var preSetValues = {} + var params = {} + + preSetValues["$field.DESCRIPTION"] = pDescription + preSetValues["$field.EMPLOYEE_CONTACT_ID"] = pEmplContactId + preSetValues["$field.NAME"] = pName + preSetValues["$field.STATUS"] = pState + + fieldValues["FIELDS"] = preSetValues + fieldValues["CAMPAIGNID"] = pCampaignid + params["Copy_param"] = JSON.stringify(fieldValues) + + neon.openContext("Campaign", null, null, neon.OPERATINGSTATE_NEW, params); } diff --git a/process/Contact_lib/process.js b/process/Contact_lib/process.js index 4f73f699c57..7bbafdc693a 100644 --- a/process/Contact_lib/process.js +++ b/process/Contact_lib/process.js @@ -555,6 +555,36 @@ ContactUtils.getActiveCommRestrictionsSubselect = function() return sqlMasking.concatWithSeparator(parts, " ", false); } +/** + * returns a sql subselect which counts all Commrestrictions from a Person and his Organisation. + * The select needs the CONTACT.CONTACTID column. + * + * @return {String} the resulting subselect + */ +ContactUtils.getCommRestrictionCount = function(pMedium, pStartDate) +{ + if (!pStartDate && pStartDate !== 0) + pStartDate = datetime.date(); + var firstLevel = new SqlBuilder() + .select("count(*)") + .from("COMMRESTRICTION") + .whereIfSet("COMMRESTRICTION.MEDIUM", pMedium) + .and("COMMRESTRICTION.STARTDATE", pStartDate, SqlBuilder.LESS_OR_EQUAL()) + .and("COMMRESTRICTION.CONTACT_ID = CONTACT.CONTACTID"); + + var secondLevel = new SqlBuilder() + .select("count(*)") + .from("COMMRESTRICTION") + .whereIfSet("COMMRESTRICTION.MEDIUM", pMedium) + .and("COMMRESTRICTION.STARTDATE", pStartDate, SqlBuilder.LESS_OR_EQUAL()) + .and("COMMRESTRICTION.CONTACT_ID", newSelect("c1.CONTACTID").from("CONTACT", "c1") + .join("CONTACT", "c2.ORGANISATION_ID = c1.ORGANISATION_ID and c1.PERSON_ID is null", "c2") + .where("c2.CONTACTID = CONTACT.CONTACTID") + , SqlBuilder.IN()); + + return firstLevel.toString() +") + ("+secondLevel.toString(); +} + /** * object for handling of a single contact * provides static- and instance-functions diff --git a/process/Organisation_lib/process.js b/process/Organisation_lib/process.js index 5532a6817db..6a5b4e22bf0 100644 --- a/process/Organisation_lib/process.js +++ b/process/Organisation_lib/process.js @@ -236,3 +236,18 @@ OrgUtils.openOrgReport = function(pContactId) { neon.openContext("Organisation", "OrganisationReport_view", [pContactId], neon.OPERATINGSTATE_VIEW, null); } + +/** + * creates an subSql for resolving a org into one string of text + * useful for example in an displayValue-expression to resolave a references (which is chosen by Lookups) + * + * @param {String} pRelationIdField fieldname for the CONTACTID-condition as TABLEALIAS.COLUMNALIAS; + * @return {String} a subsql (without bracets) that can be placed within an SQL + */ +OrgUtils.getResolvingDisplaySubSql = function(pRelationIdField) +{ + //TODO: verify if there is a better solution for the usage of this as a displayValueExpression --> automatic use of #TITLE | waiting for implementation + return newSelect("NAME").from("ORGANISATION") + .join("CONTACT", "ORGANISATIONID = ORGANISATION_ID") + .where("PERSON_ID is null").and("CONTACT.CONTACTID = "+ pRelationIdField).toString(); +} -- GitLab From 41e74c6d5f97cf055e56dfe1c0fa63b11caced09 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 1 Dec 2020 10:03:19 +0100 Subject: [PATCH 132/184] #1065278 Newsletter unsubscription workflow --- process/Attribute_lib/process.js | 63 ++++++++++++------- .../SetAttribute_workflowService/process.js | 25 ++++++-- .../serviceTaskParameterProcess.js | 1 + .../process.js | 6 +- 4 files changed, 66 insertions(+), 29 deletions(-) diff --git a/process/Attribute_lib/process.js b/process/Attribute_lib/process.js index 3e43bcc979b..a5a3d2b7a68 100644 --- a/process/Attribute_lib/process.js +++ b/process/Attribute_lib/process.js @@ -1501,8 +1501,6 @@ function AttributeRelationQuery (pObjectRowId, pAttributeId, pObjectType) this._attributeTypes = null; this._includeFullAttributeName = false; this._includeDisplayValue = false; - - return this; } /** @@ -1711,6 +1709,41 @@ AttributeRelationQuery.prototype.getAttributeCount = function () .cell() || 0); } +AttributeRelationQuery.prototype.getMaxCount = function () +{ + if (!this._objectType || !this._rowId) + throw new Error("AttributeRelationQuery: Object type and row id are required"); + if (!this._attributeIds || this._attributeIds.length !== 1) + throw new Error("AttributeRelationQuery: You have to specify a single attribute id"); + + var attributeId = this._attributeIds[0]; + + var maxCount = newSelect("MAX_COUNT") + .from("AB_ATTRIBUTEUSAGE") + .where("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", attributeId) + .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", this._objectType) + .cell(); + if (maxCount) + return Number(maxCount) || null; + return null; +} + +AttributeRelationQuery.prototype.getMinCount = function () +{ + if (!this._objectType || !this._rowId) + throw new Error("AttributeRelationQuery: Object type and row id are required"); + if (!this._attributeIds || this._attributeIds.length !== 1) + throw new Error("AttributeRelationQuery: You have to specify a single attribute id"); + + var attributeId = this._attributeIds[0]; + + return Number(newSelect("MIN_COUNT") + .from("AB_ATTRIBUTEUSAGE") + .where("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", attributeId) + .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", this._objectType) + .cell()); +} + /** * Inserts a new attribute relation. * @@ -1734,17 +1767,8 @@ AttributeRelationQuery.prototype.insertAttribute = function (pValue, pOmitValida if (!pOmitValidation) { - var maxCount = newSelect("MAX_COUNT") - .from("AB_ATTRIBUTEUSAGE") - .where("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", attributeId) - .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", this._objectType) - .arrayColumn(); - - if (maxCount.length == 0) - return false; - - maxCount = maxCount[0]; - if (maxCount && maxCount != 0) + var maxCount = this.getMaxCount(); + if (maxCount) { let timesUsed = this.getAttributeCount(); if (timesUsed >= maxCount) @@ -1847,15 +1871,12 @@ AttributeRelation.prototype.deleteAttribute = function (pOmitValidation) { if (!pOmitValidation) { - var minCount = newSelect("MIN_COUNT") - .from("AB_ATTRIBUTEUSAGE") - .where("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", this.attributeId) - .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", this.objectType) - .cell(); - - if (minCount && minCount != 0) + var attributeQuery = new AttributeRelationQuery(this.objectRowId, this.attributeId, this.objectType); + var minCount = attributeQuery.getMinCount(); + + if (minCount) { - let timesUsed = new AttributeRelationQuery(this.objectRowId, this.attributeId, this.objectType).getAttributeCount(); + let timesUsed = attributeQuery.getAttributeCount(); if (timesUsed <= minCount) return false; } diff --git a/process/SetAttribute_workflowService/process.js b/process/SetAttribute_workflowService/process.js index 394ef054248..b79ef56f644 100644 --- a/process/SetAttribute_workflowService/process.js +++ b/process/SetAttribute_workflowService/process.js @@ -1,3 +1,4 @@ +import("Util_lib"); import("Sql_lib"); import("Attribute_lib"); import("system.result"); @@ -5,6 +6,7 @@ import("system.vars"); var variables = JSON.parse(vars.get("$local.value")); +var attributeValue = variables.attributeValue; var attributeId; if (variables.attributeName) { @@ -19,10 +21,23 @@ else //attributeValueVariable -> instance variable to use for the attribute value if (variables.attributeValueVariable) { - var attributeValue = variables[variables.attributeValueVariable]; - if (attributeValue !== null && attributeValue !== undefined && attributeValue !== "") - variables.attributeValue = attributeValue; + var attributeVal = variables[variables.attributeValueVariable]; + if (attributeVal !== null && attributeVal !== undefined && attributeVal !== "") + attributeValue = attributeVal; } -new AttributeRelationQuery(variables.attributeRowId || variables.targetId, attributeId, variables.attributeContext || variables.targetContext) - .insertAttribute(variables.attributeValue); \ No newline at end of file +var attributeQuery = new AttributeRelationQuery(variables.attributeRowId || variables.targetId, attributeId, + variables.attributeContext || variables.targetContext); + +if (variables.isUpdate) +{ + var currentAttribute = attributeQuery.getSingleAttribute(); + if (!currentAttribute) + attributeQuery.insertAttribute(attributeValue, true); + else + currentAttribute.updateAttribute(attributeValue) +} +else +{ + attributeQuery.insertAttribute(attributeValue); +} \ No newline at end of file diff --git a/process/SetAttribute_workflowService/serviceTaskParameterProcess.js b/process/SetAttribute_workflowService/serviceTaskParameterProcess.js index 443bc0179a0..0e8f8d8d042 100644 --- a/process/SetAttribute_workflowService/serviceTaskParameterProcess.js +++ b/process/SetAttribute_workflowService/serviceTaskParameterProcess.js @@ -79,5 +79,6 @@ if (currentValues.attributeId && currentValues.attributeId.value) } parameters.push(new WorkflowServiceTaskParameter("attributeValueVariable", "Value variable", WorkflowServiceTaskParameter.STRING())); +parameters.push(new WorkflowServiceTaskParameter("isUpdate", "Overwrite", WorkflowServiceTaskParameter.BOOLEAN())); result.object(parameters); \ No newline at end of file diff --git a/process/SetCampaignStep_workflowService/process.js b/process/SetCampaignStep_workflowService/process.js index 75067927861..127041b9957 100644 --- a/process/SetCampaignStep_workflowService/process.js +++ b/process/SetCampaignStep_workflowService/process.js @@ -16,12 +16,12 @@ var campaignStepQuery = newSelect(["CAMPAIGNPARTICIPANTID", "CAMPAIGNSTEP_ID"]) var [participantId, currentCampaignStep] = campaignStepQuery.arrayRow(); -if (currentCampaignStep != campaignStepId) +if (campaignStepId && currentCampaignStep != campaignStepId) { - if (!currentCampaignStep) + if (!participantId) { participantId = util.getNewUUID(); - new SqlBuilder.insertFields({ + new SqlBuilder().insertFields({ "CAMPAIGNPARTICIPANTID": participantId, "CAMPAIGNSTEP_ID": campaignStepId, "CAMPAIGN_ID": campaignId, -- GitLab From 08a80ad696b2fc16e1740c9ff5c5ffe2ca5eb8c5 Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Tue, 1 Dec 2020 10:44:02 +0100 Subject: [PATCH 133/184] #1069685 Favorite: Load Rows Permission Fix --- .../jditorecordcontainer/contentProcess.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js index 3bf9fefa02c..eafabfcf64d 100644 --- a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js +++ b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js @@ -127,10 +127,17 @@ function buildFavorites(favos, objecttype) loadConfig.uids(ids); loadConfig.count(200); loadConfig.fields(["#CONTENTTITLE", "#IMAGE", "#UID"]); - var loadedRows = entities.getRows(loadConfig); - for(z = 0; z < loadedRows.length; z++) - getFavoriteWith(loadedRows[z], builtFavos, favos, loadedRows[z]["#UID"], objecttype); + try { + var loadedRows = entities.getRows(loadConfig); + + for(z = 0; z < loadedRows.length; z++) + getFavoriteWith(loadedRows[z], builtFavos, favos, loadedRows[z]["#UID"], objecttype); + + } catch(e) + { + //maybe a missing permission for entity + } return builtFavos; } -- GitLab From 783403d4763e761201252d81a2a29f3ea9d6daab Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 1 Dec 2020 11:24:12 +0100 Subject: [PATCH 134/184] #1064788 odt table replacing fixed --- process/DocumentTemplate_lib/process.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/process/DocumentTemplate_lib/process.js b/process/DocumentTemplate_lib/process.js index 68621c5eef9..2f1507904e3 100644 --- a/process/DocumentTemplate_lib/process.js +++ b/process/DocumentTemplate_lib/process.js @@ -745,10 +745,10 @@ DocumentTemplate.prototype._getReplacedODT = function (pReplacements, pTableData var bodybegin = contentXml.indexOf("<office:body>"); var bodyend = contentXml.indexOf("</office:body>") + 14; - var bodyTemplate = contentXml.substring(bodybegin, bodyend); + var bodyTemplate = contentXml.slice(bodybegin, bodyend); var fullBody = ""; //body that contains all pages (required when the replacing is done for several contacts) - var beforeBody = contentXml.substring(0, bodybegin); - var afterBody = contentXml.substr(bodyend); + var beforeBody = contentXml.slice(0, bodybegin); + var afterBody = contentXml.slice(bodyend); for (let i = 0, l = pReplacements.length; i < l; i++) { @@ -767,27 +767,30 @@ DocumentTemplate.prototype._getReplacedODT = function (pReplacements, pTableData let tables = pTableData[i] || []; - let fromIndex = 0; + let tableEnd = 0; for (let tblIndex = 0; tblIndex < tables.length; tblIndex++) //iterate over all tables in the document { let tableData = tables[tblIndex]; if (tableData && tableData.length > 0) { - fromIndex = currentBody.indexOf("</table:table>", fromIndex) + 14; - if (fromIndex === -1) //stop if there is no table + tableEnd = currentBody.indexOf("</table:table>", tableEnd) + 14; + if (tableEnd === -1) //stop if there is no table break; - let rowBegin = currentBody.lastIndexOf("<table:table-row", fromIndex); + let rowBegin = currentBody.slice(0, tableEnd).lastIndexOf("<table:table-row"); let rowEnd = currentBody.indexOf("</table:table-row>", rowBegin) + 18; - let afterTable = currentBody.substr(rowEnd); - let tableRow = currentBody.substring(rowBegin, rowEnd); - currentBody = currentBody.substring(0, rowBegin); + let afterTable = currentBody.slice(rowEnd); + let tableRow = currentBody.slice(rowBegin, rowEnd); + tableEnd -= tableRow.length; + currentBody = currentBody.slice(0, rowBegin); for (let rowIndex = 0; rowIndex < tableData.length; rowIndex++) { let tableRowData = tableData[rowIndex]; - currentBody += that._replaceText(tableRow, tableRowData); + let replacedRow = that._replaceText(tableRow, tableRowData); + currentBody += replacedRow; + tableEnd += replacedRow.length; } currentBody += afterTable; } -- GitLab From 26d401c111aa5b8a67f53574b5173ca3b5018e71 Mon Sep 17 00:00:00 2001 From: Simon Leipold <s.leipold@adito.de> Date: Tue, 1 Dec 2020 11:51:32 +0100 Subject: [PATCH 135/184] [Projekt: Entwicklung - Neon][TicketNr.: 1067337][Funktion um Childroles herauszufinden] --- .../recordcontainers/jdito/contentProcess.js | 7 ++- entity/Role_entity/Role_entity.aod | 45 +++++++++---------- process/Permission_lib/process.js | 15 +++++++ 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js b/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js index a76ad51dc5d..9a225fe5bc3 100644 --- a/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js @@ -4,6 +4,8 @@ import("system.db"); import("system.vars"); import("system.result"); import("system.util"); +import("Permission_lib"); +import("system.logging"); var alias = SqlUtils.getSystemAlias(); var selectedRoleName = vars.exists("$param.RoleId_param") && vars.get("$param.RoleId_param"); @@ -17,10 +19,7 @@ if (selectedRoleType == "" && selectedRoleName != "") { // roles can only be assigned to CUSTOM roles -> selected role has to be a viable CUSTOM role if (selectedRoleName && selectedRoleType == "CUSTOM") { - var childRoles = newSelect("ID, CHILD_ROLE", alias) - .from("ASYS_ROLES_CHILDREN") - .where("ASYS_ROLES_CHILDREN.PARENT_ROLE", selectedRoleName) - .table(); + var childRoles = PermissionUtil.getChildRoles(selectedRoleName); for each (let childRole in childRoles) { children.push([childRole[0], childRole[1], selectedRoleName]); diff --git a/entity/Role_entity/Role_entity.aod b/entity/Role_entity/Role_entity.aod index 6bff89e164d..82bc56f08e9 100644 --- a/entity/Role_entity/Role_entity.aod +++ b/entity/Role_entity/Role_entity.aod @@ -46,29 +46,30 @@ <entityName>PermissionDetail_entity</entityName> <fieldName>Permissions</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>PermissionOverviews</name> <children> <entityParameter> <name>RoleTitle_param</name> + <valueProcess>%aditoprj%/entity/Role_entity/entityfields/permissionoverviews/children/roletitle_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>PermissionOverviews</name> <dependency> <name>dependency</name> <entityName>PermissionOverview_entity</entityName> <fieldName>PermissionOverviews</fieldName> </dependency> - <children> - <entityParameter> - <name>RoleTitle_param</name> - <valueProcess>%aditoprj%/entity/Role_entity/entityfields/permissionoverviews/children/roletitle_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityConsumer> <entityProvider> <name>Roles</name> <recordContainer>jDito</recordContainer> + <children> + <entityParameter> + <name>ExcludeRoles_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>64d800d0-4db5-4b95-ab6a-9197b83cc09c</name> @@ -89,12 +90,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExcludeRoles_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ExcludeRoles_param</name> @@ -132,11 +127,6 @@ <entityConsumer> <name>RoleChildrens</name> <onValidation>%aditoprj%/entity/Role_entity/entityfields/rolechildrens/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>RoleChildren_entity</entityName> - <fieldName>RoleChildrens</fieldName> - </dependency> <children> <entityParameter> <name>RoleId_param</name> @@ -147,6 +137,11 @@ <valueProcess>%aditoprj%/entity/Role_entity/entityfields/rolechildrens/children/roletype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>RoleChildren_entity</entityName> + <fieldName>RoleChildrens</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>deleteEverythingLinkedToRole</name> @@ -157,17 +152,17 @@ </entityActionField> <entityConsumer> <name>RoleParents</name> - <dependency> - <name>dependency</name> - <entityName>RoleParent_entity</entityName> - <fieldName>RoleParents</fieldName> - </dependency> <children> <entityParameter> <name>RoleId_param</name> <valueProcess>%aditoprj%/entity/Role_entity/entityfields/roleparents/children/roleid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>RoleParent_entity</entityName> + <fieldName>RoleParents</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/process/Permission_lib/process.js b/process/Permission_lib/process.js index fcb7a7086c7..9a4b05adcac 100644 --- a/process/Permission_lib/process.js +++ b/process/Permission_lib/process.js @@ -704,6 +704,21 @@ function PermissionUtil () {} } return false; } + + /** + * Returns all child role ids and names of the given role. + * + * @param {String} pRoleName parent role name, mandatory + * + * @result {String[]} array with ids and names of child roles + */ + PermissionUtil.getChildRoles = function(pRoleName) { + // hierarchies where pRoleName is parent + return newSelect("ID, CHILD_ROLE", alias) + .from("ASYS_ROLES_CHILDREN") + .where("ASYS_ROLES_CHILDREN.PARENT_ROLE", pRoleName) + .table(); + } /** * Delete all links to child roles of pRoleName. -- GitLab From 435ed00afec4d784762f211b99eb0b712cb8f096 Mon Sep 17 00:00:00 2001 From: Simon Leipold <s.leipold@adito.de> Date: Tue, 1 Dec 2020 11:51:32 +0100 Subject: [PATCH 136/184] [Projekt: Entwicklung - Neon][TicketNr.: 1067337][Funktion um Childroles herauszufinden] --- .../recordcontainers/jdito/contentProcess.js | 7 ++- entity/Role_entity/Role_entity.aod | 45 +++++++++---------- process/Permission_lib/process.js | 15 +++++++ 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js b/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js index a76ad51dc5d..9a225fe5bc3 100644 --- a/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js @@ -4,6 +4,8 @@ import("system.db"); import("system.vars"); import("system.result"); import("system.util"); +import("Permission_lib"); +import("system.logging"); var alias = SqlUtils.getSystemAlias(); var selectedRoleName = vars.exists("$param.RoleId_param") && vars.get("$param.RoleId_param"); @@ -17,10 +19,7 @@ if (selectedRoleType == "" && selectedRoleName != "") { // roles can only be assigned to CUSTOM roles -> selected role has to be a viable CUSTOM role if (selectedRoleName && selectedRoleType == "CUSTOM") { - var childRoles = newSelect("ID, CHILD_ROLE", alias) - .from("ASYS_ROLES_CHILDREN") - .where("ASYS_ROLES_CHILDREN.PARENT_ROLE", selectedRoleName) - .table(); + var childRoles = PermissionUtil.getChildRoles(selectedRoleName); for each (let childRole in childRoles) { children.push([childRole[0], childRole[1], selectedRoleName]); diff --git a/entity/Role_entity/Role_entity.aod b/entity/Role_entity/Role_entity.aod index 6bff89e164d..82bc56f08e9 100644 --- a/entity/Role_entity/Role_entity.aod +++ b/entity/Role_entity/Role_entity.aod @@ -46,29 +46,30 @@ <entityName>PermissionDetail_entity</entityName> <fieldName>Permissions</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>PermissionOverviews</name> <children> <entityParameter> <name>RoleTitle_param</name> + <valueProcess>%aditoprj%/entity/Role_entity/entityfields/permissionoverviews/children/roletitle_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>PermissionOverviews</name> <dependency> <name>dependency</name> <entityName>PermissionOverview_entity</entityName> <fieldName>PermissionOverviews</fieldName> </dependency> - <children> - <entityParameter> - <name>RoleTitle_param</name> - <valueProcess>%aditoprj%/entity/Role_entity/entityfields/permissionoverviews/children/roletitle_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityConsumer> <entityProvider> <name>Roles</name> <recordContainer>jDito</recordContainer> + <children> + <entityParameter> + <name>ExcludeRoles_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>64d800d0-4db5-4b95-ab6a-9197b83cc09c</name> @@ -89,12 +90,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExcludeRoles_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ExcludeRoles_param</name> @@ -132,11 +127,6 @@ <entityConsumer> <name>RoleChildrens</name> <onValidation>%aditoprj%/entity/Role_entity/entityfields/rolechildrens/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>RoleChildren_entity</entityName> - <fieldName>RoleChildrens</fieldName> - </dependency> <children> <entityParameter> <name>RoleId_param</name> @@ -147,6 +137,11 @@ <valueProcess>%aditoprj%/entity/Role_entity/entityfields/rolechildrens/children/roletype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>RoleChildren_entity</entityName> + <fieldName>RoleChildrens</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>deleteEverythingLinkedToRole</name> @@ -157,17 +152,17 @@ </entityActionField> <entityConsumer> <name>RoleParents</name> - <dependency> - <name>dependency</name> - <entityName>RoleParent_entity</entityName> - <fieldName>RoleParents</fieldName> - </dependency> <children> <entityParameter> <name>RoleId_param</name> <valueProcess>%aditoprj%/entity/Role_entity/entityfields/roleparents/children/roleid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>RoleParent_entity</entityName> + <fieldName>RoleParents</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/process/Permission_lib/process.js b/process/Permission_lib/process.js index fcb7a7086c7..9a4b05adcac 100644 --- a/process/Permission_lib/process.js +++ b/process/Permission_lib/process.js @@ -704,6 +704,21 @@ function PermissionUtil () {} } return false; } + + /** + * Returns all child role ids and names of the given role. + * + * @param {String} pRoleName parent role name, mandatory + * + * @result {String[]} array with ids and names of child roles + */ + PermissionUtil.getChildRoles = function(pRoleName) { + // hierarchies where pRoleName is parent + return newSelect("ID, CHILD_ROLE", alias) + .from("ASYS_ROLES_CHILDREN") + .where("ASYS_ROLES_CHILDREN.PARENT_ROLE", pRoleName) + .table(); + } /** * Delete all links to child roles of pRoleName. -- GitLab From 3a35564e63439cc9b9d1fef3026927dc56cf6e69 Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Tue, 1 Dec 2020 15:30:26 +0100 Subject: [PATCH 137/184] #1068648 Notifications: deleteMultipleContentsIfOrphan replaces deleteContentIfOrphan --- entity/Notification_entity/recordcontainers/db/onDBDelete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entity/Notification_entity/recordcontainers/db/onDBDelete.js b/entity/Notification_entity/recordcontainers/db/onDBDelete.js index 633f720b18b..ecd41a4a7a4 100644 --- a/entity/Notification_entity/recordcontainers/db/onDBDelete.js +++ b/entity/Notification_entity/recordcontainers/db/onDBDelete.js @@ -4,4 +4,4 @@ import("system.notification"); // Deletes notificationContents from its table, if there are no user notification left // Only AppointmentContents need to stay, because they would appear again after every deletion. if(vars.get("$field.TYPECODE") != "_____SYSTEM_NOTIFICATION_APPOINTMENT") - notification.deleteContentIfOrphan([vars.get("$field.CONTENTID")]); \ No newline at end of file + notification.deleteMultipleContentsIfOrphan([vars.get("$field.CONTENTID")]); \ No newline at end of file -- GitLab From 3d6573a35ac8ae61478f0a66e49df61d40ed4bd2 Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Tue, 1 Dec 2020 15:32:07 +0100 Subject: [PATCH 138/184] Revert "#1068647 Favorite: Removed from contactmanagement" This reverts commit 069b372314ea04b35b6c11adb67cf2c9c46789c2. --- .../_____SYSTEM_APPLICATION_NEON.aod | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index adb51ef4372..9e61fe62da3 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -38,6 +38,10 @@ <name>Task</name> <kind v="10077" /> </entityNode> + <entityNode> + <name>Favorite</name> + <kind v="10077" /> + </entityNode> </childNodes> </entityNode> </childNodes> -- GitLab From aa482a872b0fd937fcd66fa5111318b873fb0faa Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Tue, 1 Dec 2020 15:32:07 +0100 Subject: [PATCH 139/184] Revert "#1068647 Favorite: Removed from contactmanagement" This reverts commit 069b372314ea04b35b6c11adb67cf2c9c46789c2. --- .../_____SYSTEM_APPLICATION_NEON.aod | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index adb51ef4372..9e61fe62da3 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -38,6 +38,10 @@ <name>Task</name> <kind v="10077" /> </entityNode> + <entityNode> + <name>Favorite</name> + <kind v="10077" /> + </entityNode> </childNodes> </entityNode> </childNodes> -- GitLab From c31af093469d040fd8e92ab91a728616fa97d79b Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Tue, 1 Dec 2020 15:30:26 +0100 Subject: [PATCH 140/184] #1068648 Notifications: deleteMultipleContentsIfOrphan replaces deleteContentIfOrphan --- entity/Notification_entity/recordcontainers/db/onDBDelete.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entity/Notification_entity/recordcontainers/db/onDBDelete.js b/entity/Notification_entity/recordcontainers/db/onDBDelete.js index 633f720b18b..ecd41a4a7a4 100644 --- a/entity/Notification_entity/recordcontainers/db/onDBDelete.js +++ b/entity/Notification_entity/recordcontainers/db/onDBDelete.js @@ -4,4 +4,4 @@ import("system.notification"); // Deletes notificationContents from its table, if there are no user notification left // Only AppointmentContents need to stay, because they would appear again after every deletion. if(vars.get("$field.TYPECODE") != "_____SYSTEM_NOTIFICATION_APPOINTMENT") - notification.deleteContentIfOrphan([vars.get("$field.CONTENTID")]); \ No newline at end of file + notification.deleteMultipleContentsIfOrphan([vars.get("$field.CONTENTID")]); \ No newline at end of file -- GitLab From 9f1c22253613110d8e7dfe806dc2d46ee77448bd Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Tue, 1 Dec 2020 10:44:02 +0100 Subject: [PATCH 141/184] #1069685 Favorite: Load Rows Permission Fix --- .../jditorecordcontainer/contentProcess.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js index 3bf9fefa02c..eafabfcf64d 100644 --- a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js +++ b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js @@ -127,10 +127,17 @@ function buildFavorites(favos, objecttype) loadConfig.uids(ids); loadConfig.count(200); loadConfig.fields(["#CONTENTTITLE", "#IMAGE", "#UID"]); - var loadedRows = entities.getRows(loadConfig); - for(z = 0; z < loadedRows.length; z++) - getFavoriteWith(loadedRows[z], builtFavos, favos, loadedRows[z]["#UID"], objecttype); + try { + var loadedRows = entities.getRows(loadConfig); + + for(z = 0; z < loadedRows.length; z++) + getFavoriteWith(loadedRows[z], builtFavos, favos, loadedRows[z]["#UID"], objecttype); + + } catch(e) + { + //maybe a missing permission for entity + } return builtFavos; } -- GitLab From 0074002f15314b7ec36a99895f44a7c4771911a6 Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Mon, 30 Nov 2020 16:48:15 +0100 Subject: [PATCH 142/184] #1067434 Notifications: adding subcategory on various .addNotification(...) calls --- process/buildSerialLetter_serverProcess/process.js | 2 +- process/importLead_serverProcess/process.js | 2 +- process/sendBulkMail_serverProcess/process.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/process/buildSerialLetter_serverProcess/process.js b/process/buildSerialLetter_serverProcess/process.js index 1d5cff1f394..b3210e860db 100644 --- a/process/buildSerialLetter_serverProcess/process.js +++ b/process/buildSerialLetter_serverProcess/process.js @@ -21,4 +21,4 @@ SingleBinaryUtils.set("SERIALLETTER", "SERIALLETTERFILE", letterId, document.con var message = translate.text("Download ready"); var description = translate.withArguments("Serial letter \"%0\" can now be downloaded", [document.title]); -notification.addNotification(util.getNewUUID(), text.encodeMS(["SerialLetter", letterId]), null, null, "DownloadReady", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); \ No newline at end of file +notification.addNotification(util.getNewUUID(), text.encodeMS(["SerialLetter", letterId]), null, null, "DownloadReady", null, notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); \ No newline at end of file diff --git a/process/importLead_serverProcess/process.js b/process/importLead_serverProcess/process.js index a24b084a933..35ac42b2b31 100644 --- a/process/importLead_serverProcess/process.js +++ b/process/importLead_serverProcess/process.js @@ -192,7 +192,7 @@ if(exeptions != "")//insert error document if (userId)// if there is an user - show a notification to this user when the import is complete { var description = translate.withArguments("%0 leads imported, %1 errors", [rows, errorCount]); - notification.addNotification(util.getNewUUID(), null, null, null, "LeadImport_Notification", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [userId], importName, description); + notification.addNotification(util.getNewUUID(), null, null, null, "LeadImport_Notification", null, notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [userId], importName, description); } diff --git a/process/sendBulkMail_serverProcess/process.js b/process/sendBulkMail_serverProcess/process.js index 711120feb20..7ed237beffb 100644 --- a/process/sendBulkMail_serverProcess/process.js +++ b/process/sendBulkMail_serverProcess/process.js @@ -23,5 +23,5 @@ if (user && !testRecipients) var message = translate.withArguments("Bulk mail \"%0\" was sent!", [mailName]); var description = translate.withArguments("%0 mails sent sucessfully, %1 mails failed. Process took %2 s.", [res.sucessful, res.failed, Math.round((datetime.date() - startTime) / datetime.ONE_SECOND)]); - notification.addNotification(util.getNewUUID(), null, null, null, "BulkMailSent", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); + notification.addNotification(util.getNewUUID(), null, null, null, "BulkMailSent", null, notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); } \ No newline at end of file -- GitLab From abb019f1efc94af60d3a8907999f41e54fd66e9e Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Mon, 30 Nov 2020 16:18:18 +0100 Subject: [PATCH 143/184] #1067434 Notifications: Subcategory added --- .../create_asys_notificationcontents.xml | 1 + .../_____SYSTEMALIAS/_____SYSTEMALIAS.aod | 14 ++++++++++ .../Notification_entity.aod | 26 +++++++++++++------ .../NotificationFilter_view.aod | 11 +++++++- 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml index fb1ae2f5ee8..448a4c3063e 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml @@ -17,6 +17,7 @@ <column name="RECIPIENTUSERIDS" type="CLOB"/> <column name="TYPECODE" type="VARCHAR(63)"/> <column name="VERSION" type="INTEGER"/> + <column name="SUBCATEGORY" type="VARCHAR(256)"/> </createTable> <createIndex indexName="idx_asysnoticontents_contid" tableName="ASYS_NOTIFICATIONCONTENTS"> diff --git a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod index 6f4f1b2dca5..9eaa60af5ab 100644 --- a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod +++ b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod @@ -1707,6 +1707,20 @@ <title></title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>SUBCATEGORY</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="256" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> diff --git a/entity/Notification_entity/Notification_entity.aod b/entity/Notification_entity/Notification_entity.aod index cf3203213ac..2668a0419e9 100644 --- a/entity/Notification_entity/Notification_entity.aod +++ b/entity/Notification_entity/Notification_entity.aod @@ -132,31 +132,31 @@ </entityField> <entityConsumer> <name>StateKeywords</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Notification_entity/entityfields/statekeywords/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>PrioKeywords</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>PrioKeywords</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Notification_entity/entityfields/priokeywords/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> @@ -170,6 +170,10 @@ <outputFormat>dd.MM.yyyy</outputFormat> <inputFormat>dd.MM.yyyy</inputFormat> </entityField> + <entityField> + <name>SUBCATEGORY</name> + <title>Subcategory</title> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -281,6 +285,12 @@ <name>CREATEDAY.value</name> <recordfield>ASYS_NOTIFICATIONCONTENTS.CREATEDATE</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SUBCATEGORY.value</name> + <recordfield>ASYS_NOTIFICATIONCONTENTS.SUBCATEGORY</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/neonView/NotificationFilter_view/NotificationFilter_view.aod b/neonView/NotificationFilter_view/NotificationFilter_view.aod index 26ee281b76c..6517c2f9eff 100644 --- a/neonView/NotificationFilter_view/NotificationFilter_view.aod +++ b/neonView/NotificationFilter_view/NotificationFilter_view.aod @@ -32,7 +32,7 @@ <dateField>CREATEDAY</dateField> <titleField>CAPTION</titleField> <descriptionField>DESCRIPTION</descriptionField> - <subdescriptionField>CREATEDATE</subdescriptionField> + <subdescriptionField>SUBCATEGORY</subdescriptionField> <iconIdField>ICON</iconIdField> <additionalInfoField>STATE</additionalInfoField> <entityField>#ENTITY</entityField> @@ -50,6 +50,7 @@ <entityField>#ENTITY</entityField> <isEditable v="false" /> <isSaveable v="false" /> + <informationField>SUBCATEGORY</informationField> <columns> <neonTableColumn> <name>1cff3be1-523d-4a5a-b7d1-389d7cbb726f</name> @@ -67,6 +68,10 @@ <name>ff33a6c1-7ac6-4acd-a083-e56a36f89977</name> <entityField>DESCRIPTION</entityField> </neonTableColumn> + <neonTableColumn> + <name>0e3756eb-05f6-4ab2-a6e9-984f5215f542</name> + <entityField>SUBCATEGORY</entityField> + </neonTableColumn> <neonTableColumn> <name>5cb09de4-4413-41e5-8a7c-4970a3cf6a62</name> <entityField>STATE</entityField> @@ -95,6 +100,10 @@ <name>446c3d62-efa4-4f1a-85d4-e4f6a45019c7</name> <entityField>DESCRIPTION</entityField> </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6caff937-2e67-4b28-b630-ae1dd5860f3b</name> + <entityField>SUBCATEGORY</entityField> + </neonTreeTableColumn> <neonTreeTableColumn> <name>4c82b79e-4c15-4298-bfbb-186c76fc5189</name> <entityField>STATE</entityField> -- GitLab From 05ee2ef97429becb7453aaf3e4b49299afd87674 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 1 Dec 2020 15:52:35 +0100 Subject: [PATCH 144/184] #1069305 Systemalias liquibase corrections --- .../init/struct/create_asys_aliasconfig.xml | 5 +- .../struct/create_asys_calendarbackend.xml | 29 +++++++ .../init/struct/create_asys_calendarlink.xml | 18 ++-- .../struct/create_asys_collector_data.xml | 3 + .../struct/create_asys_collector_tags.xml | 11 ++- .../create_asys_dashletconfigurations.xml | 18 ++-- .../init/struct/create_asys_dashlets.xml | 10 +-- .../create_asys_notificationcontents.xml | 8 +- .../init/struct/create_asys_notifications.xml | 2 +- .../init/struct/create_asys_recordgroup.xml | 3 - .../basic/init/struct/create_asys_roles.xml | 6 +- .../struct/create_asys_roles_children.xml | 2 +- .../init/struct/create_asys_sequences.xml | 3 + .../struct/create_asys_timers_serverruns.xml | 2 +- .../basic/init/struct/create_asys_users.xml | 69 ++++++++-------- .../_____SYSTEMALIAS/_____SYSTEMALIAS.aod | 82 +++++++++---------- 16 files changed, 157 insertions(+), 114 deletions(-) diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml index 84b8857d8d5..8da963bc989 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml @@ -13,7 +13,7 @@ <constraints nullable="false"/> </column> <column name="NAME" type="NVARCHAR(63)"> - <constraints nullable="false"/> + <constraints nullable="false" unique="true"/> </column> <column name="TITLE" type="NVARCHAR(63)"/> <column name="DESCRIPTION" type="NVARCHAR(255)"/> @@ -26,5 +26,8 @@ <createIndex tableName="ASYS_ALIASCONFIG" indexName="IDX_ASYS_ALIASCONFIG_SERVERID"> <column name="SERVERID"/> </createIndex> + <createIndex tableName="ASYS_ALIASCONFIG" indexName="IDX_ASYS_ALIASCONFIG_ALIASID"> + <column name="ALIASID"/> + </createIndex> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml index e037c40bd68..939fc396efe 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml @@ -23,5 +23,34 @@ <column name="TRANSP" type="CHAR(1)"/> <column name="VCOMPONENT" type="CLOB"/> </createTable> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_ENTRYTYPE"> + <column name="ENTRYTYPE"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_STARTTIME"> + <column name="STARTTIME"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_STATUS"> + <column name="STATUS"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_ENDTIME"> + <column name="ENDTIME"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_MAILBOX"> + <column name="MAILBOX"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_LASTMOD"> + <column name="LASTMODIFIED"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_DTSTART"> + <column name="DTSTART"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_DTEND"> + <column name="DTEND"/> + </createIndex> +</changeSet> +<changeSet id="4810b7c6-50f6-44f6-a0b5-83a3adfae6f7" author="s.listl" dbms="!mssql,!mysql,!mariadb"> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_ELEMENTUID"> + <column name="ELEMENTUID"/> + </createIndex> </changeSet> </databaseChangeLog> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml index 4e0f73a0b10..a9535f3f3ac 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml @@ -2,19 +2,25 @@ <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <changeSet author="a.schindlbeck" id="c31ed111-b98d-46b6-b7bf-845420624e28"> <createTable tableName="ASYS_CALENDARLINK"> - <column name="DBALIAS" type="VARCHAR(127)"/> - <column name="DBID" type="VARCHAR(191)"> - <constraints primaryKey="true" primaryKeyName="PK_ASYS_CALENDARLINK_DBID"/> + <column name="ID" type="CHAR(36)"> + <constraints nullable="false" primaryKey="true" primaryKeyName="PK_ASYS_CALENDARLINK_ID"/> </column> + <column name="DBALIAS" type="VARCHAR(127)"/> + <column name="DBID" type="VARCHAR(1023)"/> <column name="DBIDCOLUMN" type="VARCHAR(127)"/> <column name="DBTABLENAME" type="VARCHAR(127)"/> <column name="ENTRYID" type="VARCHAR(512)"/> <column name="ENTRYSTORE" type="VARCHAR(255)"/> <column name="FRAME" type="VARCHAR(1023)"/> - <column name="ID" type="CHAR(36)"> - <constraints nullable="false"/> - </column> <column name="TITLE" type="VARCHAR(2000)"/> </createTable> </changeSet> +<changeSet id="bf6546b4-67e3-4996-bcd9-77a534127b01" author="s.listl" dbms="!mssql,!mysql,!mariadb"> + <createIndex tableName="ASYS_CALENDARLINK" indexName="IDX_ASYS_CALENDARLINK_ENTRYID"> + <column name="ENTRYID"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARLINK" indexName="IDX_ASYS_CALENDARLINK_DBID"> + <column name="DBID"/> + </createIndex> +</changeSet> </databaseChangeLog> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_data.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_data.xml index 5f8ddc0ed26..6fcc0199332 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_data.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_data.xml @@ -10,5 +10,8 @@ <column name="PARENTID" type="CHAR(63)"/> <column name="METRICS" type="CLOB"/> </createTable> + <createIndex tableName="ASYS_COLLECTOR_DATA" indexName="IDX_COLLECTORDATA_TIMECOLLECT"> + <column name="TIMECOLLECTED"/> + </createIndex> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_tags.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_tags.xml index 1fcaf740d8a..133aff97c34 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_tags.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_tags.xml @@ -3,10 +3,15 @@ <changeSet author="j.hoermann" id="4fe7309e-e131-4f3d-8e65-fb399fcd7090"> <createTable tableName="ASYS_COLLECTOR_TAGS"> <column name="COLLECTORDATAID" type="CHAR(63)"> - <constraints primaryKey="true" primaryKeyName="PK_ASYS_COLLECTOR_TAGS_ID"/> + <constraints nullable="false"/> + </column> + <column name="TAGNAME" type="VARCHAR(63)"> + <constraints nullable="false"/> + </column> + <column name="TAGVALUE" type="VARCHAR(63)"> + <constraints nullable="false"/> </column> - <column name="TAGNAME" type="VARCHAR(63)"/> - <column name="TAGVALUE" type="VARCHAR(63)"/> </createTable> + <addPrimaryKey tableName="ASYS_COLLECTOR_TAGS" columnNames="COLLECTORDATAID, TAGNAME, TAGVALUE" constraintName="PK_ASYS_COLLECTOR_TAGS"/> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml index 6ecf84fd630..369537c606f 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml @@ -2,22 +2,22 @@ <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <changeSet author="j.hoermann" id="a510b5e9-e599-4503-8bcd-4ef2465f56c6"> <createTable tableName="ASYS_DASHLETCONFIGURATIONS"> - <column name="ID" type="CHAR(36)"> + <column name="ID" type="CHAR(63)"> <constraints primaryKey="true" primaryKeyName="PK_ASYS_ASYS_DASHLETCONFIGURATIONS_ID"/> </column> - <column name="CATEGORIES" type="CLOB"/> + <column name="NAME" type="VARCHAR(63)"/> + <column name="TITLE" type="VARCHAR(63)"/> + <column name="VIEW_NAME" type="VARCHAR(512)"/> <column name="DESCRIPTION" type="VARCHAR(512)"/> - <column name="FRAGMENT" type="VARCHAR(1023)"/> - <column name="FRAGMENT_CUSTOMIZABLE" type="INTEGER"/> <column name="ICON" type="VARCHAR(63)"/> - <column name="NAME" type="VARCHAR(63)"/> - <column name="PARAMETERS" type="CLOB"/> + <column name="FRAGMENT" type="VARCHAR(1023)"/> <column name="PREVIEW" type="CLOB"/> - <column name="REQUIRES_CONFIGURATION" type="INTEGER"/> <column name="SINGLETON" type="INTEGER"/> + <column name="FRAGMENT_CUSTOMIZABLE" type="INTEGER"/> + <column name="REQUIRES_CONFIGURATION" type="INTEGER"/> + <column name="CATEGORIES" type="CLOB"/> + <column name="PARAMETERS" type="CLOB"/> <column name="STORE_ROLES" type="VARCHAR(1023)"/> - <column name="TITLE" type="VARCHAR(63)"/> - <column name="VIEW_NAME" type="VARCHAR(63)"/> </createTable> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml index f5ea6eb9088..5b3d2d5a60b 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml @@ -2,18 +2,18 @@ <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <changeSet author="j.hoermann" id="dbdfa16c-8e62-4fc6-8d79-2a14a0d863c5"> <createTable tableName="ASYS_DASHLETS"> - <column name="ID" type="CHAR(36)"> + <column name="ID" type="CHAR(63)"> <constraints primaryKey="true" primaryKeyName="PK_ASYS_DASHLETS_ID"/> </column> - <column name="COLSPAN" type="INTEGER"/> - <column name="CONFIGURATION_ID" type="VARCHAR(63)"/> <column name="DASHBOARD_ID" type="VARCHAR(63)"/> + <column name="CONFIGURATION_ID" type="VARCHAR(63)"/> + <column name="TITLE" type="VARCHAR(63)"/> <column name="FRAGMENT" type="VARCHAR(1023)"/> <column name="PARAMETERS" type="CLOB"/> - <column name="ROWSPAN" type="INTEGER"/> - <column name="TITLE" type="VARCHAR(63)"/> <column name="X" type="INTEGER"/> <column name="Y" type="INTEGER"/> + <column name="COLSPAN" type="INTEGER"/> + <column name="ROWSPAN" type="INTEGER"/> </createTable> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml index 448a4c3063e..e77db9a1c3d 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml @@ -7,11 +7,11 @@ </column> <column name="BACKPACK" type="CLOB"/> <column name="CAPTION" type="VARCHAR(512)"/> - <column name="CREATEDATE" type="TIMESTAMP"/> - <column name="DELETEDATE" type="TIMESTAMP"/> + <column name="CREATEDATE" type="DATETIME"/> <column name="DESCRIPTION" type="VARCHAR(1023)"/> <column name="FORCEDPRIORITY" type="VARCHAR(15)"/> <column name="ICON_INFO" type="VARCHAR(1023)"/> + <column name="DELETEDATE" type="DATETIME"/> <column name="LINK_INFO" type="VARCHAR(1023)"/> <column name="ORIGINATORNAME" type="VARCHAR(63)"/> <column name="RECIPIENTUSERIDS" type="CLOB"/> @@ -19,9 +19,5 @@ <column name="VERSION" type="INTEGER"/> <column name="SUBCATEGORY" type="VARCHAR(256)"/> </createTable> - - <createIndex indexName="idx_asysnoticontents_contid" tableName="ASYS_NOTIFICATIONCONTENTS"> - <column name="CONTENTID"/> - </createIndex> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml index f3ff1e9ae1c..5ecd347c487 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml @@ -6,7 +6,7 @@ <constraints primaryKey="true" primaryKeyName="PK_ASYS_NOTIFICATIONS_ID"/> </column> <column name="CONTENTID" type="CHAR(36)"/> - <column name="STATE" type="VARCHAR(15)"/> + <column name="STATE" type="VARCHAR(16)"/> <column name="USERID" type="VARCHAR(63)"/> <column name="RESOLVEDPRIORITY" type="VARCHAR(15)"/> </createTable> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_recordgroup.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_recordgroup.xml index c8fae3a479e..35ddb98cb9b 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_recordgroup.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_recordgroup.xml @@ -9,9 +9,6 @@ <column name="TITLE" type="VARCHAR(256)"/> <column name="GROUP_TYPE" type="VARCHAR(64)"/> </createTable> - <createIndex indexName="idx_asysrecordgroup_id" tableName="ASYS_RECORDGROUP"> - <column name="ID"/> - </createIndex> <createIndex indexName="idx_asysrecordgroup_userid" tableName="ASYS_RECORDGROUP"> <column name="USER_ID"/> </createIndex> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles.xml index 4ea33eeb65b..9f54423b467 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles.xml @@ -5,10 +5,10 @@ <column name="ROLENAME" type="VARCHAR(63)"> <constraints primaryKey="true" primaryKeyName="PK_ASYS_ROLES_ID"/> </column> - <column name="ROLETITLE" type="VARCHAR(63)"/> + <column name="ROLETITLE" type="NVARCHAR(63)"/> <column name="ROLEDESCRIPTION" type="VARCHAR(255)"/> - <column name="ASSIGNABLE" type="INTEGER"/> - <column name="CHILDREN" type="CLOB"/> + <column name="ASSIGNABLE" type="TINYINT"/> + <column name="CHILDREN" type="NCLOB"/> </createTable> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles_children.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles_children.xml index 9dd2c8b7d6d..83fff19bd00 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles_children.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles_children.xml @@ -6,7 +6,7 @@ <constraints primaryKey="true" primaryKeyName="PK_ASYS_ROLES_CHILDREN_ID"/> </column> <column name="PARENT_ROLE" type="VARCHAR(63)"/> - <column name="CHILD_ROLE" type="VARCHAR(63)"/> + <column name="CHILD_ROLE" type="NVARCHAR(63)"/> </createTable> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml index 4e001416ea8..ec0459b46b9 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml @@ -13,5 +13,8 @@ <constraints nullable="false"/> </column> </createTable> + <createIndex tableName="ASYS_SEQUENCES" indexName="IDX_ASYS_SEQUENCES_ID_GUID"> + <column name="ID_GUID"/> + </createIndex> </changeSet> </databaseChangeLog> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml index fea891c550d..fb86982a286 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml @@ -13,6 +13,6 @@ </createTable> <addPrimaryKey tableName="ASYS_TIMERS_SERVERRUNS" columnNames="SERVERID, TIMERID" - constraintName="PK_ASYS_TIMERS_SERVERRUNS_SERVERID_TIMERID"/> + constraintName="PK_ASYS_TIMERS_SERVERRUNS"/> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml index c8d26b66bf9..c2064247aa6 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml @@ -1,37 +1,38 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> -<changeSet author="j.hoermann" id="77e5fc97-1e89-45e2-a00f-29742d28ab7e"> - <createTable tableName="ASYS_USERS"> - <column name="ID" type="CHAR(36)"> - <constraints primaryKey="true" primaryKeyName="PK_ASYS_USERS_ID"/> - </column> - <column name="DATE_NEW" type="DATETIME"/> - <column name="DATE_EDIT" type="DATETIME"/> - <column name="NAME" type="NVARCHAR(63)"> - <constraints nullable="false"/> - </column> - <column name="GROUPID" type="NVARCHAR(63)"> - <constraints nullable="false"/> - </column> - <column name="PROPKEY" type="VARCHAR(1024)"> - <constraints nullable="false"/> - </column> - <column name="PROPVAL" type="VARCHAR(1024)"/> - <column name="PROPVAL_CLOB" type="CLOB"/> - </createTable> - <createIndex indexName="IDX_ASYS_USERS_NAME" tableName="ASYS_USERS"> - <column name="NAME"/> - </createIndex> - <createIndex indexName="idx_asysusers_groupid" tableName="ASYS_USERS"> - <column name="GROUPID"/> - </createIndex> - <!--normally a index should be created for propkey and propval but this causes due to it's length problems on some dbms--> - <!--<createIndex indexName="idx_asysusers_propkey" tableName="ASYS_USERS"> - <column name="PROPKEY"/> - </createIndex> - <createIndex indexName="idx_asysusers_propval" tableName="ASYS_USERS"> - <column name="PROPVAL"/> - </createIndex>--> - -</changeSet> + <changeSet author="j.hoermann" id="77e5fc97-1e89-45e2-a00f-29742d28ab7e"> + <createTable tableName="ASYS_USERS"> + <column name="ID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_ASYS_USERS_ID"/> + </column> + <column name="DATE_NEW" type="DATETIME"/> + <column name="DATE_EDIT" type="DATETIME"/> + <column name="NAME" type="NVARCHAR(63)"> + <constraints nullable="false"/> + </column> + <column name="GROUPID" type="NVARCHAR(63)"> + <constraints nullable="false"/> + </column> + <column name="PROPKEY" type="VARCHAR(1024)"> + <constraints nullable="false"/> + </column> + <column name="PROPVAL" type="VARCHAR(1024)"/> + <column name="PROPVAL_CLOB" type="CLOB"/> + </createTable> + <createIndex indexName="IDX_ASYS_USERS_NAME" tableName="ASYS_USERS"> + <column name="NAME"/> + </createIndex> + <createIndex indexName="idx_asysusers_groupid" tableName="ASYS_USERS"> + <column name="GROUPID"/> + </createIndex> + </changeSet> + <changeSet id="4d1dc8cd-2bca-4501-9458-9178287a4f38" author="s.listl" dbms="!mssql,!mysql,!mariadb"> + <!--index can't be created on all dbms because of size restrictions--> + <createIndex indexName="idx_asysusers_propkey" tableName="ASYS_USERS"> + <column name="PROPKEY"/> + </createIndex> + <createIndex indexName="idx_asysusers_propval" tableName="ASYS_USERS"> + <column name="PROPVAL"/> + </createIndex> + </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod index 9eaa60af5ab..6407da1b96a 100644 --- a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod +++ b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod @@ -101,7 +101,7 @@ <scale v="0" /> <notNull v="true" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -174,7 +174,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -477,7 +477,7 @@ <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -490,7 +490,7 @@ <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -503,7 +503,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -516,7 +516,7 @@ <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -529,7 +529,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -568,7 +568,7 @@ <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -581,7 +581,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -620,7 +620,7 @@ <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -633,7 +633,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -700,12 +700,12 @@ <entityFieldDb> <name>DBID</name> <dbName></dbName> - <primaryKey v="true" /> + <primaryKey v="false" /> <columnType v="12" /> - <size v="191" /> + <size v="1023" /> <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> + <notNull v="false" /> + <isUnique v="false" /> <index v="true" /> <title></title> <description></description> @@ -745,7 +745,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -778,13 +778,13 @@ <entityFieldDb> <name>ID</name> <dbName></dbName> - <primaryKey v="false" /> + <primaryKey v="true" /> <columnType v="1" /> <size v="36" /> <scale v="0" /> <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> + <isUnique v="true" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -883,7 +883,7 @@ <scale v="0" /> <notNull v="true" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -896,7 +896,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -930,7 +930,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -964,8 +964,8 @@ <name>DESCRIPTION</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> + <columnType v="12" /> + <size v="255" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -1020,8 +1020,8 @@ <size v="63" /> <scale v="0" /> <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> + <isUnique v="true" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -1034,7 +1034,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -1142,7 +1142,7 @@ <dbName></dbName> <primaryKey v="false" /> <columnType v="12" /> - <size v="15" /> + <size v="16" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -1242,7 +1242,7 @@ <dbName></dbName> <primaryKey v="true" /> <columnType v="1" /> - <size v="36" /> + <size v="63" /> <scale v="0" /> <notNull v="true" /> <isUnique v="true" /> @@ -1393,7 +1393,7 @@ <dbName></dbName> <primaryKey v="true" /> <columnType v="1" /> - <size v="36" /> + <size v="63" /> <scale v="0" /> <notNull v="true" /> <isUnique v="true" /> @@ -1497,7 +1497,7 @@ <dbName></dbName> <primaryKey v="false" /> <columnType v="12" /> - <size v="63" /> + <size v="512" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -1714,7 +1714,7 @@ <columnType v="12" /> <size v="256" /> <scale v="0" /> - <notNull v="true" /> + <notNull v="false" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -2063,8 +2063,8 @@ <name>ASSIGNABLE</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> + <columnType v="5" /> + <size v="5" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -2318,7 +2318,7 @@ <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <documentation></documentation> <title></title> <description></description> @@ -2629,8 +2629,8 @@ <size v="63" /> <scale v="0" /> <notNull v="true" /> - <isUnique v="true" /> - <index v="true" /> + <isUnique v="false" /> + <index v="false" /> <documentation></documentation> <title></title> <description></description> @@ -2638,11 +2638,11 @@ <entityFieldDb> <name>TAGNAME</name> <dbName></dbName> - <primaryKey v="false" /> + <primaryKey v="true" /> <columnType v="12" /> <size v="63" /> <scale v="0" /> - <notNull v="false" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -2652,11 +2652,11 @@ <entityFieldDb> <name>TAGVALUE</name> <dbName></dbName> - <primaryKey v="false" /> + <primaryKey v="true" /> <columnType v="12" /> <size v="63" /> <scale v="0" /> - <notNull v="false" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> -- GitLab From 0ace142c793e8cd34a14c8b9b656c458de3c29ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20V=C3=B6gl?= <a.voegl@adito.de> Date: Tue, 1 Dec 2020 15:06:57 +0000 Subject: [PATCH 145/184] =?UTF-8?q?refactor=20displayValueProcess=20[Proje?= =?UTF-8?q?kt:=20Entwicklung=20-=20xRM][TicketNr.:=201069724][Anrede=20kan?= =?UTF-8?q?n=20in=20der=20gro=C3=9Fen=20Edit=20View=20nicht=20bearbeitet?= =?UTF-8?q?=20werden]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entity/Person_entity/Person_entity.aod | 1 + .../entityfields/salutation/displayValueProcess.js | 5 +++++ .../entityfields/title/displayValueProcess.js | 8 ++------ 3 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 entity/Person_entity/entityfields/salutation/displayValueProcess.js diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index 92985df6633..ccb951171b0 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -62,6 +62,7 @@ <title>Salutation</title> <consumer>Salutations</consumer> <mandatory v="true" /> + <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/salutation/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>TITLE</name> diff --git a/entity/Person_entity/entityfields/salutation/displayValueProcess.js b/entity/Person_entity/entityfields/salutation/displayValueProcess.js new file mode 100644 index 00000000000..275e5fb9a51 --- /dev/null +++ b/entity/Person_entity/entityfields/salutation/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); + +if(vars.get("$field.SALUTATION")) + result.string(vars.get("$field.SALUTATION")); \ No newline at end of file diff --git a/entity/Person_entity/entityfields/title/displayValueProcess.js b/entity/Person_entity/entityfields/title/displayValueProcess.js index 3682b56b29c..9023d1aa7e5 100644 --- a/entity/Person_entity/entityfields/title/displayValueProcess.js +++ b/entity/Person_entity/entityfields/title/displayValueProcess.js @@ -1,9 +1,5 @@ import("system.result"); -import("system.neon"); import("system.vars"); -if((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)) -{ - if (!vars.get("$field.TITLE")) - result.string("") -} \ No newline at end of file +if (vars.get("$field.TITLE")) + result.string(vars.get("$field.TITLE")); -- GitLab From 8081b6efca4754f6139712d05247c122af94e204 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 1 Dec 2020 16:37:34 +0100 Subject: [PATCH 146/184] Provider documentation added --- entity/Attribute_entity/Attribute_entity.aod | 154 +++++++++--------- .../attributegroups/documentation.adoc | 3 + .../specificattribute/documentation.adoc | 4 + .../AuditLogHistory_entity.aod | 1 + .../AuditLogHistory_entity/documentation.adoc | 3 + .../WorkflowDefinition_entity.aod | 51 +++--- .../workflowversions/documentation.adoc | 4 + .../WorkflowInstanceHistory_entity.aod | 11 +- .../documentation.adoc | 3 + .../WorkflowInstance_entity.aod | 51 +++--- .../instancesofworkflow/documentation.adoc | 3 + .../WorkflowLauncher_entity.aod | 11 +- .../documentation.adoc | 3 + .../WorkflowSignal_entity.aod | 21 +-- .../documentation.adoc | 3 + 15 files changed, 180 insertions(+), 146 deletions(-) create mode 100644 entity/Attribute_entity/entityfields/attributegroups/documentation.adoc create mode 100644 entity/Attribute_entity/entityfields/specificattribute/documentation.adoc create mode 100644 entity/AuditLogHistory_entity/documentation.adoc create mode 100644 entity/WorkflowDefinition_entity/entityfields/workflowversions/documentation.adoc create mode 100644 entity/WorkflowInstanceHistory_entity/entityfields/historyforworkflowinstance/documentation.adoc create mode 100644 entity/WorkflowInstance_entity/entityfields/instancesofworkflow/documentation.adoc create mode 100644 entity/WorkflowLauncher_entity/documentation.adoc create mode 100644 entity/WorkflowSignal_entity/entityfields/processdefinitionsignals/documentation.adoc diff --git a/entity/Attribute_entity/Attribute_entity.aod b/entity/Attribute_entity/Attribute_entity.aod index f85aaaa9515..76187e39273 100644 --- a/entity/Attribute_entity/Attribute_entity.aod +++ b/entity/Attribute_entity/Attribute_entity.aod @@ -61,11 +61,6 @@ <name>AttributeUsages</name> <refreshParent v="true" /> <stateProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributeusages/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>AttributeUsage_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> <children> <entityParameter> <name>AttributeId_param</name> @@ -81,6 +76,11 @@ <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributeusages/children/disablemincount_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeUsage_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> </entityConsumer> <entityField> <name>ATTRIBUTE_ACTIVE</name> @@ -92,11 +92,6 @@ </entityField> <entityConsumer> <name>KeywordAttributeTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -108,6 +103,11 @@ <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/keywordattributetypes/children/whitelistids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>DROPDOWNDEFINITION</name> @@ -131,6 +131,34 @@ <entityProvider> <name>SpecificAttribute</name> <lookupIdfield>UID</lookupIdfield> + <documentation>%aditoprj%/entity/Attribute_entity/entityfields/specificattribute/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>FilteredAttributeIds_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>DisplaySimpleName_param</name> + <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/specificattribute/children/displaysimplename_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ChildId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ChildType_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ParentId_param</name> + <description>parent id, this is used for filtering by the parent in the content process</description> + </entityParameter> + </children> <dependencies> <entityDependency> <name>ba3b4d47-7385-49df-bf61-54c99f5b2c81</name> @@ -163,33 +191,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ObjectType_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>FilteredAttributeIds_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>DisplaySimpleName_param</name> - <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/specificattribute/children/displaysimplename_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ChildId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ChildType_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ParentId_param</name> - <description>parent id, this is used for filtering by the parent in the content process</description> - </entityParameter> - </children> </entityProvider> <entityField> <name>FULL_ATTRIBUTE_NAME</name> @@ -214,6 +215,7 @@ </entityField> <entityProvider> <name>AttributeGroups</name> + <documentation>%aditoprj%/entity/Attribute_entity/entityfields/attributegroups/documentation.adoc</documentation> <children> <entityParameter> <name>ThemeObjectRowId_param</name> @@ -240,11 +242,6 @@ <entityConsumer> <name>AttributeGroup</name> <description>Used for the selection of the parent attribute</description> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>AttributeGroups</fieldName> - </dependency> <children> <entityParameter> <name>ChildId_param</name> @@ -259,6 +256,11 @@ <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributegroup/children/displaysimplename_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>AttributeGroups</fieldName> + </dependency> </entityConsumer> <entityField> <name>ICON</name> @@ -309,11 +311,6 @@ </entityField> <entityConsumer> <name>Contexts</name> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> - </dependency> <children> <entityParameter> <name>Blacklist_param</name> @@ -324,6 +321,11 @@ <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> + </dependency> </entityConsumer> <entityActionGroup> <name>AttributeActions</name> @@ -355,14 +357,6 @@ </entityActionField> <entityProvider> <name>ThemeProvider</name> - <dependencies> - <entityDependency> - <name>6e314038-62de-4f0c-b89a-92f029c10933</name> - <entityName>Activity_entity</entityName> - <fieldName>ActivityAtrributes</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>AttributeCount_param</name> @@ -381,6 +375,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>6e314038-62de-4f0c-b89a-92f029c10933</name> + <entityName>Activity_entity</entityName> + <fieldName>ActivityAtrributes</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>ParentId_param</name> @@ -397,14 +399,6 @@ <sortingField>SORTING</sortingField> <documentation>%aditoprj%/entity/Attribute_entity/entityfields/attributechildren/documentation.adoc</documentation> <titlePlural>Child Attributes</titlePlural> - <dependencies> - <entityDependency> - <name>80023321-1954-483f-a4be-b7207557c068</name> - <entityName>Attribute_entity</entityName> - <fieldName>ChildAttributes</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ChildId_param</name> @@ -444,16 +438,19 @@ <mandatory v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>80023321-1954-483f-a4be-b7207557c068</name> + <entityName>Attribute_entity</entityName> + <fieldName>ChildAttributes</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>ChildAttributes</name> <refreshParent v="true" /> <stateProcess>%aditoprj%/entity/Attribute_entity/entityfields/childattributes/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>AttributeChildren</fieldName> - </dependency> <children> <entityParameter> <name>DisplaySimpleName_param</name> @@ -468,6 +465,11 @@ <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/childattributes/children/parenttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>AttributeChildren</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>GetOnlyFirstLevelChildren_param</name> @@ -483,14 +485,6 @@ </entityProvider> <entityProvider> <name>SpecificFilterAttributes</name> - <dependencies> - <entityDependency> - <name>9b2b5f2e-229d-4a10-a54f-cbf77aafe512</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>SpecificFilterAttributes</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>DisplaySimpleName_param</name> @@ -501,6 +495,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>9b2b5f2e-229d-4a10-a54f-cbf77aafe512</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>SpecificFilterAttributes</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> </entityFields> <recordContainers> diff --git a/entity/Attribute_entity/entityfields/attributegroups/documentation.adoc b/entity/Attribute_entity/entityfields/attributegroups/documentation.adoc new file mode 100644 index 00000000000..6af9c11f0f7 --- /dev/null +++ b/entity/Attribute_entity/entityfields/attributegroups/documentation.adoc @@ -0,0 +1,3 @@ += AttributeGroups + +This provider provides only attribute groups, it is used for the selection of an attribute parent. \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/specificattribute/documentation.adoc b/entity/Attribute_entity/entityfields/specificattribute/documentation.adoc new file mode 100644 index 00000000000..5084132f04b --- /dev/null +++ b/entity/Attribute_entity/entityfields/specificattribute/documentation.adoc @@ -0,0 +1,4 @@ += SpecificAttribute + +This provider is used for selecting an attribute, for example to create an attribute relation in AttributeRelation_entity. +The attributes are usually filtered by the ObjectType_param parameter to show only attributes that can be used in a specific context. \ No newline at end of file diff --git a/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod b/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod index 26336d2da24..2ed69d3a313 100644 --- a/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod +++ b/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>AuditLogHistory_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/AuditLogHistory_entity/documentation.adoc</documentation> <icon>VAADIN:LINES_LIST</icon> <title>Audit Log</title> <grantCreate v="false" /> diff --git a/entity/AuditLogHistory_entity/documentation.adoc b/entity/AuditLogHistory_entity/documentation.adoc new file mode 100644 index 00000000000..2c0a2a12eb8 --- /dev/null +++ b/entity/AuditLogHistory_entity/documentation.adoc @@ -0,0 +1,3 @@ += AuditLogHistory_entity + +This is an entity for loading all log history entries from all contexts. \ No newline at end of file diff --git a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod index ab10357478f..b523e8b8d09 100644 --- a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod +++ b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod @@ -77,17 +77,17 @@ <entityConsumer> <name>Instances</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>WorkflowInstance_entity</entityName> - <fieldName>InstancesOfWorkflow</fieldName> - </dependency> <children> <entityParameter> <name>WorkflowDefinitionKey_param</name> <valueProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/instances/children/workflowdefinitionkey_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowInstance_entity</entityName> + <fieldName>InstancesOfWorkflow</fieldName> + </dependency> </entityConsumer> <entityField> <name>KEY</name> @@ -135,11 +135,6 @@ </entityParameter> <entityConsumer> <name>OtherVersions</name> - <dependency> - <name>dependency</name> - <entityName>WorkflowDefinition_entity</entityName> - <fieldName>WorkflowVersions</fieldName> - </dependency> <children> <entityParameter> <name>ProcessDefinitionKey_param</name> @@ -150,9 +145,15 @@ <valueProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/otherversions/children/currentversion_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowDefinition_entity</entityName> + <fieldName>WorkflowVersions</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>WorkflowVersions</name> + <documentation>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/workflowversions/documentation.adoc</documentation> <titlePlural>Other versions</titlePlural> <children> <entityParameter> @@ -171,17 +172,17 @@ </entityField> <entityConsumer> <name>StartConfigs</name> - <dependency> - <name>dependency</name> - <entityName>WorkflowStartConfig_entity</entityName> - <fieldName>StartConfig</fieldName> - </dependency> <children> <entityParameter> <name>ProcessDefinitionKey_param</name> <valueProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/startconfigs/children/processdefinitionkey_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowStartConfig_entity</entityName> + <fieldName>StartConfig</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>Context_param</name> @@ -195,11 +196,6 @@ </entityActionField> <entityConsumer> <name>Signals</name> - <dependency> - <name>dependency</name> - <entityName>WorkflowSignal_entity</entityName> - <fieldName>ProcessDefinitionSignals</fieldName> - </dependency> <children> <entityParameter> <name>ProcessDefinitionId_param</name> @@ -210,6 +206,11 @@ <valueProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/signals/children/processdefinitionkey_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowSignal_entity</entityName> + <fieldName>ProcessDefinitionSignals</fieldName> + </dependency> </entityConsumer> <entityField> <name>VERSION_TITLE</name> @@ -231,17 +232,17 @@ </entityField> <entityConsumer> <name>CategoryKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/categorykeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/WorkflowDefinition_entity/entityfields/workflowversions/documentation.adoc b/entity/WorkflowDefinition_entity/entityfields/workflowversions/documentation.adoc new file mode 100644 index 00000000000..3ea3eb5f375 --- /dev/null +++ b/entity/WorkflowDefinition_entity/entityfields/workflowversions/documentation.adoc @@ -0,0 +1,4 @@ += WorkflowVersions + +Loads all other versions of a workflow definition to show the version history. For that, the process key (ProcessDefinitionKey_param) is required and +the CurrentVersion_param can be used for excluding the currently opened version from the list. \ No newline at end of file diff --git a/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod b/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod index 8c35ddbe8c3..4b33d427532 100644 --- a/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod +++ b/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod @@ -51,6 +51,7 @@ <name>HistoryForWorkflowInstance</name> <targetContextField>TARGET_CONTEXT</targetContextField> <targetIdField>TASK_ID</targetIdField> + <documentation>%aditoprj%/entity/WorkflowInstanceHistory_entity/entityfields/historyforworkflowinstance/documentation.adoc</documentation> <titlePlural>History</titlePlural> <dependencies> <entityDependency> @@ -77,17 +78,17 @@ </entityField> <entityConsumer> <name>ActivityTypeKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/WorkflowInstanceHistory_entity/entityfields/activitytypekeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/WorkflowInstanceHistory_entity/entityfields/historyforworkflowinstance/documentation.adoc b/entity/WorkflowInstanceHistory_entity/entityfields/historyforworkflowinstance/documentation.adoc new file mode 100644 index 00000000000..8e0c3662b76 --- /dev/null +++ b/entity/WorkflowInstanceHistory_entity/entityfields/historyforworkflowinstance/documentation.adoc @@ -0,0 +1,3 @@ += HistoryForWorkflowInstance + +Provides a history of the given workflow instance. This includes all the finished activities and tasks of that workflow. \ No newline at end of file diff --git a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod index 566506952d1..baf0056902e 100644 --- a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod +++ b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod @@ -18,6 +18,7 @@ </entityField> <entityProvider> <name>InstancesOfWorkflow</name> + <documentation>%aditoprj%/entity/WorkflowInstance_entity/entityfields/instancesofworkflow/documentation.adoc</documentation> <dependencies> <entityDependency> <name>96f047cf-7f3b-417e-ac08-9dc231c5d0ac</name> @@ -79,31 +80,31 @@ </entityField> <entityConsumer> <name>Tasks</name> - <dependency> - <name>dependency</name> - <entityName>WorkflowTask_entity</entityName> - <fieldName>InstanceTasks</fieldName> - </dependency> <children> <entityParameter> <name>WorkflowInstanceId_param</name> <valueProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/tasks/children/workflowinstanceid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>WorkflowDefinitions</name> <dependency> <name>dependency</name> - <entityName>WorkflowDefinition_entity</entityName> - <fieldName>#PROVIDER</fieldName> + <entityName>WorkflowTask_entity</entityName> + <fieldName>InstanceTasks</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>WorkflowDefinitions</name> <children> <entityParameter> <name>Context_param</name> <valueProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/workflowdefinitions/children/context_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowDefinition_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ProcessVariables_param</name> @@ -131,11 +132,6 @@ </entityActionField> <entityConsumer> <name>FinishedTasks</name> - <dependency> - <name>dependency</name> - <entityName>WorkflowTask_entity</entityName> - <fieldName>FinishedInstanceTasks</fieldName> - </dependency> <children> <entityParameter> <name>WorkflowInstanceId_param</name> @@ -146,6 +142,11 @@ <valueProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/finishedtasks/children/includeservicetasks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowTask_entity</entityName> + <fieldName>FinishedInstanceTasks</fieldName> + </dependency> </entityConsumer> <entityField> <name>ICON</name> @@ -153,17 +154,17 @@ </entityField> <entityConsumer> <name>History</name> - <dependency> - <name>dependency</name> - <entityName>WorkflowInstanceHistory_entity</entityName> - <fieldName>HistoryForWorkflowInstance</fieldName> - </dependency> <children> <entityParameter> <name>ProcessInstanceId_param</name> <valueProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/history/children/processinstanceid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowInstanceHistory_entity</entityName> + <fieldName>HistoryForWorkflowInstance</fieldName> + </dependency> </entityConsumer> <entityField> <name>ISFINISHED</name> @@ -174,17 +175,17 @@ <entityConsumer> <name>Variables</name> <stateProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/variables/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>WorkflowVariableValue_entity</entityName> - <fieldName>VariablesOfInstance</fieldName> - </dependency> <children> <entityParameter> <name>WorkflowInstanceId_param</name> <valueProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/variables/children/workflowinstanceid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowVariableValue_entity</entityName> + <fieldName>VariablesOfInstance</fieldName> + </dependency> </entityConsumer> <entityField> <name>DIAGRAM</name> diff --git a/entity/WorkflowInstance_entity/entityfields/instancesofworkflow/documentation.adoc b/entity/WorkflowInstance_entity/entityfields/instancesofworkflow/documentation.adoc new file mode 100644 index 00000000000..41f9fecfaec --- /dev/null +++ b/entity/WorkflowInstance_entity/entityfields/instancesofworkflow/documentation.adoc @@ -0,0 +1,3 @@ += InstancesOfWorkflow + +Provider for all workflow instances started from a specific workflow definition \ No newline at end of file diff --git a/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod index e5749fe5101..cb1c24289be 100644 --- a/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod +++ b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>WorkflowLauncher_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/WorkflowLauncher_entity/documentation.adoc</documentation> <recordContainer>dataLess</recordContainer> <entityFields> <entityProvider> @@ -61,17 +62,17 @@ </entityProvider> <entityConsumer> <name>WorkflowDefinitions</name> - <dependency> - <name>dependency</name> - <entityName>WorkflowDefinition_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>Context_param</name> <valueProcess>%aditoprj%/entity/WorkflowLauncher_entity/entityfields/workflowdefinitions/children/context_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowDefinition_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>Validationerrors_param</name> diff --git a/entity/WorkflowLauncher_entity/documentation.adoc b/entity/WorkflowLauncher_entity/documentation.adoc new file mode 100644 index 00000000000..2b9731f8a4e --- /dev/null +++ b/entity/WorkflowLauncher_entity/documentation.adoc @@ -0,0 +1,3 @@ += WorkflowLauncher_entity + +An entity with dataless recordcontainer to create a dialog that starts workflow instances. \ No newline at end of file diff --git a/entity/WorkflowSignal_entity/WorkflowSignal_entity.aod b/entity/WorkflowSignal_entity/WorkflowSignal_entity.aod index 0482a952cde..1e857118e9c 100644 --- a/entity/WorkflowSignal_entity/WorkflowSignal_entity.aod +++ b/entity/WorkflowSignal_entity/WorkflowSignal_entity.aod @@ -47,11 +47,6 @@ </entityField> <entityConsumer> <name>Contexts</name> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> - </dependency> <children> <entityParameter> <name>Blacklist_param</name> @@ -62,23 +57,29 @@ <valueProcess>%aditoprj%/entity/WorkflowSignal_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>TriggerKeyword</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>TriggerKeyword</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/WorkflowSignal_entity/entityfields/triggerkeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>ProcessDefinitionSignals</name> + <documentation>%aditoprj%/entity/WorkflowSignal_entity/entityfields/processdefinitionsignals/documentation.adoc</documentation> <dependencies> <entityDependency> <name>f08ff63c-296a-4b1f-8264-b6b1e6c1d748</name> diff --git a/entity/WorkflowSignal_entity/entityfields/processdefinitionsignals/documentation.adoc b/entity/WorkflowSignal_entity/entityfields/processdefinitionsignals/documentation.adoc new file mode 100644 index 00000000000..7d279f26c91 --- /dev/null +++ b/entity/WorkflowSignal_entity/entityfields/processdefinitionsignals/documentation.adoc @@ -0,0 +1,3 @@ += ProcessDefinitionSignals + +Provides all signals defined in the given workflow definition. \ No newline at end of file -- GitLab From d558e900dba773beae1e60a69f6a927379df5721 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Tue, 1 Dec 2020 16:27:01 +0100 Subject: [PATCH 147/184] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20xRM][Tick?= =?UTF-8?q?etNr.:=201069274][Dubletten=20-=20Fehlermeldung=20bei=20Dublett?= =?UTF-8?q?enaktion=20"Integriere=20ausgew=C3=A4hlten=20in=20aktuellen"]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../integrateselectedintocurrentaction/onActionProcess.js | 5 ++++- .../integrateselectedintocurrentaction/onActionProcess.js | 7 ++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js b/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js index 1f3a9e3ddfc..6bb5f4cde71 100644 --- a/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js +++ b/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js @@ -16,5 +16,8 @@ if(mergeSuccess) if(currentContactId == null) currentContactId = ""; DuplicateScannerUtils.createMergeSuccessActivity(sourceContactId, targetContactId, currentContactId, "Organisation"); - neon.refreshAll(); + //neon.refresh() with no fields will refresh the current image (and all sub images) but NOT the preview. neon.refreshAll() would refresh both, + //why it would lead to an error because it's trying to load the already opened preview of the duplicateContact which just got deleted + //and does not exist any more which results in an exception + neon.refresh(); } \ No newline at end of file diff --git a/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js b/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js index 2930a65370d..6a9f2ac39a7 100644 --- a/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js +++ b/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js @@ -26,7 +26,8 @@ if(mergeSuccess) if(currentContactId == null) currentContactId = ""; DuplicateScannerUtils.createMergeSuccessActivity(sourceContactId, targetContactId, currentContactId, "Person"); -// openContext due to the fact, that openContext will lead to an error 'due'cause it's trying to load the already opened preview -// of the duplicateContact which just got deleted = nullpointException - neon.openContext("Person", null, [targetContactId], neon.OPERATINGSTATE_VIEW, null, null); + //neon.refresh() with no fields will refresh the current image (and all sub images) but NOT the preview. neon.refreshAll() would refresh both, + //why it would lead to an error because it's trying to load the already opened preview of the duplicateContact which just got deleted + //and does not exist any more which results in an exception + neon.refresh(); } \ No newline at end of file -- GitLab From 8d159233bbb4ca50eeaca021a23c2df25d30bbbf Mon Sep 17 00:00:00 2001 From: "a.schindlbeck" <a.schindlbeck@adito.de> Date: Tue, 1 Dec 2020 16:50:38 +0100 Subject: [PATCH 148/184] Revert "#1067434 Notifications: adding subcategory on various .addNotification(...) calls" This reverts commit 0074002f15314b7ec36a99895f44a7c4771911a6. --- process/buildSerialLetter_serverProcess/process.js | 2 +- process/importLead_serverProcess/process.js | 2 +- process/sendBulkMail_serverProcess/process.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/process/buildSerialLetter_serverProcess/process.js b/process/buildSerialLetter_serverProcess/process.js index b3210e860db..1d5cff1f394 100644 --- a/process/buildSerialLetter_serverProcess/process.js +++ b/process/buildSerialLetter_serverProcess/process.js @@ -21,4 +21,4 @@ SingleBinaryUtils.set("SERIALLETTER", "SERIALLETTERFILE", letterId, document.con var message = translate.text("Download ready"); var description = translate.withArguments("Serial letter \"%0\" can now be downloaded", [document.title]); -notification.addNotification(util.getNewUUID(), text.encodeMS(["SerialLetter", letterId]), null, null, "DownloadReady", null, notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); \ No newline at end of file +notification.addNotification(util.getNewUUID(), text.encodeMS(["SerialLetter", letterId]), null, null, "DownloadReady", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); \ No newline at end of file diff --git a/process/importLead_serverProcess/process.js b/process/importLead_serverProcess/process.js index 35ac42b2b31..a24b084a933 100644 --- a/process/importLead_serverProcess/process.js +++ b/process/importLead_serverProcess/process.js @@ -192,7 +192,7 @@ if(exeptions != "")//insert error document if (userId)// if there is an user - show a notification to this user when the import is complete { var description = translate.withArguments("%0 leads imported, %1 errors", [rows, errorCount]); - notification.addNotification(util.getNewUUID(), null, null, null, "LeadImport_Notification", null, notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [userId], importName, description); + notification.addNotification(util.getNewUUID(), null, null, null, "LeadImport_Notification", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [userId], importName, description); } diff --git a/process/sendBulkMail_serverProcess/process.js b/process/sendBulkMail_serverProcess/process.js index 7ed237beffb..711120feb20 100644 --- a/process/sendBulkMail_serverProcess/process.js +++ b/process/sendBulkMail_serverProcess/process.js @@ -23,5 +23,5 @@ if (user && !testRecipients) var message = translate.withArguments("Bulk mail \"%0\" was sent!", [mailName]); var description = translate.withArguments("%0 mails sent sucessfully, %1 mails failed. Process took %2 s.", [res.sucessful, res.failed, Math.round((datetime.date() - startTime) / datetime.ONE_SECOND)]); - notification.addNotification(util.getNewUUID(), null, null, null, "BulkMailSent", null, notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); + notification.addNotification(util.getNewUUID(), null, null, null, "BulkMailSent", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); } \ No newline at end of file -- GitLab From b1a9b4206c05d78200ab15326787500c29206278 Mon Sep 17 00:00:00 2001 From: "j.luginger" <j.luginger@adito.de> Date: Wed, 2 Dec 2020 08:18:39 +0100 Subject: [PATCH 149/184] [Projekt: Entwicklung - xRM][TicketNr.: 1069809][ImporterMappingFunction iAttribute - Attribut wird zu oft angelegt] --- process/ImporterMappingFunctions_lib/process.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/process/ImporterMappingFunctions_lib/process.js b/process/ImporterMappingFunctions_lib/process.js index 1598b0c0d19..f85d4a3f1b1 100644 --- a/process/ImporterMappingFunctions_lib/process.js +++ b/process/ImporterMappingFunctions_lib/process.js @@ -142,7 +142,7 @@ function iAttribute(pObject) if (i == 0) { - var parent = "NULL"; + var parent = null; // select ab_attributeid from AB_ATTRIBUTE where ATTRIBUTE_NAME = 'Subordinate campaign of' and attribute_parent_id is null id = newSelect(ab_attributeId, alias).from(ab_attribute).where(attribute_name, attributes[i]) .and(attribute_parent_id + " is null").cell(); @@ -158,10 +158,18 @@ function iAttribute(pObject) { id = util.getNewUUID(); if (attributes.length == i+1) type = attributeType; + //TODO: add insertNoWait to instantly add AB_ATTRIBUTE records; //this ensures that nothing is in the funcBuffer that does not exist in the database //TODO: check: are COMOB-values added automatically? var values = [id, parent, attributes[i], type, "1"]; + + if(parent == null) + { + values = [id, attributes[i], type, "1"]; + columns = [ab_attributeId, attribute_name, attribute_type, attribute_active]; + } + this.insertData(ab_attribute, columns, null, values, alias); } pathToFollow["childs"][attributes[i]]["id"] = id; -- GitLab From f46f2b4444e300dc9900e208bf116569a3a9cf16 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 2 Dec 2020 13:17:14 +0100 Subject: [PATCH 150/184] MSTeams actions stateProcesses --- .../CampaignParticipant_entity.aod | 50 ++++++------ .../synchronizedocuments/stateProcess.js | 11 +-- .../children/addapp/onActionProcess.js | 2 +- .../children/addapp/stateProcess.js | 21 +---- .../children/deleteteam/stateProcess.js | 22 +---- .../children/editteam/stateProcess.js | 26 +----- .../children/openmsteams/onActionProcess.js | 11 +-- .../children/openmsteams/stateProcess.js | 18 +---- .../children/restoreteam/stateProcess.js | 23 +----- .../_____LANGUAGE_EXTRA.aod | 6 ++ .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 6 ++ .../CampaignCostChart_view.aod | 2 +- .../CampaignFilter_view.aod | 2 +- process/MSTeams_lib/process.js | 80 +++++++++++++++++-- 14 files changed, 136 insertions(+), 144 deletions(-) diff --git a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod index 47b0a225372..c83cda0bd56 100644 --- a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod +++ b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod @@ -22,20 +22,6 @@ <name>CampaignParticipantsProvider</name> <documentation>%aditoprj%/entity/CampaignParticipant_entity/entityfields/campaignparticipantsprovider/documentation.adoc</documentation> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>f28945cd-4613-4dfa-91f7-a7d9d64cef58</name> - <entityName>Campaign_entity</entityName> - <fieldName>CampaignParticipants</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>7ad08378-b36f-4512-8891-db727c6ddcd7</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignParticipantsConsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -50,6 +36,20 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>f28945cd-4613-4dfa-91f7-a7d9d64cef58</name> + <entityName>Campaign_entity</entityName> + <fieldName>CampaignParticipants</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>7ad08378-b36f-4512-8891-db727c6ddcd7</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignParticipantsConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>CampaignStepId_param</name> @@ -144,11 +144,6 @@ <entityConsumer> <name>CampaignSteps</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> @@ -156,6 +151,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> </entityConsumer> <entityField> <name>CONTACTCONTEXT</name> @@ -203,17 +203,17 @@ </entityConsumer> <entityConsumer> <name>CommRestrictionIcon</name> - <dependency> - <name>dependency</name> - <entityName>KeywordAttribute_entity</entityName> - <fieldName>SpecificContainerKeyword</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/commrestrictionicon/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordAttribute_entity</entityName> + <fieldName>SpecificContainerKeyword</fieldName> + </dependency> </entityConsumer> <entityField> <name>STANDARD_EMAIL_COMMUNICATION</name> @@ -271,7 +271,7 @@ </entityConsumer> <entityField> <name>RESPONSIBLE_CONTACT_ID</name> - <title>Verantwortlicher</title> + <title>Responsible</title> <consumer>ResponsibleEmployees</consumer> <groupable v="true" /> <linkedContext>Person</linkedContext> diff --git a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js index f5e9edcd5d6..0bd4c4c544c 100644 --- a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js +++ b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js @@ -1,12 +1,7 @@ -import("Util_lib"); +import("MSTeams_lib"); import("system.vars"); import("system.neon"); import("system.result"); -import("Sql_lib"); -var isArchived = Utils.toBoolean(newSelect("IS_ARCHIVED") - .from("MST_TEAM") - .whereIfSet("MST_TEAM.MST_TEAMID", "$param.MSTTeamId_param") - .cell(true)); - -result.string(isArchived ? neon.COMPONENTSTATE_DISABLED : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file +var isEnabled = MSTeamsUtils.isTeamsEnabled() && MSTeamsUtils.isTeamActive(vars.get("$param.MSTTeamId_param")); +result.string(isEnabled ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_DISABLED); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js index 826e42316f9..f53cd7c87d1 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js @@ -3,5 +3,5 @@ import("system.project"); import("system.vars"); var appId = project.getInstanceConfigValue("teamsAppId", null); -if (appId != null) +if (appId) teams.addApp(vars.get("$param.MSTTeamId_param"), appId); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js index 8c22d355887..f1febe96416 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js @@ -5,27 +5,12 @@ import("system.result"); import("Sql_lib"); var res = neon.COMPONENTSTATE_DISABLED; -var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; +var teamId = vars.get("$param.MSTTeamId_param"); if (teamId && MSTeamsUtils.isTeamsEnabled()) { - var isArchived, serviceUrl; - var teamData = newSelect("IS_ARCHIVED, SERVICE_URL") - .from("MST_TEAM") - .whereIfSet("MST_TEAM.MST_TEAMID", teamId) - .arrayRow(true); - - if (teamData) - [isArchived, serviceUrl] = teamData; - - - if (isArchived == 1 || serviceUrl) - { - res = neon.COMPONENTSTATE_DISABLED; - } - else - { + var teamInfo = MSTeamsUtils.getTeamInfo(teamId); + if (teamInfo && !teamInfo.isArchived && !teamInfo.serviceUrl) res = neon.COMPONENTSTATE_EDITABLE; - } } result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js index ff7327ea214..dcaec1cc02a 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js @@ -2,30 +2,14 @@ import("MSTeams_lib"); import("system.vars"); import("system.neon"); import("system.result"); -import("Sql_lib"); var res = neon.COMPONENTSTATE_DISABLED; -var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; +var teamId = vars.get("$param.MSTTeamId_param"); if (teamId && MSTeamsUtils.isTeamsEnabled()) { - var isArchived, serviceUrl; - var teamData = newSelect("IS_ARCHIVED, SERVICE_URL") - .from("MST_TEAM") - .whereIfSet("MST_TEAM.MST_TEAMID", teamId) - .arrayRow(true); - - if (teamData) - [isArchived, serviceUrl] = teamData; - - - if (isArchived == 1 || serviceUrl || !MSTeamsUtils.isUserTeamOwner(teamId)) - { - res = neon.COMPONENTSTATE_DISABLED; - } - else - { + var teamInfo = MSTeamsUtils.getTeamInfo(teamId); + if (teamInfo && !teamInfo.isArchived && !teamInfo.serviceUrl && MSTeamsUtils.isUserTeamOwner(teamId)) res = neon.COMPONENTSTATE_EDITABLE; - } } result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js index 19d44a29c7a..7aa4197a0d2 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js @@ -2,30 +2,12 @@ import("MSTeams_lib"); import("system.vars"); import("system.neon"); import("system.result"); -import("Sql_lib"); var res = neon.COMPONENTSTATE_DISABLED; -var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; -if (teamId && MSTeamsUtils.isTeamsEnabled()) -{ - var isArchived, serviceUrl; - var teamData = newSelect("IS_ARCHIVED, SERVICE_URL") - .from("MST_TEAM") - .whereIfSet("MST_TEAM.MST_TEAMID", teamId) - .arrayRow(true); - - if (teamData) - [isArchived, serviceUrl] = teamData; - - - if (isArchived == 1 || !MSTeamsUtils.isUserTeamOwner(teamId)) - { - res = neon.COMPONENTSTATE_DISABLED; - } - else - { - res = neon.COMPONENTSTATE_EDITABLE; - } +var teamId = vars.get("$param.MSTTeamId_param"); +if (teamId && MSTeamsUtils.isTeamsEnabled() && MSTeamsUtils.isTeamActive(teamId) && MSTeamsUtils.isUserTeamOwner(teamId)) +{ + res = neon.COMPONENTSTATE_EDITABLE; } result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js index 19f20d51a62..dd6293385c5 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js @@ -1,11 +1,8 @@ -import("Sql_lib"); +import("MSTeams_lib"); import("system.vars"); import("system.neon"); -var webUrl = newSelect("WEB_URL") - .from("MST_TEAM") - .whereIfSet("MST_TEAM.MST_TEAMID", "$param.MSTTeamId_param") - .cell(true); +var teamInfo = MSTeamsUtils.getTeamInfo(vars.get("$param.MSTTeamId_param")); -if (webUrl) - neon.openUrl(webUrl, true); +if (teamInfo && teamInfo.webUrl) + neon.openUrl(teamInfo.webUrl, true); diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js index 43b7cdd5ead..ce25c1feb1a 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js @@ -5,22 +5,10 @@ import("system.result"); import("Sql_lib"); var res = neon.COMPONENTSTATE_DISABLED; -var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; -if (teamId && MSTeamsUtils.isTeamsEnabled()) +var teamId = vars.get("$param.MSTTeamId_param"); +if (teamId && MSTeamsUtils.isTeamsEnabled() && MSTeamsUtils.isTeamActive(teamId)) { - var isArchived = newSelect("IS_ARCHIVED") - .from("MST_TEAM") - .whereIfSet("MST_TEAM.MST_TEAMID", teamId) - .cell(true); - - if (isArchived == 1) - { - res = neon.COMPONENTSTATE_DISABLED; - } - else - { - res = neon.COMPONENTSTATE_EDITABLE; - } + res = neon.COMPONENTSTATE_EDITABLE; } result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js index f6f0a5da097..45ca08b1622 100644 --- a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js @@ -5,27 +5,12 @@ import("system.result"); import("Sql_lib"); var res = neon.COMPONENTSTATE_DISABLED; -var teamId = vars.exists("$param.MSTTeamId_param") ? vars.get("$param.MSTTeamId_param") : null; +var teamId = vars.get("$param.MSTTeamId_param"); if (teamId && MSTeamsUtils.isTeamsEnabled()) -{ - var isArchived, serviceUrl; - var teamData = newSelect("IS_ARCHIVED, SERVICE_URL") - .from("MST_TEAM") - .whereIfSet("MST_TEAM.MST_TEAMID", teamId) - .arrayRow(true); - - if (teamData) - [isArchived, serviceUrl] = teamData; - - - if (isArchived == 0) - { - res = neon.COMPONENTSTATE_DISABLED; - } - else - { +{ + var teamInfo = MSTeamsUtils.getTeamInfo(teamId); + if (teamInfo && teamInfo.isArchived) res = neon.COMPONENTSTATE_EDITABLE; - } } result.string(res); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 6e143f7c08f..fe22a9591a1 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -7566,6 +7566,12 @@ <entry> <key>Exports the knowledge entry as a html file</key> </entry> + <entry> + <key>The max participants count can not be equal or less then 0</key> + </entry> + <entry> + <key>Illegal Parent Operator in buildFilterObj-Function:</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 867c0450057..eaad07dadb7 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -7647,6 +7647,12 @@ <entry> <key>Exports the knowledge entry as a html file</key> </entry> + <entry> + <key>The max participants count can not be equal or less then 0</key> + </entry> + <entry> + <key>Illegal Parent Operator in buildFilterObj-Function:</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonView/CampaignCostChart_view/CampaignCostChart_view.aod b/neonView/CampaignCostChart_view/CampaignCostChart_view.aod index 9c8daa4a4eb..24159367f94 100644 --- a/neonView/CampaignCostChart_view/CampaignCostChart_view.aod +++ b/neonView/CampaignCostChart_view/CampaignCostChart_view.aod @@ -5,7 +5,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>CampaignCostsChart</name> - <title>Campaign costs</title> + <title>Campaign Costs</title> <description>Shows campaing costs graphically processed</description> <fragment>Campaign/full</fragment> <singleton v="true" /> diff --git a/neonView/CampaignFilter_view/CampaignFilter_view.aod b/neonView/CampaignFilter_view/CampaignFilter_view.aod index 0dcb198305d..4d7c3aac1c1 100644 --- a/neonView/CampaignFilter_view/CampaignFilter_view.aod +++ b/neonView/CampaignFilter_view/CampaignFilter_view.aod @@ -8,7 +8,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>CurrentUsersOwnedCampaigns</name> - <title>My campaigns</title> + <title>My Campaigns</title> <description>Show my campaigns</description> <fragment>Campaign/filter</fragment> <singleton v="true" /> diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js index 16d41e7efaf..95db6db28b0 100644 --- a/process/MSTeams_lib/process.js +++ b/process/MSTeams_lib/process.js @@ -195,7 +195,10 @@ MSTeamsUtils.getLinkedTeam = function (pRowId, pObjectType) } /** + * Loads the contactIds associated with the given azureIds * + * @param {String[]} pAzureIds azureIds of the users + * @return {Object} object with the azureIds as keys and the corresponding contactIds as values */ MSTeamsUtils.getContactIdsByAzureIds = function (pAzureIds) { @@ -213,21 +216,32 @@ MSTeamsUtils.getContactIdsByAzureIds = function (pAzureIds) } /** + * Generates a sql expression to resolve the roles in a team for the contacts * + * @param {String} pTeamId id of the team + * @param {String} pContactIdField sql field that contains the contactId that is used for selecting the role + * @return {String} sql expression */ MSTeamsUtils.getTeamRoleSubSql = function (pTeamId, pContactIdField) { if (!pTeamId) return "''"; - var ownerIds = Object.keys(teams.getAllOwners(pTeamId)); - var ownerContactIds = MSTeamsUtils.getContactIdsByAzureIds(ownerIds); - ownerContactIds = Utils.objectValues(ownerContactIds); - - var members = teams.getAllMembers(pTeamId); - var memberIds = Object.keys(members); - var memberContactIds = MSTeamsUtils.getContactIdsByAzureIds(memberIds); - memberContactIds = Utils.objectValues(memberContactIds); + try { + var ownerIds = Object.keys(teams.getAllOwners(pTeamId)); + var ownerContactIds = MSTeamsUtils.getContactIdsByAzureIds(ownerIds); + ownerContactIds = Utils.objectValues(ownerContactIds); + + var members = teams.getAllMembers(pTeamId); + var memberIds = Object.keys(members); + var memberContactIds = MSTeamsUtils.getContactIdsByAzureIds(memberIds); + memberContactIds = Utils.objectValues(memberContactIds); + } + catch (err) + { + logging.log(err, logging.ERROR); + return "''"; + } if (ownerContactIds.length === 0 && memberContactIds.length === 0) return "''"; @@ -246,7 +260,11 @@ MSTeamsUtils.getTeamRoleSubSql = function (pTeamId, pContactIdField) } /** + * Checks if the user is an owner of the team * + * @param {String} pTeamId the id of the team + * @param {String} [pUserId=current user] the userId of the user + * @return {Boolean} true if the user is an owner */ MSTeamsUtils.isUserTeamOwner = function (pTeamId, pUserId) { @@ -259,4 +277,50 @@ MSTeamsUtils.isUserTeamOwner = function (pTeamId, pUserId) if (!user) return false; return user[tools.PARAMS][tools.TEAMS_AZUREID] in teams.getAllOwners(pTeamId); +} + +/** + * Loads the properties of the team from the database. + * + * @param {String} pTeamId the id of the team + * @return {Object} Object with these properties: + * <ul> + * <li>teamName</li> + * <li>webUrl</li> + * <li>serviceUrl</li> + * <li>isArchived</li> + * <li>generalChannelId</li> + * </ul> + * If the team was not found, null is returned. + */ +MSTeamsUtils.getTeamInfo = function (pTeamId) +{ + var teamInfo = new SqlBuilder("Data_alias") + .select(["TEAMNAME", "WEB_URL", "SERVICE_URL", "IS_ARCHIVED", "GENERAL_CHANNELID"]) + .from("MST_TEAM") + .whereIfSet("MST_TEAM.MST_TEAMID", pTeamId) + .arrayRow(true); + + if (teamInfo.length === 0) + return null; + + return { + teamName: teamInfo[0], + webUrl: teamInfo[1], + serviceUrl: teamInfo[2], + isArchived: Utils.toBoolean(teamInfo[3]), + generalChannelId: teamInfo[4] + }; +} + +/** + * Checks if the team is active + * + * @param {String} pTeamId the id of the team + * @return {Boolean} true, if the team exists and is not archived + */ +MSTeamsUtils.isTeamActive = function (pTeamId) +{ + var teamInfo = MSTeamsUtils.getTeamInfo(pTeamId); + return teamInfo != null && !teamInfo.isArchived; } \ No newline at end of file -- GitLab From 53a2d55b8fc9b1af5f107b1775253decefd06882 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 2 Dec 2020 13:38:36 +0100 Subject: [PATCH 151/184] Scan services --- entity/Contract_entity/Contract_entity.aod | 105 +++++++++--------- .../entityfields/contracts/documentation.adoc | 3 + .../ObjectProxy_entity/ObjectProxy_entity.aod | 1 + .../filteredobjects/documentation.adoc | 3 + .../recordcontainers/db/onDBUpdate.js | 2 - .../WorkflowTask_entity.aod | 42 +++---- .../finishedinstancetasks/documentation.adoc | 3 + .../instancetasks/documentation.adoc | 3 + .../WorkflowVariableValue_entity.aod | 1 + .../variablesofinstance/documentation.adoc | 3 + .../_____LANGUAGE_EXTRA.aod | 3 + .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 5 + .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 3 + 13 files changed, 103 insertions(+), 74 deletions(-) create mode 100644 entity/Contract_entity/entityfields/contracts/documentation.adoc create mode 100644 entity/ObjectProxy_entity/entityfields/filteredobjects/documentation.adoc create mode 100644 entity/WorkflowTask_entity/entityfields/finishedinstancetasks/documentation.adoc create mode 100644 entity/WorkflowTask_entity/entityfields/instancetasks/documentation.adoc create mode 100644 entity/WorkflowVariableValue_entity/entityfields/variablesofinstance/documentation.adoc diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod index a31e274eac6..3281aae04f0 100644 --- a/entity/Contract_entity/Contract_entity.aod +++ b/entity/Contract_entity/Contract_entity.aod @@ -102,7 +102,14 @@ </entityField> <entityProvider> <name>Contracts</name> + <documentation>%aditoprj%/entity/Contract_entity/entityfields/contracts/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>6d7c7166-84b4-4da2-9a48-cc1e390ac987</name> @@ -117,12 +124,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ContactId_param</name> @@ -148,11 +149,6 @@ </entityFieldGroup> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -167,6 +163,11 @@ <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>AnyContacts</name> @@ -207,11 +208,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -222,15 +218,15 @@ <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -241,14 +237,14 @@ <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ContractPayments</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ContractPayments</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -256,14 +252,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ContractStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ContractStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -271,14 +267,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ContractTypes</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ContractTypes</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -286,6 +282,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -299,11 +300,6 @@ <name>Attributes</name> <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Contract_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -316,15 +312,15 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> - <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/attributetree/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> + <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/attributetree/stateProcess.js</stateProcess> <children> <entityParameter> <name>ObjectType_param</name> @@ -335,15 +331,15 @@ <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -358,6 +354,11 @@ <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newTask</name> @@ -367,17 +368,17 @@ </entityActionField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>openAdminView</name> diff --git a/entity/Contract_entity/entityfields/contracts/documentation.adoc b/entity/Contract_entity/entityfields/contracts/documentation.adoc new file mode 100644 index 00000000000..d329bb27a71 --- /dev/null +++ b/entity/Contract_entity/entityfields/contracts/documentation.adoc @@ -0,0 +1,3 @@ += Contracts + +Provides the contracts that are linked with a contact. \ No newline at end of file diff --git a/entity/ObjectProxy_entity/ObjectProxy_entity.aod b/entity/ObjectProxy_entity/ObjectProxy_entity.aod index e197c4de792..8eb6e53ec1f 100644 --- a/entity/ObjectProxy_entity/ObjectProxy_entity.aod +++ b/entity/ObjectProxy_entity/ObjectProxy_entity.aod @@ -18,6 +18,7 @@ <entityProvider> <name>FilteredObjects</name> <targetConsumerProcess>%aditoprj%/entity/ObjectProxy_entity/entityfields/filteredobjects/targetConsumerProcess.js</targetConsumerProcess> + <documentation>%aditoprj%/entity/ObjectProxy_entity/entityfields/filteredobjects/documentation.adoc</documentation> <dependencies> <entityDependency> <name>92e21c48-19aa-402c-b75f-96cad75d8a14</name> diff --git a/entity/ObjectProxy_entity/entityfields/filteredobjects/documentation.adoc b/entity/ObjectProxy_entity/entityfields/filteredobjects/documentation.adoc new file mode 100644 index 00000000000..1c4b46dd5e5 --- /dev/null +++ b/entity/ObjectProxy_entity/entityfields/filteredobjects/documentation.adoc @@ -0,0 +1,3 @@ += FilteredObjects + +This provider can retrieve objects of the given entity, the results can be filtered. \ No newline at end of file diff --git a/entity/SerialLetter_entity/recordcontainers/db/onDBUpdate.js b/entity/SerialLetter_entity/recordcontainers/db/onDBUpdate.js index 9b94cb43201..20c7fc0a0dd 100644 --- a/entity/SerialLetter_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/SerialLetter_entity/recordcontainers/db/onDBUpdate.js @@ -18,8 +18,6 @@ var template = DocumentTemplate.fromUpload(bindata); if (template.content) { SingleBinaryUtils.set("SERIALLETTER", "DOCUMENT", letterId, template.content, template.filename, ""); - - neon.refresh(["$field.content"]); } WorkflowSignalSender.updated(); \ No newline at end of file diff --git a/entity/WorkflowTask_entity/WorkflowTask_entity.aod b/entity/WorkflowTask_entity/WorkflowTask_entity.aod index 96272fe5f1d..5a9cabd4bea 100644 --- a/entity/WorkflowTask_entity/WorkflowTask_entity.aod +++ b/entity/WorkflowTask_entity/WorkflowTask_entity.aod @@ -76,14 +76,7 @@ </entityField> <entityProvider> <name>InstanceTasks</name> - <dependencies> - <entityDependency> - <name>5913327f-1bb4-48b8-846e-639274290cee</name> - <entityName>WorkflowInstance_entity</entityName> - <fieldName>Tasks</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> + <documentation>%aditoprj%/entity/WorkflowTask_entity/entityfields/instancetasks/documentation.adoc</documentation> <children> <entityParameter> <name>OnlyFinishedTasks_param</name> @@ -94,6 +87,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>5913327f-1bb4-48b8-846e-639274290cee</name> + <entityName>WorkflowInstance_entity</entityName> + <fieldName>Tasks</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>WorkflowInstanceId_param</name> @@ -183,6 +184,14 @@ </entityParameter> <entityProvider> <name>FinishedInstanceTasks</name> + <documentation>%aditoprj%/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/documentation.adoc</documentation> + <children> + <entityParameter> + <name>OnlyFinishedTasks_param</name> + <valueProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/children/onlyfinishedtasks_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>d5d39281-0183-42fa-960a-01347cddc85a</name> @@ -191,13 +200,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>OnlyFinishedTasks_param</name> - <valueProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/children/onlyfinishedtasks_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>IncludeServiceTasks_param</name> @@ -205,17 +207,17 @@ </entityParameter> <entityConsumer> <name>LinkedObject</name> - <dependency> - <name>dependency</name> - <entityName>ObjectProxy_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> <name>Entity_param</name> <valueProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/linkedobject/children/entity_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ObjectProxy_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> </entityConsumer> <entityActionGroup> <name>tableActions</name> diff --git a/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/documentation.adoc b/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/documentation.adoc new file mode 100644 index 00000000000..9c6e27a4c53 --- /dev/null +++ b/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/documentation.adoc @@ -0,0 +1,3 @@ += FinishedInstanceTasks + +Provides all finished tasks for one process instance. \ No newline at end of file diff --git a/entity/WorkflowTask_entity/entityfields/instancetasks/documentation.adoc b/entity/WorkflowTask_entity/entityfields/instancetasks/documentation.adoc new file mode 100644 index 00000000000..1d64bc1c9b0 --- /dev/null +++ b/entity/WorkflowTask_entity/entityfields/instancetasks/documentation.adoc @@ -0,0 +1,3 @@ += InstanceTasks + +Provides all active tasks for one workflow instance. \ No newline at end of file diff --git a/entity/WorkflowVariableValue_entity/WorkflowVariableValue_entity.aod b/entity/WorkflowVariableValue_entity/WorkflowVariableValue_entity.aod index df6d2af4a4f..21b68b882b8 100644 --- a/entity/WorkflowVariableValue_entity/WorkflowVariableValue_entity.aod +++ b/entity/WorkflowVariableValue_entity/WorkflowVariableValue_entity.aod @@ -31,6 +31,7 @@ </entityParameter> <entityProvider> <name>VariablesOfInstance</name> + <documentation>%aditoprj%/entity/WorkflowVariableValue_entity/entityfields/variablesofinstance/documentation.adoc</documentation> <dependencies> <entityDependency> <name>b10924d7-0ba4-4268-8b2f-383e7cf6045c</name> diff --git a/entity/WorkflowVariableValue_entity/entityfields/variablesofinstance/documentation.adoc b/entity/WorkflowVariableValue_entity/entityfields/variablesofinstance/documentation.adoc new file mode 100644 index 00000000000..a65691e2574 --- /dev/null +++ b/entity/WorkflowVariableValue_entity/entityfields/variablesofinstance/documentation.adoc @@ -0,0 +1,3 @@ += VariablesOfInstance + +Provides all variables contained in a specific workflow instance. \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index fe22a9591a1..4616b56c93c 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -7572,6 +7572,9 @@ <entry> <key>Illegal Parent Operator in buildFilterObj-Function:</key> </entry> + <entry> + <key>Subcategory</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 5fefee70bc8..05205d3403c 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -8375,6 +8375,10 @@ Bitte Datumseingabe prüfen</value> <key>The radius has to be %0 or lesser.</key> <value>Der Radius muss %0 km oder weniger betragen.</value> </entry> + <entry> + <key>Subcategory</key> + <value>Unterkategorie</value> + </entry> <entry> <key>The radius has to be at least %0.</key> <value>Der Radius muss mindestens %0 km betragen.</value> @@ -9864,6 +9868,7 @@ Bitte Datumseingabe prüfen</value> </entry> <entry> <key>Start workflows</key> + <value>Workflows starten</value> </entry> <entry> <key>edited</key> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index eaad07dadb7..42fd76a7caa 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -7653,6 +7653,9 @@ <entry> <key>Illegal Parent Operator in buildFilterObj-Function:</key> </entry> + <entry> + <key>Subcategory</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> -- GitLab From 8468fb195b71640bbb3350cb56eec46ea62c9641 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Wed, 2 Dec 2020 15:21:41 +0100 Subject: [PATCH 152/184] several Scanservice fixes --- .../Data_alias/basic/2020.2.2/changelog.xml | 3 +- .../2020.2.2/readd_ExporttemplateIndizes.xml | 36 +++++++++++++++++++ aliasDefinition/Data_alias/Data_alias.aod | 20 +++++++++-- .../_____LANGUAGE_EXTRA.aod | 9 +++++ .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 12 +++++++ .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 9 +++++ 6 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 .liquibase/Data_alias/basic/2020.2.2/readd_ExporttemplateIndizes.xml diff --git a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml index 8b27ac25ad0..f1519ab694e 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml @@ -7,4 +7,5 @@ <include relativeToChangelogFile="true" file="alter_CampaignParticipantResponsible.xml"/> <include relativeToChangelogFile="true" file="MSTeams/changelog.xml"/> <include relativeToChangelogFile="true" file="insert_newsletterAttribute.xml"/> -</databaseChangeLog> + <include relativeToChangelogFile="true" file="readd_ExporttemplateIndizes.xml"/> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.2/readd_ExporttemplateIndizes.xml b/.liquibase/Data_alias/basic/2020.2.2/readd_ExporttemplateIndizes.xml new file mode 100644 index 00000000000..67891291f5b --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/readd_ExporttemplateIndizes.xml @@ -0,0 +1,36 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <!-- in some cases --> + <changeSet author="j.goderbauer" id="140794d8-eb75-4087-a45a-71b0f547e60a"> + <preConditions onFail="MARK_RAN"> + <not> + <indexExists indexName="idx_exprttmpfld_tmpltid" /> + </not> + </preConditions> + <createIndex indexName="idx_exprttmpfld_tmpltid" tableName="EXPORTTEMPLATEFIELD"> + <column name="EXPORTTEMPLATE_ID"/> + </createIndex> + </changeSet> + <changeSet author="j.goderbauer" id="e952abd0-29f4-4d6c-b650-ef925248ae18"> + <preConditions onFail="MARK_RAN"> + <not> + <indexExists indexName="idx_exprttmppou_tmpltid" /> + </not> + </preConditions> + <createIndex indexName="idx_exprttmppou_tmpltid" tableName="EXPORTTEMPLATEPLACEOFUSE"> + <column name="EXPORTTEMPLATE_ID"/> + </createIndex> + </changeSet> + <changeSet author="j.goderbauer" id="b49a1ac9-80b2-4cfd-b7cd-bdfee4bc0cd8"> + <preConditions onFail="MARK_RAN"> + <not> + <indexExists indexName="idx_exprttmpselection_tmpltid" /> + </not> + </preConditions> + <createIndex indexName="idx_exprttmpselection_tmpltid" tableName="EXPORTTEMPLATESELECTION"> + <column name="EXPORTTEMPLATE_ID"/> + </createIndex> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 2b11aae7aa4..ba9127b5445 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -8338,6 +8338,20 @@ </entityDependency> </dependencies> </entityFieldDb> + <entityFieldDb> + <name>RESPONSIBLE_CONTACT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -14162,7 +14176,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <documentation></documentation> <title></title> <description></description> @@ -14488,7 +14502,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <documentation></documentation> <title></title> <description></description> @@ -14543,7 +14557,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <documentation></documentation> <title></title> <description></description> diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 4616b56c93c..46ad514d97d 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -7572,9 +7572,18 @@ <entry> <key>Illegal Parent Operator in buildFilterObj-Function:</key> </entry> + <entry> + <key>My campaigns</key> + </entry> <entry> <key>Subcategory</key> </entry> + <entry> + <key>Campaign costs</key> + </entry> + <entry> + <key>Verantwortlicher</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 05205d3403c..2ebdace2b72 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -9993,6 +9993,18 @@ Bitte Datumseingabe prüfen</value> <entry> <key>Exports the knowledge entry as a html file</key> </entry> + <entry> + <key>My campaigns</key> + </entry> + <entry> + <key>Subcategory</key> + </entry> + <entry> + <key>Campaign costs</key> + </entry> + <entry> + <key>Verantwortlicher</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 42fd76a7caa..b1927645977 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -7653,9 +7653,18 @@ <entry> <key>Illegal Parent Operator in buildFilterObj-Function:</key> </entry> + <entry> + <key>My campaigns</key> + </entry> <entry> <key>Subcategory</key> </entry> + <entry> + <key>Campaign costs</key> + </entry> + <entry> + <key>Verantwortlicher</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> -- GitLab From 63f45896cb0cf69310e4ae31b3d5f505d904e4e0 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 2 Dec 2020 15:21:28 +0100 Subject: [PATCH 153/184] MS Teams fixes --- .../MSTTeamLink_entity/MSTTeamLink_entity.aod | 1 + entity/MSTTeamLink_entity/documentation.adoc | 3 +++ .../MSTTeamMember_entity.aod | 7 +++++++ .../entityfields/azure_data/valueProcess.js | 16 ++++++++++++++++ .../entityfields/azureid/valueProcess.js | 7 ++++++- .../entityfields/azureupn/valueProcess.js | 7 ++++++- .../entityfields/isextern/valueProcess.js | 14 +++----------- .../recordcontainers/jdito/onInsert.js | 6 +++--- .../MSTeamsDocument_entity.aod | 1 + .../MSTeamsMessage_entity.aod | 2 -- .../MSTTeamMemberMultiEdit_view.aod | 12 ++++++++++++ process/MSTeams_lib/process.js | 17 +++++++++++++++-- 12 files changed, 73 insertions(+), 20 deletions(-) create mode 100644 entity/MSTTeamLink_entity/documentation.adoc create mode 100644 entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js diff --git a/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod b/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod index eec88fc693d..d2df3a1cd3f 100644 --- a/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod +++ b/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>MSTTeamLink_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTTeamLink_entity/documentation.adoc</documentation> <siblings> <element>Salesproject_entity</element> <element>Member_entity</element> diff --git a/entity/MSTTeamLink_entity/documentation.adoc b/entity/MSTTeamLink_entity/documentation.adoc new file mode 100644 index 00000000000..55fcd72aba9 --- /dev/null +++ b/entity/MSTTeamLink_entity/documentation.adoc @@ -0,0 +1,3 @@ += MSTTeamLink_entity + +This entity represents a relation between a MST team and an object (e. g. a Sales Project). \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod index ec5ee48818d..d436ee7ef42 100644 --- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -59,6 +59,7 @@ </entityConsumer> <entityField> <name>ISEXTERN</name> + <state>INVISIBLE</state> <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js</valueProcess> </entityField> <entityField> @@ -109,12 +110,18 @@ </entityProvider> <entityField> <name>AZUREID</name> + <state>INVISIBLE</state> <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js</valueProcess> </entityField> <entityField> <name>AZUREUPN</name> + <state>INVISIBLE</state> <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js</valueProcess> </entityField> + <entityField> + <name>AZURE_DATA</name> + <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js</valueProcess> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js new file mode 100644 index 00000000000..2df756b62a2 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js @@ -0,0 +1,16 @@ +import("system.result"); +import("system.neon"); +import("system.tools"); +import("system.vars"); +import("Employee_lib"); + +var contactId = vars.get("$field.CONTACT_ID"); +var user = EmployeeUtils.getUserByContactId(contactId); +var azureId = user ? user[tools.PARAMS][tools.TEAMS_AZUREID] : ""; +var azureUpn = user ? user[tools.PARAMS][tools.TEAMS_AZUREUPN] : ""; + +var azureData = { + azureId: azureId, + azureUpn: azureUpn +}; +result.string(JSON.stringify(azureData)); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js index a2578b0245c..7744184c730 100644 --- a/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js +++ b/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js @@ -1 +1,6 @@ -//The value is set by ISEXTERN.valueProcess \ No newline at end of file +import("system.result"); +import("Util_lib"); +import("system.vars"); + +var azureData = Utils.parseJSON(vars.get("$field.AZURE_DATA")); +result.string(azureData ? azureData.azureId : ""); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js index a2578b0245c..554d4e72732 100644 --- a/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js +++ b/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js @@ -1 +1,6 @@ -//The value is set by ISEXTERN.valueProcess \ No newline at end of file +import("system.result"); +import("Util_lib"); +import("system.vars"); + +var azureData = Utils.parseJSON(vars.get("$field.AZURE_DATA")); +result.string(azureData ? azureData.azureUpn : ""); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js index 79c7037eb74..c2bd7034a52 100644 --- a/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js +++ b/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js @@ -1,14 +1,6 @@ import("system.result"); -import("system.neon"); -import("system.tools"); +import("Util_lib"); import("system.vars"); -import("Employee_lib"); -var contactId = vars.get("$field.CONTACT_ID"); -var user = EmployeeUtils.getUserByContactId(contactId); -var azureId = user ? user[tools.PARAMS][tools.TEAMS_AZUREID] : ""; -var azureUpn = user ? user[tools.PARAMS][tools.TEAMS_AZUREUPN] : ""; - -neon.setFieldValue("$field.AZUREUPN", azureUpn); -neon.setFieldValue("$field.AZUREID", azureId); -result.string(!azureId && !azureUpn); \ No newline at end of file +var azureData = Utils.parseJSON(vars.get("$field.AZURE_DATA")); +result.string(!azureData || !(azureData.azureId || azureData.azureUpn)); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js index 3a4b2c76861..8a1c6e0c83d 100644 --- a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -20,9 +20,6 @@ teamMembers.forEach(function (teamMember) var contactId = teamMember["CONTACT_ID"]; var isExtern = Utils.toBoolean(teamMember["ISEXTERN"]); var isInvite = Utils.toBoolean(teamMember["INVITE"]); - var isOwner = teamMember["ROLE"] == "owner"; - var memberAzureId = teamMember["AZUREID"]; - var memberUpn = teamMember["AZUREUPN"]; if (isExtern) { var memberEmail = CommUtil.getStandardMail(contactId); @@ -35,6 +32,9 @@ teamMembers.forEach(function (teamMember) } return; } + var memberAzureId = teamMember["AZUREID"]; + var memberUpn = teamMember["AZUREUPN"]; + var isOwner = teamMember["ROLE"] == "owner"; if (!memberAzureId && memberUpn) memberAzureId = teams.getInternalAzureId(memberUpn); if (memberAzureId) diff --git a/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod index ac694130ae5..7b63c5f0e10 100644 --- a/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod +++ b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod @@ -4,6 +4,7 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/MSTeamsDocument_entity/documentation.adoc</documentation> <siblings /> + <recordContainer>dataless</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> diff --git a/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod index c8c2fea856f..437ba4f0175 100644 --- a/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod +++ b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod @@ -28,8 +28,6 @@ <dependencies> <entityDependency> <name>89048e4d-32bc-4531-9b45-b0c0d9de82b1</name> - <entityName>MSTTeamChat_entity</entityName> - <fieldName>Consumer</fieldName> <isConsumer v="false" /> </entityDependency> <entityDependency> diff --git a/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod index 7b50927fe8a..ec552dc14c2 100644 --- a/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod +++ b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod @@ -24,6 +24,18 @@ <name>b85c25c8-09dd-4f9a-b0b4-31c0b8a8f12c</name> <entityField>INVITE</entityField> </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>82cdb323-6c1a-428f-a01e-e29da9f338ec</name> + <entityField>AZUREID</entityField> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>3f766fe4-119d-40df-b071-b7a578af2a71</name> + <entityField>AZUREUPN</entityField> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>0b3ac2a1-91ad-4761-9a1d-7231d5b55169</name> + <entityField>ISEXTERN</entityField> + </neonGenericMultipleTableColumn> </columns> </genericMultipleViewTemplate> </children> diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js index 95db6db28b0..98728cf49ab 100644 --- a/process/MSTeams_lib/process.js +++ b/process/MSTeams_lib/process.js @@ -133,6 +133,10 @@ MSTeamsUtils.insertTeamIfMissing = function (pTeam) /** * Creates a new teamLink. + * + * @param {String} pTeamId id of the team + * @param {String} pRowId uid of the linked object + * @param {String} pObjectType context of the linked object */ MSTeamsUtils.createTeamLink = function (pTeamId, pRowId, pObjectType) { @@ -163,7 +167,11 @@ MSTeamsUtils.createTeamLink = function (pTeamId, pRowId, pObjectType) } /** + * Gets all linked teams of an object * + * @param {String} pRowId uid of the linked object + * @param {String} pObjectType context of the linked object + * @return {Object[]} array of {teamLinkId, teamId} */ MSTeamsUtils.getLinkedTeams = function (pRowId, pObjectType) { @@ -184,7 +192,11 @@ MSTeamsUtils.getLinkedTeams = function (pRowId, pObjectType) } /** + * Gets the linked team of an object * + * @param {String} pRowId uid of the linked object + * @param {String} pObjectType context of the linked object + * @return {String} id of the linked team, or null if ther is none */ MSTeamsUtils.getLinkedTeam = function (pRowId, pObjectType) { @@ -274,9 +286,10 @@ MSTeamsUtils.isUserTeamOwner = function (pTeamId, pUserId) else user = tools.getUserByAttribute(tools.NAME, pUserId); - if (!user) + var azureId = user ? user[tools.PARAMS][tools.TEAMS_AZUREID] : null; + if (!azureId) return false; - return user[tools.PARAMS][tools.TEAMS_AZUREID] in teams.getAllOwners(pTeamId); + return azureId in teams.getAllOwners(pTeamId); } /** -- GitLab From 4e11160b98ac3e27abddf7460e4fd7ce85efc7a0 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 2 Dec 2020 15:57:48 +0100 Subject: [PATCH 154/184] Obsolete todo comments removed --- .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - entity/Address_entity/Address_entity.aod | 146 +++++++++--------- .../recordcontainers/db/conditionProcess.js | 9 +- .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../onActionProcess.js | 3 +- .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../entityfields/addr/contentTypeProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 3 +- .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../MSTTeamMember_entity.aod | 2 - .../MSTeamsAddMembers_entity.aod | 72 --------- .../documentation.adoc | 14 -- .../objectrowid_param/valueProcess.js | 4 - .../children/objecttype_param/valueProcess.js | 4 - .../entityfields/mst_team_id/valueProcess.js | 7 - .../entityfields/mst_teamname/valueProcess.js | 7 - .../recordcontainers/jdito/contentProcess.js | 9 -- .../recordcontainers/jdito/onInsert.js | 43 ------ .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../excludedproducts_param/valueProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../recordcontainers/db/conditionProcess.js | 1 - .../customcomponents/button/imageData.png | Bin 411 -> 0 bytes .../customcomponents/button/onClick.js | 44 ------ .../customcomponents/button/imageData.png | Bin 411 -> 0 bytes .../customcomponents/button/onClick.js | 46 ------ 61 files changed, 77 insertions(+), 380 deletions(-) delete mode 100644 entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod delete mode 100644 entity/MSTeamsAddMembers_entity/documentation.adoc delete mode 100644 entity/MSTeamsAddMembers_entity/entityfields/members/children/objectrowid_param/valueProcess.js delete mode 100644 entity/MSTeamsAddMembers_entity/entityfields/members/children/objecttype_param/valueProcess.js delete mode 100644 entity/MSTeamsAddMembers_entity/entityfields/mst_team_id/valueProcess.js delete mode 100644 entity/MSTeamsAddMembers_entity/entityfields/mst_teamname/valueProcess.js delete mode 100644 entity/MSTeamsAddMembers_entity/recordcontainers/jdito/contentProcess.js delete mode 100644 entity/MSTeamsAddMembers_entity/recordcontainers/jdito/onInsert.js delete mode 100644 report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png delete mode 100644 report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js delete mode 100644 report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png delete mode 100644 report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js diff --git a/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js b/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js index 8c0ab0e94b1..62c7fcc7146 100644 --- a/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js +++ b/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js @@ -5,5 +5,4 @@ import("Sql_lib"); var cond = newWhereIfSet("ACTIVITYLINK.ACTIVITY_ID", "$param.ActivityId_param", SqlBuilder.EQUAL()); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Activity_entity/recordcontainers/db/conditionProcess.js b/entity/Activity_entity/recordcontainers/db/conditionProcess.js index 0b11a5004b5..950fcd1f1dc 100644 --- a/entity/Activity_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Activity_entity/recordcontainers/db/conditionProcess.js @@ -59,5 +59,4 @@ if (Utils.toBoolean(vars.get("$param.OnlyInnate_param"))) condition.andIfSet("ACTIVITY.PARENT_ID", "$param.ParentId_param"); condition.andIfSet("ACTIVITY.PARENT_CONTEXT", "$param.ParentContext_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(condition.toString()); \ No newline at end of file diff --git a/entity/AddressType_entity/recordcontainers/db/conditionProcess.js b/entity/AddressType_entity/recordcontainers/db/conditionProcess.js index 19180612ce1..6e937ecf4c2 100644 --- a/entity/AddressType_entity/recordcontainers/db/conditionProcess.js +++ b/entity/AddressType_entity/recordcontainers/db/conditionProcess.js @@ -18,5 +18,4 @@ if (usageFilter) SqlBuilder.IN()) } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod index b1cf501940c..c6e2d95af9f 100644 --- a/entity/Address_entity/Address_entity.aod +++ b/entity/Address_entity/Address_entity.aod @@ -90,14 +90,6 @@ <entityProvider> <name>OrganisationAddresses</name> <documentation>%aditoprj%/entity/Address_entity/entityfields/organisationaddresses/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>b484b43c-16f6-4875-9787-f0813dd200cb</name> - <entityName>Organisation_entity</entityName> - <fieldName>Addresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactType_param</name> @@ -118,6 +110,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>b484b43c-16f6-4875-9787-f0813dd200cb</name> + <entityName>Organisation_entity</entityName> + <fieldName>Addresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>ContactId_param</name> @@ -128,20 +128,6 @@ <entityProvider> <name>ContactAddresses</name> <documentation>%aditoprj%/entity/Address_entity/entityfields/contactaddresses/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>efdb2f19-ab41-4f49-941a-843610e2b31b</name> - <entityName>Person_entity</entityName> - <fieldName>PersAddresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>aecd30a8-b80e-42c5-be09-3042b75a3fa2</name> - <entityName>Contact_entity</entityName> - <fieldName>ContactAddresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactType_param</name> @@ -162,6 +148,20 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>efdb2f19-ab41-4f49-941a-843610e2b31b</name> + <entityName>Person_entity</entityName> + <fieldName>PersAddresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>aecd30a8-b80e-42c5-be09-3042b75a3fa2</name> + <entityName>Contact_entity</entityName> + <fieldName>ContactAddresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityProvider> <name>#PROVIDER</name> @@ -178,14 +178,6 @@ <name>OrganisationAddressesByContact</name> <documentation>%aditoprj%/entity/Address_entity/entityfields/organisationaddressesbycontact/documentation.adoc</documentation> <titlePlural>Company Addresses</titlePlural> - <dependencies> - <entityDependency> - <name>388f6ad3-b817-4dc0-a5d5-a41eec485357</name> - <entityName>Person_entity</entityName> - <fieldName>OrgAddresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactType_param</name> @@ -198,6 +190,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>388f6ad3-b817-4dc0-a5d5-a41eec485357</name> + <entityName>Person_entity</entityName> + <fieldName>OrgAddresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>IS_STANDARD</name> @@ -223,26 +223,6 @@ <entityProvider> <name>OrganisationAndContactAddresses</name> <documentation>%aditoprj%/entity/Address_entity/entityfields/organisationandcontactaddresses/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>4d7e3b3a-abba-4429-9f1e-18e11788c0f2</name> - <entityName>Person_entity</entityName> - <fieldName>ContactAndOrganisationAddresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>daa41953-8e95-46f2-b08a-6c843ab87985</name> - <entityName>Offer_entity</entityName> - <fieldName>PossibleAddresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>2f162626-bd99-4e2a-b9cf-e95864d9ed0e</name> - <entityName>Order_entity</entityName> - <fieldName>PossibleAddresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>DefaultAddressId_param</name> @@ -264,6 +244,26 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>4d7e3b3a-abba-4429-9f1e-18e11788c0f2</name> + <entityName>Person_entity</entityName> + <fieldName>ContactAndOrganisationAddresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>daa41953-8e95-46f2-b08a-6c843ab87985</name> + <entityName>Offer_entity</entityName> + <fieldName>PossibleAddresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>2f162626-bd99-4e2a-b9cf-e95864d9ed0e</name> + <entityName>Order_entity</entityName> + <fieldName>PossibleAddresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>OrganisationId_param</name> @@ -272,17 +272,17 @@ </entityParameter> <entityConsumer> <name>KeywordAddressTypes</name> - <dependency> - <name>dependency</name> - <entityName>AddressType_entity</entityName> - <fieldName>ByCategory</fieldName> - </dependency> <children> <entityParameter> <name>UsageFilter_param</name> <valueProcess>%aditoprj%/entity/Address_entity/entityfields/keywordaddresstypes/children/usagefilter_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AddressType_entity</entityName> + <fieldName>ByCategory</fieldName> + </dependency> </entityConsumer> <entityField> <name>USER_NEW</name> @@ -309,11 +309,6 @@ </entityField> <entityConsumer> <name>ZipValidation</name> - <dependency> - <name>dependency</name> - <entityName>AddressValidation_entity</entityName> - <fieldName>ZipValidaton</fieldName> - </dependency> <children> <entityParameter> <name>Country_param</name> @@ -324,14 +319,14 @@ <valueProcess>%aditoprj%/entity/Address_entity/entityfields/zipvalidation/children/currentvalue_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>CityValidation</name> <dependency> <name>dependency</name> <entityName>AddressValidation_entity</entityName> - <fieldName>CityValidation</fieldName> + <fieldName>ZipValidaton</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>CityValidation</name> <children> <entityParameter> <name>CurrentValue_param</name> @@ -342,6 +337,11 @@ <valueProcess>%aditoprj%/entity/Address_entity/entityfields/cityvalidation/children/country_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AddressValidation_entity</entityName> + <fieldName>CityValidation</fieldName> + </dependency> </entityConsumer> <entityField> <name>AddressSearch</name> @@ -357,11 +357,6 @@ </entityField> <entityConsumer> <name>FullAddressValidation</name> - <dependency> - <name>dependency</name> - <entityName>AddressValidation_entity</entityName> - <fieldName>FullAddressValidation</fieldName> - </dependency> <children> <entityParameter> <name>CurrentValue_param</name> @@ -372,14 +367,14 @@ <valueProcess>%aditoprj%/entity/Address_entity/entityfields/fulladdressvalidation/children/country_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>StreetValidation</name> <dependency> <name>dependency</name> <entityName>AddressValidation_entity</entityName> - <fieldName>StreetValidation</fieldName> + <fieldName>FullAddressValidation</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>StreetValidation</name> <children> <entityParameter> <name>City_param</name> @@ -394,6 +389,11 @@ <valueProcess>%aditoprj%/entity/Address_entity/entityfields/streetvalidation/children/currentvalue_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AddressValidation_entity</entityName> + <fieldName>StreetValidation</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ShowDsgvoMessage_param</name> diff --git a/entity/Address_entity/recordcontainers/db/conditionProcess.js b/entity/Address_entity/recordcontainers/db/conditionProcess.js index a938934f9b9..24b457e53de 100644 --- a/entity/Address_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Address_entity/recordcontainers/db/conditionProcess.js @@ -4,13 +4,9 @@ import("system.db"); import("Sql_lib"); var cond = newWhere() + .andIfSet("ADDRESS.CONTACT_ID", "$param.ContactId_param"); -if (vars.exists("$param.ContactId_param")) // Todo: shouldn't be needed, but sometimes in the filter view of pers / org the param doesn't exist?? --> It should be null if it's not set... - cond.andIfSet("ADDRESS.CONTACT_ID", "$param.ContactId_param"); - -if (vars.exists("$param.OrganisationId_param")) // Todo: shouldn't be needed, but sometimes in the filter view of pers / org the param doesn't exist??' --> It should be null if it's not set... - var organisationId = vars.get("$param.OrganisationId_param"); - +var organisationId = vars.get("$param.OrganisationId_param"); if (organisationId) { var organisationContactId = newSelect("CONTACT.CONTACTID") @@ -21,5 +17,4 @@ if (organisationId) cond.orIfSet("ADDRESS.CONTACT_ID", organisationContactId); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js index a793d04a1b1..e063f85110e 100644 --- a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js +++ b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js @@ -32,5 +32,4 @@ var contactIds = vars.exists("$param.ContactIds_param") && vars.get("$param.Cont if (contactIds) cond.andIfSet("CONTACT.CONTACTID", JSON.parse(contactIds), SqlBuilder.IN()); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js b/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js index b9a9cafdcba..b44b0652bd7 100644 --- a/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js +++ b/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js @@ -4,5 +4,4 @@ import("Sql_lib"); var cond = newWhereIfSet("AB_APPOINTMENTLINK.APPOINTMENT_ID", "$param.AppointmentId_param") -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js b/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js index 4c333a888b1..854e2896ae3 100644 --- a/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js +++ b/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js @@ -2,6 +2,5 @@ import("Sql_lib"); import("system.db"); import("system.result"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhereIfSet("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", "$param.AttributeId_param") .toString()); diff --git a/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js b/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js index a2473cad7ca..01d4a5dc9c7 100644 --- a/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js +++ b/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js @@ -2,5 +2,4 @@ import("system.db"); import("system.result"); import("Sql_lib"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhere("BULKMAILRECIPIENT.BULKMAIL_ID", "$param.BulkMailId_param").toString()); \ No newline at end of file diff --git a/entity/CampaignCost_entity/recordcontainers/db/conditionProcess.js b/entity/CampaignCost_entity/recordcontainers/db/conditionProcess.js index 0d440b32736..41159ac8696 100644 --- a/entity/CampaignCost_entity/recordcontainers/db/conditionProcess.js +++ b/entity/CampaignCost_entity/recordcontainers/db/conditionProcess.js @@ -19,5 +19,4 @@ else cond.and("CAMPAIGNCOST.CAMPAIGNSTEP_ID is null"); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js index 5f2f7a2cfa2..fbba2db18aa 100644 --- a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js +++ b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js @@ -13,6 +13,5 @@ if(sysSelection.length > 0) //selektierte IDs als Array } else { - let sysFilter = vars.get("$sys.filter");//todo change name - CampaignUtils.openSetCampaignStepViewByCondition(JSON.stringify(sysFilter), campaignId, campaignStepId); + CampaignUtils.openSetCampaignStepViewByCondition(JSON.stringify(vars.get("$sys.filter")), campaignId, campaignStepId); } \ No newline at end of file diff --git a/entity/CampaignStep_entity/recordcontainers/db/conditionProcess.js b/entity/CampaignStep_entity/recordcontainers/db/conditionProcess.js index d3d9bfc8c7b..c28e929a43d 100644 --- a/entity/CampaignStep_entity/recordcontainers/db/conditionProcess.js +++ b/entity/CampaignStep_entity/recordcontainers/db/conditionProcess.js @@ -6,5 +6,4 @@ import("system.result"); var cond = newWhereIfSet("CAMPAIGNSTEP.CAMPAIGN_ID", "$param.campaignId_param") .andIfSet("CAMPAIGNSTEP.SORTING","$param.maxSort_param", SqlBuilder.LESS_OR_EQUAL()); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js b/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js index 2d43dba815c..e0b27324457 100644 --- a/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js +++ b/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js @@ -16,5 +16,4 @@ if (objectType) .from("CLASSIFICATIONTYPE") .where("CLASSIFICATIONTYPE.OBJECT_TYPE", objectType), SqlBuilder.IN()); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js b/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js index 10dbbac6efb..2cc442f6f75 100644 --- a/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js +++ b/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js @@ -3,5 +3,4 @@ import("Sql_lib"); import("system.db"); import("system.result"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhereIfSet("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", "$param.ClassificationTypeId_param").toString()); \ No newline at end of file diff --git a/entity/CommRestriction_Entity/recordcontainers/db/conditionProcess.js b/entity/CommRestriction_Entity/recordcontainers/db/conditionProcess.js index 4a714c57054..035d01b5f3e 100644 --- a/entity/CommRestriction_Entity/recordcontainers/db/conditionProcess.js +++ b/entity/CommRestriction_Entity/recordcontainers/db/conditionProcess.js @@ -4,5 +4,4 @@ import("Sql_lib"); var cond = newWhereIfSet("COMMRESTRICTION.CONTACT_ID", "$param.ContactId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Communication_entity/entityfields/addr/contentTypeProcess.js b/entity/Communication_entity/entityfields/addr/contentTypeProcess.js index 25141c53776..249c9ed0275 100644 --- a/entity/Communication_entity/entityfields/addr/contentTypeProcess.js +++ b/entity/Communication_entity/entityfields/addr/contentTypeProcess.js @@ -4,7 +4,6 @@ import("system.vars"); import("system.result"); import("system.neon"); -//TODO: add constants for contentTypes #1022547 var medium = vars.get("$field.MEDIUM_ID"); var contentType; if (medium) diff --git a/entity/Communication_entity/recordcontainers/db/conditionProcess.js b/entity/Communication_entity/recordcontainers/db/conditionProcess.js index 39f447f1fe7..ec18465d42f 100644 --- a/entity/Communication_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Communication_entity/recordcontainers/db/conditionProcess.js @@ -13,5 +13,4 @@ if (vars.getString("$param.CommMediumIds_param")) var mediumIds = JSON.parse(vars.getString("$param.CommMediumIds_param")); cond.andIfSet("COMMUNICATION.MEDIUM_ID", mediumIds, SqlBuilder.IN()); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Competition_entity/recordcontainers/db/conditionProcess.js b/entity/Competition_entity/recordcontainers/db/conditionProcess.js index 7fdde447ee0..79b1357d5be 100644 --- a/entity/Competition_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Competition_entity/recordcontainers/db/conditionProcess.js @@ -6,5 +6,4 @@ var cond = newWhere() .andIfSet("COMPETITION.OBJECT_ROWID", "$param.ObjectRowId_param") .andIfSet("COMPETITION.OBJECT_TYPE", "$param.ObjectType_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); diff --git a/entity/Contact_entity/recordcontainers/db/conditionProcess.js b/entity/Contact_entity/recordcontainers/db/conditionProcess.js index 6f1b0fc9fbb..80af2eaae28 100644 --- a/entity/Contact_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Contact_entity/recordcontainers/db/conditionProcess.js @@ -7,5 +7,4 @@ var cond = newWhere() .andIfSet("CONTACT.CONTACTID", "$param.OwnContactId_param", SqlBuilder.NOT_EQUAL()) .andIfSet("CONTACT.PERSON_ID", "$param.PersonId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Contract_entity/recordcontainers/db/conditionProcess.js b/entity/Contract_entity/recordcontainers/db/conditionProcess.js index 0fc49f960a0..80390ca2afc 100644 --- a/entity/Contract_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Contract_entity/recordcontainers/db/conditionProcess.js @@ -5,5 +5,4 @@ import("Sql_lib"); var cond = newWhereIfSet("CONTRACT.CONTACT_ID", "$param.ContactId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); diff --git a/entity/DSGVOInfo_entity/recordcontainers/db/conditionProcess.js b/entity/DSGVOInfo_entity/recordcontainers/db/conditionProcess.js index 0135f590498..14a93daf75f 100644 --- a/entity/DSGVOInfo_entity/recordcontainers/db/conditionProcess.js +++ b/entity/DSGVOInfo_entity/recordcontainers/db/conditionProcess.js @@ -2,6 +2,5 @@ import("system.db"); import("system.result"); import("Sql_lib"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhere("DSGVOINFO.CONTACT_ID", "$param.ContactId_param").toString()) \ No newline at end of file diff --git a/entity/DescriptionTranslation_entity/recordcontainers/db/conditionProcess.js b/entity/DescriptionTranslation_entity/recordcontainers/db/conditionProcess.js index 9b60a2f7aec..daa85fa01b4 100644 --- a/entity/DescriptionTranslation_entity/recordcontainers/db/conditionProcess.js +++ b/entity/DescriptionTranslation_entity/recordcontainers/db/conditionProcess.js @@ -4,6 +4,5 @@ import("Sql_lib"); var cond = newWhere() .andIfSet("DESCRIPTIONTRANSLATION.OBJECT_TYPE", "$param.ObjectType_param") .andIfSet("DESCRIPTIONTRANSLATION.OBJECT_ROWID", "$param.ObjectRowid_param"); - -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 + result.string(cond.toString()); \ No newline at end of file diff --git a/entity/DocumentTemplateLink_entity/recordcontainers/db/conditionProcess.js b/entity/DocumentTemplateLink_entity/recordcontainers/db/conditionProcess.js index 72212f07978..0c634187ccb 100644 --- a/entity/DocumentTemplateLink_entity/recordcontainers/db/conditionProcess.js +++ b/entity/DocumentTemplateLink_entity/recordcontainers/db/conditionProcess.js @@ -4,5 +4,4 @@ import("Sql_lib"); var cond = newWhereIfSet("DOCUMENTTEMPLATELINK.DOCUMENTTEMPLATE_ID_PARENT", "$param.DocumentId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js b/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js index 42e83fc6e02..0cec405b433 100644 --- a/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js +++ b/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js @@ -19,5 +19,4 @@ if (usageFilter) , SqlBuilder.IN()); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Forecast_entity/recordcontainers/db/conditionProcess.js b/entity/Forecast_entity/recordcontainers/db/conditionProcess.js index a4ec9464001..0c0805ca637 100644 --- a/entity/Forecast_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Forecast_entity/recordcontainers/db/conditionProcess.js @@ -7,5 +7,4 @@ var cond = newWhere() .andIfSet("FORECAST.OBJECT_ROWID", "$param.ObjectRowId_param") .andIfSet("FORECAST.OBJECT_TYPE", "$param.ObjectType_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js index 88a371d6230..08a73e06535 100644 --- a/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js +++ b/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js @@ -6,5 +6,4 @@ import("Sql_lib"); var cond = newWhereIfSet("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID", "$param.KeywordEntryId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js index 823c3d4a924..15f1ee62a40 100644 --- a/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js +++ b/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js @@ -16,5 +16,4 @@ if (entryIdForFilter) SqlBuilder.NOT_IN()) } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js index 6fcb81de353..c2921e933ff 100644 --- a/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js +++ b/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js @@ -23,5 +23,4 @@ if (vars.getString("$param.WhitelistIds_param")) cond.noResult(); // force empty result if whitelist is empty } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); diff --git a/entity/Language_entity/recordcontainers/db/conditionProcess.js b/entity/Language_entity/recordcontainers/db/conditionProcess.js index 9e0e3a69ce2..f36ae3e0f8d 100644 --- a/entity/Language_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Language_entity/recordcontainers/db/conditionProcess.js @@ -10,5 +10,4 @@ if (vars.getString("$param.ExcludedIds_param")) cond.andIfSet("AB_LANGUAGE.ISO3", JSON.parse(vars.getString("$param.ExcludedIds_param")), SqlBuilder.NOT_IN()) } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()) \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod index d436ee7ef42..72dead10e1d 100644 --- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -13,8 +13,6 @@ <dependencies> <entityDependency> <name>335d30c4-7beb-4dcb-8a0f-de85108530a9</name> - <entityName>MSTeamsAddMembers_entity</entityName> - <fieldName>Members</fieldName> <isConsumer v="false" /> </entityDependency> </dependencies> diff --git a/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod b/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod deleted file mode 100644 index b3a788b7b01..00000000000 --- a/entity/MSTeamsAddMembers_entity/MSTeamsAddMembers_entity.aod +++ /dev/null @@ -1,72 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> - <name>MSTeamsAddMembers_entity</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <documentation>%aditoprj%/entity/MSTeamsAddMembers_entity/documentation.adoc</documentation> - <title>Add members</title> - <siblings /> - <recordContainer>jdito</recordContainer> - <entityFields> - <entityProvider> - <name>#PROVIDER</name> - </entityProvider> - <entityField> - <name>UID</name> - </entityField> - <entityConsumer> - <name>Members</name> - <dependency> - <name>dependency</name> - <entityName>MSTTeamMember_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> - <children> - <entityParameter> - <name>ObjectRowId_param</name> - <valueProcess>%aditoprj%/entity/MSTeamsAddMembers_entity/entityfields/members/children/objectrowid_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>ObjectType_param</name> - <valueProcess>%aditoprj%/entity/MSTeamsAddMembers_entity/entityfields/members/children/objecttype_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityField> - <name>MST_TEAMNAME</name> - <title>Team name</title> - <valueProcess>%aditoprj%/entity/MSTeamsAddMembers_entity/entityfields/mst_teamname/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>MST_TEAM_ID</name> - <valueProcess>%aditoprj%/entity/MSTeamsAddMembers_entity/entityfields/mst_team_id/valueProcess.js</valueProcess> - </entityField> - <entityParameter> - <name>ObjectRowId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ObjectType_param</name> - <expose v="true" /> - </entityParameter> - <entityProvider> - <name>#PROVIDER_AGGREGATES</name> - <useAggregates v="true" /> - </entityProvider> - </entityFields> - <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/MSTeamsAddMembers_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/MSTeamsAddMembers_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>MST_TEAM_ID.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> - </recordContainers> -</entity> diff --git a/entity/MSTeamsAddMembers_entity/documentation.adoc b/entity/MSTeamsAddMembers_entity/documentation.adoc deleted file mode 100644 index 228acd4d940..00000000000 --- a/entity/MSTeamsAddMembers_entity/documentation.adoc +++ /dev/null @@ -1,14 +0,0 @@ -MSTeamsAddMembers -============ - -== Overview == -MSTeamsAddMembers is used to add Members - -== A MSTeamsAddMembers consists of some modules: == -- MSTeamsAddMembers itself - -== BestPractice == - -== FAQ == - - diff --git a/entity/MSTeamsAddMembers_entity/entityfields/members/children/objectrowid_param/valueProcess.js b/entity/MSTeamsAddMembers_entity/entityfields/members/children/objectrowid_param/valueProcess.js deleted file mode 100644 index dc0d70ccbe7..00000000000 --- a/entity/MSTeamsAddMembers_entity/entityfields/members/children/objectrowid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$param.ObjectRowId_param")); \ No newline at end of file diff --git a/entity/MSTeamsAddMembers_entity/entityfields/members/children/objecttype_param/valueProcess.js b/entity/MSTeamsAddMembers_entity/entityfields/members/children/objecttype_param/valueProcess.js deleted file mode 100644 index 95c8514f3bb..00000000000 --- a/entity/MSTeamsAddMembers_entity/entityfields/members/children/objecttype_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$param.ObjectType_param")); \ No newline at end of file diff --git a/entity/MSTeamsAddMembers_entity/entityfields/mst_team_id/valueProcess.js b/entity/MSTeamsAddMembers_entity/entityfields/mst_team_id/valueProcess.js deleted file mode 100644 index 3db681dd8d2..00000000000 --- a/entity/MSTeamsAddMembers_entity/entityfields/mst_team_id/valueProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.result"); -import("Sql_lib"); - -result.string(newSelect("MST_TEAM_ID") - .from("SALESPROJECT") - .where("SALESPROJECT.SALESPROJECTID", "$param.SalesprojectId_param") - .cell()); \ No newline at end of file diff --git a/entity/MSTeamsAddMembers_entity/entityfields/mst_teamname/valueProcess.js b/entity/MSTeamsAddMembers_entity/entityfields/mst_teamname/valueProcess.js deleted file mode 100644 index 7945448b1d2..00000000000 --- a/entity/MSTeamsAddMembers_entity/entityfields/mst_teamname/valueProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.result"); -import("Sql_lib"); - -result.string(newSelect("TEAMNAME") - .from("MST_TEAM") - .where("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID") - .cell()); \ No newline at end of file diff --git a/entity/MSTeamsAddMembers_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsAddMembers_entity/recordcontainers/jdito/contentProcess.js deleted file mode 100644 index af9ece7caa7..00000000000 --- a/entity/MSTeamsAddMembers_entity/recordcontainers/jdito/contentProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.result"); -import("system.vars"); - -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; -if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id, ""];}); - -result.object(rows); \ No newline at end of file diff --git a/entity/MSTeamsAddMembers_entity/recordcontainers/jdito/onInsert.js b/entity/MSTeamsAddMembers_entity/recordcontainers/jdito/onInsert.js deleted file mode 100644 index 584fbcf9708..00000000000 --- a/entity/MSTeamsAddMembers_entity/recordcontainers/jdito/onInsert.js +++ /dev/null @@ -1,43 +0,0 @@ -import("Communication_lib"); -import("Sql_lib"); -import("system.vars"); -import("system.teams"); -import("system.tools"); -import("Employee_lib"); - -var rowdata = vars.get("$local.rowdata"); -var teamId = rowdata["MST_TEAM_ID.value"]; -var teamMembers = vars.get("$field.Members.insertedRows"); - -var internalMembers = []; -var externalMembers = []; -teamMembers.forEach(function (teamMember) -{ - var memberUser = EmployeeUtils.getUserByContactId(teamMember.MEMBER); - if (!memberUser) - { - var memberEmail = CommUtil.getStandardMail(teamMember.MEMBER); - if (memberEmail) - { - externalMembers.push( - teams.createExternalUserConfig(memberEmail) - .sendInvitation(teamMember.ROLE_OR_INVITE == "invite") - ); - } - return; - } - var memberAzureId = memberUser[tools.PARAMS][tools.TEAMS_AZUREID]; - var memberUpn = memberUser[tools.PARAMS][tools.TEAMS_AZUREUPN]; - if (!memberAzureId && memberUpn) - memberAzureId = teams.getInternalAzureId(memberUpn); - if (memberAzureId) - { - internalMembers.push(teams.createInternalUserConfig(memberAzureId).setOwner(teamMember.ROLE_OR_INVITE == "isOwner")); - } -}); - -if (internalMembers.length !== 0) - teams.addInternalMembers(teamId, internalMembers); - -if (externalMembers.length !== 0) - teams.addExternalMembers(teamId, externalMembers); \ No newline at end of file diff --git a/entity/Member_entity/recordcontainers/db/conditionProcess.js b/entity/Member_entity/recordcontainers/db/conditionProcess.js index 8ea033217e4..ce742b4d37a 100644 --- a/entity/Member_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Member_entity/recordcontainers/db/conditionProcess.js @@ -6,5 +6,4 @@ var cond = newWhere() .andIfSet("OBJECTMEMBER.OBJECT_ROWID", "$param.ObjectRowId_param") .andIfSet("OBJECTMEMBER.OBJECT_TYPE", "$param.ObjectType_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/db/conditionProcess.js b/entity/Offer_entity/recordcontainers/db/conditionProcess.js index 001612ec194..eabc7f24541 100644 --- a/entity/Offer_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Offer_entity/recordcontainers/db/conditionProcess.js @@ -14,5 +14,4 @@ else { cond.andIfSet("OFFER.STATUS", "$param.OfferStatus_param") -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js b/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js index 82c536561aa..ee1e6cbd847 100644 --- a/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js @@ -5,5 +5,4 @@ import("system.vars"); var cond = newWhereIfSet("OFFERITEM.OFFER_ID", "$param.OfferId_param") -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/conditionProcess.js b/entity/Order_entity/recordcontainers/db/conditionProcess.js index d799cf12382..572d8249ded 100644 --- a/entity/Order_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Order_entity/recordcontainers/db/conditionProcess.js @@ -11,5 +11,4 @@ else { cond.andIfSet("SALESORDER.OBJECT_ROWID", "$param.ObjectRowId_param") .andIfSet("SALESORDER.OBJECT_TYPE", "$param.ObjectType_param"); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Orderitem_entity/recordcontainers/db/conditionProcess.js b/entity/Orderitem_entity/recordcontainers/db/conditionProcess.js index 59572077570..6794f43bc98 100644 --- a/entity/Orderitem_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Orderitem_entity/recordcontainers/db/conditionProcess.js @@ -5,5 +5,4 @@ import("system.vars"); var cond = newWhereIfSet("SALESORDERITEM.SALESORDER_ID", "$param.OrderId_param") -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/conditionProcess.js b/entity/Organisation_entity/recordcontainers/db/conditionProcess.js index 7ef4fdefa4f..a38a50972c0 100644 --- a/entity/Organisation_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Organisation_entity/recordcontainers/db/conditionProcess.js @@ -55,5 +55,4 @@ if (vars.exists("$param.OnlyOwnSupervised_param") && vars.get("$param.OnlyOwnSup SqlBuilder.EXISTS() ); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/db/conditionProcess.js b/entity/Person_entity/recordcontainers/db/conditionProcess.js index 04f984cbc56..33881115836 100644 --- a/entity/Person_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Person_entity/recordcontainers/db/conditionProcess.js @@ -41,5 +41,4 @@ if (vars.exists("$param.OnlyOwnSupervised_param") && vars.get("$param.OnlyOwnSup ); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js b/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js index d7230024504..69206e0479d 100644 --- a/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js +++ b/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js @@ -11,5 +11,4 @@ if (vars.get("$param.ExcludedPersonIds_param")) cond.andIfSet("PERSON.PERSONID", excludedPersons, SqlBuilder.NOT_IN()); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Prod2prod_entity/entityfields/products/children/excludedproducts_param/valueProcess.js b/entity/Prod2prod_entity/entityfields/products/children/excludedproducts_param/valueProcess.js index bbca2049205..ca417dc781a 100644 --- a/entity/Prod2prod_entity/entityfields/products/children/excludedproducts_param/valueProcess.js +++ b/entity/Prod2prod_entity/entityfields/products/children/excludedproducts_param/valueProcess.js @@ -31,7 +31,6 @@ else result.object(excludeIDs); -// TODO: remove code duplication, better param naming and using SqlBuilder function _getParentID(pID, pIDs) { //Ermitteln welche Produkte ausgeschlossen werden müssen. diff --git a/entity/Product_entity/recordcontainers/db/conditionProcess.js b/entity/Product_entity/recordcontainers/db/conditionProcess.js index 3602fca8eb0..d2f79f17d27 100644 --- a/entity/Product_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Product_entity/recordcontainers/db/conditionProcess.js @@ -11,5 +11,4 @@ if (vars.exists("$param.ExcludedProducts_param") && vars.get("$param.ExcludedPro productCond.andIfSet("PRODUCT.PRODUCTID", excludedIds, SqlBuilder.NOT_IN()); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(productCond.toString()); \ No newline at end of file diff --git a/entity/Productprice_entity/recordcontainers/db/conditionProcess.js b/entity/Productprice_entity/recordcontainers/db/conditionProcess.js index a68cf9891b4..869e14a88e9 100644 --- a/entity/Productprice_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Productprice_entity/recordcontainers/db/conditionProcess.js @@ -5,5 +5,4 @@ var cond = newWhere() .andIfSet("PRODUCTPRICE.PRODUCT_ID", "$param.ProductId_param") .andIfSet("PRODUCTPRICE.CONTACT_ID", "$param.ContactId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js b/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js index 9a21e39ea75..06315b6b320 100644 --- a/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js +++ b/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js @@ -5,5 +5,4 @@ var cond = newWhere() .andIfSet("SALESPROJECT_MILESTONE.SALESPROJECT_ID", "$param.SalesprojectId_param") .andIfSet("SALESPROJECT_MILESTONE.KIND", "$param.Kind_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/SalesprojectSource_entity/recordcontainers/db/conditionProcess.js b/entity/SalesprojectSource_entity/recordcontainers/db/conditionProcess.js index bad867525a1..ab13b330a62 100644 --- a/entity/SalesprojectSource_entity/recordcontainers/db/conditionProcess.js +++ b/entity/SalesprojectSource_entity/recordcontainers/db/conditionProcess.js @@ -4,5 +4,4 @@ import("Sql_lib"); var cond = newWhereIfSet("SALESPROJECT_TOUCHPOINT.SALESPROJECT_ID", "$param.SalesprojectId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js b/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js index 507cd54e83a..94792e06054 100644 --- a/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js @@ -3,7 +3,6 @@ import("system.result"); import("system.vars"); import("Sql_lib"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhereIfSet("SALESPROJECT.CONTACT_ID", "$param.ContactId_param") .andIfSet("SALESPROJECT.STATUS", "$param.Status_param") .toString()); \ No newline at end of file diff --git a/entity/Stock_entity/recordcontainers/db/conditionProcess.js b/entity/Stock_entity/recordcontainers/db/conditionProcess.js index eb881a660fe..b0ca1d729b5 100644 --- a/entity/Stock_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Stock_entity/recordcontainers/db/conditionProcess.js @@ -1,6 +1,5 @@ import("system.result"); import("Sql_lib"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhereIfSet("STOCK.PRODUCT_ID", "$param.ProductId_param") .toString()); \ No newline at end of file diff --git a/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js b/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js index 1cc6eb48ac1..058d0ec0694 100644 --- a/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js +++ b/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js @@ -31,5 +31,4 @@ if (vars.get("$param.RowId_param") && vars.get("$param.ObjectId_param")) cond.andIfSet("TASK.PARENT_ID", "$param.ParentId_param"); cond.andIfSet("TASK.PARENT_CONTEXT", "$param.ParentContext_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js b/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js index 1b4535c9556..2b98b257ac0 100644 --- a/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js +++ b/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js @@ -3,5 +3,4 @@ import("Sql_lib"); var cond = newWhereIfSet("TASKLINK.TASK_ID", "$param.TaskId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/conditionProcess.js b/entity/Task_entity/recordcontainers/db/conditionProcess.js index d8acb4d11fe..c74072623eb 100644 --- a/entity/Task_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Task_entity/recordcontainers/db/conditionProcess.js @@ -48,6 +48,5 @@ else } cond.and(protectionLevelCondition); - //TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); } \ No newline at end of file diff --git a/entity/Timetracking_entity/recordcontainers/db/conditionProcess.js b/entity/Timetracking_entity/recordcontainers/db/conditionProcess.js index 958be571623..9b3b9ce6518 100644 --- a/entity/Timetracking_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Timetracking_entity/recordcontainers/db/conditionProcess.js @@ -3,7 +3,6 @@ import("system.db"); import("system.result"); import("Sql_lib"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhereIfSet("TIMETRACKING.OBJECT_ID", "$param.ObjectId_param") .andIfSet("TIMETRACKING.ROW_ID", "$param.RowId_param") .toString()); diff --git a/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png b/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png deleted file mode 100644 index 49cda7d673d367ab30051c9aa9dda1dcfad22177..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 411 zcmV;M0c8G(P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0004ENkl<ZcwV)X zVX?wM41{X|3(Qmj7M=wxU;ztQzycPq@GM{f3+2ATcDA`(VVLq`q20@6lg;(IVHmn! zq9WEtMXZgk@B2@1EI1Vm4Y0nC``!s`3(l4V{P)jfLR`NU{Jr)s3Q$d~Fvd6z1$T=d zMOp%G#id}A#AKjjiSWP41Uxy<;&)+9c3}z6SVbJ2OkGC-x5blVk9aEM{c0TW0jrB^ z6i_w%XUVb4<K1(&QQ|WJZ;fX-JQar>p4<hZFtL>YL6B?`=bkeIPr|#_;t3OfasgGN zVL6vo@7B?&c%S250&az>!PBV{OQ5xuxcr|TQy0kmj~2+zDDGX2c`^atpei|4!~jnY zsF+xv*Hln8gVqsskSyLof*hy>Jega<Y4OX=2kLyZu@Yc#`p}}t*N9&-)wzhS=6Kl= z2QQnvt3?5U&3+9m!9UCjEdfE5W|$4Lg;9W?U!o$`#slT_6Hz3TKg9q5002ovPDHLk FV1ff@vj_kH diff --git a/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js b/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js deleted file mode 100644 index 354885d3893..00000000000 --- a/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js +++ /dev/null @@ -1,44 +0,0 @@ -import("system.text"); -import("system.swing"); -import("system.translate"); -import("system.question"); -import("system.vars"); -import("system.db"); - -//@TODO: remove - -var details = vars.get("$global.RptOfferOrderDetails"); -var orgid = db.cell("select ORGANISATION_ID from CONTACT where CONTACTID = '" + details[1] + "'"); -if (orgid.substr(0, 2) == '0 ') // Privatperson -{ - var count = db.cell("select count(*) from COMMUNICATION where medium_id = 3 and ISSTANDARD = 1 and CONTACT_ID = '" + details[1] + "'"); - if (count == "0") question.showMessage(translate.text("no standard email office")); - else - sendAutoMail( translate.text("Offer") + " " + details[0], details[1], "Email_Angebot", details[2], "AGB", [], [["SPNR", details[5]]] ); -} -else // Funktion - Person in Firma -{ - var orgrelid = db.cell("select CONTACTID from CONTACT where ORGANISATION_ID = '" + orgid + "'"); - var relobjid = db.array(db.COLUMN, "select ORGANISATION_ID from OBJECTRELATION join CONTACT on CONTACTID = DEST_ID where SOURCE_ID = '" + orgrelid + "' and RELVALUE = 9"); - contactid = db.array(db.COLUMN, "select CONTACTID from CONTACT left join PERSON on PERSONID = PERSON_ID" - + " where CONTACT.STATUS = 1 and ORGANISATION_ID in ('" + orgid + "', '" + relobjid.join("','") + "')"); - - vars.set("$local.relids", "'" + contactid.join("','") + "'"); - vars.set("$local.cmb_person_to", details[1]); //Empfänger vorbelegen - contactid = swing.askUserQuestion("Email", "DLG_CHOOSE_PERSON_FOREMAIL") - if ( contactid == null ) contactid = ""; //Abbruch geklickt - else - { - var reltoid = contactid["DLG_CHOOSE_PERSON_FOREMAIL.cmb_person_to"]; - - var relccid = text.decodeMS(contactid["DLG_CHOOSE_PERSON_FOREMAIL.tbl_person_cc"]); - if (relccid.length == 0) contactid = ""; // keine Person markiert und OK geklickt - else - relccid = db.array(db.COLUMN, "select ADDR from COMMUNICATION where MEDIUM_ID = 3 and ISSTANDARD = 1 and " - + "CONTACT_ID in ('" + relccid.join("','") + "') and CONTACT_ID <> '" + reltoid + "'"); - - if ( reltoid != "" ) - sendAutoMail( translate.text(details[3]) + " " + details[0], reltoid, "Email_" + details[3], details[2], "AGB", relccid, [["SPNR", details[5]]] ); - else question.showMessage(translate.text("Put Reciever Into To")); - } -} \ No newline at end of file diff --git a/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png b/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png deleted file mode 100644 index 49cda7d673d367ab30051c9aa9dda1dcfad22177..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 411 zcmV;M0c8G(P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0004ENkl<ZcwV)X zVX?wM41{X|3(Qmj7M=wxU;ztQzycPq@GM{f3+2ATcDA`(VVLq`q20@6lg;(IVHmn! zq9WEtMXZgk@B2@1EI1Vm4Y0nC``!s`3(l4V{P)jfLR`NU{Jr)s3Q$d~Fvd6z1$T=d zMOp%G#id}A#AKjjiSWP41Uxy<;&)+9c3}z6SVbJ2OkGC-x5blVk9aEM{c0TW0jrB^ z6i_w%XUVb4<K1(&QQ|WJZ;fX-JQar>p4<hZFtL>YL6B?`=bkeIPr|#_;t3OfasgGN zVL6vo@7B?&c%S250&az>!PBV{OQ5xuxcr|TQy0kmj~2+zDDGX2c`^atpei|4!~jnY zsF+xv*Hln8gVqsskSyLof*hy>Jega<Y4OX=2kLyZu@Yc#`p}}t*N9&-)wzhS=6Kl= z2QQnvt3?5U&3+9m!9UCjEdfE5W|$4Lg;9W?U!o$`#slT_6Hz3TKg9q5002ovPDHLk FV1ff@vj_kH diff --git a/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js b/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js deleted file mode 100644 index dad46b278af..00000000000 --- a/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js +++ /dev/null @@ -1,46 +0,0 @@ -import("system.text"); -import("system.question"); -import("system.translate"); -import("system.swing"); -import("system.vars"); -import("system.db"); - -//@TODO: remove - -var details = vars.get("$global.RptOfferOrderDetails"); -var orgid = db.array(db.ROW, "select ORG_ID, LANG from RELATION where RELATIONID = '" + details[1] + "'"); -if (orgid[0].substr(0, 2) == '0 ') // Privatperson -{ - var count = db.cell("select count(*) from COMM where medium_id = 3 and STANDARD = 1 and RELATION_ID = '" + details[1] + "'"); - if (count == "0") question.showMessage(translate.text("No Standard-E-Mail available!")); - else - sendAutoMail( translate.text(details[3]) + " " + details[0], details[1], details[4], details[2], details[5], relccid, [["SPNR", details[6]]], orgid[1] ); -} -else // Funktion - Person in Firma -{ - var orgrelid = db.cell("select RELATIONID from RELATION where ORG_ID = '" + orgid + "'"); - var relobjid = db.array(db.COLUMN, "select ORG_ID from OBJECTRELATION join RELATION on RELATIONID = DEST_ID where SOURCE_ID = '" + orgrelid + "' and RELVALUE = 9"); - relationid = db.array(db.COLUMN, "select RELATIONID from RELATION left join PERS on PERSID = PERS_ID" - + " where RELATION.STATUS = 1 and ORG_ID in ('" + orgid[0] + "', '" + relobjid.join("','") + "')"); - - vars.set("$local.relids", "'" + relationid.join("','") + "'"); - vars.set("$local.cmb_pers_to", details[1]); //Empfänger vorbelegen - - relationid = swing.askUserQuestion("Email", "DLG_CHOOSE_PERS_FOREMAIL") - if ( relationid == null ) relationid = ""; //Abbruch geklickt - else - { - var reltoid = relationid["DLG_CHOOSE_PERS_FOREMAIL.cmb_pers_to"]; - var language = db.cell("select LANG from RELATION where RELATIONID = '" + reltoid + "'") - - var relccid = text.decodeMS(relationid["DLG_CHOOSE_PERS_FOREMAIL.tbl_pers_cc"]); - if (relccid.length == 0) relationid = ""; // keine Person markiert und OK geklickt - else - relccid = db.array(db.COLUMN, "select ADDR from COMM where MEDIUM_ID = 3 and STANDARD = 1 and " - + "RELATION_ID in ('" + relccid.join("','") + "') and RELATION_ID <> '" + reltoid + "'"); - - if ( reltoid != "" ) - sendAutoMail( translate.text(details[3]) + " " + details[0], reltoid, details[4], details[2], details[5], relccid, [["SPNR", details[6]]], language ); - else question.showMessage(translate.text("Please enter Addressee in 'to'")); - } -} \ No newline at end of file -- GitLab From d19b35a25b0202799ae7303d24c1f526d9a393ff Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 2 Dec 2020 16:49:54 +0100 Subject: [PATCH 155/184] Scan services report fix --- report/Offer_report/Offer_report.aod | 8 -------- report/Offer_report/reportData.jrxml | 6 +++--- report/Salesorder_report/Salesorder_report.aod | 8 -------- report/Salesorder_report/reportData.jrxml | 2 +- 4 files changed, 4 insertions(+), 20 deletions(-) diff --git a/report/Offer_report/Offer_report.aod b/report/Offer_report/Offer_report.aod index 737a6889a7a..b273251e794 100644 --- a/report/Offer_report/Offer_report.aod +++ b/report/Offer_report/Offer_report.aod @@ -33,14 +33,6 @@ <icon>REPORT_24</icon> <enabled v="true" /> <layoutPosition>POSITION_TOP</layoutPosition> - <customComponents> - <rcCommandButton> - <name>Button</name> - <onClick>%aditoprj%/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js</onClick> - <title>Senden per E-Mail</title> - <imageData>%aditoprj%/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png</imageData> - </rcCommandButton> - </customComponents> </ribbonTask> </ribbonTasks> </ribbon> diff --git a/report/Offer_report/reportData.jrxml b/report/Offer_report/reportData.jrxml index f2afe827513..2f3a25316e0 100644 --- a/report/Offer_report/reportData.jrxml +++ b/report/Offer_report/reportData.jrxml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report1" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e7a916c8-3f9a-497d-84bb-3909b15271ea"> - <property name="ireport.zoom" value="1.9487171000000014"/> + <property name="ireport.zoom" value="1.0"/> <property name="ireport.x" value="0"/> - <property name="ireport.y" value="190"/> + <property name="ireport.y" value="0"/> <parameter name="myAddr" class="java.lang.String"/> <parameter name="Pos" class="java.lang.String"/> <parameter name="Articledescription" class="java.lang.String"/> @@ -24,7 +24,7 @@ <parameter name="OfferDeliveryTerm" class="java.lang.String"/> <parameter name="responsible" class="java.lang.String"/> <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> - <defaultValueExpression><![CDATA["C:\\Entwicklung\\0.0\\project\\basic2\\report\\Offer_report\\"]]></defaultValueExpression> + <defaultValueExpression><![CDATA["C:\\dev\\project\\basic\\report\\Offer_report\\"]]></defaultValueExpression> </parameter> <parameter name="adito.datasource.subdata" class="java.lang.Object"/> <parameter name="SUMITEMSUM" class="java.lang.Double"/> diff --git a/report/Salesorder_report/Salesorder_report.aod b/report/Salesorder_report/Salesorder_report.aod index 51a1a8215ca..764967a65bf 100644 --- a/report/Salesorder_report/Salesorder_report.aod +++ b/report/Salesorder_report/Salesorder_report.aod @@ -32,14 +32,6 @@ <icon>REPORT_24</icon> <enabled v="true" /> <layoutPosition>POSITION_TOP</layoutPosition> - <customComponents> - <rcCommandButton> - <name>Button</name> - <onClick>%aditoprj%/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js</onClick> - <title>Senden per E-Mail</title> - <imageData>%aditoprj%/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png</imageData> - </rcCommandButton> - </customComponents> </ribbonTask> </ribbonTasks> </ribbon> diff --git a/report/Salesorder_report/reportData.jrxml b/report/Salesorder_report/reportData.jrxml index 496fcde2e9e..dddb5cf7b47 100644 --- a/report/Salesorder_report/reportData.jrxml +++ b/report/Salesorder_report/reportData.jrxml @@ -27,7 +27,7 @@ <parameter name="SUMITEMSUM" class="java.lang.Double"/> <parameter name="TOTAL" class="java.lang.String"/> <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> - <defaultValueExpression><![CDATA["C:\\Entwicklung\\stable2019\\project\\basic\\report\\Salesorder_report\\"]]></defaultValueExpression> + <defaultValueExpression><![CDATA["C:\\dev\\project\\basic\\report\\Salesorder_report\\"]]></defaultValueExpression> </parameter> <parameter name="adito.datasource.subdata" class="java.lang.Object" isForPrompting="false"/> <parameter name="adito.image.myLogo" class="java.lang.String"/> -- GitLab From dd979f4f0defe527e3a49580e2106ace3cf399ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20V=C3=B6gl?= <a.voegl@adito.de> Date: Thu, 3 Dec 2020 11:44:48 +0000 Subject: [PATCH 156/184] [Projekt: Entwicklung - xRM][TicketNr.: 1061957][360 Grad: Umbenennung ViewTemplate Treetable -> Tree] [Projekt: Entwicklung - xRM][TicketNr.: 1053175][Erweiterte 360-Grad Ansicht] --- entity/Contract_entity/contentDescriptionProcess.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/entity/Contract_entity/contentDescriptionProcess.js b/entity/Contract_entity/contentDescriptionProcess.js index 03f72c03ff0..c1836a1fcb2 100644 --- a/entity/Contract_entity/contentDescriptionProcess.js +++ b/entity/Contract_entity/contentDescriptionProcess.js @@ -6,10 +6,10 @@ import("system.result"); var res = [translate.text("Payment method") + ": " + vars.get("$field.PAYMENT.displayValue")]; if(vars.get("$field.CONTRACTDUE")) - res.push(translate.text("Next due date") + ": " + vars.get("$field.CONTRACTDUE")); + res.push(translate.text("Next due date") + ": " + datetime.toDate(vars.get("$field.CONTRACTDUE"), translate.text("dd.MM.yyyy"))); if(vars.get("$field.CONTRACTEND")) - res.push(translate.text("Contract expiry date") + ": " + vars.get("$field.CONTRACTEND")) + res.push(translate.text("Contract expiry date") + ": " + datetime.toDate(vars.get("$field.CONTRACTEND"), translate.text("dd.MM.yyyy"))) res.push(translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); -- GitLab From 9d6e5f902dc00cff784ffe1e04873b3e290ce6ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20V=C3=B6gl?= <a.voegl@adito.de> Date: Thu, 3 Dec 2020 14:23:55 +0000 Subject: [PATCH 157/184] #1067652 CampaingParticipant filter --- .../campaignparticipantcontactids/valueProcess.js | 2 +- .../CampaignParticipant_entity.aod | 8 +++++++- .../setsteptoparticipantselection/stateProcess.js | 15 +++++++++++++++ .../valueProcess.js | 12 ++++++++++++ entity/Employee_entity/Employee_entity.aod | 4 ++++ .../recordcontainers/jdito/contentProcess.js | 5 +++++ 6 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js create mode 100644 entity/CampaignParticipant_entity/entityfields/responsibleemployees/children/employeecontactidwhitelist_param/valueProcess.js diff --git a/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js b/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js index ff279849ceb..d1c7824536e 100644 --- a/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js +++ b/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js @@ -29,7 +29,7 @@ if(vars.get("$field.CAMPAIGN_ID")) if (vars.get("$param.campaignParticipantsCondition_param")) { var contactFilterCondition = JSON.parse(vars.get("$param.campaignParticipantsCondition_param")).condition; - contactIds = CampaignUtils.GetContactIdsNotInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), contactFilterCondition, comingfrom); + contactIds = CampaignUtils.GetContactIdsInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), contactFilterCondition); } else { diff --git a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod index c83cda0bd56..92f21ead904 100644 --- a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod +++ b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod @@ -169,9 +169,9 @@ <title>Update campaign step</title> <onActionProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> - <isSelectionAction v="true" /> <iconId>NEON:GROUP_APPOINTMENT</iconId> <state>AUTO</state> + <stateProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js</stateProcess> <tooltip>Update campaign step</tooltip> <tooltipProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/tooltipProcess.js</tooltipProcess> </entityActionField> @@ -280,6 +280,12 @@ </entityField> <entityConsumer> <name>ResponsibleEmployees</name> + <children> + <entityParameter> + <name>EmployeeContactIdWhitelist_param</name> + <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/responsibleemployees/children/employeecontactidwhitelist_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependency> <name>dependency</name> <entityName>Employee_entity</entityName> diff --git a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js new file mode 100644 index 00000000000..78eb0e84628 --- /dev/null +++ b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js @@ -0,0 +1,15 @@ +import("Campaign_lib"); +import("system.vars"); +import("system.neon"); +import("system.result"); + +var participantCount = vars.get("$sys.datarowcountfull"); + +if(participantCount > 0) +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} +else +{ + result.string(neon.COMPONENTSTATE_DISABLED); +} \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/responsibleemployees/children/employeecontactidwhitelist_param/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/responsibleemployees/children/employeecontactidwhitelist_param/valueProcess.js new file mode 100644 index 00000000000..2aacdbde971 --- /dev/null +++ b/entity/CampaignParticipant_entity/entityfields/responsibleemployees/children/employeecontactidwhitelist_param/valueProcess.js @@ -0,0 +1,12 @@ +import("system.vars"); +import("system.result"); +import("Sql_lib"); +import("system.neon"); + +if(vars.get("$sys.presentationmode") == neon.CONTEXT_PRESENTATIONMODE_FILTER) +{ + result.string(JSON.stringify(newSelect("DISTINCT CAMPAIGNPARTICIPANT.RESPONSIBLE_CONTACT_ID") + .from("CAMPAIGNPARTICIPANT") + .where("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", vars.get("$param.CampaignId_param")) + .arrayColumn())); +} \ No newline at end of file diff --git a/entity/Employee_entity/Employee_entity.aod b/entity/Employee_entity/Employee_entity.aod index c6c1df49e89..bc177161e35 100644 --- a/entity/Employee_entity/Employee_entity.aod +++ b/entity/Employee_entity/Employee_entity.aod @@ -410,6 +410,10 @@ </entityParameter> </children> </entityConsumer> + <entityParameter> + <name>EmployeeContactIdWhitelist_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/Employee_entity/recordcontainers/jdito/contentProcess.js b/entity/Employee_entity/recordcontainers/jdito/contentProcess.js index 42ea78f8cac..8970fd6bd60 100644 --- a/entity/Employee_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Employee_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,4 @@ +import("system.logging"); import("Sql_lib"); import("system.db"); import("Attribute_lib"); @@ -12,6 +13,10 @@ import("Employee_lib"); var users; if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) users = tools.getUsersByAttribute(tools.NAME, vars.get("$local.idvalues"), tools.PROFILE_FULL); +else if(vars.exists("$param.EmployeeContactIdWhitelist_param") && vars.get("$param.EmployeeContactIdWhitelist_param")) +{ + users = tools.getUsersByAttribute(tools.CONTACTID, JSON.parse(vars.get("$param.EmployeeContactIdWhitelist_param")), tools.PROFILE_DEFAULT); +} else { var values = ["true", "false"]; -- GitLab From 23409835ba358a8fb485c8d34e8abd50fc300370 Mon Sep 17 00:00:00 2001 From: Tom Lutzenberger <t.lutzenberger@adito.de> Date: Thu, 3 Dec 2020 15:44:07 +0100 Subject: [PATCH 158/184] #1068644: Add IndexSearchAlias for seamless Upgrade --- aliasDefinition/IndexSearchAlias/IndexSearchAlias.aod | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 aliasDefinition/IndexSearchAlias/IndexSearchAlias.aod diff --git a/aliasDefinition/IndexSearchAlias/IndexSearchAlias.aod b/aliasDefinition/IndexSearchAlias/IndexSearchAlias.aod new file mode 100644 index 00000000000..79981226f95 --- /dev/null +++ b/aliasDefinition/IndexSearchAlias/IndexSearchAlias.aod @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<aliasDefinition xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/aliasDefinition/1.2.0"> + <name>IndexSearchAlias</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <datasourceType v="18" /> +</aliasDefinition> -- GitLab From 4fb16aa16071d9af615a2b6fc176bb8368fbd7ff Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 3 Dec 2020 17:07:45 +0100 Subject: [PATCH 159/184] Scan services --- .aditoprj/ignoredScanServiceTasks.json | 36 +++- entity/Campaign_entity/Campaign_entity.aod | 170 +++++++++--------- .../ClassificationGrading_entity.aod | 13 +- .../valueProcess.js | 4 - .../DocumentTemplatePlaceOfUse_entity.aod | 24 ++- .../valueProcess.js | 4 - .../valueProcess.js | 4 - .../ExportTemplateField_entity.aod | 7 - .../exporttemplatefield_param/valueProcess.js | 4 - .../exporttemplatefield_param/valueProcess.js | 4 - .../ExportTemplatePlaceOfUse_entity.aod | 24 ++- .../valueProcess.js | 4 - .../valueProcess.js | 4 - .../recordcontainers/db/onDBUpdate.js | 11 -- .../contentTitleProcess.js | 4 +- .../containername_param/valueProcess.js | 2 +- .../milestonevalue/titleProcess.js | 4 +- .../groupQueryProcess.js | 2 +- .../_____LANGUAGE_EXTRA.aod | 3 + .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 8 +- .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 3 + 21 files changed, 154 insertions(+), 185 deletions(-) delete mode 100644 entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js delete mode 100644 entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/valueProcess.js delete mode 100644 entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse_param/valueProcess.js delete mode 100644 entity/ExportTemplateField_entity/entityfields/exporttemplatefield_param/valueProcess.js delete mode 100644 entity/ExportTemplateField_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js delete mode 100644 entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_param/valueProcess.js delete mode 100644 entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/children/exporttemplateplaceofuse_param/valueProcess.js diff --git a/.aditoprj/ignoredScanServiceTasks.json b/.aditoprj/ignoredScanServiceTasks.json index 876fa8e7755..bad77c8c7df 100644 --- a/.aditoprj/ignoredScanServiceTasks.json +++ b/.aditoprj/ignoredScanServiceTasks.json @@ -1,11 +1,5 @@ { "entries": [ - { - "target": "aliasDefinition/Data_alias/Data_alias.aod", - "line": -1, - "description": "The table \"AB_LOGHISTORY\" has no primary key [65]", - "groupName": "nb-tasklist-warning" - }, { "target": "aliasDefinition/Data_alias/Data_alias.aod", "line": -1, @@ -41,6 +35,36 @@ "line": -1, "description": "There is no index for the column \"DEPLOYMENT_ID\" in the table \"DATABASECHANGELOG\" [59]", "groupName": "nb-tasklist-warning" + }, + { + "target": "neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod", + "line": -1, + "description": "Dead Reference \"#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT\" located in: PhaseFunnelChart/defaultGroupFields/#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT [67]", + "groupName": "nb-tasklist-warning" + }, + { + "target": "neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod", + "line": -1, + "description": "Dead Reference \"#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT\" located in: PhasePieChart/defaultGroupFields/#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT [67]", + "groupName": "nb-tasklist-warning" + }, + { + "target": "neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod", + "line": -1, + "description": "Dead Reference \"#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT\" located in: PhasePyramidChart/defaultGroupFields/#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT [67]", + "groupName": "nb-tasklist-warning" + }, + { + "target": "neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod", + "line": -1, + "description": "Dead Reference \"#EXTENSION.Month.Month#NUMBER\" located in: TreeTable/defaultGroupFields/#EXTENSION.Month.Month#NUMBER [67]", + "groupName": "nb-tasklist-warning" + }, + { + "target": "neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod", + "line": -1, + "description": "Dead Reference \"#EXTENSION.Month.Month#NUMBER\" located in: dynamicChart/defaultGroupFields/#EXTENSION.Month.Month#NUMBER [67]", + "groupName": "nb-tasklist-warning" } ] } \ No newline at end of file diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod index c2114b2939d..0fba3da6c0f 100644 --- a/entity/Campaign_entity/Campaign_entity.aod +++ b/entity/Campaign_entity/Campaign_entity.aod @@ -108,11 +108,6 @@ <entityConsumer> <name>CampaignSteps</name> <state>EDITABLE</state> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> @@ -121,6 +116,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> </entityConsumer> <entityField> <name>STATUS</name> @@ -132,17 +132,17 @@ </entityField> <entityConsumer> <name>KeywordStates</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/keywordstates/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Campaigns</name> @@ -179,11 +179,6 @@ <name>CampaignParticipants</name> <refreshParent v="false" /> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>CampaignParticipant_entity</entityName> - <fieldName>CampaignParticipantsProvider</fieldName> - </dependency> <children> <entityParameter> <name>CampaignStepId_param</name> @@ -195,6 +190,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignParticipant_entity</entityName> + <fieldName>CampaignParticipantsProvider</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Employee</name> @@ -203,26 +203,20 @@ <entityName>Employee_entity</entityName> <fieldName>Employees</fieldName> </dependency> - <children> - <entityParameter> - <name>OnlyActives_param</name> - <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/employee/children/onlyactives_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityConsumer> <entityConsumer> <name>CampaignCosts</name> - <dependency> - <name>dependency</name> - <entityName>CampaignCost_entity</entityName> - <fieldName>CampaignCosts</fieldName> - </dependency> <children> <entityParameter> <name>CampaignId_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaigncosts/children/campaignid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignCost_entity</entityName> + <fieldName>CampaignCosts</fieldName> + </dependency> </entityConsumer> <entityField> <name>COST</name> @@ -233,17 +227,17 @@ </entityField> <entityConsumer> <name>CampaignStepCosts</name> - <dependency> - <name>dependency</name> - <entityName>CampaignCost_entity</entityName> - <fieldName>StepCosts</fieldName> - </dependency> <children> <entityParameter> <name>CampaignId_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaignstepcosts/children/campaignid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignCost_entity</entityName> + <fieldName>StepCosts</fieldName> + </dependency> </entityConsumer> <entityField> <name>stepCount</name> @@ -258,11 +252,6 @@ <entityConsumer> <name>Activities</name> <title>Activities</title> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -273,6 +262,11 @@ <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -291,32 +285,32 @@ <entityConsumer> <name>CampaignCostsChart</name> <title>Charts</title> - <dependency> - <name>dependency</name> - <entityName>CampaignCostChart_entity</entityName> - <fieldName>CostChart</fieldName> - </dependency> <children> <entityParameter> <name>CampaignId_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaigncostschart/children/campaignid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignCostChart_entity</entityName> + <fieldName>CostChart</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>CampaignParticipantsChart</name> <title>Chart 2</title> - <dependency> - <name>dependency</name> - <entityName>CampaignParticipantChart_entity</entityName> - <fieldName>ParticipantChart</fieldName> - </dependency> <children> <entityParameter> <name>CampaignId_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaignparticipantschart/children/campaignid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignParticipantChart_entity</entityName> + <fieldName>ParticipantChart</fieldName> + </dependency> </entityConsumer> <entityField> <name>remainingRuntime</name> @@ -326,27 +320,22 @@ <entityConsumer> <name>CampaignStepsReadonly</name> <state>READONLY</state> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaignstepsreadonly/children/campaignid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <stateProcess>%aditoprj%/entity/Campaign_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Campaign_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -357,6 +346,11 @@ <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newCampaignStep</name> @@ -366,11 +360,6 @@ </entityActionField> <entityConsumer> <name>CampaignAnalysisConsumer</name> - <dependency> - <name>dependency</name> - <entityName>CampaignAnalysis_entity</entityName> - <fieldName>CampaignAnalysisProvider</fieldName> - </dependency> <children> <entityParameter> <name>CampaignId_param</name> @@ -386,14 +375,14 @@ <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaignanalysisconsumer/children/datestart_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MemberConsumer</name> <dependency> <name>dependency</name> - <entityName>Member_entity</entityName> - <fieldName>Links</fieldName> + <entityName>CampaignAnalysis_entity</entityName> + <fieldName>CampaignAnalysisProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MemberConsumer</name> <children> <entityParameter> <name>ObjectType_param</name> @@ -404,6 +393,11 @@ <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/memberconsumer/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Member_entity</entityName> + <fieldName>Links</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ShowOnlyCurrentUsersCampaigns_param</name> @@ -425,11 +419,6 @@ </entityActionField> <entityConsumer> <name>Documents</name> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentTable_param</name> @@ -440,15 +429,15 @@ <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>AttributeTree</name> <stateProcess>%aditoprj%/entity/Campaign_entity/entityfields/attributetree/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -459,6 +448,11 @@ <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>CURRENCY</name> @@ -470,21 +464,17 @@ </entityField> <entityConsumer> <name>KeywordCurrency</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/keywordcurrency/children/containername_param/valueProcess.js</valueProcess> </entityParameter> - <entityParameter> - <name>OnlyActives_param</name> - <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/keywordcurrency/children/onlyactives_param/valueProcess.js</valueProcess> - </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>CAMPAIGN_OBEJCTTYPE</name> @@ -529,11 +519,6 @@ </entityParameter> <entityConsumer> <name>Tasks</name> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -544,6 +529,11 @@ <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> </entityFields> <recordContainers> diff --git a/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod b/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod index fdf4e999952..39144723e62 100644 --- a/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod +++ b/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod @@ -40,6 +40,12 @@ <entityProvider> <name>ClassificationGradings</name> <documentation>%aditoprj%/entity/ClassificationGrading_entity/entityfields/classificationgradings/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ClassificationTypeId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>e0c6b86e-dcc1-43e1-9581-2b10c5c3d0cd</name> @@ -48,13 +54,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ClassificationTypeId_param</name> - <valueProcess>%aditoprj%/entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js b/entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js deleted file mode 100644 index b11d099579d..00000000000 --- a/entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.CLASSIFICATIONTYPEID")); \ No newline at end of file diff --git a/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod b/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod index 3e77638a51c..ecc59747094 100644 --- a/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod +++ b/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod @@ -29,11 +29,6 @@ </entityField> <entityConsumer> <name>ContextDocumentTemplatePlaceOfUse</name> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>ContextTemplatePlaceOfUse</fieldName> - </dependency> <children> <entityParameter> <name>InvertBlacklist_param</name> @@ -44,10 +39,21 @@ <valueProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/blacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>ContextTemplatePlaceOfUse</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>DocumentTemplatePlaceOfUse</name> <documentation>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/documentation.adoc</documentation> + <children> + <entityParameter> + <name>DocumentTemplatePlaceOfUse_param</name> + <documentation>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/documentation.adoc</documentation> + </entityParameter> + </children> <dependencies> <entityDependency> <name>bc05b556-ecca-478c-9a92-b77e4d98d6f3</name> @@ -56,17 +62,9 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>DocumentTemplatePlaceOfUse_param</name> - <valueProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/valueProcess.js</valueProcess> - <documentation>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/documentation.adoc</documentation> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>DocumentTemplatePlaceOfUse_param</name> - <valueProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> <entityProvider> diff --git a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/valueProcess.js b/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/valueProcess.js deleted file mode 100644 index f786c8c7b18..00000000000 --- a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("system.vars"); - -result.string(vars.get("$field.DOCUMENTTEMPLATEID")); \ No newline at end of file diff --git a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse_param/valueProcess.js b/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse_param/valueProcess.js deleted file mode 100644 index f786c8c7b18..00000000000 --- a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("system.vars"); - -result.string(vars.get("$field.DOCUMENTTEMPLATEID")); \ No newline at end of file diff --git a/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod b/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod index e010ab9f6c1..ae07c537a21 100644 --- a/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod +++ b/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod @@ -41,16 +41,9 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExportTemplateField_param</name> - <valueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ExportTemplateField_param</name> - <valueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/exporttemplatefield_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> <entityField> diff --git a/entity/ExportTemplateField_entity/entityfields/exporttemplatefield_param/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/exporttemplatefield_param/valueProcess.js deleted file mode 100644 index 3cbc4900564..00000000000 --- a/entity/ExportTemplateField_entity/entityfields/exporttemplatefield_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.EXPORTTEMPLATEID")); \ No newline at end of file diff --git a/entity/ExportTemplateField_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js deleted file mode 100644 index 3cbc4900564..00000000000 --- a/entity/ExportTemplateField_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.EXPORTTEMPLATEID")); \ No newline at end of file diff --git a/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod b/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod index 0dc5e1fc3a6..91964c2b417 100644 --- a/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod +++ b/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod @@ -32,11 +32,6 @@ </entityField> <entityConsumer> <name>ContextExportTemplatePlaceOfUse</name> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>ContextTemplatePlaceOfUse</fieldName> - </dependency> <children> <entityParameter> <name>InvertBlacklist_param</name> @@ -47,15 +42,25 @@ <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/contextexporttemplateplaceofuse/children/blacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>ContextTemplatePlaceOfUse</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ExportTemplatePlaceOfUse_param</name> - <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> <entityProvider> <name>ExportTemplatePlaceOfUser</name> <documentation>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ExportTemplatePlaceOfUse_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>c60a238a-51f0-4538-8c53-6921481ddd4c</name> @@ -64,13 +69,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExportTemplatePlaceOfUse_param</name> - <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/children/exporttemplateplaceofuse_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_param/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_param/valueProcess.js deleted file mode 100644 index 3cbc4900564..00000000000 --- a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.EXPORTTEMPLATEID")); \ No newline at end of file diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/children/exporttemplateplaceofuse_param/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/children/exporttemplateplaceofuse_param/valueProcess.js deleted file mode 100644 index 3cbc4900564..00000000000 --- a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/children/exporttemplateplaceofuse_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.EXPORTTEMPLATEID")); \ No newline at end of file diff --git a/entity/Product_entity/recordcontainers/db/onDBUpdate.js b/entity/Product_entity/recordcontainers/db/onDBUpdate.js index 01a6d02f7e5..2e53f3cad9a 100644 --- a/entity/Product_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/Product_entity/recordcontainers/db/onDBUpdate.js @@ -1,14 +1,3 @@ import("Workflow_lib"); -import("system.vars"); -import("Product_lib"); -import("Entity_lib"); - -// TODO: this is a workaround for missing possibility to react on changes of fields not connected to record Contqainer #1030023 -FieldChanges.assimilateChangeAndDispose("$field.IMAGE", function(state, value){ - if (state == FieldChanges.STATE_CHANGED()) - ProductUtils.setImage(vars.get("$local.uid"), value); - else - ProductUtils.removeImage(vars.get("$local.uid")); -}); WorkflowSignalSender.updated(); \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/contentTitleProcess.js b/entity/SalesprojectMilestone_entity/contentTitleProcess.js index 474d304708c..27695c3f691 100644 --- a/entity/SalesprojectMilestone_entity/contentTitleProcess.js +++ b/entity/SalesprojectMilestone_entity/contentTitleProcess.js @@ -2,9 +2,9 @@ import("system.vars"); import("system.translate"); import("system.result"); -if (vars.exists("$field.TYPE") && vars.get("$field.TYPE")) +if (vars.get("$field.KIND")) { - result.string(translate.text("Milestones") + " " + translate.text(vars.get("$field.TYPE"))); + result.string(translate.text("Milestones") + " " + translate.text(vars.get("$field.KIND"))); } else result.string(translate.text("Milestones")); \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js index 1b532aec630..ff40ad745a0 100644 --- a/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js +++ b/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.TYPE")); \ No newline at end of file +result.string(vars.get("$field.KIND")); \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/entityfields/milestonevalue/titleProcess.js b/entity/SalesprojectMilestone_entity/entityfields/milestonevalue/titleProcess.js index f02879713e4..38663022e20 100644 --- a/entity/SalesprojectMilestone_entity/entityfields/milestonevalue/titleProcess.js +++ b/entity/SalesprojectMilestone_entity/entityfields/milestonevalue/titleProcess.js @@ -2,9 +2,9 @@ import("system.vars"); import("system.translate"); import("system.result"); -if (vars.exists("$field.TYPE") && vars.get("$field.TYPE")) +if (vars.get("$field.KIND")) { - result.string(translate.text(vars.get("$field.TYPE"))); + result.string(translate.text(vars.get("$field.KIND"))); } else result.string(translate.text("Milestones")); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js index 341994efdf2..308e821efaa 100644 --- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js @@ -25,7 +25,7 @@ else { stmt.select([groupedList , KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectPhase(),"AB_KEYWORD_ENTRY.KEYID"), "count(*)", "count(*)"]) if (order != null) - stmt.orderBy("AB_KEYWORD_ENTRY.SORTING, " +order); + stmt.orderBy("AB_KEYWORD_ENTRY.SORTING, " + order); } result.string(stmt.toString()); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 46ad514d97d..375e6f26967 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -7584,6 +7584,9 @@ <entry> <key>Verantwortlicher</key> </entry> + <entry> + <key>The team must have at least one owner</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 2ebdace2b72..9efeb9f1343 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -74,6 +74,10 @@ <key>Favoritegroup</key> <value>Favoritengruppe</value> </entry> + <entry> + <key>The team must have at least one owner</key> + <value>Das Team muss mindestens einen Besitzer haben</value> + </entry> <entry> <key>Data imported. Contact not found.</key> <value>Daten importiert. Keine weiteren Personendaten gefunden.</value> @@ -8377,7 +8381,6 @@ Bitte Datumseingabe prüfen</value> </entry> <entry> <key>Subcategory</key> - <value>Unterkategorie</value> </entry> <entry> <key>The radius has to be at least %0.</key> @@ -9996,9 +9999,6 @@ Bitte Datumseingabe prüfen</value> <entry> <key>My campaigns</key> </entry> - <entry> - <key>Subcategory</key> - </entry> <entry> <key>Campaign costs</key> </entry> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index b1927645977..e27607261ac 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -7665,6 +7665,9 @@ <entry> <key>Verantwortlicher</key> </entry> + <entry> + <key>The team must have at least one owner</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> -- GitLab From e7ae421b4cacee442270a9047ff43c65bb8fc858 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 3 Dec 2020 17:30:04 +0100 Subject: [PATCH 160/184] Knowledgemanagement db indexes added --- .../struct/create_KnowledgeRoles.xml | 5 ++++- .../struct/knowledgeDiscussion_table.xml | 3 +++ .../Knowledgemanagement/struct/knowledgeLink_table.xml | 5 ++++- .../struct/knowledgeTagLink_table.xml | 6 ++++++ .liquibase/Data_alias/changelog.xml | 2 +- aliasDefinition/Data_alias/Data_alias.aod | 10 +++++----- 6 files changed, 23 insertions(+), 8 deletions(-) diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/create_KnowledgeRoles.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/create_KnowledgeRoles.xml index 7a44ef7aefa..1987399adb2 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/create_KnowledgeRoles.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/create_KnowledgeRoles.xml @@ -6,8 +6,11 @@ <column name="KNOWLEDGEROLESID" type="CHAR(36)"> <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGEROLES_KNOWLEDGEROLESID"/> </column> - <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"></column> + <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"/> <column name="ROLENAME" type="VARCHAR(100)"/> </createTable> + <createIndex tableName="KNOWLEDGEROLES" indexName="IDX_KNOWLEDGEROLES_KM_ID"> + <column name="KNOWLEDGEMANAGEMENT_ID"/> + </createIndex> </changeSet> </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeDiscussion_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeDiscussion_table.xml index c4b9698f688..0f3de5603a8 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeDiscussion_table.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeDiscussion_table.xml @@ -16,5 +16,8 @@ <column name="DISCUSSIONTEXT" type="LONGTEXT"/> <column name="PARENTENTRY" type="CHAR(36)"/> </createTable> + <createIndex tableName="KNOWLEDGEDISCUSSION" indexName="IDX_KNOWLEDGEDISCUSSION_KM_ID"> + <column name="KNOWLEDGEMANAGEMENT_ID"/> + </createIndex> </changeSet> </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeLink_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeLink_table.xml index cdf69919e23..f600fb7e878 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeLink_table.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeLink_table.xml @@ -1,7 +1,7 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> - <changeSet author="e.pollinger" id="1261195c-ffc1-4abb-a31f-0732823ee0cb"> + <changeSet author="e.pollinger" id="bee4e42e-9103-4464-849e-59d8b11c542e"> <createTable tableName="KNOWLEDGELINK"> <column name="KNOWLEDGELINKID" type="CHAR(36)"> <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGELINK_KNOWLEDGELINKID"/> @@ -14,5 +14,8 @@ <column name="ROW_ID" type="CHAR(36)"/> <column name="OBJECT_TYPE" type="NVARCHAR(100)"/> </createTable> + <createIndex tableName="KNOWLEDGELINK" indexName="IDX_KNOWLEDGELINK_KM_ID"> + <column name="KNOWLEDGEMANAGEMENT_ID"/> + </createIndex> </changeSet> </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagLink_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagLink_table.xml index a6b9b631d5d..ba1e74c9fcb 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagLink_table.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagLink_table.xml @@ -13,5 +13,11 @@ <column name="USER_NEW" type="nvarchar(50)"/> <column name="USER_EDIT" type="nvarchar(50)"/> </createTable> + <createIndex tableName="KNOWLEDGETAGLINK" indexName="IDX_KNOWLEDGETAGLINK_TAG_ID"> + <column name="KNOWLEDGETAG_ID"/> + </createIndex> + <createIndex tableName="KNOWLEDGETAGLINK" indexName="IDX_KNOWLEDGETAGLINK_KM_ID"> + <column name="KNOWLEDGEMANAGEMENT_ID"/> + </createIndex> </changeSet> </databaseChangeLog> diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index 3f25ca1dbb1..06e1b534695 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -20,5 +20,5 @@ <include relativeToChangelogFile="true" file="basic/2020.2.2/changelog.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> - <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>--> + <include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/> </databaseChangeLog> \ No newline at end of file diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index ba9127b5445..db98769eac6 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -15876,7 +15876,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <documentation></documentation> <title></title> <description></description> @@ -15994,7 +15994,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <documentation></documentation> <title></title> <description></description> @@ -16328,7 +16328,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <documentation></documentation> <title></title> <description></description> @@ -16688,7 +16688,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <documentation></documentation> <title></title> <description></description> @@ -16730,7 +16730,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <documentation></documentation> <title></title> <description></description> -- GitLab From 1957ada18353ad057d80f0eaf6428f064b928c50 Mon Sep 17 00:00:00 2001 From: Erik Pollinger <e.pollinger@adito.de> Date: Fri, 4 Dec 2020 09:28:54 +0000 Subject: [PATCH 161/184] Fixed "Dead References" ScanService messages Fixed Index query --- .../KnowledgeDiscussion_entity.aod | 12 ++- .../documentation.adoc | 3 + .../byknowledgeid/documentation.adoc | 3 + .../KnowledgeLink_entity.aod | 33 +++---- .../KnowledgeLink_entity/documentation.adoc | 1 + .../byknowledgeid/documentation.adoc | 1 + .../KnowledgeManagementTagList_entity.aod | 2 + .../documentation.adoc | 1 + .../completelist/documentation.adoc | 1 + .../KnowledgeManagementTags_entity.aod | 14 +-- .../documentation.adoc | 5 + .../documentation.adoc | 3 + .../KnowledgeManagement_entity.aod | 96 +++++++++---------- .../documentation.adoc | 3 + .../entityfields/provider/documentation.adoc | 1 + .../indexsearchknowledgebase/query.js | 8 +- .../KnowledgeRole_entity.aod | 12 ++- .../KnowledgeRole_entity/documentation.adoc | 5 + .../knowledgerole/documentation.adoc | 2 + 19 files changed, 115 insertions(+), 91 deletions(-) create mode 100644 entity/KnowledgeDiscussion_entity/documentation.adoc create mode 100644 entity/KnowledgeDiscussion_entity/entityfields/byknowledgeid/documentation.adoc create mode 100644 entity/KnowledgeLink_entity/documentation.adoc create mode 100644 entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc create mode 100644 entity/KnowledgeManagementTagList_entity/documentation.adoc create mode 100644 entity/KnowledgeManagementTagList_entity/entityfields/completelist/documentation.adoc create mode 100644 entity/KnowledgeManagementTags_entity/documentation.adoc create mode 100644 entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc create mode 100644 entity/KnowledgeManagement_entity/documentation.adoc create mode 100644 entity/KnowledgeManagement_entity/entityfields/provider/documentation.adoc create mode 100644 entity/KnowledgeRole_entity/documentation.adoc create mode 100644 entity/KnowledgeRole_entity/entityfields/knowledgerole/documentation.adoc diff --git a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod index 0b70f5dfc1e..79d764acc09 100644 --- a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod +++ b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>KnowledgeDiscussion_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeDiscussion_entity/documentation.adoc</documentation> <title>Discussion</title> <grantCreateProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantCreateProcess.js</grantCreateProcess> <grantUpdateProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantUpdateProcess.js</grantUpdateProcess> @@ -61,6 +62,11 @@ </entityField> <entityConsumer> <name>StatusKeyword</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -71,14 +77,10 @@ <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/onlyactives_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityProvider> <name>ByKnowledgeId</name> + <documentation>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/byknowledgeid/documentation.adoc</documentation> <dependencies> <entityDependency> <name>fbacb136-2690-495a-82c5-b6ab1576d3f9</name> diff --git a/entity/KnowledgeDiscussion_entity/documentation.adoc b/entity/KnowledgeDiscussion_entity/documentation.adoc new file mode 100644 index 00000000000..d2fa0a728ff --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/documentation.adoc @@ -0,0 +1,3 @@ +This entity manages the discussion "forum" which is linked to a knowledge entry +It uses a JDito recordcontainer to build the tree. +The tree is always sorted by latest action. So the dicussion where an answer was added last, is put on top \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/byknowledgeid/documentation.adoc b/entity/KnowledgeDiscussion_entity/entityfields/byknowledgeid/documentation.adoc new file mode 100644 index 00000000000..f57edf8c453 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/byknowledgeid/documentation.adoc @@ -0,0 +1,3 @@ +This provider needs the id of a knowledge entry to deliver all discussions of it + +Always fill KnowledgeId_param \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod b/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod index 81ffc1da3d8..93ad79b6566 100644 --- a/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod +++ b/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>KnowledgeLink_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeLink_entity/documentation.adoc</documentation> <title>Link</title> <iconIdProcess>%aditoprj%/entity/KnowledgeLink_entity/iconIdProcess.js</iconIdProcess> <titlePlural>Links</titlePlural> @@ -57,17 +58,17 @@ </entityConsumer> <entityConsumer> <name>Objects</name> + <dependency> + <name>dependency</name> + <entityName>ObjectProxy_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> <children> <entityParameter> <name>Entity_param</name> <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/objects/children/entity_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>ObjectProxy_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> </entityConsumer> <entityParameter> <name>KnowledgeManagementId_param</name> @@ -77,16 +78,7 @@ <name>ByKnowledgeId</name> <targetContextField>OBJECT_TYPE</targetContextField> <targetIdField>ROW_ID</targetIdField> - <children> - <entityParameter> - <name>ObjectType_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>RowId_param</name> - <expose v="false" /> - </entityParameter> - </children> + <documentation>%aditoprj%/entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc</documentation> <dependencies> <entityDependency> <name>c3ed10c1-db55-4e55-9c18-2b8d400df033</name> @@ -95,14 +87,13 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - </entityProvider> - <entityProvider> - <name>ByLink</name> - <targetContextField>OBJECT_TYPE</targetContextField> - <targetIdField>ROW_ID</targetIdField> <children> <entityParameter> - <name>KnowledgeManagementId_param</name> + <name>ObjectType_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>RowId_param</name> <expose v="false" /> </entityParameter> </children> diff --git a/entity/KnowledgeLink_entity/documentation.adoc b/entity/KnowledgeLink_entity/documentation.adoc new file mode 100644 index 00000000000..32310ca526d --- /dev/null +++ b/entity/KnowledgeLink_entity/documentation.adoc @@ -0,0 +1 @@ +This entity is used to manage links to other objects, that are read from ObjectProxy_entity via a consumer \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc b/entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc new file mode 100644 index 00000000000..94bf48727d7 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc @@ -0,0 +1 @@ +Delivers all links to other objects that are linked to a knowledge entry \ No newline at end of file diff --git a/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod b/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod index c7b24df7f14..3a8e46df4e9 100644 --- a/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod +++ b/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>KnowledgeManagementTagList_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeManagementTagList_entity/documentation.adoc</documentation> <contentTitleProcess>%aditoprj%/entity/KnowledgeManagementTagList_entity/contentTitleProcess.js</contentTitleProcess> <recordContainer>JDito_TagList</recordContainer> <entityFields> @@ -16,6 +17,7 @@ </entityField> <entityProvider> <name>CompleteList</name> + <documentation>%aditoprj%/entity/KnowledgeManagementTagList_entity/entityfields/completelist/documentation.adoc</documentation> <dependencies> <entityDependency> <name>85925baa-5edc-4908-804e-f7ec4c5a2a0c</name> diff --git a/entity/KnowledgeManagementTagList_entity/documentation.adoc b/entity/KnowledgeManagementTagList_entity/documentation.adoc new file mode 100644 index 00000000000..d2eef458aba --- /dev/null +++ b/entity/KnowledgeManagementTagList_entity/documentation.adoc @@ -0,0 +1 @@ +The entity provides a complete list of all existing tags and is consumed where tags can be chosen \ No newline at end of file diff --git a/entity/KnowledgeManagementTagList_entity/entityfields/completelist/documentation.adoc b/entity/KnowledgeManagementTagList_entity/entityfields/completelist/documentation.adoc new file mode 100644 index 00000000000..d26c90a04d7 --- /dev/null +++ b/entity/KnowledgeManagementTagList_entity/entityfields/completelist/documentation.adoc @@ -0,0 +1 @@ +provides a complete list of all possible tags, so they can be chosen when you add tags \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod index 10b75658ad1..14f18612c20 100644 --- a/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod +++ b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>KnowledgeManagementTags_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeManagementTags_entity/documentation.adoc</documentation> <recordContainer>JDito_KnowledgeManagementKeywords</recordContainer> <entityFields> <entityProvider> @@ -13,12 +14,7 @@ </entityParameter> <entityProvider> <name>ByKnowledgeManagementId</name> - <children> - <entityParameter> - <name>KnowledgeManagementId_param</name> - <mandatory v="true" /> - </entityParameter> - </children> + <documentation>%aditoprj%/entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc</documentation> <dependencies> <entityDependency> <name>8d86a61b-0fe3-44c4-a512-e044c990fded</name> @@ -27,6 +23,12 @@ <isConsumer v="false" /> </entityDependency> </dependencies> + <children> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <mandatory v="true" /> + </entityParameter> + </children> </entityProvider> <entityField> <name>TAG</name> diff --git a/entity/KnowledgeManagementTags_entity/documentation.adoc b/entity/KnowledgeManagementTags_entity/documentation.adoc new file mode 100644 index 00000000000..ca20973196d --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/documentation.adoc @@ -0,0 +1,5 @@ +This entity represents the tags of a knowledge entry and handles adding, editing and deleting of linked tags + +If a tag, which doesn't exist yet is entered, the tag is created and then added to the knowledge entry + +Always fill KnowledgeManagementId_param \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc b/entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc new file mode 100644 index 00000000000..76bdf005461 --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc @@ -0,0 +1,3 @@ +This provider delivers the list of tags of a knowledge entry + +KnowledgeManagementId_param has to be filled, otherwise it won't work \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod index f52fc433f41..ca44262effc 100644 --- a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod +++ b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>KnowledgeManagement_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeManagement_entity/documentation.adoc</documentation> <icon>VAADIN:ACADEMY_CAP</icon> <title>Knowledge</title> <grantUpdateProcess>%aditoprj%/entity/KnowledgeManagement_entity/grantUpdateProcess.js</grantUpdateProcess> @@ -16,13 +17,6 @@ <entityFields> <entityProvider> <name>#PROVIDER</name> - <dependencies> - <entityDependency> - <name>40cf66ca-421f-47f6-8ecc-8360657e0640</name> - <entityName>KnowledgeNewsFeed_entity</entityName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityField> <name>KNOWLEDGEMANAGEMENTID</name> @@ -108,35 +102,36 @@ <refreshParent v="true" /> <state>EDITABLE</state> <onValidation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/onValidation.js</onValidation> + <dependency> + <name>dependency</name> + <entityName>KnowledgeManagementTags_entity</entityName> + <fieldName>ByKnowledgeManagementId</fieldName> + </dependency> <children> <entityParameter> <name>KnowledgeManagementId_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KnowledgeManagementTags_entity</entityName> - <fieldName>ByKnowledgeManagementId</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>DiscussionsByKnowledgeId</name> <refreshParent v="true" /> + <dependency> + <name>dependency</name> + <entityName>KnowledgeDiscussion_entity</entityName> + <fieldName>ByKnowledgeId</fieldName> + </dependency> <children> <entityParameter> <name>KnowledgeId_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/discussionsbyknowledgeid/children/knowledgeid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KnowledgeDiscussion_entity</entityName> - <fieldName>ByKnowledgeId</fieldName> - </dependency> </entityConsumer> <entityProvider> <name>Provider</name> + <documentation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/provider/documentation.adoc</documentation> </entityProvider> <entityConsumer> <name>PersonContacts</name> @@ -148,37 +143,42 @@ </entityConsumer> <entityConsumer> <name>KeywordKnowledgeType</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/keywordknowledgetype/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>KeywordPublish</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>KeywordPublish</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/keywordpublish/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityField> <name>indexTag</name> </entityField> <entityConsumer> <name>LinkedDocuments</name> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> <children> <entityParameter> <name>AssignmentTable_param</name> @@ -189,11 +189,6 @@ <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> </entityConsumer> <entityActionField> <name>openEntryAsMail</name> @@ -206,17 +201,17 @@ <entityConsumer> <name>LinksByKnowledgeId</name> <refreshParent v="true" /> + <dependency> + <name>dependency</name> + <entityName>KnowledgeLink_entity</entityName> + <fieldName>ByKnowledgeId</fieldName> + </dependency> <children> <entityParameter> <name>KnowledgeManagementId_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linksbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KnowledgeLink_entity</entityName> - <fieldName>ByKnowledgeId</fieldName> - </dependency> </entityConsumer> <entityField> <name>LastChange</name> @@ -225,17 +220,17 @@ </entityField> <entityConsumer> <name>LogHistories</name> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> </entityConsumer> <entityActionField> <name>exportHTML_action</name> @@ -277,6 +272,11 @@ <name>KnowledgeRoles</name> <stateProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/onValidation.js</onValidation> + <dependency> + <name>dependency</name> + <entityName>KnowledgeRole_entity</entityName> + <fieldName>KnowledgeRole</fieldName> + </dependency> <children> <entityParameter> <name>KnowledgeManagement_param</name> @@ -288,14 +288,14 @@ <expose v="true" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KnowledgeRole_entity</entityName> - <fieldName>KnowledgeRole</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Tasks</name> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -310,11 +310,6 @@ <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> </entityConsumer> <entityField> <name>RESPONSIBLE_CONTACT_ID</name> @@ -328,6 +323,7 @@ <name>PUBLISH</name> <title>Publishing level</title> <consumer>KeywordPublish</consumer> + <state>INVISIBLE</state> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/publish/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/publish/displayValueProcess.js</displayValueProcess> </entityField> diff --git a/entity/KnowledgeManagement_entity/documentation.adoc b/entity/KnowledgeManagement_entity/documentation.adoc new file mode 100644 index 00000000000..db9002b6103 --- /dev/null +++ b/entity/KnowledgeManagement_entity/documentation.adoc @@ -0,0 +1,3 @@ +The main entity of the knowledgemanagement + +manages the content and consumes discussions, links, log history, documents \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/provider/documentation.adoc b/entity/KnowledgeManagement_entity/entityfields/provider/documentation.adoc new file mode 100644 index 00000000000..d72ef5f6730 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/provider/documentation.adoc @@ -0,0 +1 @@ +This provider is used by dashlets which set isDashlet_param \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js index b13c3cdc15d..29d30e242c2 100644 --- a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js +++ b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js @@ -12,13 +12,13 @@ var sql = newSelect([ .join("KNOWLEDGETAGLINK", "KNOWLEDGEMANAGEMENTID = KNOWLEDGEMANAGEMENT_ID") .join("KNOWLEDGETAG", "KNOWLEDGETAGID = KNOWLEDGETAG_ID") .where("KNOWLEDGETAG.TAG", "News") - .and("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = km1.KNOWLEDGEMANAGEMENTID")) + .and("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = km1.KNOWLEDGEMANAGEMENTID"), SqlBuilder.EXISTS()) .thenString("News") - .when(newWhere("GITPATH is null").and("TYPE = 1")) + .when(newWhere("TYPE = '1'")) .thenString("Knowledgebase") - .when(newWhere("GITPATH is not null").and("TYPE = 2")) + .when(newWhere("TYPE = '2'")) .thenString("Editorial") - .when("TYPE = 3") + .when(newWhere("TYPE = '3'")) .thenString("Business process"), "''" ]).from("KNOWLEDGEMANAGEMENT", "km1") diff --git a/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod b/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod index eb1b5a2d876..427a175e7b5 100644 --- a/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod +++ b/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> <name>KnowledgeRole_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeRole_entity/documentation.adoc</documentation> <title>Knowledge Role</title> <recordContainer>db</recordContainer> <entityFields> @@ -16,21 +17,22 @@ </entityField> <entityConsumer> <name>NewsRole</name> + <dependency> + <name>dependency</name> + <entityName>Role_entity</entityName> + <fieldName>FilterRolesWithoutPermission</fieldName> + </dependency> <children> <entityParameter> <name>ExcludeRoles_param</name> <valueProcess>%aditoprj%/entity/KnowledgeRole_entity/entityfields/newsrole/children/excluderoles_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Role_entity</entityName> - <fieldName>FilterRolesWithoutPermission</fieldName> - </dependency> </entityConsumer> <entityProvider> <name>KnowledgeRole</name> <lookupIdfield>ROLES</lookupIdfield> + <documentation>%aditoprj%/entity/KnowledgeRole_entity/entityfields/knowledgerole/documentation.adoc</documentation> <titlePlural>KnowledgeRoles</titlePlural> <recordContainer>db</recordContainer> <dependencies> diff --git a/entity/KnowledgeRole_entity/documentation.adoc b/entity/KnowledgeRole_entity/documentation.adoc new file mode 100644 index 00000000000..6b291538809 --- /dev/null +++ b/entity/KnowledgeRole_entity/documentation.adoc @@ -0,0 +1,5 @@ +This entity handles the roles, that are linked to a knowledge entry +The roles are used to create notifications and newsfeed entries for specific roles when the switches are set + +KnowledgeManagement_param needs the id of a knowledge entry +PublishLevelRoles_param takes an array of role names which get excluded from the role list \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/entityfields/knowledgerole/documentation.adoc b/entity/KnowledgeRole_entity/entityfields/knowledgerole/documentation.adoc new file mode 100644 index 00000000000..781e59c7597 --- /dev/null +++ b/entity/KnowledgeRole_entity/entityfields/knowledgerole/documentation.adoc @@ -0,0 +1,2 @@ +KnowledgeManagement_param needs the id of a knowledge entry +PublishLevelRoles_param takes an array of role names which get excluded from the role list \ No newline at end of file -- GitLab From 6504e6ac18c5b1d668e5d516bc89e11e952a3980 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 4 Dec 2020 10:23:01 +0100 Subject: [PATCH 162/184] #1069751 ExportTemplate delete relations in onDBDelete --- .../ExportTemplate_entity.aod | 35 ++++++++++--------- .../recordcontainers/db/onDBDelete.js | 8 +++++ .../ExportTemplateFieldList_view.aod | 4 +-- .../ExportTemplatePlaceOfUseList_view.aod | 4 +-- .../ExportTemplatePreview_view.aod | 2 ++ 5 files changed, 32 insertions(+), 21 deletions(-) create mode 100644 entity/ExportTemplate_entity/recordcontainers/db/onDBDelete.js diff --git a/entity/ExportTemplate_entity/ExportTemplate_entity.aod b/entity/ExportTemplate_entity/ExportTemplate_entity.aod index a38388bbd5d..473d4f9dbd3 100644 --- a/entity/ExportTemplate_entity/ExportTemplate_entity.aod +++ b/entity/ExportTemplate_entity/ExportTemplate_entity.aod @@ -73,11 +73,6 @@ <entityConsumer> <name>ExportTemplateFields</name> <state>EDITABLE</state> - <dependency> - <name>dependency</name> - <entityName>ExportTemplateField_entity</entityName> - <fieldName>ExportTemplateFields</fieldName> - </dependency> <children> <entityParameter> <name>ExportTemplateField_param</name> @@ -86,6 +81,11 @@ <documentation>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/documentation.adoc</documentation> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ExportTemplateField_entity</entityName> + <fieldName>ExportTemplateFields</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ExportTemplateIDs_param</name> @@ -94,11 +94,6 @@ </entityParameter> <entityConsumer> <name>ExportTemplateplaceOfUseCon</name> - <dependency> - <name>dependency</name> - <entityName>ExportTemplatePlaceOfUse_entity</entityName> - <fieldName>ExportTemplatePlaceOfUser</fieldName> - </dependency> <children> <entityParameter> <name>ExportTemplatePlaceOfUse_param</name> @@ -106,11 +101,23 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ExportTemplatePlaceOfUse_entity</entityName> + <fieldName>ExportTemplatePlaceOfUser</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>ExportTemplateIDs</name> <documentation>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplateids/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>ExportTemplateIDs_param</name> + <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplateids/children/exporttemplateids_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>1b692618-b800-47ae-a48c-3d4164d68401</name> @@ -119,13 +126,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExportTemplateIDs_param</name> - <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplateids/children/exporttemplateids_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>comingFrom_param</name> @@ -160,6 +160,7 @@ <alias>Data_alias</alias> <isReadOnly v="false" /> <conditionProcess>%aditoprj%/entity/ExportTemplate_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <onDBDelete>%aditoprj%/entity/ExportTemplate_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> <linkInformation> <name>ce410f40-846b-43e6-9c30-150393cee43d</name> diff --git a/entity/ExportTemplate_entity/recordcontainers/db/onDBDelete.js b/entity/ExportTemplate_entity/recordcontainers/db/onDBDelete.js new file mode 100644 index 00000000000..571ed49a75e --- /dev/null +++ b/entity/ExportTemplate_entity/recordcontainers/db/onDBDelete.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("Sql_lib"); + +var exportTemplateId = vars.get("$local.uid"); + +newWhere("EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATE_ID", exportTemplateId).deleteData(); +newWhere("EXPORTTEMPLATESELECTION.EXPORTTEMPLATE_ID", exportTemplateId).deleteData(); +newWhere("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", exportTemplateId).deleteData(); \ No newline at end of file diff --git a/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod b/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod index c76b3911ada..c7dfb01e23a 100644 --- a/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod +++ b/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod @@ -5,9 +5,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> <layout> - <boxLayout> + <noneLayout> <name>layout</name> - </boxLayout> + </noneLayout> </layout> <children> <titledListViewTemplate> diff --git a/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod b/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod index 45306dbb723..ca711428be6 100644 --- a/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod +++ b/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod @@ -3,9 +3,9 @@ <name>ExportTemplatePlaceOfUseList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <noneLayout> <name>layout</name> - </boxLayout> + </noneLayout> </layout> <children> <titledListViewTemplate> diff --git a/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod b/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod index 06bcfe9edfd..79713725747 100644 --- a/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod +++ b/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod @@ -24,6 +24,8 @@ </favoriteViewTemplate> <genericViewTemplate> <name>generic</name> + <showDrawer v="true" /> + <drawerCaption>Details</drawerCaption> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> -- GitLab From e1bf9a46f2509342bcda907fec24cb20b1b5dd08 Mon Sep 17 00:00:00 2001 From: Simon Leipold <s.leipold@adito.de> Date: Fri, 4 Dec 2020 11:23:28 +0100 Subject: [PATCH 163/184] upgrade nach merge von 2020.2 --- neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod | 2 +- neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod | 2 +- neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod | 2 +- neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod | 2 +- neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod | 2 +- neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod | 2 +- .../MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod | 2 +- neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod | 2 +- .../MSTeamsActivityImportEdit_view.aod | 2 +- neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod | 2 +- neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod | 2 +- .../MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod | 2 +- neonView/MemberLookup_view/MemberLookup_view.aod | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod b/neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod index 7d6034293b0..716e6056c13 100644 --- a/neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod +++ b/neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepMembers_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod b/neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod index 360a058b7da..c27de99f559 100644 --- a/neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod +++ b/neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MSTTeamChannelEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod b/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod index 37d7d19c886..9474c7ad093 100644 --- a/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod +++ b/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MSTTeamEditMembers_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod index 867c7a8fa07..9d1ffde69b9 100644 --- a/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod +++ b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MSTTeamEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod b/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod index acb23701eb4..7afbe62185e 100644 --- a/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod +++ b/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MSTTeamLinkEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod b/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod index 55a8b3dda3b..168947cdb47 100644 --- a/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod +++ b/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MSTTeamMemberList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod index ec552dc14c2..5fe30d6a86a 100644 --- a/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod +++ b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MSTTeamMemberMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod b/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod index d543b83e6b1..fbc295e90e4 100644 --- a/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod +++ b/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MSTTeamPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod b/neonView/MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod index a2f72666621..c089822821e 100644 --- a/neonView/MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod +++ b/neonView/MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MSTeamsActivityImportEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>NORMAL</size> diff --git a/neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod b/neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod index 514bf2098ee..253fe017d8f 100644 --- a/neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod +++ b/neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MSTeamsChannelList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod b/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod index c13a80654c3..017eb32c7d6 100644 --- a/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod +++ b/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MSTeamsDocumentEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod b/neonView/MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod index c9cae5e66e2..469ba0bec31 100644 --- a/neonView/MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod +++ b/neonView/MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MSTeamsMessageFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/MemberLookup_view/MemberLookup_view.aod b/neonView/MemberLookup_view/MemberLookup_view.aod index 705d1bde99d..03833892bc2 100644 --- a/neonView/MemberLookup_view/MemberLookup_view.aod +++ b/neonView/MemberLookup_view/MemberLookup_view.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MemberLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> -- GitLab From 7319421d88c9ba01f8757bdec2bdc6402678ec8e Mon Sep 17 00:00:00 2001 From: Sebastian Pongratz <s.pongratz@adito.de> Date: Tue, 8 Dec 2020 07:35:33 +0000 Subject: [PATCH 164/184] Bugfix leadimport --- .../Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml | 6 ++++++ .liquibase/Data_alias/basic/2020.2.2/changelog.xml | 1 + .../recordcontainers/dbrecordcontainer/onDBUpdate.js | 4 +++- process/Leadimport_lib/process.js | 1 + 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml diff --git a/.liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml b/.liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml new file mode 100644 index 00000000000..9f11810890c --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml @@ -0,0 +1,6 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="d.nowack" id="bcd6cb02-d074-444f-a307-34973b3dd4dn"> + <modifyDataType tableName="LEAD" columnName="STATUS" newDataType="VARCHAR(36)"/> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml index f1519ab694e..302d930f6b0 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml @@ -5,6 +5,7 @@ <include relativeToChangelogFile="true" file="Knowledgemanagement/changelog_knowledgeManagement.xml"/> <include relativeToChangelogFile="true" file="insert_employeeCountAttribute.xml"/> <include relativeToChangelogFile="true" file="alter_CampaignParticipantResponsible.xml"/> + <include relativeToChangelogFile="true" file="alter_TableLeadStatus.xml"/> <include relativeToChangelogFile="true" file="MSTeams/changelog.xml"/> <include relativeToChangelogFile="true" file="insert_newsletterAttribute.xml"/> <include relativeToChangelogFile="true" file="readd_ExporttemplateIndizes.xml"/> diff --git a/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js b/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js index c8e53ac00d7..c752ef5850f 100644 --- a/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js +++ b/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js @@ -1,3 +1,4 @@ +import("Sql_lib"); import("system.vars"); var rowdata = vars.get("$local.rowdata"); @@ -6,5 +7,6 @@ let scanPattern = JSON.parse(rowdata["DUPLICATESCANNER.SCAN_PATTERN"]); if (scanPattern.provider == undefined) { scanPattern.provider = "indexP"; - vars.set("$field.SCAN_PATTERN", JSON.stringify(scanPattern)); + newWhere("DUPLICATESCANNER.ID", vars.get("$local.uid")) + .updateData(true, "DUPLICATESCANNER", ["DUPLICATESCANNER.SCAN_PATTERN"], null,[JSON.stringify(scanPattern)]); } \ No newline at end of file diff --git a/process/Leadimport_lib/process.js b/process/Leadimport_lib/process.js index de9d13b2c7b..6e902b7f0a5 100644 --- a/process/Leadimport_lib/process.js +++ b/process/Leadimport_lib/process.js @@ -349,6 +349,7 @@ LeadImportUtils.setValues = function(pFields, pFieldDef, pFieldValues) * @return {String} outputvalue */ LeadImportUtils.getMappedOutputvalue = function (pField, pInputValue) { + pInputValue = pInputValue.replace("/ß/gi", "ss"); if (LeadImportUtils.mapping != undefined && LeadImportUtils.mapping[pField] != undefined && LeadImportUtils.mapping[pField][pInputValue] != undefined) -- GitLab From a8486eee4e4f29ad0b65bc0e3467bbb86932cd1d Mon Sep 17 00:00:00 2001 From: "b.ulrich" <b.ulrich@adito.de> Date: Tue, 8 Dec 2020 09:57:55 +0100 Subject: [PATCH 165/184] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20xRM][Tick?= =?UTF-8?q?etNr.:=201066799][Firma=20-=20Beziehungen=20k=C3=B6nnen=20bei?= =?UTF-8?q?=20einem=20Teil=20der=20Typen=20nicht=20mehr=20bearbeitet=20wer?= =?UTF-8?q?den]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entityfields/target_context/valueProcess.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js b/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js index 700dc7461b5..cd4083fad2f 100644 --- a/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js +++ b/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js @@ -5,5 +5,9 @@ import("ObjectRelation_lib"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) { - result.string(ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID"))[6]); + var relationType = ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID")); + if(relationType[3] == "reverse") + result.string(ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID"))[5]); + else + result.string(ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID"))[6]); } \ No newline at end of file -- GitLab From fcf888c1329b95c4a5921b7a3f542f9a828801df Mon Sep 17 00:00:00 2001 From: Sebastian Pongratz <s.pongratz@adito.de> Date: Tue, 8 Dec 2020 10:37:50 +0000 Subject: [PATCH 166/184] #1070022 Revert Changes Bugfix_Leadimport --- process/Leadimport_lib/process.js | 1 - 1 file changed, 1 deletion(-) diff --git a/process/Leadimport_lib/process.js b/process/Leadimport_lib/process.js index 6e902b7f0a5..de9d13b2c7b 100644 --- a/process/Leadimport_lib/process.js +++ b/process/Leadimport_lib/process.js @@ -349,7 +349,6 @@ LeadImportUtils.setValues = function(pFields, pFieldDef, pFieldValues) * @return {String} outputvalue */ LeadImportUtils.getMappedOutputvalue = function (pField, pInputValue) { - pInputValue = pInputValue.replace("/ß/gi", "ss"); if (LeadImportUtils.mapping != undefined && LeadImportUtils.mapping[pField] != undefined && LeadImportUtils.mapping[pField][pInputValue] != undefined) -- GitLab From c7ff8376e59342af334863d0d0c6f40d98ef980a Mon Sep 17 00:00:00 2001 From: "a.voegl" <a.voegl@adito.de> Date: Tue, 8 Dec 2020 14:40:19 +0100 Subject: [PATCH 167/184] [Projekt: Entwicklung - xRM][TicketNr.: 1053175][Erweiterte 360-Grad Ansicht] --- entity/360Degree_entity/documentation.adoc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/entity/360Degree_entity/documentation.adoc b/entity/360Degree_entity/documentation.adoc index b2ad150c078..f19f7f1c59b 100644 --- a/entity/360Degree_entity/documentation.adoc +++ b/entity/360Degree_entity/documentation.adoc @@ -23,14 +23,14 @@ Heres is a list of what you need to do whenever you want to do this: - #CONTENTTITLE, this will be the main display Text and the blue Link - #CONTENTDESCRIPTION, this will be the smaller, mostly longer, Text beneath the #CONTENTTITLE -- Add an elemnt (with the name of the context you want to add) in the process of the `ObjectType_param` in the *corresponding provider* which is located in the `360Degree_entity`. _We would extend the JSON-Object which is returned in the `PersonObjects`-provider by the name of our t-shirt-context: "TShirt" in our example -- +- Add an element (with the name of the context you want to add) in the process of the `ObjectType_param` in the *corresponding provider* which is located in the `360Degree_entity`. _We would extend the JSON-Object which is returned in the `PersonObjects`-provider by the name of our t-shirt-context: "TShirt" in our example + - In that JSON-Object can also add some Configuration Elements to change the results. - setGroupBy: here you can declare a DB-Column that will be used as the new group by of that context. A good example is Order. We want to group by the Ordertype so we have to declare ORDERTYPE as our groupBy. - If your DB-Value is related to a Keyword you also have to use groupByKeyword and add the Container as Value -- If you have a Connection of 1:N in your Database Schema (like Activity and ActivityLink) you have to add specific Properties in your Context Object. Lets take ActivityLink as a Example. - - subContext: the Name of the "Link"-Context -> ActivityLink - - childField: The Field where the LinkID to your Parent is stored -> ACTIVITY_ID - - parentField: The field in your Parent Context where your Connection to your Child is stored -> ACTIVITYID +- If you have a Connection of 1:N in your Database Schema (like Task and TaskLink) you have to add specific Properties in your Context Object. Lets take TaskLink as a Example. + - subContext: the Name of the "Link"-Context -> TaskLink + - childField: The Field where the LinkID to your Parent is stored -> TASK_ID + - parentField: The field in your Parent Context where your Connection to your Child is stored -> TASKID - contactIdField: The Field in the Link Context where your Contactid is stored -> OBJECT_ROWID \ No newline at end of file -- GitLab From d01d408a72b024f3ba08dcbd3320893dea946166 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 4 Dec 2020 11:35:23 +0100 Subject: [PATCH 168/184] SqlBuilder only add 'from' when there is a select-part --- process/Sql_lib/process.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index d4d8afdaa40..52a7aac39ba 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -1054,7 +1054,7 @@ SqlBuilder.prototype.tableName = function (pTable) */ SqlBuilder.prototype.from = function(pTable, pTableAlias) { - this._from = SqlBuilder._getStatement(pTable, "from", pTableAlias, false, (pTableAlias ? false : true)); + this._from = SqlBuilder._getStatement(pTable, "", pTableAlias, false, (pTableAlias ? false : true)); if (typeof(pTable) === "string") this._tableName = pTable; return this; @@ -2193,10 +2193,7 @@ SqlBuilder.prototype.whereWasCalled = function() { */ SqlBuilder.prototype.isFullSelect = function() { - if (!this._select || !this._from) - return false; - - return true; + return !(!this._select || !this._from); } /** @@ -2375,9 +2372,14 @@ SqlBuilder.prototype.buildCondition = function() SqlBuilder.prototype.build = function(pDefaultConditionIfNone) { var wherePrefix = ""; + var fromObj = this._from; if (this.isFullSelect()) { + fromObj = { + sqlStorage: "from " + this._from.sqlStorage, + preparedValues: this._from.preparedValues + }; if (this._where.sqlStorage) wherePrefix = "where "; } @@ -2390,11 +2392,11 @@ SqlBuilder.prototype.build = function(pDefaultConditionIfNone) var whereObj = { sqlStorage : wherePrefix + whereSql, preparedValues : this._where.preparedValues - } + }; var allParts = [ this._select, - this._from, + fromObj ].concat(this._joins).concat([ whereObj, this._groupBy, -- GitLab From 72c00e3ef8ff60fde7346a2448004f1e436c8890 Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Fri, 4 Dec 2020 16:52:09 +0100 Subject: [PATCH 169/184] Refactoring, scan services --- entity/BulkMail_entity/BulkMail_entity.aod | 75 ++++++++++--------- .../bulkmailsnotsent/documentation.adoc | 3 + .../recordcontainers/db/fromClauseProcess.js | 10 ++- entity/Document_entity/Document_entity.aod | 32 +------- .../entityfields/documents/documentation.adoc | 3 + .../ExportTemplate_entity.aod | 8 ++ .../openadminview/onActionProcess.js | 4 + .../openadminview/stateProcess.js | 4 + .../KeywordEntry_entity.aod | 33 ++++---- .../documentation.adoc | 3 + .../ExportTemplatePlaceOfUseList_view.aod | 1 + 11 files changed, 88 insertions(+), 88 deletions(-) create mode 100644 entity/BulkMail_entity/entityfields/bulkmailsnotsent/documentation.adoc create mode 100644 entity/Document_entity/entityfields/documents/documentation.adoc create mode 100644 entity/ExportTemplate_entity/entityfields/openadminview/onActionProcess.js create mode 100644 entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js create mode 100644 entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc diff --git a/entity/BulkMail_entity/BulkMail_entity.aod b/entity/BulkMail_entity/BulkMail_entity.aod index a6e8b3db47b..cc5791ce3ab 100644 --- a/entity/BulkMail_entity/BulkMail_entity.aod +++ b/entity/BulkMail_entity/BulkMail_entity.aod @@ -56,25 +56,20 @@ <entityConsumer> <name>Recipients</name> <stateProcess>%aditoprj%/entity/BulkMail_entity/entityfields/recipients/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>BulkMailRecipient_entity</entityName> - <fieldName>BulkMailRecipients</fieldName> - </dependency> <children> <entityParameter> <name>BulkMailId_param</name> <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/recipients/children/bulkmailid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Templates</name> <dependency> <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> + <entityName>BulkMailRecipient_entity</entityName> + <fieldName>BulkMailRecipients</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Templates</name> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -85,6 +80,11 @@ <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/templates/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>STATUS</name> @@ -108,17 +108,17 @@ </entityField> <entityConsumer> <name>StatusKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>bindata</name> @@ -155,17 +155,17 @@ </entityField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>CREATEACTIVITIES</name> @@ -176,17 +176,17 @@ </entityField> <entityConsumer> <name>RecipientStatusChart</name> - <dependency> - <name>dependency</name> - <entityName>BulkMailStatusChart_entity</entityName> - <fieldName>RecipientStatusChart</fieldName> - </dependency> <children> <entityParameter> <name>BulkMailId_param</name> <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/recipientstatuschart/children/bulkmailid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>BulkMailStatusChart_entity</entityName> + <fieldName>RecipientStatusChart</fieldName> + </dependency> </entityConsumer> <entityField> <name>TESTING_CONTACT_ID</name> @@ -213,11 +213,6 @@ </entityConsumer> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -228,6 +223,11 @@ <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>sendMail</name> @@ -290,6 +290,14 @@ </entityParameter> <entityProvider> <name>BulkMailsNotSent</name> + <documentation>%aditoprj%/entity/BulkMail_entity/entityfields/bulkmailsnotsent/documentation.adoc</documentation> + <children> + <entityParameter> + <name>BulkMailStatus_param</name> + <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/bulkmailsnotsent/children/bulkmailstatus_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>16cdf326-0b43-4d72-bf19-21434e047e85</name> @@ -298,13 +306,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>BulkMailStatus_param</name> - <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/bulkmailsnotsent/children/bulkmailstatus_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>BulkMailStatus_param</name> diff --git a/entity/BulkMail_entity/entityfields/bulkmailsnotsent/documentation.adoc b/entity/BulkMail_entity/entityfields/bulkmailsnotsent/documentation.adoc new file mode 100644 index 00000000000..256cf217d71 --- /dev/null +++ b/entity/BulkMail_entity/entityfields/bulkmailsnotsent/documentation.adoc @@ -0,0 +1,3 @@ += BulkMailsNotSent + +Provides only BulkMails with the status 'not sent'. \ No newline at end of file diff --git a/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js b/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js index 611aa890f75..bafe6c4d617 100644 --- a/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js @@ -1,8 +1,10 @@ -import("system.logging"); import("Sql_lib"); import("system.result"); import("KeywordRegistry_basic"); -result.string("COMMUNICATION " + new SqlBuilder().leftJoin("AB_KEYWORD_ENTRY", newWhere("COMMUNICATION.MEDIUM_ID = AB_KEYWORD_ENTRY.KEYID") - .and("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.communicationMedium())) - .toString()); \ No newline at end of file +result.string(new SqlBuilder() + .from("COMMUNICATION") + .leftJoin("AB_KEYWORD_ENTRY", newWhere("COMMUNICATION.MEDIUM_ID = AB_KEYWORD_ENTRY.KEYID") + .and("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.communicationMedium())) + .toString() +); \ No newline at end of file diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod index b4b41354a69..f1dda1cc413 100644 --- a/entity/Document_entity/Document_entity.aod +++ b/entity/Document_entity/Document_entity.aod @@ -143,6 +143,7 @@ </entityActionField> <entityProvider> <name>Documents</name> + <documentation>%aditoprj%/entity/Document_entity/entityfields/documents/documentation.adoc</documentation> <recordContainer>jdito</recordContainer> <children> <entityParameter> @@ -337,37 +338,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Keyword_param</name> - <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/keyword_param/valueProcess.js</valueProcess> - <expose v="true" /> - <mandatory v="true" /> - <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> - </entityParameter> - <entityParameter> - <name>AssignmentName_param</name> - <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/valueProcess.js</valueProcess> - <expose v="true" /> - <documentation>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc</documentation> - </entityParameter> - <entityParameter> - <name>AssignmentRowId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>AssignmentTable_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>DisallowCreate_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>MSTTeamId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>DisallowCreate_param</name> diff --git a/entity/Document_entity/entityfields/documents/documentation.adoc b/entity/Document_entity/entityfields/documents/documentation.adoc new file mode 100644 index 00000000000..e2c292d974f --- /dev/null +++ b/entity/Document_entity/entityfields/documents/documentation.adoc @@ -0,0 +1,3 @@ += Documents + +Provider for getting all documents linked to an object. \ No newline at end of file diff --git a/entity/ExportTemplate_entity/ExportTemplate_entity.aod b/entity/ExportTemplate_entity/ExportTemplate_entity.aod index 473d4f9dbd3..65ba57734b7 100644 --- a/entity/ExportTemplate_entity/ExportTemplate_entity.aod +++ b/entity/ExportTemplate_entity/ExportTemplate_entity.aod @@ -61,6 +61,7 @@ <entityField> <name>DESCRIPTION</name> <title>Description</title> + <contentType>LONG_TEXT</contentType> </entityField> <entityConsumer> <name>Languages</name> @@ -153,6 +154,13 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityActionField> + <name>openAdminView</name> + <title>Open admin view</title> + <onActionProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/openadminview/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CURLY_BRACKETS</iconId> + <stateProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js</stateProcess> + </entityActionField> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/ExportTemplate_entity/entityfields/openadminview/onActionProcess.js b/entity/ExportTemplate_entity/entityfields/openadminview/onActionProcess.js new file mode 100644 index 00000000000..34ed41f947d --- /dev/null +++ b/entity/ExportTemplate_entity/entityfields/openadminview/onActionProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("Context_lib"); + +AdminViewUtils.open("EXPORTTEMPLATEID", ["DATE_NEW", "DATE_EDIT", "USER_NEW", "USER_EDIT"]); \ No newline at end of file diff --git a/entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js b/entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js new file mode 100644 index 00000000000..38f2298db73 --- /dev/null +++ b/entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js @@ -0,0 +1,4 @@ +import("Context_lib"); +import("system.result"); + +result.string(AdminViewUtils.getActionState()); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index 198706a9c3b..3472852e898 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -95,7 +95,19 @@ <entityProvider> <name>SpecificContainerKeywords</name> <lookupIdfield>KEYID</lookupIdfield> + <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/children/onlyactives_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ContainerName_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>bb48a3ee-f340-4fd4-8c80-ef73b765ab58</name> @@ -596,17 +608,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>OnlyActives_param</name> - <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/children/onlyactives_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ContainerName_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>TITLE_TRANSLATED</name> @@ -621,11 +622,6 @@ <entityConsumer> <name>KeywordAttributeRelations</name> <onValidation>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelations/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>KeywordAttributeRelation_entity</entityName> - <fieldName>AttributesForKeywordEntry</fieldName> - </dependency> <children> <entityParameter> <name>KeywordEntryId_param</name> @@ -633,6 +629,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordAttributeRelation_entity</entityName> + <fieldName>AttributesForKeywordEntry</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ExcludedKeyIdsSubquery_param</name> diff --git a/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc b/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc new file mode 100644 index 00000000000..0525588e240 --- /dev/null +++ b/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc @@ -0,0 +1,3 @@ += SpecificContainerKeywords + +Delivers only keywords of a specific container for a keyword selection. \ No newline at end of file diff --git a/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod b/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod index ca711428be6..bcbd58b13a6 100644 --- a/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod +++ b/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod @@ -11,6 +11,7 @@ <titledListViewTemplate> <name>titledList</name> <titleField>PLACEOFUSE</titleField> + <titleFieldFullWidth v="true" /> <entityField>#ENTITY</entityField> </titledListViewTemplate> </children> -- GitLab From 9245ab901bf88d7af01727b6f7b59bf80f0a142e Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 8 Dec 2020 08:46:27 +0100 Subject: [PATCH 170/184] #1069604 NumberUtils.validateIsBetweenFloat correction --- process/Util_lib/process.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index ca3962c9236..00ddb82a71b 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -716,7 +716,7 @@ NumberUtils.validateIsBetweenFloat = function(pTitle, pValue, pMin, pMax, pIgnor if(isNaN(discount)) return false; - if (!NumberUtils.isInside(discount, 0, 100, pIgnoreNull)) + if (!NumberUtils.isInside(discount, pMin, pMax, pIgnoreNull)) { return (translate.withArguments("${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3", [translate.text(pTitle), discount, pMin, pMax])); } -- GitLab From b5f8e9421769c5842985914ef473948e07d71ade Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Tue, 8 Dec 2020 10:36:18 +0100 Subject: [PATCH 171/184] #1070093 Objectselection attributes in preview --- .../entityfields/value_lookup/stateProcess.js | 5 ++++- .../AttributeRelationPreviewList.aod | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/entity/AttributeRelation_entity/entityfields/value_lookup/stateProcess.js b/entity/AttributeRelation_entity/entityfields/value_lookup/stateProcess.js index e0ce90c1753..051e58a290e 100644 --- a/entity/AttributeRelation_entity/entityfields/value_lookup/stateProcess.js +++ b/entity/AttributeRelation_entity/entityfields/value_lookup/stateProcess.js @@ -4,8 +4,11 @@ import("system.result"); import("Attribute_lib"); var fieldState; -if (AttributeTypeUtil.useLookup(vars.get("$field.ATTRIBUTE_TYPE"))) +if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + && AttributeTypeUtil.useLookup(vars.get("$field.ATTRIBUTE_TYPE"))) +{ fieldState = neon.COMPONENTSTATE_EDITABLE; +} else fieldState = neon.COMPONENTSTATE_INVISIBLE; diff --git a/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod b/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod index 3ecddbf8b49..2c17aad789a 100644 --- a/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod +++ b/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod @@ -18,6 +18,10 @@ <name>ec5ceac7-a2d4-4912-b04b-adc83d3e9589</name> <entityField>VALUE</entityField> </neonTitledListTableColumn> + <neonTitledListTableColumn> + <name>2ec9274b-a800-4a38-8139-418543161be2</name> + <entityField>VALUE_LOOKUP</entityField> + </neonTitledListTableColumn> </columns> </titledListViewTemplate> </children> -- GitLab From d5eb6097106bb18e65381c013608646d608ce88e Mon Sep 17 00:00:00 2001 From: "a.voegl" <a.voegl@adito.de> Date: Tue, 8 Dec 2020 18:41:43 +0100 Subject: [PATCH 172/184] Fix documentation and make the Context_lib more dynamic in therms of former Object Structure --- entity/360Degree_entity/documentation.adoc | 4 ++-- process/Context_lib/process.js | 15 ++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/entity/360Degree_entity/documentation.adoc b/entity/360Degree_entity/documentation.adoc index f19f7f1c59b..b07c00500ce 100644 --- a/entity/360Degree_entity/documentation.adoc +++ b/entity/360Degree_entity/documentation.adoc @@ -16,7 +16,6 @@ Heres is a list of what you need to do whenever you want to do this: - At first you have to fill/add certain Fields/Processes in your new Context. - Add (These have to be written exactly like that, if not already existing): - - CONTACT_ID, this Field has to contain a CONTACTID. That will be used to find the Connection to your Person or your Organisation. - DATE_NEW, this Field has to contain a Date as a Long Value. That will be used as the Date Value you can see in the Timeline View-Template. - ACTIVE, in this Field you can specify which Datasets are active or not. You have to declare that in the Value Expression as a Case-When due to the Filter - Fill (these can be filled in the specific Entity as a Process) @@ -25,7 +24,8 @@ Heres is a list of what you need to do whenever you want to do this: - Add an element (with the name of the context you want to add) in the process of the `ObjectType_param` in the *corresponding provider* which is located in the `360Degree_entity`. _We would extend the JSON-Object which is returned in the `PersonObjects`-provider by the name of our t-shirt-context: "TShirt" in our example -- In that JSON-Object can also add some Configuration Elements to change the results. +- In that JSON-Object you can/have to add some Configuration Elements to change the results. + - connectionField, here you have to declare a Field that writes exactly like the one in your Entity (Standard is CONTACT_ID!!!). The Value of this Field will be used to compare it with the Object_Rowid. - setGroupBy: here you can declare a DB-Column that will be used as the new group by of that context. A good example is Order. We want to group by the Ordertype so we have to declare ORDERTYPE as our groupBy. - If your DB-Value is related to a Keyword you also have to use groupByKeyword and add the Container as Value diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index b7bf2e8a17a..40e6e00d4c2 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -355,10 +355,15 @@ ContextUtils.getTitleByContext = function(pContextId, pRowId) * @param {Object} [pFilterObj] prepeared Filter Object * @param {String[]} [pContactId] Array of all the Contactids you want to search through * - * @return {String[][]} An Array of Fields (["#UID", "#TITLE", "#MAPPING", "#CONTENTDESCRIPTION", "#CONTENTTITLE", "CONTACT_ID", "DATE_NEW"]) for a certain Context + * @return {String[][]} An Array of Fields (["#UID", "#TITLE", "#MAPPING", "#CONTENTDESCRIPTION", "#CONTENTTITLE", CONNECTIONFIELD, "DATE_NEW"]) for a certain Context */ ContextUtils.getContextDataViaReadEntity = function(pContextId, pContextConfig, pFilterObj, pContactId) { + + var connectionField = "CONTACT_ID"; + if(pContextConfig.connectionField) + connectionField = pContextConfig.connectionField; + if(pContextConfig.childField && pContextConfig.parentField && pContextConfig.contactIdField && pContextConfig.subContext) { var prefilter = Utils.buildFilterObj({}, pContextConfig.contactIdField, "IN", "TEXT", JSON.stringify(pContactId), JSON.stringify(pContactId), "OR"); @@ -377,10 +382,10 @@ ContextUtils.getContextDataViaReadEntity = function(pContextId, pContextConfig, } else { - pFilterObj = Utils.buildFilterObj(pFilterObj, "CONTACT_ID", "IN", "TEXT", JSON.stringify(pContactId), JSON.stringify(pContactId), "AND"); + pFilterObj = Utils.buildFilterObj(pFilterObj, connectionField, "IN", "TEXT", JSON.stringify(pContactId), JSON.stringify(pContactId), "AND"); } - var fields = ["#UID", "#TITLE", "#MAPPING", "#CONTENTDESCRIPTION", "#CONTENTTITLE", "CONTACT_ID", "DATE_NEW", "ACTIVE"]; + var fields = ["#UID", "#TITLE", "#MAPPING", "#CONTENTDESCRIPTION", "#CONTENTTITLE", connectionField, "DATE_NEW", "ACTIVE"]; if(pContextConfig.setGroupBy) fields.push(pContextConfig.setGroupBy); @@ -410,8 +415,8 @@ ContextUtils.getContextDataViaReadEntity = function(pContextId, pContextConfig, throw new Error(translate.text("Some prereserved EntityFields which are necessary fot 360° are not available. Context: "+pContextId +" Data: "+JSON.stringify(res))); } - else if(res[0]["CONTACT_ID"] == undefined) - throw new Error(translate.text("CONTACT_ID is not defined! Context: "+pContextId)); + else if(res[0][connectionField] == undefined) + throw new Error(translate.text(connectionField+" is not defined! Context: "+pContextId)); } return res; } -- GitLab From 379cb2cb816af87923c7b8ad45128650a51357dd Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Wed, 9 Dec 2020 12:51:43 +0000 Subject: [PATCH 173/184] 360Degree_entity wrong titlePlural removed --- entity/360Degree_entity/360Degree_entity.aod | 1 - 1 file changed, 1 deletion(-) diff --git a/entity/360Degree_entity/360Degree_entity.aod b/entity/360Degree_entity/360Degree_entity.aod index f527d3b4ebb..35b812776eb 100644 --- a/entity/360Degree_entity/360Degree_entity.aod +++ b/entity/360Degree_entity/360Degree_entity.aod @@ -15,7 +15,6 @@ </siblings> <grantUpdate v="false" /> <grantDelete v="false" /> - <titlePlural>Links</titlePlural> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> -- GitLab From f9e0b9f55e6a49bef906b8ac6b10e6676c570aa0 Mon Sep 17 00:00:00 2001 From: "j.luginger" <j.luginger@adito.de> Date: Thu, 10 Dec 2020 08:03:52 +0100 Subject: [PATCH 174/184] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20Pool][Tic?= =?UTF-8?q?ketNr.:=201070360][Angebot=20kann=20in=20Beleg=20nicht=20ausgew?= =?UTF-8?q?=C3=A4hlt=20werden]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../offers/children/contactid_param/valueProcess.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js b/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js index 7b92c1bb14a..cf4b6cd38a6 100644 --- a/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js +++ b/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js @@ -1,10 +1,4 @@ import("system.result"); import("system.vars"); -import("Contact_lib"); -if (vars.get("$field.CONTACT_ID")) -{ - var ids = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID")); - if (ids.length >= 3 && ids[2]) - result.string(ids[2]); -} \ No newline at end of file +result.string(vars.get("$field.CONTACT_ID")); -- GitLab From b12de51a4197cf4f14ad7e3d0f00d6e4b4fd55c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20V=C3=B6gl?= <a.voegl@adito.de> Date: Thu, 10 Dec 2020 07:50:05 +0000 Subject: [PATCH 175/184] [Projekt: Entwicklung - xRM][TicketNr.: 1069881][Beleg - Es kann kein neuer Beleg angelegt werden] & add missing Index on new Column --- .../alter_CampaignParticipantResponsibleIndex.xml | 10 ++++++++++ .liquibase/Data_alias/basic/2020.2.2/changelog.xml | 1 + process/Sql_lib/process.js | 13 ++++++++++--- 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 .liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsibleIndex.xml diff --git a/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsibleIndex.xml b/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsibleIndex.xml new file mode 100644 index 00000000000..6360542b2df --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsibleIndex.xml @@ -0,0 +1,10 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="a.voegl" id="6d545d51-b838-4325-9573-5fe51eade79b"> + <createIndex indexName="IDX_CAMPAIGNPART_RES_CONTACT" tableName="CAMPAIGNPARTICIPANT"> + <column name="RESPONSIBLE_CONTACT_ID"/> + </createIndex> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml index 302d930f6b0..2a4bea7a4e0 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml @@ -6,6 +6,7 @@ <include relativeToChangelogFile="true" file="insert_employeeCountAttribute.xml"/> <include relativeToChangelogFile="true" file="alter_CampaignParticipantResponsible.xml"/> <include relativeToChangelogFile="true" file="alter_TableLeadStatus.xml"/> + <include relativeToChangelogFile="true" file="alter_CampaignParticipantResponsibleIndex.xml"/> <include relativeToChangelogFile="true" file="MSTeams/changelog.xml"/> <include relativeToChangelogFile="true" file="insert_newsletterAttribute.xml"/> <include relativeToChangelogFile="true" file="readd_ExporttemplateIndizes.xml"/> diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index d4d8afdaa40..08f4d90d0b5 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -4253,10 +4253,11 @@ SqlUtils.getSqlInStatement = function(pFieldname, pData, pQuoteSymbol, pAsPrepar } /** -* resolves key-value pairs (of strings) into a case when expression +* resolves key-value pairs (of strings) into a case when expression; +* This function tries to get the columntype for better type comparison * * @param {String[][]} pKeyValueArray you've to pass a 2D-Array where each element has at pos0 the key and pos1 the value -* @param {String} pDbFieldName name fo the database field where the KEY-value is stored +* @param {String} pDbFieldName name fo the database field where the KEY-value is stored; prefers TABLENAME.COLUMNNAME * @param {String} [pLocale=current client language] specifies the locale for translating the title; can be false if nothing shalle be translated * * @return {String} a SQL-expression (case-when-statement) that resolves the KEYID into the title -> as preparedSatement-elements @@ -4278,7 +4279,13 @@ SqlUtils.getResolvingCaseWhen = function(pKeyValueArray, pDbFieldName, pLocale) }; //!SqlBuilder var resSql = "case ", preparedValues = []; - var colTypeKeyId = SQLTYPES.CHAR; + + var colTypeKeyId = SQLTYPES.CHAR; //the standard type is char + var fields = SqlUtils._parseFieldQualifier(pDbFieldName); //validate the DB-field for proper form (CONTACT.CONTACTID) + if (!(fields instanceof TypeError)) + colTypeKeyId = SqlUtils.getSingleColumnType(pDbFieldName, undefined, this.alias); + //some databases dont auto cast on their own so we need the proper type + var colTypeTitle = SQLTYPES.NVARCHAR; for (var i = 0, l = keyData.length; i < l; i++) { -- GitLab From 987f23e681f0fdb8827854afd34818cbc281597b Mon Sep 17 00:00:00 2001 From: Johannes Goderbauer <j.goderbauer@adito.de> Date: Thu, 10 Dec 2020 08:38:36 +0000 Subject: [PATCH 176/184] Disable product permissions --- entity/Product_entity/Product_entity.aod | 1 - 1 file changed, 1 deletion(-) diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod index b5487036312..b8443f6c3fe 100644 --- a/entity/Product_entity/Product_entity.aod +++ b/entity/Product_entity/Product_entity.aod @@ -14,7 +14,6 @@ <useFavorites v="true" /> <iconId>VAADIN:HAMMER</iconId> <imageProcess>%aditoprj%/entity/Product_entity/imageProcess.js</imageProcess> - <usePermissions v="true" /> <titlePlural>Products</titlePlural> <recordContainer>db</recordContainer> <entityFields> -- GitLab From 3434b0e7976da2bac198c00a8eabef844901edef Mon Sep 17 00:00:00 2001 From: Johannes Goderbauer <j.goderbauer@adito.de> Date: Thu, 10 Dec 2020 08:42:01 +0000 Subject: [PATCH 177/184] Disable knowledgeManagement permissions --- entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod | 1 - 1 file changed, 1 deletion(-) diff --git a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod index ca44262effc..0d58306fea5 100644 --- a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod +++ b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod @@ -11,7 +11,6 @@ <afterOperatingState>%aditoprj%/entity/KnowledgeManagement_entity/afterOperatingState.js</afterOperatingState> <useFavorites v="true" /> <iconIdProcess>%aditoprj%/entity/KnowledgeManagement_entity/iconIdProcess.js</iconIdProcess> - <usePermissions v="true" /> <titlePlural>Knowledge entries</titlePlural> <recordContainer>db</recordContainer> <entityFields> -- GitLab From 9a41988bf1a9987f5e67934648bb3bf105c27b02 Mon Sep 17 00:00:00 2001 From: Fabian Adler <f.adler@adito.de> Date: Thu, 10 Dec 2020 11:20:42 +0100 Subject: [PATCH 178/184] Fixing the uncommented demodata & status update --- .../basic/2020.2.2/alter_TableLeadStatus.xml | 15 ++++++++++++++- .liquibase/Data_alias/changelog.xml | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml b/.liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml index 9f11810890c..a6625db2f2f 100644 --- a/.liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml +++ b/.liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml @@ -1,6 +1,19 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> - <changeSet author="d.nowack" id="bcd6cb02-d074-444f-a307-34973b3dd4dn"> + <changeSet dbms="derby" author="s.pongratz" id="539e6d12-5ba4-424b-a29d-f63a48d07288"> + <sql> + ALTER TABLE LEAD ADD COLUMN STATUS_NEW VARCHAR(36); + UPDATE LEAD SET STATUS_NEW = CAST ( CAST (STATUS as CHAR(36)) as VARCHAR(36) ); + ALTER TABLE LEAD DROP COLUMN STATUS; + RENAME COLUMN LEAD.STATUS_NEW TO STATUS; + </sql> + </changeSet> + <changeSet author="s.pongratz" id="be79e660-b112-4f58-b53d-d9e36ecd145b"> + <preConditions onFail="CONTINUE"> + <not> + <dbms type="derby" /> + </not> + </preConditions> <modifyDataType tableName="LEAD" columnName="STATUS" newDataType="VARCHAR(36)"/> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index 06e1b534695..3f25ca1dbb1 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -20,5 +20,5 @@ <include relativeToChangelogFile="true" file="basic/2020.2.2/changelog.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> - <include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/> + <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>--> </databaseChangeLog> \ No newline at end of file -- GitLab From bb185c1c9e43f6678fc37b59a35e67e34974679d Mon Sep 17 00:00:00 2001 From: "j.luginger" <j.luginger@adito.de> Date: Thu, 10 Dec 2020 11:29:28 +0100 Subject: [PATCH 179/184] [Projekt: Entwicklung - Pool][TicketNr.: 1070393][In Angebot und Beleg werden die Zahlungskondition und Lieferbedingung nicht richtig anhand der Firma vorbelegt] --- .../deliveryterms/valueProcess.js | 2 +- .../entityfields/paymentterms/valueProcess.js | 2 +- .../deliveryterms/valueProcess.js | 2 +- .../entityfields/paymentterms/valueProcess.js | 32 +++++++++---------- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js b/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js index ff143a3b866..58333ceee85 100644 --- a/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js +++ b/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js @@ -11,7 +11,7 @@ if (vars.exists("$param.OfferDeliveryTerm_param") && vars.get("$param.OfferDeliv { result.string(vars.get("$param.OfferDeliveryTerm_param")); } -else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null && vars.get("$field.CONTACT_ID")) { var presetValue = ""; var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID")) diff --git a/entity/Offer_entity/entityfields/paymentterms/valueProcess.js b/entity/Offer_entity/entityfields/paymentterms/valueProcess.js index 4b13796a10e..b9fd6cd7aee 100644 --- a/entity/Offer_entity/entityfields/paymentterms/valueProcess.js +++ b/entity/Offer_entity/entityfields/paymentterms/valueProcess.js @@ -11,7 +11,7 @@ if (vars.exists("$param.OfferPaymentTerm_param") && vars.get("$param.OfferPaymen { result.string(vars.get("$param.OfferPaymentTerm_param")); } -else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null && vars.get("$field.CONTACT_ID")) { var presetValue = ""; var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID")) diff --git a/entity/Order_entity/entityfields/deliveryterms/valueProcess.js b/entity/Order_entity/entityfields/deliveryterms/valueProcess.js index 8e6fb1be5bc..ed78d05852c 100644 --- a/entity/Order_entity/entityfields/deliveryterms/valueProcess.js +++ b/entity/Order_entity/entityfields/deliveryterms/valueProcess.js @@ -9,7 +9,7 @@ import("Contact_lib"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null && vars.get("$field.CONTACT_ID")) { var presetValue = ""; var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID")); diff --git a/entity/Order_entity/entityfields/paymentterms/valueProcess.js b/entity/Order_entity/entityfields/paymentterms/valueProcess.js index 7501b966d14..8cf77fdb2b6 100644 --- a/entity/Order_entity/entityfields/paymentterms/valueProcess.js +++ b/entity/Order_entity/entityfields/paymentterms/valueProcess.js @@ -7,23 +7,23 @@ import("system.result"); import("system.vars"); import("Attribute_lib"); -if (vars.get("$this.value") == null) { - if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null && vars.get("$field.CONTACT_ID")) +{ + var presetValue = ""; + var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID")); + if (contactIds.length >= 3 && contactIds[2]) { - var presetValue = ""; - var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID")); - if (contactIds.length >= 3 && contactIds[2]) - { - var orgContactId = ContactUtils.getOrgContactId(contactIds[2]); - if (orgContactId) - { - presetValue = new AttributeRelationQuery(orgContactId, $AttributeRegistry.paymentTerm()).getSingleAttributeValue(); - } + var orgContactId = ContactUtils.getOrgContactId(contactIds[2]); + if (orgContactId) + { + presetValue = new AttributeRelationQuery(orgContactId, $AttributeRegistry.paymentTerm()).getSingleAttributeValue(); } - - if (presetValue) - result.string(presetValue); - else - result.string(KeywordUtils.getFirst($KeywordRegistry.paymentTerm())); } + + if (presetValue) + result.string(presetValue); + else + result.string(KeywordUtils.getFirst($KeywordRegistry.paymentTerm())); } + -- GitLab From ecaceb40f9c799e1c87b5a9a5fc2cad10035e60b Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Thu, 10 Dec 2020 12:22:46 +0100 Subject: [PATCH 180/184] Updated Data_alias --- aliasDefinition/Data_alias/Data_alias.aod | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index db98769eac6..1b90bea7f65 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -8347,7 +8347,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <documentation></documentation> <title></title> <description></description> @@ -13166,8 +13166,8 @@ <name>STATUS</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> + <columnType v="12" /> + <size v="36" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> -- GitLab From 2d783f9864c1f05fde7c7a5218ee56ae4f104850 Mon Sep 17 00:00:00 2001 From: Tobias Wosegien <t.wosegien@adito.de> Date: Tue, 15 Dec 2020 14:39:41 +0000 Subject: [PATCH 181/184] 1052783 rename User Administration -> Useradministration --- .../_____SYSTEM_APPLICATION_NEON.aod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index 9e61fe62da3..12e1b3dbc18 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -345,7 +345,7 @@ </childNodes> </entityNode> <entityNode> - <name>User Administration</name> + <name>Useradministration</name> <kind v="123" /> <title>User Administration</title> <icon>VAADIN:UNLINK</icon> -- GitLab From d510e53e2a5c82a67eec950c5f9d9c94b86837c6 Mon Sep 17 00:00:00 2001 From: Simon Leipold <s.leipold@adito.de> Date: Tue, 15 Dec 2020 15:40:01 +0100 Subject: [PATCH 182/184] fixed #1068363 #1066690 - value process of parameter role title was missing --- entity/Role_entity/Role_entity.aod | 6 ++++++ .../children/roletitle_param/valueProcess.js | 4 ++++ 2 files changed, 10 insertions(+) create mode 100644 entity/Role_entity/entityfields/theirpermissions/children/roletitle_param/valueProcess.js diff --git a/entity/Role_entity/Role_entity.aod b/entity/Role_entity/Role_entity.aod index 82bc56f08e9..cb7d090b650 100644 --- a/entity/Role_entity/Role_entity.aod +++ b/entity/Role_entity/Role_entity.aod @@ -41,6 +41,12 @@ </entityField> <entityConsumer> <name>TheirPermissions</name> + <children> + <entityParameter> + <name>RoleTitle_param</name> + <valueProcess>%aditoprj%/entity/Role_entity/entityfields/theirpermissions/children/roletitle_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependency> <name>dependency</name> <entityName>PermissionDetail_entity</entityName> diff --git a/entity/Role_entity/entityfields/theirpermissions/children/roletitle_param/valueProcess.js b/entity/Role_entity/entityfields/theirpermissions/children/roletitle_param/valueProcess.js new file mode 100644 index 00000000000..7b3054d1905 --- /dev/null +++ b/entity/Role_entity/entityfields/theirpermissions/children/roletitle_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.ROLENAME")); \ No newline at end of file -- GitLab From 15dfef413e1fc855e5751e37ad24bad60137a19b Mon Sep 17 00:00:00 2001 From: Tobias Wosegien <t.wosegien@adito.de> Date: Tue, 15 Dec 2020 14:48:10 +0000 Subject: [PATCH 183/184] 1069233 PersonSimpleList_view: linkedColumns setzen --- .../PersonSimpleList_view/PersonSimpleList_view.aod | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/neonView/PersonSimpleList_view/PersonSimpleList_view.aod b/neonView/PersonSimpleList_view/PersonSimpleList_view.aod index fe2cf08a2a9..0407e8cccc2 100644 --- a/neonView/PersonSimpleList_view/PersonSimpleList_view.aod +++ b/neonView/PersonSimpleList_view/PersonSimpleList_view.aod @@ -17,7 +17,10 @@ <subtitleField>LANGUAGE</subtitleField> <descriptionField>DEPARTMENT</descriptionField> <entityField>#ENTITY</entityField> - <linkedColumns /> + <linkedColumns> + <element>FIRSTNAME</element> + <element>LASTNAME</element> + </linkedColumns> <fixedFilterFields /> <columns> <neonTableColumn> @@ -66,7 +69,10 @@ <name>tree</name> <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1> <entityField>#ENTITY</entityField> - <linkedColumns /> + <linkedColumns> + <element>FIRSTNAME</element> + <element>LASTNAME</element> + </linkedColumns> <defaultGroupFields /> <fixedFilterFields /> <columns> -- GitLab From cc73a6045bb1cee9a1b83a5feb1cc720320fa4ac Mon Sep 17 00:00:00 2001 From: Sebastian Listl <s.listl@adito.de> Date: Thu, 17 Dec 2020 11:10:49 +0100 Subject: [PATCH 184/184] Project upgrade to 6.2.1 --- .aditoprj/project.version | 4 +- entity/360Degree_entity/360Degree_entity.aod | 32 +-- .../ActivityLink_entity.aod | 22 +- .../AddressType_entity/AddressType_entity.aod | 14 +- .../AppointmentLink_entity.aod | 22 +- .../AroundLocation_entity.aod | 10 +- .../AttributeUsage_entity.aod | 10 +- .../BulkMailRecipient_entity.aod | 20 +- .../CampaignAddParticipants_entity.aod | 10 +- .../CampaignAnalysis_entity.aod | 16 +- .../CampaignCost_entity.aod | 60 ++--- .../CampaignPlanning_entity.aod | 10 +- .../CampaignStep_entity.aod | 94 +++---- .../ClassificationGroup_entity.aod | 10 +- .../ClassificationType_entity.aod | 10 +- .../Classification_entity.aod | 20 +- .../CommRestriction_Entity.aod | 20 +- .../Competition_entity/Competition_entity.aod | 90 +++---- entity/Contact_entity/Contact_entity.aod | 66 ++--- entity/Context_entity/Context_entity.aod | 64 ++--- entity/Countries_Entity/Countries_Entity.aod | 24 +- entity/DSGVOInfo_entity/DSGVOInfo_entity.aod | 26 +- entity/DSGVO_entity/DSGVO_entity.aod | 26 +- .../DescriptionTranslation_entity.aod | 10 +- .../DistrictResponsible_entity.aod | 58 ++-- entity/District_entity/District_entity.aod | 68 ++--- .../DocumentTemplateLink_entity.aod | 26 +- .../DocumentTemplateTypeCategory_entity.aod | 12 +- .../DocumentTemplate_entity.aod | 72 ++--- .../DuplicateScanner_entity.aod | 10 +- .../Duplicates_entity/Duplicates_entity.aod | 60 ++--- .../EmployeeRole_entity.aod | 24 +- entity/Employee_entity/Employee_entity.aod | 98 +++---- .../ExportTemplateSelection_entity.aod | 10 +- entity/Forecast_entity/Forecast_entity.aod | 20 +- .../ImportField_Entity/ImportField_Entity.aod | 10 +- .../KeywordAttributeRelation_entity.aod | 24 +- .../KeywordAttribute_entity.aod | 10 +- .../KnowledgeDiscussion_entity.aod | 10 +- .../KnowledgeLink_entity.aod | 26 +- .../KnowledgeManagementTags_entity.aod | 12 +- .../KnowledgeManagement_entity.aod | 86 +++--- .../KnowledgeRole_entity.aod | 10 +- entity/Language_entity/Language_entity.aod | 24 +- entity/LeadLog_entity/LeadLog_entity.aod | 10 +- entity/Lead_entity/Lead_entity.aod | 20 +- .../LeadimportMappingAssistant_entity.aod | 10 +- .../Leadimport_entity/Leadimport_entity.aod | 98 +++---- entity/Letter_entity/Letter_entity.aod | 10 +- .../MarketingWorkflowLauncher_entity.aod | 20 +- .../ModuleTree_entity/ModuleTree_entity.aod | 20 +- .../ObjectRelationType_entity.aod | 14 +- .../ObjectTree_entity/ObjectTree_entity.aod | 40 +-- entity/Object_entity/Object_entity.aod | 122 ++++----- entity/Offer_entity/Offer_entity.aod | 238 ++++++++--------- entity/Offeritem_entity/Offeritem_entity.aod | 32 +-- entity/Order_entity/Order_entity.aod | 194 +++++++------- entity/Orderitem_entity/Orderitem_entity.aod | 44 +-- .../PermissionCalendar_entity.aod | 20 +- .../PermissionDetail_entity.aod | 26 +- .../PermissionMetaData_entity.aod | 32 +-- .../PrivatePerson_entity.aod | 10 +- entity/Prod2prod_entity/Prod2prod_entity.aod | 26 +- entity/Product_entity/Product_entity.aod | 158 +++++------ .../Productprice_entity.aod | 36 +-- .../QuickEntry_entity/QuickEntry_entity.aod | 90 +++---- .../Salesproject_entity.aod | 252 +++++++++--------- .../SalutationDistinct_entity.aod | 12 +- .../SalutationTitleDistinct_entity.aod | 16 +- .../Salutation_entity/Salutation_entity.aod | 10 +- .../SerialLetter_entity.aod | 60 ++--- entity/Stock_entity/Stock_entity.aod | 22 +- .../SupportTicket_entity.aod | 96 +++---- entity/TaskLink_entity/TaskLink_entity.aod | 22 +- .../Timetracking_entity.aod | 16 +- .../TurnoverTree_entity.aod | 12 +- entity/Turnover_entity/Turnover_entity.aod | 26 +- .../UniversalFileProcessor_entity.aod | 10 +- .../UnlinkedMailMappingWrapper_entity.aod | 10 +- .../VisitPlanEntry_entity.aod | 20 +- .../VisitRecommendation_entity.aod | 30 +-- .../WorkflowStartConfig_entity.aod | 20 +- .../360DegreeFilter_view.aod | 1 - .../CampaignStepsGantt_view.aod | 2 +- .../AISalesproject_lib/AISalesproject_lib.aod | 2 +- process/AI_lib/AI_lib.aod | 2 +- process/ActivityTask_lib/ActivityTask_lib.aod | 2 +- .../AddressEntity_lib/AddressEntity_lib.aod | 2 +- process/Address_lib/Address_lib.aod | 2 +- process/Appointment_lib/Appointment_lib.aod | 2 +- .../AttributeFilter_lib.aod | 2 +- .../AttributeRegistry_basic.aod | 2 +- process/Attribute_lib/Attribute_lib.aod | 2 +- process/Binary_lib/Binary_lib.aod | 2 +- process/Bulkmail_lib/Bulkmail_lib.aod | 2 +- .../CachedRecordContainer_lib.aod | 2 +- process/Calendar_lib/Calendar_lib.aod | 2 +- process/Campaign_lib/Campaign_lib.aod | 2 +- .../ClassificationFilter_lib.aod | 2 +- .../Classification_lib/Classification_lib.aod | 2 +- .../Communication_lib/Communication_lib.aod | 2 +- process/Contact_lib/Contact_lib.aod | 2 +- process/Context_lib/Context_lib.aod | 2 +- process/Contract_lib/Contract_lib.aod | 2 +- .../CountryInfoData_lib.aod | 2 +- process/CountryInfo_lib/CountryInfo_lib.aod | 2 +- .../CreateActivity_workflowService.aod | 2 +- .../CreateNotification_workflowService.aod | 2 +- ...SalesprojectTouchpoint_workflowService.aod | 2 +- .../CreateSalesproject_workflowService.aod | 2 +- .../CustomPlaceholder_lib.aod | 2 +- process/DataCaching_lib/DataCaching_lib.aod | 2 +- process/DataPrivacy_lib/DataPrivacy_lib.aod | 2 +- process/Data_lib/Data_lib.aod | 2 +- process/Date_lib/Date_lib.aod | 2 +- process/Dependency_lib/Dependency_lib.aod | 2 +- .../DocumentTemplate_lib.aod | 2 +- process/Document_lib/Document_lib.aod | 2 +- .../DocxTemplater_lib/DocxTemplater_lib.aod | 2 +- .../DuplicateScanner_lib.aod | 2 +- process/EmailUtil_lib/EmailUtil_lib.aod | 2 +- process/Email_lib/Email_lib.aod | 2 +- process/Employee_lib/Employee_lib.aod | 2 +- process/Entity_lib/Entity_lib.aod | 2 +- process/EwsClient_lib/EwsClient_lib.aod | 2 +- .../ExportTemplate_lib/ExportTemplate_lib.aod | 2 +- process/Favorites_lib/Favorites_lib.aod | 2 +- .../FilterCondition_lib.aod | 2 +- .../FilterViewAction_lib.aod | 2 +- process/Html_lib/Html_lib.aod | 2 +- .../ImporterCustomMappingFunctions_lib.aod | 2 +- .../ImporterMappingFunctions_lib.aod | 2 +- process/ImporterTest_lib/ImporterTest_lib.aod | 2 +- process/Importer_lib/Importer_lib.aod | 2 +- .../IncomingCallExecutor_lib.aod | 2 +- .../IncomingEmailExecutor_lib.aod | 2 +- process/IndexSearch_lib/IndexSearch_lib.aod | 2 +- process/JditoFilter_lib/JditoFilter_lib.aod | 2 +- .../KeywordAttribute_test.aod | 2 +- process/KeywordData_lib/KeywordData_lib.aod | 2 +- .../KeywordRegistry_basic.aod | 2 +- process/Keyword_lib/Keyword_lib.aod | 2 +- process/Keyword_test/Keyword_test.aod | 2 +- .../KnowledgeManagement_lib.aod | 2 +- .../LeadQuickAcquisition_lib.aod | 2 +- process/Leadimport_lib/Leadimport_lib.aod | 2 +- process/Liquibase_lib/Liquibase_lib.aod | 2 +- process/Location_lib/Location_lib.aod | 2 +- process/Loghistory_lib/Loghistory_lib.aod | 2 +- process/MSTeams_lib/MSTeams_lib.aod | 2 +- process/MimeType_lib/MimeType_lib.aod | 2 +- process/Money_lib/Money_lib.aod | 2 +- process/Neon_lib/Neon_lib.aod | 2 +- process/NewsSystem_lib/NewsSystem_lib.aod | 2 +- process/Notification_lib/Notification_lib.aod | 2 +- .../ObjectRelationTypeRegistry_basic.aod | 2 +- .../ObjectRelation_lib/ObjectRelation_lib.aod | 2 +- process/OfferOrder_lib/OfferOrder_lib.aod | 2 +- process/Offer_lib/Offer_lib.aod | 2 +- process/Order_lib/Order_lib.aod | 2 +- process/Organisation_lib/Organisation_lib.aod | 2 +- .../PermissionCalendar_lib.aod | 2 +- process/Permission_lib/Permission_lib.aod | 2 +- process/Person_lib/Person_lib.aod | 2 +- process/Placeholder_lib/Placeholder_lib.aod | 2 +- .../PostalAddress_lib/PostalAddress_lib.aod | 2 +- process/Product_lib/Product_lib.aod | 2 +- process/Proto_lib/Proto_lib.aod | 2 +- ...ebuildAllDuplicateCaches_serverProcess.aod | 2 +- .../RebuildDuplicatesCache_serverProcess.aod | 2 +- .../RemoveFromCampaign_workflowService.aod | 2 +- process/Report_lib/Report_lib.aod | 2 +- process/Salesproject_lib/Salesproject_lib.aod | 2 +- .../SendEmail_workflowService.aod | 2 +- .../SetAttribute_workflowService.aod | 2 +- .../SetCampaignStep_workflowService.aod | 2 +- .../SetSalesprojectPhase_workflowService.aod | 2 +- process/SqlBuilder_test/SqlBuilder_test.aod | 2 +- .../SqlMaskingUtils_test.aod | 2 +- process/Sql_lib/Sql_lib.aod | 2 +- .../StandardObject_lib/StandardObject_lib.aod | 2 +- .../TempRebuildIndexPerson_serverProcess.aod | 2 +- process/Terminal_lib/Terminal_lib.aod | 2 +- process/TestIndexSearch/TestIndexSearch.aod | 2 +- process/Ticket_lib/Ticket_lib.aod | 2 +- process/Timetracking_lib/Timetracking_lib.aod | 2 +- process/Turnover_lib/Turnover_lib.aod | 2 +- process/UnitTest_lib/UnitTest_lib.aod | 2 +- process/UnitTest_test/UnitTest_test.aod | 2 +- .../UpdateOffer_workflowService.aod | 2 +- process/UserSettings_lib/UserSettings_lib.aod | 2 +- process/Util_lib/Util_lib.aod | 2 +- .../ViewTemplateData_lib.aod | 2 +- process/Workflow_lib/Workflow_lib.aod | 2 +- process/WsValidation_lib/WsValidation_lib.aod | 2 +- process/_all_test/_all_test.aod | 2 +- .../_test_clientProcess.aod | 6 +- process/_test_importer/_test_importer.aod | 2 +- process/autostartNeon/autostartNeon.aod | 2 +- process/blobHandler/blobHandler.aod | 2 +- .../buildSerialLetter_serverProcess.aod | 2 +- process/ctiCall/ctiCall.aod | 2 +- process/ctiServerEvents/ctiServerEvents.aod | 2 +- process/emailWrite/emailWrite.aod | 2 +- ...sSyncCalendarPermissions_serverProcess.aod | 2 +- .../exportLiquibaseContent_serverProcess.aod | 2 +- ...portLiquibaseSystemalias_serverProcess.aod | 2 +- .../getDocxDocument_serverProcess.aod | 2 +- .../importLead_serverProcess.aod | 2 +- process/mailbridge/mailbridge.aod | 2 +- ...recordcontainers_invalid_serverProcess.aod | 2 +- process/mstBot_rest/mstBot_rest.aod | 6 +- process/process_audit/process_audit.aod | 2 +- .../rebuildIndex_serverProcess.aod | 2 +- process/redirect_rest/redirect_rest.aod | 6 +- .../removeMSTTeams_serverProcess.aod | 2 +- .../sendBulkMail_serverProcess.aod | 2 +- ...tMissingAddressLocations_serverProcess.aod | 2 +- .../startWorkflowInstances_serverProcess.aod | 2 +- .../test_iCommRestriction.aod | 2 +- .../updateActivities_serverProzess.aod | 2 +- ...pdateAllAddressLocations_serverProcess.aod | 2 +- .../updateClassifications_serverProcess.aod | 2 +- .../workflowDeploy_rest.aod | 2 +- .../workflowExtension_serverProcess.aod | 2 +- .../workflowLinkTracking_rest.aod | 6 +- .../workflowPrivileges_rest.aod | 2 +- .../workflowRoles_rest/workflowRoles_rest.aod | 2 +- .../workflowServiceTaskParams_rest.aod | 2 +- .../workflowServiceTasks_rest.aod | 2 +- .../workflowSignal_rest.aod | 2 +- .../workflowUsers_rest/workflowUsers_rest.aod | 2 +- 232 files changed, 1793 insertions(+), 1786 deletions(-) diff --git a/.aditoprj/project.version b/.aditoprj/project.version index b4940e7b136..94b3c6aab89 100644 --- a/.aditoprj/project.version +++ b/.aditoprj/project.version @@ -1,3 +1,3 @@ #This file is generated by ADITO designer. Do NOT delete or modify! -#Tue Sep 08 15:42:02 CEST 2020 -version=6.2.0 +#Thu Dec 17 10:59:19 CET 2020 +version=6.2.1 diff --git a/entity/360Degree_entity/360Degree_entity.aod b/entity/360Degree_entity/360Degree_entity.aod index 35b812776eb..730a2527675 100644 --- a/entity/360Degree_entity/360Degree_entity.aod +++ b/entity/360Degree_entity/360Degree_entity.aod @@ -43,14 +43,6 @@ <targetContextField>TARGET_CONTEXT</targetContextField> <targetIdField>TARGET_ID</targetIdField> <documentation>%aditoprj%/entity/360Degree_entity/entityfields/organisationobjects/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>15488007-165c-4630-828a-447cf2c27899</name> - <entityName>Organisation_entity</entityName> - <fieldName>360DegreeObjects</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ObjectType_param</name> @@ -62,6 +54,14 @@ <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/organisationobjects/children/basecontextid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>15488007-165c-4630-828a-447cf2c27899</name> + <entityName>Organisation_entity</entityName> + <fieldName>360DegreeObjects</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>TARGET_CONTEXT</name> @@ -85,14 +85,6 @@ <targetContextField>TARGET_CONTEXT</targetContextField> <targetIdField>TARGET_ID</targetIdField> <documentation>%aditoprj%/entity/360Degree_entity/entityfields/personobjects/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>1d931ae6-137a-4db3-b02c-eb8872d349c6</name> - <entityName>Person_entity</entityName> - <fieldName>360DegreeObjects</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ObjectType_param</name> @@ -104,6 +96,14 @@ <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/personobjects/children/basecontextid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>1d931ae6-137a-4db3-b02c-eb8872d349c6</name> + <entityName>Person_entity</entityName> + <fieldName>360DegreeObjects</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityActionGroup> <name>newModule</name> diff --git a/entity/ActivityLink_entity/ActivityLink_entity.aod b/entity/ActivityLink_entity/ActivityLink_entity.aod index e5518fff2fa..7603602585d 100644 --- a/entity/ActivityLink_entity/ActivityLink_entity.aod +++ b/entity/ActivityLink_entity/ActivityLink_entity.aod @@ -40,6 +40,12 @@ <targetIdField>OBJECT_ROWID</targetIdField> <documentation>%aditoprj%/entity/ActivityLink_entity/entityfields/links/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>ActivityId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>148c98ea-a24b-453a-afe9-975555486b2c</name> @@ -48,26 +54,20 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ActivityId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>AllObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>AllObjects</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Context</name> diff --git a/entity/AddressType_entity/AddressType_entity.aod b/entity/AddressType_entity/AddressType_entity.aod index 44fe6f29155..843afd1e218 100644 --- a/entity/AddressType_entity/AddressType_entity.aod +++ b/entity/AddressType_entity/AddressType_entity.aod @@ -22,6 +22,13 @@ <name>ByCategory</name> <lookupIdfield>KEYID</lookupIdfield> <documentation>%aditoprj%/entity/AddressType_entity/entityfields/bycategory/documentation.adoc</documentation> + <children> + <entityParameter> + <name>UsageFilter_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>0956b1f3-8b67-4f82-b04a-70be88aff19f</name> @@ -30,13 +37,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>UsageFilter_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>UsageFilter_param</name> diff --git a/entity/AppointmentLink_entity/AppointmentLink_entity.aod b/entity/AppointmentLink_entity/AppointmentLink_entity.aod index a60f3736b97..1d6a1b12b34 100644 --- a/entity/AppointmentLink_entity/AppointmentLink_entity.aod +++ b/entity/AppointmentLink_entity/AppointmentLink_entity.aod @@ -51,6 +51,12 @@ <targetIdField>OBJECTID</targetIdField> <documentation>%aditoprj%/entity/AppointmentLink_entity/entityfields/links/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>AppointmentId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>3dde1745-18a1-4499-83d0-61e414086997</name> @@ -59,12 +65,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>AppointmentId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>Context</name> @@ -76,17 +76,17 @@ </entityConsumer> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>AllObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/AppointmentLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>AllObjects</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>opencontext</name> diff --git a/entity/AroundLocation_entity/AroundLocation_entity.aod b/entity/AroundLocation_entity/AroundLocation_entity.aod index c91531dc4c4..227c9fc268c 100644 --- a/entity/AroundLocation_entity/AroundLocation_entity.aod +++ b/entity/AroundLocation_entity/AroundLocation_entity.aod @@ -21,17 +21,17 @@ <entityConsumer> <name>Organisations</name> <state>READONLY</state> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>OrganisationsViaIndex</fieldName> - </dependency> <children> <entityParameter> <name>OnlyShowContactIds_param</name> <valueProcess>%aditoprj%/entity/AroundLocation_entity/entityfields/organisations/children/onlyshowcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>OrganisationsViaIndex</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>Open</name> diff --git a/entity/AttributeUsage_entity/AttributeUsage_entity.aod b/entity/AttributeUsage_entity/AttributeUsage_entity.aod index 24f5a40c608..166b6b8423d 100644 --- a/entity/AttributeUsage_entity/AttributeUsage_entity.aod +++ b/entity/AttributeUsage_entity/AttributeUsage_entity.aod @@ -72,11 +72,6 @@ </entityField> <entityConsumer> <name>Context</name> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> - </dependency> <children> <entityParameter> <name>Blacklist_param</name> @@ -87,6 +82,11 @@ <valueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/context/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>SingleSelection_param</name> diff --git a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod index 60d85496e22..0e5fdd626ed 100644 --- a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod +++ b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod @@ -67,17 +67,17 @@ </entityConsumer> <entityConsumer> <name>StatusKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>EMAIL_ADDRESS</name> @@ -136,17 +136,17 @@ </entityField> <entityConsumer> <name>EmailAdresses</name> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>EmailCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/emailadresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>EmailCommunications</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod index 339e6914d5f..5a45ceab9f7 100644 --- a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod +++ b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod @@ -60,11 +60,6 @@ </entityConsumer> <entityConsumer> <name>CampaignStepConsumer</name> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> @@ -72,6 +67,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> </entityConsumer> <entityField> <name>UID</name> diff --git a/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod b/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod index ff9e8a25ad8..8aae1d74b98 100644 --- a/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod +++ b/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod @@ -15,14 +15,6 @@ <entityProvider> <name>CampaignAnalysisProvider</name> <documentation>%aditoprj%/entity/CampaignAnalysis_entity/entityfields/campaignanalysisprovider/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>bd130613-f0e4-4591-8035-2c2491b08c50</name> - <entityName>Campaign_entity</entityName> - <fieldName>CampaignAnalysisConsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>DateEnd_param</name> @@ -40,6 +32,14 @@ <mandatory v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>bd130613-f0e4-4591-8035-2c2491b08c50</name> + <entityName>Campaign_entity</entityName> + <fieldName>CampaignAnalysisConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>CampaignId_param</name> diff --git a/entity/CampaignCost_entity/CampaignCost_entity.aod b/entity/CampaignCost_entity/CampaignCost_entity.aod index 096e8a8d95b..3f3d974f90d 100644 --- a/entity/CampaignCost_entity/CampaignCost_entity.aod +++ b/entity/CampaignCost_entity/CampaignCost_entity.aod @@ -80,14 +80,6 @@ <entityProvider> <name>CampaignCosts</name> <documentation>%aditoprj%/entity/CampaignCost_entity/entityfields/campaigncosts/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>7131288b-af5c-4914-96f5-c5d70217fc23</name> - <entityName>Campaign_entity</entityName> - <fieldName>CampaignCosts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>CampaignStepId_param</name> @@ -107,24 +99,18 @@ <expose v="false" /> </entityParameter> </children> - </entityProvider> - <entityProvider> - <name>StepCosts</name> - <documentation>%aditoprj%/entity/CampaignCost_entity/entityfields/stepcosts/documentation.adoc</documentation> <dependencies> <entityDependency> - <name>af147f3e-a1bd-4eb0-9ac8-325dbdaba17d</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignStepCosts</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>2a92b738-c0bb-4c14-9915-aff9e18effaf</name> + <name>7131288b-af5c-4914-96f5-c5d70217fc23</name> <entityName>Campaign_entity</entityName> - <fieldName>CampaignStepCosts</fieldName> + <fieldName>CampaignCosts</fieldName> <isConsumer v="false" /> </entityDependency> </dependencies> + </entityProvider> + <entityProvider> + <name>StepCosts</name> + <documentation>%aditoprj%/entity/CampaignCost_entity/entityfields/stepcosts/documentation.adoc</documentation> <children> <entityParameter> <name>CampaignStepId_param</name> @@ -144,6 +130,20 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>af147f3e-a1bd-4eb0-9ac8-325dbdaba17d</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignStepCosts</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>2a92b738-c0bb-4c14-9915-aff9e18effaf</name> + <entityName>Campaign_entity</entityName> + <fieldName>CampaignStepCosts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>Campaigns</name> @@ -155,25 +155,20 @@ </entityConsumer> <entityConsumer> <name>CampaignSteps</name> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> <valueProcess>%aditoprj%/entity/CampaignCost_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordCampaignManagementCostCategory</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordCampaignManagementCostCategory</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -184,6 +179,11 @@ <valueProcess>%aditoprj%/entity/CampaignCost_entity/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>CampaignId_param</name> diff --git a/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod b/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod index f274ff68901..44826e7cfe2 100644 --- a/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod +++ b/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod @@ -81,17 +81,17 @@ </entityField> <entityConsumer> <name>CampaignStatusKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/CampaignPlanning_entity/entityfields/campaignstatuskeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/CampaignStep_entity/CampaignStep_entity.aod b/entity/CampaignStep_entity/CampaignStep_entity.aod index ae04d014704..3632eda854e 100644 --- a/entity/CampaignStep_entity/CampaignStep_entity.aod +++ b/entity/CampaignStep_entity/CampaignStep_entity.aod @@ -131,6 +131,13 @@ <name>CampaignSteps</name> <documentation>%aditoprj%/entity/CampaignStep_entity/entityfields/campaignsteps/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>campaignId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>421e6cc2-f874-4834-b022-fe1b253d50af</name> @@ -169,13 +176,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>campaignId_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>campaignId_param</name> @@ -184,17 +184,17 @@ </entityParameter> <entityConsumer> <name>KeywordStates</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>MAXPARTICIPANTS</name> @@ -206,11 +206,6 @@ <entityConsumer> <name>CampaignParticipantsConsumer</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>CampaignParticipant_entity</entityName> - <fieldName>CampaignParticipantsProvider</fieldName> - </dependency> <children> <entityParameter> <name>CampaignId_param</name> @@ -221,6 +216,11 @@ <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/campaignparticipantsconsumer/children/campaignstepid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignParticipant_entity</entityName> + <fieldName>CampaignParticipantsProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>CurrentMaxParticipantsInfo</name> @@ -241,25 +241,20 @@ </entityField> <entityConsumer> <name>Employees</name> - <dependency> - <name>dependency</name> - <entityName>Employee_entity</entityName> - <fieldName>Employees</fieldName> - </dependency> <children> <entityParameter> <name>OnlyActives_param</name> <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>CampaignStepCosts</name> <dependency> <name>dependency</name> - <entityName>CampaignCost_entity</entityName> - <fieldName>StepCosts</fieldName> + <entityName>Employee_entity</entityName> + <fieldName>Employees</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>CampaignStepCosts</name> <children> <entityParameter> <name>CampaignId_param</name> @@ -270,6 +265,11 @@ <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/campaignstepcosts/children/campaignstepid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignCost_entity</entityName> + <fieldName>StepCosts</fieldName> + </dependency> </entityConsumer> <entityField> <name>COST</name> @@ -289,11 +289,6 @@ <entityConsumer> <name>Activities</name> <title>Activities</title> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -304,16 +299,16 @@ <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Tasks</name> <title>Tasks</title> <stateProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -324,6 +319,11 @@ <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -357,11 +357,6 @@ </entityField> <entityConsumer> <name>CampaignStepsConsumer</name> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> @@ -373,6 +368,11 @@ <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/campaignstepsconsumer/children/maxsort_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> </entityConsumer> <entityField> <name>CampaignName</name> @@ -419,17 +419,17 @@ </entityField> <entityConsumer> <name>KeywordStepMedium</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/keywordstepmedium/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> </entityFields> <recordContainers> diff --git a/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod b/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod index 546a64d9480..c37f1f7de65 100644 --- a/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod +++ b/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod @@ -30,17 +30,17 @@ </entityConsumer> <entityConsumer> <name>ClassificationGradings</name> - <dependency> - <name>dependency</name> - <entityName>ClassificationGrading_entity</entityName> - <fieldName>ClassificationGradings</fieldName> - </dependency> <children> <entityParameter> <name>ClassificationTypeId_param</name> <valueProcess>%aditoprj%/entity/ClassificationGroup_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ClassificationGrading_entity</entityName> + <fieldName>ClassificationGradings</fieldName> + </dependency> </entityConsumer> <entityField> <name>SORTING</name> diff --git a/entity/ClassificationType_entity/ClassificationType_entity.aod b/entity/ClassificationType_entity/ClassificationType_entity.aod index faf8305ab81..2434fa0a53d 100644 --- a/entity/ClassificationType_entity/ClassificationType_entity.aod +++ b/entity/ClassificationType_entity/ClassificationType_entity.aod @@ -40,11 +40,6 @@ <entityConsumer> <name>ClassificationScores</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>ClassificationScore_entity</entityName> - <fieldName>ClassificationScores</fieldName> - </dependency> <children> <entityParameter> <name>ClassificationTypeId_param</name> @@ -55,6 +50,11 @@ <valueProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/classificationscores/children/classificationgroup_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ClassificationScore_entity</entityName> + <fieldName>ClassificationScores</fieldName> + </dependency> </entityConsumer> <entityField> <name>infoField</name> diff --git a/entity/Classification_entity/Classification_entity.aod b/entity/Classification_entity/Classification_entity.aod index 0ffc7c02987..61c825296a1 100644 --- a/entity/Classification_entity/Classification_entity.aod +++ b/entity/Classification_entity/Classification_entity.aod @@ -88,11 +88,6 @@ </entityField> <entityConsumer> <name>ClassificationScores</name> - <dependency> - <name>dependency</name> - <entityName>ClassificationScore_entity</entityName> - <fieldName>ClassificationScores</fieldName> - </dependency> <children> <entityParameter> <name>ClassificationGroup_param</name> @@ -107,6 +102,11 @@ <valueProcess>%aditoprj%/entity/Classification_entity/entityfields/classificationscores/children/classificationtype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ClassificationScore_entity</entityName> + <fieldName>ClassificationScores</fieldName> + </dependency> </entityConsumer> <entityField> <name>CLASSIFICATIONTYPE</name> @@ -130,17 +130,17 @@ </entityField> <entityConsumer> <name>KeywordClassificationTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Classification_entity/entityfields/keywordclassificationtypes/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>SCORETYPE</name> diff --git a/entity/CommRestriction_Entity/CommRestriction_Entity.aod b/entity/CommRestriction_Entity/CommRestriction_Entity.aod index 102c450de9e..60d0a7e5c51 100644 --- a/entity/CommRestriction_Entity/CommRestriction_Entity.aod +++ b/entity/CommRestriction_Entity/CommRestriction_Entity.aod @@ -55,11 +55,6 @@ </entityConsumer> <entityConsumer> <name>CommRestrictionMedium</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -71,6 +66,11 @@ <valueProcess>%aditoprj%/entity/CommRestriction_Entity/entityfields/commrestrictionmedium/children/excludedkeyidssubquery_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>CommRestrictions</name> @@ -103,17 +103,17 @@ </entityField> <entityConsumer> <name>MediumKeywordAttribute</name> - <dependency> - <name>dependency</name> - <entityName>KeywordAttribute_entity</entityName> - <fieldName>SpecificContainerKeyword</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/CommRestriction_Entity/entityfields/mediumkeywordattribute/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordAttribute_entity</entityName> + <fieldName>SpecificContainerKeyword</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/Competition_entity/Competition_entity.aod b/entity/Competition_entity/Competition_entity.aod index 7e7298fd9a7..50d4bcf3096 100644 --- a/entity/Competition_entity/Competition_entity.aod +++ b/entity/Competition_entity/Competition_entity.aod @@ -79,11 +79,6 @@ </entityConsumer> <entityConsumer> <name>Organisations</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>WithAttribute</fieldName> - </dependency> <children> <entityParameter> <name>AttributeId_param</name> @@ -102,15 +97,15 @@ <title></title> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>WithAttribute</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>KeywordWonLost</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -118,6 +113,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>PHASE</name> @@ -127,11 +127,6 @@ </entityField> <entityConsumer> <name>KeywordPricePolitics</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -139,14 +134,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordWeaknesses</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordWeaknesses</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -154,14 +149,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStrenghts</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStrenghts</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -169,14 +164,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordPhases</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordPhases</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -184,14 +179,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -199,15 +194,15 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <state>DISABLED</state> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -222,6 +217,11 @@ <valueProcess>%aditoprj%/entity/Competition_entity/entityfields/attributes/children/displaysimplename_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityField> <name>IMAGE</name> @@ -254,11 +254,6 @@ </entityConsumer> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>AllObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -267,18 +262,15 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>AllObjects</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Links</name> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>be977304-6623-42eb-a8bd-80ef43831204</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Competitions</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -289,6 +281,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>be977304-6623-42eb-a8bd-80ef43831204</name> + <entityName>Salesproject_entity</entityName> + <fieldName>Competitions</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod index 41a386bd8dc..051d569c5b1 100644 --- a/entity/Contact_entity/Contact_entity.aod +++ b/entity/Contact_entity/Contact_entity.aod @@ -65,17 +65,17 @@ </entityField> <entityConsumer> <name>Organisations</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>WithPersonIdFilter</fieldName> - </dependency> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>WithPersonIdFilter</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>PersonId_param</name> @@ -86,6 +86,12 @@ <name>PersonRelated</name> <targetContextField>targetContext</targetContextField> <targetIdField>CONTACTID</targetIdField> + <children> + <entityParameter> + <name>OwnContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>14975dad-907c-4f8c-bd39-243508ede721</name> @@ -94,12 +100,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>OwnContactId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>ADDRESS_ID</name> @@ -115,31 +115,31 @@ </entityField> <entityConsumer> <name>Communications</name> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>AllCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/communications/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ContactAddresses</name> <dependency> <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>ContactAddresses</fieldName> + <entityName>Communication_entity</entityName> + <fieldName>AllCommunications</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ContactAddresses</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/contactaddresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>ContactAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>LANGUAGE</name> @@ -163,6 +163,13 @@ <targetContextField>targetContext</targetContextField> <targetIdField>CONTACTID</targetIdField> <titlePlural>Other Contactroles</titlePlural> + <children> + <entityParameter> + <name>PersonId_param</name> + <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/personscontactsexceptown/children/personid_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>34cc85f4-5555-4631-94fc-f3ad35b7ce7e</name> @@ -171,13 +178,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>PersonId_param</name> - <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/personscontactsexceptown/children/personid_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>OwnContactId_param</name> @@ -198,17 +198,17 @@ </entityField> <entityConsumer> <name>KeywordContactStates</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>LanguageKey_param</name> diff --git a/entity/Context_entity/Context_entity.aod b/entity/Context_entity/Context_entity.aod index a8e3222ec7e..8e8f8d01c34 100644 --- a/entity/Context_entity/Context_entity.aod +++ b/entity/Context_entity/Context_entity.aod @@ -30,6 +30,16 @@ </entityField> <entityProvider> <name>Context</name> + <children> + <entityParameter> + <name>InvertBlacklist_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>Blacklist_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>dab09827-2eeb-403d-a070-ba805d2640ee</name> @@ -56,16 +66,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>InvertBlacklist_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>Blacklist_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>Blacklist_param</name> @@ -74,6 +74,13 @@ </entityParameter> <entityProvider> <name>ActivityLinkable</name> + <children> + <entityParameter> + <name>Blacklist_param</name> + <valueProcess>%aditoprj%/entity/Context_entity/entityfields/activitylinkable/children/blacklist_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>de50f67e-5ed0-46aa-b007-8c086cf5fea5</name> @@ -82,16 +89,16 @@ <isConsumer v="false" /> </entityDependency> </dependencies> + </entityProvider> + <entityProvider> + <name>TaskLinkable</name> <children> <entityParameter> <name>Blacklist_param</name> - <valueProcess>%aditoprj%/entity/Context_entity/entityfields/activitylinkable/children/blacklist_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/Context_entity/entityfields/tasklinkable/children/blacklist_param/valueProcess.js</valueProcess> <expose v="false" /> </entityParameter> </children> - </entityProvider> - <entityProvider> - <name>TaskLinkable</name> <dependencies> <entityDependency> <name>ff8925da-b69a-46dd-8fe2-d6707da8808e</name> @@ -100,13 +107,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Blacklist_param</name> - <valueProcess>%aditoprj%/entity/Context_entity/entityfields/tasklinkable/children/blacklist_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>InvertBlacklist_param</name> @@ -157,6 +157,17 @@ </entityProvider> <entityProvider> <name>ContextTemplatePlaceOfUse</name> + <children> + <entityParameter> + <name>InvertBlacklist_param</name> + <valueProcess>%aditoprj%/entity/Context_entity/entityfields/contexttemplateplaceofuse/children/invertblacklist_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>Blacklist_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>423a7a33-02f4-4975-94fd-fa0c21278e3b</name> @@ -171,17 +182,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>InvertBlacklist_param</name> - <valueProcess>%aditoprj%/entity/Context_entity/entityfields/contexttemplateplaceofuse/children/invertblacklist_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>Blacklist_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/Countries_Entity/Countries_Entity.aod b/entity/Countries_Entity/Countries_Entity.aod index 9a4408cb03c..1b19a2841ca 100644 --- a/entity/Countries_Entity/Countries_Entity.aod +++ b/entity/Countries_Entity/Countries_Entity.aod @@ -16,6 +16,18 @@ <name>ISO2Name</name> <lookupIdfield>ISO2</lookupIdfield> <documentation>%aditoprj%/entity/Countries_Entity/entityfields/iso2name/documentation.adoc</documentation> + <children> + <entityParameter> + <name>Key_param</name> + <valueProcess>%aditoprj%/entity/Countries_Entity/entityfields/iso2name/children/key_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>Value_param</name> + <valueProcess>%aditoprj%/entity/Countries_Entity/entityfields/iso2name/children/value_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>83e8a2e6-aa80-4b35-a0ad-8dad483ed428</name> @@ -30,18 +42,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Key_param</name> - <valueProcess>%aditoprj%/entity/Countries_Entity/entityfields/iso2name/children/key_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>Value_param</name> - <valueProcess>%aditoprj%/entity/Countries_Entity/entityfields/iso2name/children/value_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>Key_param</name> diff --git a/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod b/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod index 9a090c1ee2c..c170fcd06fc 100644 --- a/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod +++ b/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod @@ -83,31 +83,31 @@ </entityField> <entityConsumer> <name>KeywordDeadline</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/DSGVOInfo_entity/entityfields/keyworddeadline/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordTransmission</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordTransmission</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/DSGVOInfo_entity/entityfields/keywordtransmission/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>TRANSMISSION</name> @@ -140,17 +140,17 @@ </entityConsumer> <entityConsumer> <name>KeywordGuarantee</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/DSGVOInfo_entity/entityfields/keywordguarantee/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/DSGVO_entity/DSGVO_entity.aod b/entity/DSGVO_entity/DSGVO_entity.aod index 19cefc3a19e..a6445e18ca6 100644 --- a/entity/DSGVO_entity/DSGVO_entity.aod +++ b/entity/DSGVO_entity/DSGVO_entity.aod @@ -84,11 +84,6 @@ </entityField> <entityConsumer> <name>KeywordDSGVOPurpose</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -96,20 +91,25 @@ <valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/keyworddsgvopurpose/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDSGVOStatuoritysource</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDSGVOStatuoritysource</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/keyworddsgvostatuoritysource/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Communications</name> @@ -181,17 +181,17 @@ </entityField> <entityConsumer> <name>KeywordDSGVOType</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/keyworddsgvotype/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>DSGVOEntries</name> diff --git a/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod b/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod index 83aa32b9731..125b89eb929 100644 --- a/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod +++ b/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod @@ -40,17 +40,17 @@ </entityField> <entityConsumer> <name>Languages</name> - <dependency> - <name>dependency</name> - <entityName>Language_entity</entityName> - <fieldName>ISO3NameFiltered</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedIds_param</name> <valueProcess>%aditoprj%/entity/DescriptionTranslation_entity/entityfields/languages/children/excludedids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Language_entity</entityName> + <fieldName>ISO3NameFiltered</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ObjectType_param</name> diff --git a/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod b/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod index 4062bb8fd40..542e050c641 100644 --- a/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod +++ b/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod @@ -37,11 +37,6 @@ </entityField> <entityConsumer> <name>Departments</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> <children> <entityParameter> <name>ParentId_param</name> @@ -49,6 +44,11 @@ <description>parent id, this is used for filtering by the parent in the content process</description> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Employees</name> @@ -90,14 +90,6 @@ <lookupIdfield>DISTRICTRESPONSIBLEID</lookupIdfield> <documentation>%aditoprj%/entity/DistrictResponsible_entity/entityfields/districtresponsibles/documentation.adoc</documentation> <titlePlural>Responsibles</titlePlural> - <dependencies> - <entityDependency> - <name>ef26fdb6-5fcf-416e-bcc8-380b5751b523</name> - <entityName>District_entity</entityName> - <fieldName>DistrictResponsibles</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>DistrictId_param</name> @@ -108,6 +100,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>ef26fdb6-5fcf-416e-bcc8-380b5751b523</name> + <entityName>District_entity</entityName> + <fieldName>DistrictResponsibles</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>DistrictId_param</name> @@ -116,25 +116,20 @@ </entityParameter> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Documents</name> <dependency> <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Documents</name> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -145,6 +140,11 @@ <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityField> <name>departmentAttributeName</name> @@ -159,6 +159,12 @@ <targetContextField>targetContext</targetContextField> <targetIdField>EMPLOYEE_CONTACT_ID</targetIdField> <documentation>%aditoprj%/entity/DistrictResponsible_entity/entityfields/organisationresponsibles/documentation.adoc</documentation> + <children> + <entityParameter> + <name>DistrictId_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>9c2fe0da-9456-44ef-ac6c-28ac234b35f7</name> @@ -173,12 +179,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>DistrictId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>OrgUid_param</name> diff --git a/entity/District_entity/District_entity.aod b/entity/District_entity/District_entity.aod index e775acd3c22..8ae74f7b156 100644 --- a/entity/District_entity/District_entity.aod +++ b/entity/District_entity/District_entity.aod @@ -82,14 +82,6 @@ <documentation>%aditoprj%/entity/District_entity/entityfields/responsibledistricts/documentation.adoc</documentation> <titlePlural>Responsible Districts</titlePlural> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>291c0ca4-5a68-45f5-80a7-745c7df56d7c</name> - <entityName>DistrictResponsible_entity</entityName> - <fieldName>Districts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ExcludedDistrictIds_param</name> @@ -100,6 +92,14 @@ <mandatory v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>291c0ca4-5a68-45f5-80a7-745c7df56d7c</name> + <entityName>DistrictResponsible_entity</entityName> + <fieldName>Districts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>Languages</name> @@ -111,17 +111,17 @@ </entityConsumer> <entityConsumer> <name>DistrictResponsibles</name> - <dependency> - <name>dependency</name> - <entityName>DistrictResponsible_entity</entityName> - <fieldName>DistrictResponsibles</fieldName> - </dependency> <children> <entityParameter> <name>DistrictId_param</name> <valueProcess>%aditoprj%/entity/District_entity/entityfields/districtresponsibles/children/districtid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DistrictResponsible_entity</entityName> + <fieldName>DistrictResponsibles</fieldName> + </dependency> </entityConsumer> <entityField> <name>USER_NEW</name> @@ -142,17 +142,17 @@ <entityConsumer> <name>Organisations</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>Organisations</fieldName> - </dependency> <children> <entityParameter> <name>FilterPreSet_param</name> <valueProcess>%aditoprj%/entity/District_entity/entityfields/organisations/children/filterpreset_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>Organisations</fieldName> + </dependency> </entityConsumer> <entityFieldGroup> <name>DISTRICT_NUMBER_fieldGroup</name> @@ -164,11 +164,6 @@ </entityFieldGroup> <entityConsumer> <name>Documents</name> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -179,6 +174,11 @@ <valueProcess>%aditoprj%/entity/District_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>LogHistories</name> @@ -217,21 +217,27 @@ </entityProvider> <entityConsumer> <name>ParentDistricts</name> - <dependency> - <name>dependency</name> - <entityName>#ENTITY</entityName> - <fieldName>ValidParentDistricts</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedDistrictIds_param</name> <valueProcess>%aditoprj%/entity/District_entity/entityfields/parentdistricts/children/excludeddistrictids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>#ENTITY</entityName> + <fieldName>ValidParentDistricts</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>ValidParentDistricts</name> <documentation>%aditoprj%/entity/District_entity/entityfields/validparentdistricts/documentation.adoc</documentation> + <children> + <entityParameter> + <name>DistrictsByContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>8b0738a4-e4cd-4f9e-8df1-f499046c81bf</name> @@ -240,12 +246,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>DistrictsByContactId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ExcludedDistrictIds_param</name> diff --git a/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod b/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod index e848d6cbed3..045e605d322 100644 --- a/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod +++ b/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod @@ -51,11 +51,6 @@ </entityParameter> <entityConsumer> <name>Attachments</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>Attachments</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -63,20 +58,17 @@ <valueProcess>%aditoprj%/entity/DocumentTemplateLink_entity/entityfields/attachments/children/documenttemplatetype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>Attachments</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Links</name> <targetIdField>DOCUMENTTEMPLATE_ID_CHILD</targetIdField> <documentation>%aditoprj%/entity/DocumentTemplateLink_entity/entityfields/links/documentation.adoc</documentation> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>db3b7e04-ca3b-4205-a1d3-5e5e5cb13073</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>Links</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>DocumentId_param</name> @@ -87,6 +79,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>db3b7e04-ca3b-4205-a1d3-5e5e5cb13073</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>Links</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>Type_param</name> diff --git a/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod b/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod index bea4c1751d8..c6fa4c852db 100644 --- a/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod +++ b/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod @@ -32,6 +32,12 @@ <lookupIdfield>KEYID</lookupIdfield> <documentation>%aditoprj%/entity/DocumentTemplateTypeCategory_entity/entityfields/bycategory/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>usageFilter_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>5eb6b17c-8c13-48df-84d5-a949b7d21cf3</name> @@ -40,12 +46,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>usageFilter_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod index dbb9e49a3b6..b19bc7ae52f 100644 --- a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod +++ b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod @@ -94,11 +94,6 @@ </entityField> <entityConsumer> <name>Documents</name> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentTable_param</name> @@ -109,6 +104,11 @@ <valueProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -120,27 +120,22 @@ </entityConsumer> <entityConsumer> <name>KeywordDocumentTemplateType</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/keyworddocumenttemplatetype/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <stateProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/DocumentTemplate_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -151,6 +146,11 @@ <valueProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityField> <name>Content</name> @@ -176,11 +176,6 @@ </entityField> <entityConsumer> <name>DocumentTemplateTypeCategory</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplateTypeCategory_entity</entityName> - <fieldName>ByCategory</fieldName> - </dependency> <children> <entityParameter> <name>usageFilter_param</name> @@ -188,6 +183,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplateTypeCategory_entity</entityName> + <fieldName>ByCategory</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Attachments</name> @@ -208,11 +208,6 @@ <entityConsumer> <name>Links</name> <stateProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/links/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplateLink_entity</entityName> - <fieldName>Links</fieldName> - </dependency> <children> <entityParameter> <name>DocumentId_param</name> @@ -225,6 +220,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplateLink_entity</entityName> + <fieldName>Links</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>DocumentTemplateTypeClassification_param</name> @@ -234,6 +234,12 @@ <entityProvider> <name>DocumentTemplateProvider</name> <documentation>%aditoprj%/entity/DocumentTemplate_entity/entityfields/documenttemplateprovider/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ComingFrom_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>9c10883d-eb73-4587-b758-693a66367a4c</name> @@ -278,12 +284,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ComingFrom_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>DocumentTemplateType_param</name> @@ -322,11 +322,6 @@ <name>DocumentTemplatePlaceOfUse</name> <stateProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplatePlaceOfUse_entity</entityName> - <fieldName>DocumentTemplatePlaceOfUse</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplatePlaceOfUse_param</name> @@ -334,6 +329,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplatePlaceOfUse_entity</entityName> + <fieldName>DocumentTemplatePlaceOfUse</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ComingFrom_param</name> diff --git a/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod b/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod index fb343c9aa35..b03785e2839 100644 --- a/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod +++ b/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod @@ -74,17 +74,17 @@ </entityField> <entityConsumer> <name>ScannerResultFieldsConfig_Consumer</name> - <dependency> - <name>dependency</name> - <entityName>DuplicateScannerResultFieldConfig_entity</entityName> - <fieldName>ScannerResultFieldConfigProvider</fieldName> - </dependency> <children> <entityParameter> <name>DuplicateScannerId_param</name> <valueProcess>%aditoprj%/entity/DuplicateScanner_entity/entityfields/scannerresultfieldsconfig_consumer/children/duplicatescannerid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DuplicateScannerResultFieldConfig_entity</entityName> + <fieldName>ScannerResultFieldConfigProvider</fieldName> + </dependency> </entityConsumer> <entityActionGroup> <name>RunActionGroup</name> diff --git a/entity/Duplicates_entity/Duplicates_entity.aod b/entity/Duplicates_entity/Duplicates_entity.aod index 54ee932a323..01016698641 100644 --- a/entity/Duplicates_entity/Duplicates_entity.aod +++ b/entity/Duplicates_entity/Duplicates_entity.aod @@ -42,11 +42,6 @@ </entityProvider> <entityConsumer> <name>SelfPersonDuplicatesConsumer</name> - <dependency> - <name>dependency</name> - <entityName>Duplicates_entity</entityName> - <fieldName>SelfPersonDuplicatesProvider</fieldName> - </dependency> <children> <entityParameter> <name>TargetEntity</name> @@ -58,6 +53,11 @@ <valueProcess>%aditoprj%/entity/Duplicates_entity/entityfields/selfpersonduplicatesconsumer/children/clusterid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Duplicates_entity</entityName> + <fieldName>SelfPersonDuplicatesProvider</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>TargetEntity</name> @@ -66,11 +66,6 @@ </entityParameter> <entityConsumer> <name>SelfOrganisationDuplicatesConsumer</name> - <dependency> - <name>dependency</name> - <entityName>Duplicates_entity</entityName> - <fieldName>SelfOrganisationDuplicatesProvider</fieldName> - </dependency> <children> <entityParameter> <name>TargetEntity</name> @@ -81,6 +76,11 @@ <valueProcess>%aditoprj%/entity/Duplicates_entity/entityfields/selforganisationduplicatesconsumer/children/clusterid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Duplicates_entity</entityName> + <fieldName>SelfOrganisationDuplicatesProvider</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>SelfOrganisationDuplicatesProvider</name> @@ -88,11 +88,6 @@ </entityProvider> <entityConsumer> <name>DuplicatesUnrelatedPersonConsumer</name> - <dependency> - <name>dependency</name> - <entityName>DuplicatesUnrelated_entity</entityName> - <fieldName>UnrelatedPersonsProvider</fieldName> - </dependency> <children> <entityParameter> <name>TargetEntity</name> @@ -103,17 +98,17 @@ <valueProcess>%aditoprj%/entity/Duplicates_entity/entityfields/duplicatesunrelatedpersonconsumer/children/clusterid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DuplicatesUnrelated_entity</entityName> + <fieldName>UnrelatedPersonsProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>CLUSTER_ID</name> </entityField> <entityConsumer> <name>DuplicatePersonsConsumer</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>NonselfDuplicates</fieldName> - </dependency> <children> <entityParameter> <name>OnlyShowContactIds_param</name> @@ -124,6 +119,11 @@ <valueProcess>%aditoprj%/entity/Duplicates_entity/entityfields/duplicatepersonsconsumer/children/duplicateactionscontrol_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>NonselfDuplicates</fieldName> + </dependency> </entityConsumer> <entityActionGroup> <name>DuplicateClusterActionGroup</name> @@ -140,11 +140,6 @@ </entityActionGroup> <entityConsumer> <name>DuplicatesUnrelatedOrganisationConsumer</name> - <dependency> - <name>dependency</name> - <entityName>DuplicatesUnrelated_entity</entityName> - <fieldName>UnrelatedOrganisationsProvider</fieldName> - </dependency> <children> <entityParameter> <name>TargetEntity</name> @@ -155,6 +150,11 @@ <valueProcess>%aditoprj%/entity/Duplicates_entity/entityfields/duplicatesunrelatedorganisationconsumer/children/clusterid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DuplicatesUnrelated_entity</entityName> + <fieldName>UnrelatedOrganisationsProvider</fieldName> + </dependency> </entityConsumer> <entityActionGroup> <name>PersonOpenClusterDetailActionGroup</name> @@ -186,11 +186,6 @@ </entityActionGroup> <entityConsumer> <name>DuplicateOrganisationsConsumer</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>NonselfDuplicates</fieldName> - </dependency> <children> <entityParameter> <name>DuplicateActionsControl_param</name> @@ -201,6 +196,11 @@ <valueProcess>%aditoprj%/entity/Duplicates_entity/entityfields/duplicateorganisationsconsumer/children/onlyshowcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>NonselfDuplicates</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/EmployeeRole_entity/EmployeeRole_entity.aod b/entity/EmployeeRole_entity/EmployeeRole_entity.aod index 8bf5d69b236..a3ed777f95a 100644 --- a/entity/EmployeeRole_entity/EmployeeRole_entity.aod +++ b/entity/EmployeeRole_entity/EmployeeRole_entity.aod @@ -26,6 +26,13 @@ <name>EmployeeRoles</name> <targetContextField>TARGETCONTEXT</targetContextField> <targetIdField>UID</targetIdField> + <children> + <entityParameter> + <name>UserTitle_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>3bcec57a-7165-4773-9253-5ecab26ee3f4</name> @@ -34,13 +41,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>UserTitle_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>ROLE</name> @@ -51,17 +51,17 @@ </entityField> <entityConsumer> <name>Roles</name> - <dependency> - <name>dependency</name> - <entityName>Role_entity</entityName> - <fieldName>FilteredRoles</fieldName> - </dependency> <children> <entityParameter> <name>ExcludeRoles_param</name> <valueProcess>%aditoprj%/entity/EmployeeRole_entity/entityfields/roles/children/excluderoles_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Role_entity</entityName> + <fieldName>FilteredRoles</fieldName> + </dependency> </entityConsumer> <entityField> <name>TARGETCONTEXT</name> diff --git a/entity/Employee_entity/Employee_entity.aod b/entity/Employee_entity/Employee_entity.aod index bc177161e35..c17ea53f45b 100644 --- a/entity/Employee_entity/Employee_entity.aod +++ b/entity/Employee_entity/Employee_entity.aod @@ -111,11 +111,6 @@ <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Employee_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -126,6 +121,11 @@ <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityFieldGroup> <name>NAME_fieldGroup</name> @@ -156,25 +156,20 @@ </entityField> <entityConsumer> <name>EmployeeRoles</name> - <dependency> - <name>dependency</name> - <entityName>EmployeeRole_entity</entityName> - <fieldName>EmployeeRoles</fieldName> - </dependency> <children> <entityParameter> <name>UserTitle_param</name> <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/employeeroles/children/usertitle_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> <dependency> <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <entityName>EmployeeRole_entity</entityName> + <fieldName>EmployeeRoles</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -185,15 +180,15 @@ <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentTable_param</name> @@ -204,11 +199,22 @@ <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Employees</name> <lookupIdfield>CONTACT_ID</lookupIdfield> <filterVariablesProcess>%aditoprj%/entity/Employee_entity/entityfields/employees/filterVariablesProcess.js</filterVariablesProcess> + <children> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/employees/children/onlyactives_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependencies> <entityDependency> <name>0ca415b9-a940-424e-bee8-05c007b20659</name> @@ -271,26 +277,20 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>OnlyActives_param</name> - <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/employees/children/onlyactives_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>Departments</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> <children> <entityParameter> <name>ParentId_param</name> <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/departments/children/parentid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>openAdminView</name> @@ -301,17 +301,17 @@ </entityActionField> <entityConsumer> <name>PossibleRoles</name> - <dependency> - <name>dependency</name> - <entityName>Role_entity</entityName> - <fieldName>FilteredRoles</fieldName> - </dependency> <children> <entityParameter> <name>ExcludeRoles_param</name> <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/possibleroles/children/excluderoles_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Role_entity</entityName> + <fieldName>FilteredRoles</fieldName> + </dependency> </entityConsumer> <entityField> <name>SHORT_UID</name> @@ -352,31 +352,31 @@ <entityConsumer> <name>MyPermission</name> <refreshParent v="false" /> - <dependency> - <name>dependency</name> - <entityName>PermissionCalendar_entity</entityName> - <fieldName>Permissions</fieldName> - </dependency> <children> <entityParameter> <name>PermissionProcurer_param</name> <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/mypermission/children/permissionprocurer_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>TheirPermissions</name> <dependency> <name>dependency</name> <entityName>PermissionCalendar_entity</entityName> <fieldName>Permissions</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>TheirPermissions</name> <children> <entityParameter> <name>PermissionDealer_param</name> <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/theirpermissions/children/permissiondealer_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>PermissionCalendar_entity</entityName> + <fieldName>Permissions</fieldName> + </dependency> </entityConsumer> <entityField> <name>PICTURE</name> @@ -398,17 +398,17 @@ </entityParameter> <entityConsumer> <name>EmployeeTokens</name> - <dependency> - <name>dependency</name> - <entityName>EmployeeToken_entity</entityName> - <fieldName>EmployeeTokenProvider</fieldName> - </dependency> <children> <entityParameter> <name>employeeId_param</name> <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/employeetokens/children/employeeid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>EmployeeToken_entity</entityName> + <fieldName>EmployeeTokenProvider</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>EmployeeContactIdWhitelist_param</name> diff --git a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod index 2840322c0f7..b8dcbc15cc2 100644 --- a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod +++ b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod @@ -29,11 +29,6 @@ </entityParameter> <entityConsumer> <name>ExportTemplateComsumer</name> - <dependency> - <name>dependency</name> - <entityName>ExportTemplate_entity</entityName> - <fieldName>ExportTemplateIDs</fieldName> - </dependency> <children> <entityParameter> <name>ExportTemplateIDs_param</name> @@ -44,6 +39,11 @@ <valueProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/exporttemplatecomsumer/children/comingfrom_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ExportTemplate_entity</entityName> + <fieldName>ExportTemplateIDs</fieldName> + </dependency> </entityConsumer> <entityField> <name>UID</name> diff --git a/entity/Forecast_entity/Forecast_entity.aod b/entity/Forecast_entity/Forecast_entity.aod index 75fd4c7ae92..7487314f355 100644 --- a/entity/Forecast_entity/Forecast_entity.aod +++ b/entity/Forecast_entity/Forecast_entity.aod @@ -53,11 +53,6 @@ </entityField> <entityConsumer> <name>KeywordProductGroupcodes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -65,6 +60,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>OBJECT_TYPE</name> @@ -75,11 +75,6 @@ </entityField> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>AllObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -88,6 +83,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>AllObjects</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Contexts</name> diff --git a/entity/ImportField_Entity/ImportField_Entity.aod b/entity/ImportField_Entity/ImportField_Entity.aod index cb5bb3fb643..8b47e84bc5d 100644 --- a/entity/ImportField_Entity/ImportField_Entity.aod +++ b/entity/ImportField_Entity/ImportField_Entity.aod @@ -72,17 +72,17 @@ </entityParameter> <entityConsumer> <name>KeywordImportFields</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/ImportField_Entity/entityfields/keywordimportfields/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod index 81be338ad38..16bede930f3 100644 --- a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod +++ b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod @@ -51,6 +51,13 @@ <name>AttributesForKeywordEntry</name> <titlePlural></titlePlural> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>KeywordEntryId_param</name> + <expose v="true" /> + <mandatory v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>490d12c0-6ace-42e5-89e1-d40b25322161</name> @@ -59,13 +66,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>KeywordEntryId_param</name> - <expose v="true" /> - <mandatory v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ContainerName_param</name> @@ -75,11 +75,6 @@ </entityParameter> <entityConsumer> <name>KeywordAttributes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordAttribute_entity</entityName> - <fieldName>SpecificContainerKeyword</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -92,6 +87,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordAttribute_entity</entityName> + <fieldName>SpecificContainerKeyword</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>KeywordEntryId_param</name> diff --git a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod index 660467e301e..13cb14c44b1 100644 --- a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod +++ b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod @@ -69,11 +69,6 @@ </entityParameter> <entityConsumer> <name>KeywordAttributeTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -81,6 +76,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod index 79d764acc09..81246e32ac3 100644 --- a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod +++ b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod @@ -62,11 +62,6 @@ </entityField> <entityConsumer> <name>StatusKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -77,6 +72,11 @@ <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/onlyactives_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>ByKnowledgeId</name> diff --git a/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod b/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod index 93ad79b6566..e77405dfb65 100644 --- a/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod +++ b/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod @@ -58,17 +58,17 @@ </entityConsumer> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>ObjectProxy_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> <name>Entity_param</name> <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/objects/children/entity_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ObjectProxy_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>KnowledgeManagementId_param</name> @@ -79,14 +79,6 @@ <targetContextField>OBJECT_TYPE</targetContextField> <targetIdField>ROW_ID</targetIdField> <documentation>%aditoprj%/entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>c3ed10c1-db55-4e55-9c18-2b8d400df033</name> - <entityName>KnowledgeManagement_entity</entityName> - <fieldName>LinksByKnowledgeId</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ObjectType_param</name> @@ -97,6 +89,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>c3ed10c1-db55-4e55-9c18-2b8d400df033</name> + <entityName>KnowledgeManagement_entity</entityName> + <fieldName>LinksByKnowledgeId</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>RowId_param</name> diff --git a/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod index 14f18612c20..94e8106d88d 100644 --- a/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod +++ b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod @@ -15,6 +15,12 @@ <entityProvider> <name>ByKnowledgeManagementId</name> <documentation>%aditoprj%/entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc</documentation> + <children> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <mandatory v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>8d86a61b-0fe3-44c4-a512-e044c990fded</name> @@ -23,12 +29,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>KnowledgeManagementId_param</name> - <mandatory v="true" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>TAG</name> diff --git a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod index 0d58306fea5..93e235fcee3 100644 --- a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod +++ b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod @@ -101,32 +101,32 @@ <refreshParent v="true" /> <state>EDITABLE</state> <onValidation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>KnowledgeManagementTags_entity</entityName> - <fieldName>ByKnowledgeManagementId</fieldName> - </dependency> <children> <entityParameter> <name>KnowledgeManagementId_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KnowledgeManagementTags_entity</entityName> + <fieldName>ByKnowledgeManagementId</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>DiscussionsByKnowledgeId</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>KnowledgeDiscussion_entity</entityName> - <fieldName>ByKnowledgeId</fieldName> - </dependency> <children> <entityParameter> <name>KnowledgeId_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/discussionsbyknowledgeid/children/knowledgeid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KnowledgeDiscussion_entity</entityName> + <fieldName>ByKnowledgeId</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Provider</name> @@ -142,42 +142,37 @@ </entityConsumer> <entityConsumer> <name>KeywordKnowledgeType</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/keywordknowledgetype/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordPublish</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordPublish</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/keywordpublish/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>indexTag</name> </entityField> <entityConsumer> <name>LinkedDocuments</name> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentTable_param</name> @@ -188,6 +183,11 @@ <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>openEntryAsMail</name> @@ -200,17 +200,17 @@ <entityConsumer> <name>LinksByKnowledgeId</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>KnowledgeLink_entity</entityName> - <fieldName>ByKnowledgeId</fieldName> - </dependency> <children> <entityParameter> <name>KnowledgeManagementId_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linksbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KnowledgeLink_entity</entityName> + <fieldName>ByKnowledgeId</fieldName> + </dependency> </entityConsumer> <entityField> <name>LastChange</name> @@ -219,17 +219,17 @@ </entityField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>exportHTML_action</name> @@ -271,11 +271,6 @@ <name>KnowledgeRoles</name> <stateProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>KnowledgeRole_entity</entityName> - <fieldName>KnowledgeRole</fieldName> - </dependency> <children> <entityParameter> <name>KnowledgeManagement_param</name> @@ -287,14 +282,14 @@ <expose v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Tasks</name> <dependency> <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> + <entityName>KnowledgeRole_entity</entityName> + <fieldName>KnowledgeRole</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Tasks</name> <children> <entityParameter> <name>ObjectId_param</name> @@ -309,6 +304,11 @@ <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityField> <name>RESPONSIBLE_CONTACT_ID</name> diff --git a/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod b/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod index 427a175e7b5..fe16e94a9f9 100644 --- a/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod +++ b/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod @@ -17,17 +17,17 @@ </entityField> <entityConsumer> <name>NewsRole</name> - <dependency> - <name>dependency</name> - <entityName>Role_entity</entityName> - <fieldName>FilterRolesWithoutPermission</fieldName> - </dependency> <children> <entityParameter> <name>ExcludeRoles_param</name> <valueProcess>%aditoprj%/entity/KnowledgeRole_entity/entityfields/newsrole/children/excluderoles_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Role_entity</entityName> + <fieldName>FilterRolesWithoutPermission</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>KnowledgeRole</name> diff --git a/entity/Language_entity/Language_entity.aod b/entity/Language_entity/Language_entity.aod index 2afefb3f30b..6c74b7472d2 100644 --- a/entity/Language_entity/Language_entity.aod +++ b/entity/Language_entity/Language_entity.aod @@ -33,6 +33,12 @@ <lookupIdfield>ISO3</lookupIdfield> <documentation>%aditoprj%/entity/Language_entity/entityfields/iso3name/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>ExcludedIds_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>471b099a-03ab-4c49-8372-729b1e789ecc</name> @@ -95,17 +101,17 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExcludedIds_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityProvider> <name>ISO3NameFiltered</name> <lookupIdfield>ISO3</lookupIdfield> <documentation>%aditoprj%/entity/Language_entity/entityfields/iso3namefiltered/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ExcludedIds_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>2df9d0ed-c26b-4166-9667-786a55146e05</name> @@ -114,12 +120,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExcludedIds_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ExcludedIds_param</name> diff --git a/entity/LeadLog_entity/LeadLog_entity.aod b/entity/LeadLog_entity/LeadLog_entity.aod index ca424a627c7..c5d2fde11e0 100644 --- a/entity/LeadLog_entity/LeadLog_entity.aod +++ b/entity/LeadLog_entity/LeadLog_entity.aod @@ -61,11 +61,6 @@ </entityField> <entityConsumer> <name>LogDocuments</name> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentName_param</name> @@ -80,6 +75,11 @@ <valueProcess>%aditoprj%/entity/LeadLog_entity/entityfields/logdocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/Lead_entity/Lead_entity.aod b/entity/Lead_entity/Lead_entity.aod index 6a8a9fed949..1889a635743 100644 --- a/entity/Lead_entity/Lead_entity.aod +++ b/entity/Lead_entity/Lead_entity.aod @@ -77,17 +77,17 @@ </entityField> <entityConsumer> <name>ContactId</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>Contact</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Lead_entity/entityfields/contactid/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>Contact</fieldName> + </dependency> </entityConsumer> <entityField> <name>LEADDUP_STATUS</name> @@ -108,11 +108,6 @@ </entityField> <entityConsumer> <name>KeywordDupStatus</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -120,6 +115,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod b/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod index f985150a0e1..f525794d52d 100644 --- a/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod +++ b/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod @@ -70,17 +70,17 @@ </entityParameter> <entityConsumer> <name>KeywordImportFields</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/LeadimportMappingAssistant_entity/entityfields/keywordimportfields/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/Leadimport_entity/Leadimport_entity.aod b/entity/Leadimport_entity/Leadimport_entity.aod index e14d1cf8eba..141e0c172a3 100644 --- a/entity/Leadimport_entity/Leadimport_entity.aod +++ b/entity/Leadimport_entity/Leadimport_entity.aod @@ -105,17 +105,17 @@ </entityField> <entityConsumer> <name>KeywordImportStatus</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/keywordimportstatus/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Leadimport_Empl</name> @@ -154,25 +154,20 @@ </entityProvider> <entityConsumer> <name>ImportFieldID</name> - <dependency> - <name>dependency</name> - <entityName>ImportField_Entity</entityName> - <fieldName>LeadImportIds</fieldName> - </dependency> <children> <entityParameter> <name>LeadImportID</name> <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/importfieldid/children/leadimportid/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>DocumentC</name> <dependency> <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> + <entityName>ImportField_Entity</entityName> + <fieldName>LeadImportIds</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>DocumentC</name> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -183,28 +178,28 @@ <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/documentc/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistoryC</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistoryC</name> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/loghistoryc/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Tasks</name> <dependency> <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Tasks</name> <children> <entityParameter> <name>ObjectId_param</name> @@ -215,15 +210,15 @@ <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Leadimport_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -234,6 +229,11 @@ <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityField> <name>UID</name> @@ -266,45 +266,45 @@ </entityActionField> <entityConsumer> <name>LeadTempC</name> + <children> + <entityParameter> + <name>LeadImportId</name> + <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadtempc/children/leadimportid/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependency> <name>dependency</name> <entityName>LeadTemp_entity</entityName> <fieldName>LeadTempP</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LeadC</name> <children> <entityParameter> <name>LeadImportId</name> - <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadtempc/children/leadimportid/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadc/children/leadimportid/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LeadC</name> <dependency> <name>dependency</name> <entityName>Lead_entity</entityName> <fieldName>LeadP</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LeadLogC</name> <children> <entityParameter> <name>LeadImportId</name> - <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadc/children/leadimportid/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadlogc/children/leadimportid/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LeadLogC</name> <dependency> <name>dependency</name> <entityName>LeadLog_entity</entityName> <fieldName>LeadLogP</fieldName> </dependency> - <children> - <entityParameter> - <name>LeadImportId</name> - <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadlogc/children/leadimportid/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityConsumer> <entityActionField> <name>LeadimportReset</name> @@ -316,17 +316,17 @@ </entityActionField> <entityConsumer> <name>LeadimportMappings</name> - <dependency> - <name>dependency</name> - <entityName>LeadimportMappingAssistant_entity</entityName> - <fieldName>LeadimportMapping</fieldName> - </dependency> <children> <entityParameter> <name>Leadimport_ID_param</name> <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadimportmappings/children/leadimport_id_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LeadimportMappingAssistant_entity</entityName> + <fieldName>LeadimportMapping</fieldName> + </dependency> </entityConsumer> <entityField> <name>LEADIMPORT_OBJECTTYPE</name> diff --git a/entity/Letter_entity/Letter_entity.aod b/entity/Letter_entity/Letter_entity.aod index 5e357ba6660..6140a981138 100644 --- a/entity/Letter_entity/Letter_entity.aod +++ b/entity/Letter_entity/Letter_entity.aod @@ -22,11 +22,6 @@ </entityField> <entityConsumer> <name>DocumentTemplates</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -37,6 +32,11 @@ <valueProcess>%aditoprj%/entity/Letter_entity/entityfields/documenttemplates/children/comingfrom_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> diff --git a/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod index 791b08d72b2..8efdde1d70c 100644 --- a/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod +++ b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod @@ -22,11 +22,6 @@ <entityConsumer> <name>WorkflowLauncherIntegration</name> <isOneToOneRelationship v="true" /> - <dependency> - <name>dependency</name> - <entityName>WorkflowLauncher_entity</entityName> - <fieldName>Integration</fieldName> - </dependency> <children> <entityParameter> <name>Validationerrors_param</name> @@ -45,6 +40,11 @@ <valueProcess>%aditoprj%/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targetcontext_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowLauncher_entity</entityName> + <fieldName>Integration</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ObjectType_param</name> @@ -60,11 +60,6 @@ </entityParameter> <entityConsumer> <name>EmailTemplates</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -75,6 +70,11 @@ <valueProcess>%aditoprj%/entity/MarketingWorkflowLauncher_entity/entityfields/emailtemplates/children/comingfrom_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> </entityConsumer> </entityFields> <recordContainers> diff --git a/entity/ModuleTree_entity/ModuleTree_entity.aod b/entity/ModuleTree_entity/ModuleTree_entity.aod index 576d1171a84..4340bcf1919 100644 --- a/entity/ModuleTree_entity/ModuleTree_entity.aod +++ b/entity/ModuleTree_entity/ModuleTree_entity.aod @@ -26,6 +26,16 @@ <targetContextField>TYPE</targetContextField> <targetIdField>ROW_ID</targetIdField> <recordContainer>jdito</recordContainer> + <children> + <entityParameter> + <name>ContextName_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ID_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>7da88ffb-4292-4fe2-88e2-dda2dc4aa625</name> @@ -46,16 +56,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ContextName_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ID_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>PARENT_ID</name> diff --git a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod index a2a47eb12c2..4488b7e9c3c 100644 --- a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod +++ b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod @@ -30,6 +30,13 @@ </entityParameter> <entityProvider> <name>ObjectRelationTypes</name> + <children> + <entityParameter> + <name>OnlyFirstSide_param</name> + <valueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/objectrelationtypes/children/onlyfirstside_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>81f4567a-fc89-49fc-be86-77600cb66305</name> @@ -38,13 +45,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>OnlyFirstSide_param</name> - <valueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/objectrelationtypes/children/onlyfirstside_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>OnlyFirstSide_param</name> diff --git a/entity/ObjectTree_entity/ObjectTree_entity.aod b/entity/ObjectTree_entity/ObjectTree_entity.aod index 4266919a6b4..7edb15c3b6b 100644 --- a/entity/ObjectTree_entity/ObjectTree_entity.aod +++ b/entity/ObjectTree_entity/ObjectTree_entity.aod @@ -17,6 +17,16 @@ <name>TreeProvider</name> <targetContextField>TARGET_CONTEXT</targetContextField> <targetIdField>TARGET_ID</targetIdField> + <children> + <entityParameter> + <name>Uid_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>RelationTypes_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>f4c0605f-3ccb-4ff1-b460-7268e8553857</name> @@ -31,16 +41,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Uid_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>RelationTypes_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ObjectIds_param</name> @@ -68,17 +68,17 @@ </entityField> <entityConsumer> <name>ObjectRelationTypes</name> - <dependency> - <name>dependency</name> - <entityName>ObjectRelationType_entity</entityName> - <fieldName>ObjectRelationTypes</fieldName> - </dependency> <children> <entityParameter> <name>SourceObjectTypes_param</name> <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objectrelationtypes/children/sourceobjecttypes_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ObjectRelationType_entity</entityName> + <fieldName>ObjectRelationTypes</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ObjectTypes_param</name> @@ -126,11 +126,6 @@ </entityField> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -142,6 +137,11 @@ <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objects/children/excludedobjectids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> </entityConsumer> <entityActionGroup> <name>alter</name> diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod index e3633e2483c..884a3a733c3 100644 --- a/entity/Object_entity/Object_entity.aod +++ b/entity/Object_entity/Object_entity.aod @@ -27,6 +27,21 @@ <targetConsumerProcess>%aditoprj%/entity/Object_entity/entityfields/allobjects/targetConsumerProcess.js</targetConsumerProcess> <documentation>%aditoprj%/entity/Object_entity/entityfields/allobjects/documentation.adoc</documentation> <recordContainer>jdito</recordContainer> + <children> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityParameter> + <name>ExcludedObjectIds_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>445b79b3-e826-40d1-b6c2-46d62daf0818</name> @@ -65,43 +80,23 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ObjectType_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - <entityParameter> - <name>ExcludedObjectIds_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ContactId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>Organisations</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedContactIds_param</name> <valueProcess>%aditoprj%/entity/Object_entity/entityfields/organisations/children/excludedcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Persons</name> <dependency> <name>dependency</name> - <entityName>Person_entity</entityName> + <entityName>Organisation_entity</entityName> <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Persons</name> <children> <entityParameter> <name>ExcludedContactIds_param</name> @@ -112,34 +107,39 @@ <valueProcess>%aditoprj%/entity/Object_entity/entityfields/persons/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Offers</name> <dependency> <name>dependency</name> - <entityName>Offer_entity</entityName> + <entityName>Person_entity</entityName> <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Offers</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Object_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Orders</name> <dependency> <name>dependency</name> - <entityName>Order_entity</entityName> + <entityName>Offer_entity</entityName> <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Orders</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Object_entity/entityfields/orders/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Order_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Products</name> @@ -151,31 +151,31 @@ </entityConsumer> <entityConsumer> <name>Contracts</name> - <dependency> - <name>dependency</name> - <entityName>Contract_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Object_entity/entityfields/contracts/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salesprojects</name> <dependency> <name>dependency</name> - <entityName>Salesproject_entity</entityName> + <entityName>Contract_entity</entityName> <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salesprojects</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Object_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Salesproject_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ExcludedObjectIds_param</name> @@ -185,6 +185,21 @@ <entityProvider> <name>FilteredObjects</name> <targetConsumerProcess>%aditoprj%/entity/Object_entity/entityfields/filteredobjects/targetConsumerProcess.js</targetConsumerProcess> + <children> + <entityParameter> + <name>ExcludedObjectIds_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>e644a709-cc8f-425e-bef2-9c51eea9bbe9</name> @@ -205,21 +220,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExcludedObjectIds_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ObjectType_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>Campaigns</name> @@ -243,17 +243,17 @@ </entityParameter> <entityConsumer> <name>PrivatePersons</name> - <dependency> - <name>dependency</name> - <entityName>PrivatePerson_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedPersonIds_param</name> <valueProcess>%aditoprj%/entity/Object_entity/entityfields/privatepersons/children/excludedpersonids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>PrivatePerson_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Activities</name> diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod index e486ce29844..5349b4d8fd4 100644 --- a/entity/Offer_entity/Offer_entity.aod +++ b/entity/Offer_entity/Offer_entity.aod @@ -117,11 +117,6 @@ <name>Offeritems</name> <refreshParent v="true" /> <description></description> - <dependency> - <name>dependency</name> - <entityName>Offeritem_entity</entityName> - <fieldName>OfferItems</fieldName> - </dependency> <children> <entityParameter> <name>OfferId_param</name> @@ -151,6 +146,11 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offeritems/children/language_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Offeritem_entity</entityName> + <fieldName>OfferItems</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newOfferVersion</name> @@ -247,27 +247,22 @@ </entityField> <entityConsumer> <name>AnyContacts</name> - <dependency> - <name>dependency</name> - <entityName>AnyContact_entity</entityName> - <fieldName>OnlySameCompany</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/anycontacts/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AnyContact_entity</entityName> + <fieldName>OnlySameCompany</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/documents/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -278,15 +273,15 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -297,6 +292,11 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> + </dependency> </entityConsumer> <entityField> <name>ADDRESS</name> @@ -323,11 +323,6 @@ </entityField> <entityConsumer> <name>KeywordCurrencies</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -335,14 +330,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordOfferStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordOfferStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -350,6 +345,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newOrder</name> @@ -367,11 +367,6 @@ </entityConsumer> <entityConsumer> <name>KeywordProbabilities</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -379,14 +374,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Activities</name> <dependency> <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Activities</name> <children> <entityParameter> <name>ObjectId_param</name> @@ -401,6 +396,11 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -412,26 +412,6 @@ </entityActionField> <entityProvider> <name>ContactOffers</name> - <dependencies> - <entityDependency> - <name>5c9720b5-1288-4a30-88fd-6dcff6359083</name> - <entityName>Person_entity</entityName> - <fieldName>Offers</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>b308795f-3c81-4e60-99ca-3b5f8e82f62a</name> - <entityName>Organisation_entity</entityName> - <fieldName>Offers</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>a74b02c4-bdb3-4ba8-9207-66a0af528b1b</name> - <entityName>Order_entity</entityName> - <fieldName>Offers</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -482,6 +462,26 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>5c9720b5-1288-4a30-88fd-6dcff6359083</name> + <entityName>Person_entity</entityName> + <fieldName>Offers</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>b308795f-3c81-4e60-99ca-3b5f8e82f62a</name> + <entityName>Organisation_entity</entityName> + <fieldName>Offers</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>a74b02c4-bdb3-4ba8-9207-66a0af528b1b</name> + <entityName>Order_entity</entityName> + <fieldName>Offers</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>OfferCurrency_param</name> @@ -551,40 +551,35 @@ </entityField> <entityConsumer> <name>KeywordPaymentTerm</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/keywordpaymentterm/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDeliveryTerm</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDeliveryTerm</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/keyworddeliveryterm/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -599,6 +594,11 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityField> <name>INFO</name> @@ -610,11 +610,6 @@ <name>Attributes</name> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Offer_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -625,6 +620,11 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>OfferPaymentTerm_param</name> @@ -664,17 +664,17 @@ </entityField> <entityConsumer> <name>PossibleAddresses</name> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAndContactAddresses</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAndContactAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>ChoosenTEXHeader</name> @@ -716,11 +716,6 @@ </entityField> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -731,14 +726,14 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/objects/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Contexts</name> <dependency> <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> + <entityName>Object_entity</entityName> + <fieldName>FilteredObjects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Contexts</name> <children> <entityParameter> <name>Blacklist_param</name> @@ -749,18 +744,15 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Links</name> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>88a166e6-ccd0-4d51-b554-e3327f66d834</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Offers</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>OfferDeliveryTerm_param</name> @@ -816,6 +808,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>88a166e6-ccd0-4d51-b554-e3327f66d834</name> + <entityName>Salesproject_entity</entityName> + <fieldName>Offers</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>ObjectRowId_param</name> @@ -833,11 +833,6 @@ </entityField> <entityConsumer> <name>DocumentTemplateTexHeader</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -848,20 +843,25 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/documenttemplatetexheader/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>FOOTER</name> @@ -888,11 +888,6 @@ </entityField> <entityConsumer> <name>DocumentTemplateTexFooter</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -903,20 +898,25 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/documenttemplatetexfooter/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salesprojects</name> <dependency> <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Salesprojects</fieldName> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salesprojects</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Salesproject_entity</entityName> + <fieldName>Salesprojects</fieldName> + </dependency> </entityConsumer> <entityField> <name>CONTACT_ID</name> diff --git a/entity/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod index a900e6473e8..281231dc1f8 100644 --- a/entity/Offeritem_entity/Offeritem_entity.aod +++ b/entity/Offeritem_entity/Offeritem_entity.aod @@ -163,14 +163,6 @@ <entityProvider> <name>OfferItems</name> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>7810e350-d011-4d95-8d0b-883f3a0e519c</name> - <entityName>Offer_entity</entityName> - <fieldName>Offeritems</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -194,6 +186,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>7810e350-d011-4d95-8d0b-883f3a0e519c</name> + <entityName>Offer_entity</entityName> + <fieldName>Offeritems</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>INFO</name> @@ -204,11 +204,6 @@ </entityField> <entityConsumer> <name>KeywordProductGroupcodes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -216,14 +211,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordQuantityUnits</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordQuantityUnits</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -231,6 +226,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Products</name> diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod index 64b551ee2df..0bda9d9f780 100644 --- a/entity/Order_entity/Order_entity.aod +++ b/entity/Order_entity/Order_entity.aod @@ -107,11 +107,6 @@ <entityConsumer> <name>Orderitems</name> <description></description> - <dependency> - <name>dependency</name> - <entityName>Orderitem_entity</entityName> - <fieldName>Orderitems</fieldName> - </dependency> <children> <entityParameter> <name>OrderId_param</name> @@ -137,6 +132,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Orderitem_entity</entityName> + <fieldName>Orderitems</fieldName> + </dependency> </entityConsumer> <entityField> <name>NET</name> @@ -198,11 +198,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -213,15 +208,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -232,28 +227,28 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salesprojects</name> <dependency> <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Salesprojects</fieldName> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salesprojects</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordCurrencies</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Salesproject_entity</entityName> + <fieldName>Salesprojects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordCurrencies</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -261,14 +256,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -276,6 +271,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -294,11 +294,6 @@ </entityParameter> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -313,6 +308,11 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityField> <name>OFFER_ID</name> @@ -326,11 +326,6 @@ <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -345,15 +340,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Order_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -364,15 +359,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/stateProcess.js</stateProcess> <children> <entityParameter> <name>ObjectType_param</name> @@ -383,20 +378,25 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>ORDERTYPE</name> @@ -474,31 +474,31 @@ </entityField> <entityConsumer> <name>KeywordOrderTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordordertypes/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDunningLevels</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDunningLevels</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddunninglevels/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>OBJECT_ROWID</name> @@ -526,11 +526,6 @@ </entityField> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -541,14 +536,14 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Contexts</name> <dependency> <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> + <entityName>Object_entity</entityName> + <fieldName>FilteredObjects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Contexts</name> <children> <entityParameter> <name>Blacklist_param</name> @@ -559,6 +554,11 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>PossibleConnectionTypes</name> @@ -611,46 +611,46 @@ </entityField> <entityConsumer> <name>KeywordPaymentTerms</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordpaymentterms/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDeliveryTerms</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDeliveryTerms</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddeliveryterms/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>PossibleAddresses</name> <documentation>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/documentation.adoc</documentation> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAndContactAddresses</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAndContactAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>NOTICE</name> @@ -667,25 +667,20 @@ </entityField> <entityConsumer> <name>Offers</name> - <dependency> - <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>DocumentTemplateTexHeader</name> <dependency> <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>DocumentTemplateTexHeader</name> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -696,14 +691,14 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexheader/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>DocumentTemplateTexFooter</name> <dependency> <name>dependency</name> <entityName>DocumentTemplate_entity</entityName> <fieldName>DocumentTemplateProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>DocumentTemplateTexFooter</name> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -714,6 +709,11 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexfooter/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>ChosenTexHeader</name> diff --git a/entity/Orderitem_entity/Orderitem_entity.aod b/entity/Orderitem_entity/Orderitem_entity.aod index 888a4532258..1f80cb9b609 100644 --- a/entity/Orderitem_entity/Orderitem_entity.aod +++ b/entity/Orderitem_entity/Orderitem_entity.aod @@ -144,20 +144,6 @@ <entityProvider> <name>Orderitems</name> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>7810e350-d011-4d95-8d0b-883f3a0e519c</name> - <entityName>Order_entity</entityName> - <fieldName>Orderitems</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>911de4a4-0e85-4d50-93ee-6f8f2308589e</name> - <entityName>Order_entity</entityName> - <fieldName>Orderitems</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -180,6 +166,20 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>7810e350-d011-4d95-8d0b-883f3a0e519c</name> + <entityName>Order_entity</entityName> + <fieldName>Orderitems</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>911de4a4-0e85-4d50-93ee-6f8f2308589e</name> + <entityName>Order_entity</entityName> + <fieldName>Orderitems</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>INFO</name> @@ -188,11 +188,6 @@ </entityField> <entityConsumer> <name>KeywordProductGroupcodes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -200,14 +195,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordQuantityUnits</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordQuantityUnits</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -215,6 +210,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Products</name> diff --git a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod index 6fd9cfebf50..c4614de9721 100644 --- a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod +++ b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod @@ -147,11 +147,6 @@ </entityField> <entityConsumer> <name>Departments</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> <children> <entityParameter> <name>ParentId_param</name> @@ -162,6 +157,11 @@ <valueProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/departments/children/includeparentrecord_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>User</name> @@ -184,17 +184,17 @@ </entityField> <entityConsumer> <name>KeywordPermissionCalendarTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/keywordpermissioncalendartypes/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>PermissionDealer_param</name> diff --git a/entity/PermissionDetail_entity/PermissionDetail_entity.aod b/entity/PermissionDetail_entity/PermissionDetail_entity.aod index e18801ffb9c..afc95caa0ed 100644 --- a/entity/PermissionDetail_entity/PermissionDetail_entity.aod +++ b/entity/PermissionDetail_entity/PermissionDetail_entity.aod @@ -139,11 +139,6 @@ </entityParameter> <entityConsumer> <name>KeywordConditionType</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -151,14 +146,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordAccessType</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordAccessType</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -166,17 +161,17 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>PermissionActions</name> <refreshParent v="true" /> <stateProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/permissionactions/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>PermissionAction_entity</entityName> - <fieldName>PermissionActions</fieldName> - </dependency> <children> <entityParameter> <name>PermissionId_param</name> @@ -195,6 +190,11 @@ <valueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/permissionactions/children/fullpermissions_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>PermissionAction_entity</entityName> + <fieldName>PermissionActions</fieldName> + </dependency> </entityConsumer> <entityField> <name>FULLPERMISSIONS</name> diff --git a/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod b/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod index b2006b9d74a..6c80e3e90f0 100644 --- a/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod +++ b/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod @@ -32,6 +32,12 @@ <entityProvider> <name>MetaData</name> <recordContainer>jDito</recordContainer> + <children> + <entityParameter> + <name>EntityName_param</name> + <valueProcess>%aditoprj%/entity/PermissionMetaData_entity/entityfields/metadata/children/entityname_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependencies> <entityDependency> <name>3b2c9421-5ff0-49a3-99f0-6790f17bd76c</name> @@ -40,42 +46,36 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>EntityName_param</name> - <valueProcess>%aditoprj%/entity/PermissionMetaData_entity/entityfields/metadata/children/entityname_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>PermissionOverviews</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>PermissionOverview_entity</entityName> - <fieldName>PermissionOverviews</fieldName> - </dependency> <children> <entityParameter> <name>EntityTitle_param</name> <valueProcess>%aditoprj%/entity/PermissionMetaData_entity/entityfields/permissionoverviews/children/entitytitle_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>PermissionOverview_entity</entityName> + <fieldName>PermissionOverviews</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>PermissionDetails</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>PermissionDetail_entity</entityName> - <fieldName>Permissions</fieldName> - </dependency> <children> <entityParameter> <name>EntityTitle_param</name> <valueProcess>%aditoprj%/entity/PermissionMetaData_entity/entityfields/permissiondetails/children/entitytitle_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>PermissionDetail_entity</entityName> + <fieldName>Permissions</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>EntityName_param</name> diff --git a/entity/PrivatePerson_entity/PrivatePerson_entity.aod b/entity/PrivatePerson_entity/PrivatePerson_entity.aod index e3cc784be65..4739b80b0fe 100644 --- a/entity/PrivatePerson_entity/PrivatePerson_entity.aod +++ b/entity/PrivatePerson_entity/PrivatePerson_entity.aod @@ -60,11 +60,6 @@ </entityParameter> <entityConsumer> <name>Persons</name> - <dependency> - <name>dependency</name> - <entityName>Contact_entity</entityName> - <fieldName>PersonRelated</fieldName> - </dependency> <children> <entityParameter> <name>PersonId_param</name> @@ -75,6 +70,11 @@ <valueProcess>%aditoprj%/entity/PrivatePerson_entity/entityfields/persons/children/readonly_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Contact_entity</entityName> + <fieldName>PersonRelated</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/Prod2prod_entity/Prod2prod_entity.aod b/entity/Prod2prod_entity/Prod2prod_entity.aod index 824ac6d55ed..06bfbd33787 100644 --- a/entity/Prod2prod_entity/Prod2prod_entity.aod +++ b/entity/Prod2prod_entity/Prod2prod_entity.aod @@ -64,14 +64,6 @@ <name>ProductLinks</name> <targetContextField>targetContext</targetContextField> <targetIdField>SOURCE_ID</targetIdField> - <dependencies> - <entityDependency> - <name>4bd06e3b-17a0-483e-a61c-818ff7e86be3</name> - <entityName>Product_entity</entityName> - <fieldName>ProductLinks</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ProductId_param</name> @@ -82,6 +74,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>4bd06e3b-17a0-483e-a61c-818ff7e86be3</name> + <entityName>Product_entity</entityName> + <fieldName>ProductLinks</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>PRODUCTCODE</name> @@ -104,11 +104,6 @@ </entityActionGroup> <entityConsumer> <name>Products</name> - <dependency> - <name>dependency</name> - <entityName>Product_entity</entityName> - <fieldName>Products</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedProducts_param</name> @@ -116,6 +111,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Product_entity</entityName> + <fieldName>Products</fieldName> + </dependency> </entityConsumer> <entityField> <name>PRODUCTID</name> diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod index b8443f6c3fe..f9026b60de2 100644 --- a/entity/Product_entity/Product_entity.aod +++ b/entity/Product_entity/Product_entity.aod @@ -89,46 +89,46 @@ </entityField> <entityConsumer> <name>Organisations</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>Organisations</fieldName> - </dependency> <children> <entityParameter> <name>OrganisationType_param</name> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/organisations/children/organisationtype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Productprices</name> <dependency> <name>dependency</name> - <entityName>Productprice_entity</entityName> - <fieldName>Productprices</fieldName> + <entityName>Organisation_entity</entityName> + <fieldName>Organisations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Productprices</name> <children> <entityParameter> <name>ProductId_param</name> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/productprices/children/productid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Productprice_entity</entityName> + <fieldName>Productprices</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Stocks</name> <selectionMode>SINGLE</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Stock_entity</entityName> - <fieldName>Stocks</fieldName> - </dependency> <children> <entityParameter> <name>ProductId_param</name> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/stocks/children/productid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Stock_entity</entityName> + <fieldName>Stocks</fieldName> + </dependency> </entityConsumer> <entityField> <name>PICTURE</name> @@ -137,17 +137,17 @@ <entityConsumer> <name>StockCounts</name> <state>READONLY</state> - <dependency> - <name>dependency</name> - <entityName>Stock_entity</entityName> - <fieldName>Stocks</fieldName> - </dependency> <children> <entityParameter> <name>ProductId_param</name> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/stockcounts/children/productid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Stock_entity</entityName> + <fieldName>Stocks</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER</name> @@ -181,11 +181,6 @@ </entityProvider> <entityConsumer> <name>ProductLinks</name> - <dependency> - <name>dependency</name> - <entityName>Prod2prod_entity</entityName> - <fieldName>ProductLinks</fieldName> - </dependency> <children> <entityParameter> <name>ProductId_param</name> @@ -194,6 +189,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Prod2prod_entity</entityName> + <fieldName>ProductLinks</fieldName> + </dependency> </entityConsumer> <entityField> <name>CONTACT_ID</name> @@ -211,11 +211,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -226,15 +221,15 @@ <valueProcess>%aditoprj%/entity/Product_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Product_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Product_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -245,14 +240,14 @@ <valueProcess>%aditoprj%/entity/Product_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordProductGroupcodes</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordProductGroupcodes</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -260,14 +255,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordQuantityUnits</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordQuantityUnits</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -275,14 +270,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Activities</name> <dependency> <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Activities</name> <children> <entityParameter> <name>ObjectId_param</name> @@ -293,6 +288,11 @@ <valueProcess>%aditoprj%/entity/Product_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -306,11 +306,6 @@ <name>Attributes</name> <stateProcess>%aditoprj%/entity/Product_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Product_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -323,6 +318,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ExcludedProducts_param</name> @@ -331,6 +331,12 @@ </entityParameter> <entityProvider> <name>Products</name> + <children> + <entityParameter> + <name>ExcludedProducts_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>1b12e8ef-74ba-4294-bd2b-9d4afa80798c</name> @@ -345,12 +351,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExcludedProducts_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityActionField> <name>newTask</name> @@ -361,11 +361,6 @@ <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Product_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -376,15 +371,15 @@ <valueProcess>%aditoprj%/entity/Product_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>AttributeTree</name> <stateProcess>%aditoprj%/entity/Product_entity/entityfields/attributetree/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -395,6 +390,11 @@ <valueProcess>%aditoprj%/entity/Product_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>USER_NEW</name> @@ -418,17 +418,17 @@ </entityField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ProductText_param</name> @@ -436,11 +436,6 @@ </entityParameter> <entityConsumer> <name>DescriptionTranslations</name> - <dependency> - <name>dependency</name> - <entityName>DescriptionTranslation_entity</entityName> - <fieldName>DescriptionTranslations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowid_param</name> @@ -451,6 +446,11 @@ <valueProcess>%aditoprj%/entity/Product_entity/entityfields/descriptiontranslations/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DescriptionTranslation_entity</entityName> + <fieldName>DescriptionTranslations</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>openAdminView</name> diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod index 61bf5454ab3..26dbe5048b3 100644 --- a/entity/Productprice_entity/Productprice_entity.aod +++ b/entity/Productprice_entity/Productprice_entity.aod @@ -143,6 +143,16 @@ <name>Productprices</name> <titlePluralProcess>%aditoprj%/entity/Productprice_entity/entityfields/productprices/titlePluralProcess.js</titlePluralProcess> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ProductId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>d5f4c7c4-cd21-4075-bd56-c479672dc09a</name> @@ -163,24 +173,9 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ProductId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>KeywordCurrencies</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -188,14 +183,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordPricelists</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordPricelists</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -203,6 +198,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>DELIVERYTERM</name> diff --git a/entity/QuickEntry_entity/QuickEntry_entity.aod b/entity/QuickEntry_entity/QuickEntry_entity.aod index fe83641faf9..8f84148e24f 100644 --- a/entity/QuickEntry_entity/QuickEntry_entity.aod +++ b/entity/QuickEntry_entity/QuickEntry_entity.aod @@ -22,11 +22,6 @@ </entityField> <entityConsumer> <name>Adresses</name> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>QuickEntryAdresses</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -37,14 +32,14 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/adresses/children/contacttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Communications</name> <dependency> <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>QuickEntryCommunications</fieldName> + <entityName>Address_entity</entityName> + <fieldName>QuickEntryAdresses</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Communications</name> <children> <entityParameter> <name>ContactId_param</name> @@ -55,6 +50,11 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/communications/children/additionalcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>QuickEntryCommunications</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -94,25 +94,20 @@ </entityField> <entityConsumer> <name>Salutations</name> - <dependency> - <name>dependency</name> - <entityName>SalutationDistinct_entity</entityName> - <fieldName>Salutations</fieldName> - </dependency> <children> <entityParameter> <name>Language_param</name> <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/salutations/children/language_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>SalutationTitles</name> <dependency> <name>dependency</name> - <entityName>SalutationTitleDistinct_entity</entityName> - <fieldName>SalutationTitles</fieldName> + <entityName>SalutationDistinct_entity</entityName> + <fieldName>Salutations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>SalutationTitles</name> <children> <entityParameter> <name>Language_param</name> @@ -123,20 +118,25 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/salutationtitles/children/salutation_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Contacts</name> <dependency> <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>QuickEntryContacts</fieldName> + <entityName>SalutationTitleDistinct_entity</entityName> + <fieldName>SalutationTitles</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Contacts</name> <children> <entityParameter> <name>OrgId_param</name> <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/contacts/children/orgid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>QuickEntryContacts</fieldName> + </dependency> </entityConsumer> <entityField> <name>ISOLANGUAGE</name> @@ -147,11 +147,6 @@ </entityField> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>Direction_param</name> @@ -170,6 +165,11 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityField> <name>DATE_NEW</name> @@ -185,11 +185,6 @@ </entityField> <entityConsumer> <name>Salesprojects</name> - <dependency> - <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>QuickEntrySalesprojects</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -200,14 +195,14 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/salesprojects/children/presettitle_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>OrgAddresses</name> <dependency> <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>QuickEntryAdresses</fieldName> + <entityName>Salesproject_entity</entityName> + <fieldName>QuickEntrySalesprojects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>OrgAddresses</name> <children> <entityParameter> <name>ContactId_param</name> @@ -218,6 +213,11 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/orgaddresses/children/contacttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>QuickEntryAdresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>leadQuickAcquisition</name> @@ -228,11 +228,6 @@ </entityField> <entityConsumer> <name>OrgAndPersDuplicates</name> - <dependency> - <name>dependency</name> - <entityName>AnyContact_entity</entityName> - <fieldName>ContactsByIds</fieldName> - </dependency> <children> <entityParameter> <name>ContactIds_param</name> @@ -243,6 +238,11 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AnyContact_entity</entityName> + <fieldName>ContactsByIds</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index bbe19fd7cf0..59562dd82e0 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -147,39 +147,34 @@ </entityField> <entityConsumer> <name>SalesprojectSources</name> - <dependency> - <name>dependency</name> - <entityName>SalesprojectSource_entity</entityName> - <fieldName>SalesprojectSouces</fieldName> - </dependency> <children> <entityParameter> <name>SalesprojectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectsources/children/salesprojectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>SalesprojectPhaseMilestones</name> <dependency> <name>dependency</name> - <entityName>SalesprojectMilestone_entity</entityName> - <fieldName>PhaseMilestones</fieldName> + <entityName>SalesprojectSource_entity</entityName> + <fieldName>SalesprojectSouces</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>SalesprojectPhaseMilestones</name> <children> <entityParameter> <name>SalesprojectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasemilestones/children/salesprojectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Forecasts</name> <dependency> <name>dependency</name> - <entityName>Forecast_entity</entityName> - <fieldName>Links</fieldName> + <entityName>SalesprojectMilestone_entity</entityName> + <fieldName>PhaseMilestones</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Forecasts</name> <children> <entityParameter> <name>ObjectType_param</name> @@ -192,15 +187,15 @@ <expose v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Competitions</name> - <selectionMode>MULTI</selectionMode> <dependency> <name>dependency</name> - <entityName>Competition_entity</entityName> + <entityName>Forecast_entity</entityName> <fieldName>Links</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Competitions</name> + <selectionMode>MULTI</selectionMode> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -213,14 +208,14 @@ <expose v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Offers</name> <dependency> <name>dependency</name> - <entityName>Offer_entity</entityName> + <entityName>Competition_entity</entityName> <fieldName>Links</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Offers</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -233,14 +228,14 @@ <expose v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Activities</name> <dependency> <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> + <entityName>Offer_entity</entityName> + <fieldName>Links</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Activities</name> <children> <entityParameter> <name>PresetLinks_param</name> @@ -255,14 +250,14 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Members</name> <dependency> <name>dependency</name> - <entityName>Member_entity</entityName> - <fieldName>WithDistrictResponsibles</fieldName> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Members</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -287,6 +282,11 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Member_entity</entityName> + <fieldName>WithDistrictResponsibles</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newOffer</name> @@ -299,11 +299,6 @@ <entityConsumer> <name>Timetrackings</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>Timetracking_entity</entityName> - <fieldName>Timetrackings</fieldName> - </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -314,6 +309,11 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/timetrackings/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Timetracking_entity</entityName> + <fieldName>Timetrackings</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> @@ -337,11 +337,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -356,15 +351,15 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -375,6 +370,11 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newTimetracking</name> @@ -385,11 +385,6 @@ </entityActionField> <entityConsumer> <name>KeywordProbabilties</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -398,14 +393,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -413,6 +408,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -432,17 +432,17 @@ <entityConsumer> <name>KeywordWonLost</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/keywordwonlost/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>REASONS</name> @@ -459,6 +459,17 @@ </entityField> <entityProvider> <name>Salesprojects</name> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityParameter> + <name>PresetTitle_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>0925d17f-a26a-4641-aaf4-0f74796fefa7</name> @@ -479,17 +490,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - <entityParameter> - <name>PresetTitle_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityActionField> <name>newTask</name> @@ -500,11 +500,6 @@ <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -519,17 +514,14 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>OpenSalesprojects</name> - <dependencies> - <entityDependency> - <name>631f55f9-fb0f-4205-bdb8-6e3476268ab4</name> - <entityName>Offer_entity</entityName> - <fieldName>Salesprojects</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>Status_param</name> @@ -540,6 +532,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>631f55f9-fb0f-4205-bdb8-6e3476268ab4</name> + <entityName>Offer_entity</entityName> + <fieldName>Salesprojects</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>Status_param</name> @@ -548,27 +548,22 @@ </entityParameter> <entityConsumer> <name>SalesprojectStateMilestones</name> - <dependency> - <name>dependency</name> - <entityName>SalesprojectMilestone_entity</entityName> - <fieldName>StateMilestones</fieldName> - </dependency> <children> <entityParameter> <name>SalesprojectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectstatemilestones/children/salesprojectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>SalesprojectMilestone_entity</entityName> + <fieldName>StateMilestones</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Salesproject_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -579,15 +574,15 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> - <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributetree/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributetree/stateProcess.js</stateProcess> <children> <entityParameter> <name>ObjectType_param</name> @@ -598,29 +593,29 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Classifications</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>Classification_entity</entityName> - <fieldName>Classifications</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowid_param</name> @@ -635,6 +630,11 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/classifications/children/classificationtype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Classification_entity</entityName> + <fieldName>Classifications</fieldName> + </dependency> </entityConsumer> <entityField> <name>RemainingTime</name> @@ -648,11 +648,6 @@ </entityField> <entityConsumer> <name>SalesprojectForecastCharts</name> - <dependency> - <name>dependency</name> - <entityName>Turnover_entity</entityName> - <fieldName>FilteredTurnovers</fieldName> - </dependency> <children> <entityParameter> <name>SalesprojectId_param</name> @@ -671,20 +666,25 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectforecastcharts/children/yearcounttoshow_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>SalesprojectPhaseStepper</name> <dependency> <name>dependency</name> - <entityName>SalesprojectPhase_entity</entityName> - <fieldName>Phases</fieldName> + <entityName>Turnover_entity</entityName> + <fieldName>FilteredTurnovers</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>SalesprojectPhaseStepper</name> <children> <entityParameter> <name>CurrentPhase_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/currentphase_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>SalesprojectPhase_entity</entityName> + <fieldName>Phases</fieldName> + </dependency> </entityConsumer> <entityField> <name>PHASEINFO</name> @@ -707,17 +707,17 @@ </entityField> <entityConsumer> <name>ProjectTypeAttribute</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/projecttypeattribute/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>QuickEntrySalesprojects</name> diff --git a/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod b/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod index bacd4cd101b..8109ebac747 100644 --- a/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod +++ b/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod @@ -14,6 +14,12 @@ </entityField> <entityProvider> <name>Salutations</name> + <children> + <entityParameter> + <name>Language_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>2f56ee5c-0f54-4d26-a4d8-a598c136967b</name> @@ -22,12 +28,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Language_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>Language_param</name> diff --git a/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod b/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod index e23ed314f9c..1919f07f0a8 100644 --- a/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod +++ b/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod @@ -19,14 +19,6 @@ </entityParameter> <entityProvider> <name>SalutationTitles</name> - <dependencies> - <entityDependency> - <name>3514c1fb-09f5-485f-884b-2e21e4e85490</name> - <entityName>QuickEntry_entity</entityName> - <fieldName>SalutationTitles</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>Language_param</name> @@ -37,6 +29,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>3514c1fb-09f5-485f-884b-2e21e4e85490</name> + <entityName>QuickEntry_entity</entityName> + <fieldName>SalutationTitles</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>Language_param</name> diff --git a/entity/Salutation_entity/Salutation_entity.aod b/entity/Salutation_entity/Salutation_entity.aod index 48def7ff858..0d2090d7740 100644 --- a/entity/Salutation_entity/Salutation_entity.aod +++ b/entity/Salutation_entity/Salutation_entity.aod @@ -59,17 +59,17 @@ </entityField> <entityConsumer> <name>KeywordGenders</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Salutation_entity/entityfields/keywordgenders/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>KeywordLanguages</name> diff --git a/entity/SerialLetter_entity/SerialLetter_entity.aod b/entity/SerialLetter_entity/SerialLetter_entity.aod index 315503bad3d..558eb8a4b6c 100644 --- a/entity/SerialLetter_entity/SerialLetter_entity.aod +++ b/entity/SerialLetter_entity/SerialLetter_entity.aod @@ -39,17 +39,17 @@ </entityField> <entityConsumer> <name>Recipients</name> - <dependency> - <name>dependency</name> - <entityName>LetterRecipient_entity</entityName> - <fieldName>SerialLetterRecipients</fieldName> - </dependency> <children> <entityParameter> <name>SerialLetterId_param</name> <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/recipients/children/serialletterid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LetterRecipient_entity</entityName> + <fieldName>SerialLetterRecipients</fieldName> + </dependency> </entityConsumer> <entityField> <name>ICON</name> @@ -59,11 +59,6 @@ </entityField> <entityConsumer> <name>Templates</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -74,6 +69,11 @@ <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/templates/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>TITLE</name> @@ -88,17 +88,17 @@ </entityField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>bindata</name> @@ -114,26 +114,21 @@ </entityField> <entityConsumer> <name>StatusKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Activities</name> <state>INVISIBLE</state> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -144,6 +139,11 @@ <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>downloadLetter</name> @@ -174,11 +174,6 @@ <entityConsumer> <name>Documents</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>SingleDocument</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -197,6 +192,11 @@ <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/documents/children/disallowcreate_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>SingleDocument</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>generateLetter</name> diff --git a/entity/Stock_entity/Stock_entity.aod b/entity/Stock_entity/Stock_entity.aod index 79a929f5a6b..b77312e1cbb 100644 --- a/entity/Stock_entity/Stock_entity.aod +++ b/entity/Stock_entity/Stock_entity.aod @@ -53,6 +53,12 @@ <entityProvider> <name>Stocks</name> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>ProductId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>aa9264c8-2c96-4a7a-94c7-e38bc0ae7df3</name> @@ -67,12 +73,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ProductId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>IMAGE</name> @@ -95,11 +95,6 @@ </entityProvider> <entityConsumer> <name>KeywordWarehouses</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -107,6 +102,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/SupportTicket_entity/SupportTicket_entity.aod b/entity/SupportTicket_entity/SupportTicket_entity.aod index 7449b209441..4b3790f9967 100644 --- a/entity/SupportTicket_entity/SupportTicket_entity.aod +++ b/entity/SupportTicket_entity/SupportTicket_entity.aod @@ -128,27 +128,22 @@ </entityParameter> <entityConsumer> <name>Links</name> - <dependency> - <name>dependency</name> - <entityName>TaskLink_entity</entityName> - <fieldName>Link</fieldName> - </dependency> <children> <entityParameter> <name>TaskId_param</name> <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/links/children/taskid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>TaskLink_entity</entityName> + <fieldName>Link</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/SupportTicket_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -171,15 +166,15 @@ <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/attributes/children/displaysimplename_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>MainDocuments</name> <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/maindocuments/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -190,15 +185,15 @@ <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Documents</name> - <selectionMode>MULTI</selectionMode> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> + <fieldName>MainDocuments</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Documents</name> + <selectionMode>MULTI</selectionMode> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -209,20 +204,25 @@ <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>TASK_PROGRESS</name> @@ -234,17 +234,17 @@ </entityField> <entityConsumer> <name>KeywordProgress</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/keywordprogress/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>TICKETTYPE</name> @@ -274,25 +274,20 @@ </entityField> <entityConsumer> <name>KeywordTickettype</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/keywordtickettype/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordTaskState</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordTaskState</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -303,6 +298,11 @@ <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/keywordtaskstate/children/whitelistids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>TicketType_param</name> @@ -311,17 +311,17 @@ </entityParameter> <entityConsumer> <name>KeywordTaskPriority</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/keywordtaskpriority/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>ContactEditors</name> @@ -354,11 +354,6 @@ </entityActionField> <entityConsumer> <name>ModuleTrees</name> - <dependency> - <name>dependency</name> - <entityName>ModuleTree_entity</entityName> - <fieldName>TreeProviders</fieldName> - </dependency> <children> <entityParameter> <name>ContextName_param</name> @@ -369,6 +364,11 @@ <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/moduletrees/children/id_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ModuleTree_entity</entityName> + <fieldName>TreeProviders</fieldName> + </dependency> </entityConsumer> <entityField> <name>TASK_PARENT_ID</name> diff --git a/entity/TaskLink_entity/TaskLink_entity.aod b/entity/TaskLink_entity/TaskLink_entity.aod index 759282daf39..90fc5bd3378 100644 --- a/entity/TaskLink_entity/TaskLink_entity.aod +++ b/entity/TaskLink_entity/TaskLink_entity.aod @@ -39,6 +39,12 @@ <targetIdField>OBJECT_ROWID</targetIdField> <documentation>%aditoprj%/entity/TaskLink_entity/entityfields/link/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>TaskId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>40cc8bcd-c178-4a77-a968-642e1d8e1f70</name> @@ -53,12 +59,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>TaskId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>TaskId_param</name> @@ -75,17 +75,17 @@ </entityConsumer> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>AllObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/TaskLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>AllObjects</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/Timetracking_entity/Timetracking_entity.aod b/entity/Timetracking_entity/Timetracking_entity.aod index fc202492285..f4b7bc52682 100644 --- a/entity/Timetracking_entity/Timetracking_entity.aod +++ b/entity/Timetracking_entity/Timetracking_entity.aod @@ -75,14 +75,6 @@ <entityProvider> <name>Timetrackings</name> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>3636c414-fbc9-4144-a8b1-8e4ca0a146b2</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Timetrackings</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ObjectId_param</name> @@ -93,6 +85,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>3636c414-fbc9-4144-a8b1-8e4ca0a146b2</name> + <entityName>Salesproject_entity</entityName> + <fieldName>Timetrackings</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>Employees</name> diff --git a/entity/TurnoverTree_entity/TurnoverTree_entity.aod b/entity/TurnoverTree_entity/TurnoverTree_entity.aod index d275ce95c96..d8624334458 100644 --- a/entity/TurnoverTree_entity/TurnoverTree_entity.aod +++ b/entity/TurnoverTree_entity/TurnoverTree_entity.aod @@ -57,6 +57,12 @@ <entityProvider> <name>FilteredTurnovers</name> <documentation>%aditoprj%/entity/TurnoverTree_entity/entityfields/filteredturnovers/documentation.adoc</documentation> + <children> + <entityParameter> + <name>YearCountToShow_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>0ea4ad47-985b-4a9c-81d8-946be324ae04</name> @@ -65,12 +71,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>YearCountToShow_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>PARENT</name> diff --git a/entity/Turnover_entity/Turnover_entity.aod b/entity/Turnover_entity/Turnover_entity.aod index 0737e151be2..81fdfb8dd00 100644 --- a/entity/Turnover_entity/Turnover_entity.aod +++ b/entity/Turnover_entity/Turnover_entity.aod @@ -54,14 +54,6 @@ <entityProvider> <name>FilteredTurnovers</name> <documentation>%aditoprj%/entity/Turnover_entity/entityfields/filteredturnovers/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>51106aba-bd82-4ac5-8de6-fc56d53c6117</name> - <entityName>Salesproject_entity</entityName> - <fieldName>SalesprojectForecastCharts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>MaxYear_param</name> @@ -72,14 +64,17 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>51106aba-bd82-4ac5-8de6-fc56d53c6117</name> + <entityName>Salesproject_entity</entityName> + <fieldName>SalesprojectForecastCharts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>Turnover_tree</name> - <dependency> - <name>dependency</name> - <entityName>TurnoverTree_entity</entityName> - <fieldName>FilteredTurnovers</fieldName> - </dependency> <children> <entityParameter> <name>MaxYear_param</name> @@ -98,6 +93,11 @@ <valueProcess>%aditoprj%/entity/Turnover_entity/entityfields/turnover_tree/children/showturnover_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>TurnoverTree_entity</entityName> + <fieldName>FilteredTurnovers</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>SalesprojectId_param</name> diff --git a/entity/UniversalFileProcessor_entity/UniversalFileProcessor_entity.aod b/entity/UniversalFileProcessor_entity/UniversalFileProcessor_entity.aod index 1abb59ffc8b..57fdcb96a60 100644 --- a/entity/UniversalFileProcessor_entity/UniversalFileProcessor_entity.aod +++ b/entity/UniversalFileProcessor_entity/UniversalFileProcessor_entity.aod @@ -24,17 +24,17 @@ </entityParameter> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>ActivityIDs_param</name> <valueProcess>%aditoprj%/entity/UniversalFileProcessor_entity/entityfields/activities/children/activityids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod b/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod index 42eb73a718a..29ba9b689d5 100644 --- a/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod +++ b/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod @@ -49,17 +49,17 @@ <entityConsumer> <name>UnlinkedMailMappingLinks</name> <documentation>%aditoprj%/entity/UnlinkedMailMappingWrapper_entity/entityfields/unlinkedmailmappinglinks/documentation.adoc</documentation> - <dependency> - <name>dependency</name> - <entityName>UnlinkedMailMappingLink_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>MailAsText_param</name> <valueProcess>%aditoprj%/entity/UnlinkedMailMappingWrapper_entity/entityfields/unlinkedmailmappinglinks/children/mailastext_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>UnlinkedMailMappingLink_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod b/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod index f059c7a9862..bdb4144e03c 100644 --- a/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod +++ b/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod @@ -119,11 +119,6 @@ <entityConsumer> <name>KeywordVisitPlanEntryStatus</name> <documentation>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/keywordvisitplanentrystatus/documentation.adoc</documentation> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -131,6 +126,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>Entries_param</name> @@ -186,11 +186,6 @@ </entityField> <entityConsumer> <name>Persons</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>Contacts</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedContactIds_param</name> @@ -201,6 +196,11 @@ <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/persons/children/onlyshowcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>Contacts</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> diff --git a/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod b/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod index 6010af87879..bccac7cc316 100644 --- a/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod +++ b/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod @@ -89,11 +89,6 @@ <entityConsumer> <name>KeywordVisitRecommendationPriority</name> <documentation>%aditoprj%/entity/VisitRecommendation_entity/entityfields/keywordvisitrecommendationpriority/documentation.adoc</documentation> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -101,6 +96,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>OrganisationConsumer</name> @@ -112,11 +112,6 @@ </entityConsumer> <entityConsumer> <name>PersonConsumer</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -124,6 +119,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> @@ -164,17 +164,17 @@ </entityProvider> <entityConsumer> <name>KeywordVisitRecommendationSource</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/keywordvisitrecommendationsource/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>ADDRESS_ZIP</name> diff --git a/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod b/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod index e57032a87e2..2d30eb85c0a 100644 --- a/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod +++ b/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod @@ -49,11 +49,6 @@ </entityProvider> <entityConsumer> <name>Contexts</name> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> - </dependency> <children> <entityParameter> <name>Blacklist_param</name> @@ -64,20 +59,25 @@ <valueProcess>%aditoprj%/entity/WorkflowStartConfig_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>TriggerKeyword</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>TriggerKeyword</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/WorkflowStartConfig_entity/entityfields/triggerkeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/neonView/360DegreeFilter_view/360DegreeFilter_view.aod b/neonView/360DegreeFilter_view/360DegreeFilter_view.aod index f214b8b117e..5bc07ac524d 100644 --- a/neonView/360DegreeFilter_view/360DegreeFilter_view.aod +++ b/neonView/360DegreeFilter_view/360DegreeFilter_view.aod @@ -17,7 +17,6 @@ <iconField>ICON</iconField> <hideContentSearch v="false" /> <entityField>#ENTITY</entityField> - <linkedColumns /> <defaultGroupFields> <element>GROUP</element> </defaultGroupFields> diff --git a/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod b/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod index 1931907f2f4..3219f78a4aa 100644 --- a/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod +++ b/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod @@ -18,13 +18,13 @@ <predecessorIdField>PREDECESSORSTEP_ID</predecessorIdField> <entityField>#ENTITY</entityField> <isDeletable v="true" /> - <isEditable v="true" /> <title></title> <devices> <element>TABLET</element> <element>DESKTOP</element> </devices> <isCreatable v="true" /> + <isEditable v="true" /> <columns> <neonTableColumn> <name>9469e2f2-35ac-4f87-a4a7-959b47a5e7bb</name> diff --git a/process/AISalesproject_lib/AISalesproject_lib.aod b/process/AISalesproject_lib/AISalesproject_lib.aod index 13b8a275db5..a6f99a40249 100644 --- a/process/AISalesproject_lib/AISalesproject_lib.aod +++ b/process/AISalesproject_lib/AISalesproject_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>AISalesproject_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/AISalesproject_lib/process.js</process> diff --git a/process/AI_lib/AI_lib.aod b/process/AI_lib/AI_lib.aod index 153e8fc6b66..7ae40f7d1ad 100644 --- a/process/AI_lib/AI_lib.aod +++ b/process/AI_lib/AI_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>AI_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/AI_lib/process.js</process> diff --git a/process/ActivityTask_lib/ActivityTask_lib.aod b/process/ActivityTask_lib/ActivityTask_lib.aod index 141c9c3f934..75bb8811f6e 100644 --- a/process/ActivityTask_lib/ActivityTask_lib.aod +++ b/process/ActivityTask_lib/ActivityTask_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ActivityTask_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ActivityTask_lib/process.js</process> diff --git a/process/AddressEntity_lib/AddressEntity_lib.aod b/process/AddressEntity_lib/AddressEntity_lib.aod index 4ecf49e2e70..432deaa1e5b 100644 --- a/process/AddressEntity_lib/AddressEntity_lib.aod +++ b/process/AddressEntity_lib/AddressEntity_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>AddressEntity_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/AddressEntity_lib/process.js</process> diff --git a/process/Address_lib/Address_lib.aod b/process/Address_lib/Address_lib.aod index dc170bb2e02..8b4c8d490fc 100644 --- a/process/Address_lib/Address_lib.aod +++ b/process/Address_lib/Address_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Address_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/Address_lib/documentation.adoc</documentation> diff --git a/process/Appointment_lib/Appointment_lib.aod b/process/Appointment_lib/Appointment_lib.aod index 5b832c601af..048b24bb744 100644 --- a/process/Appointment_lib/Appointment_lib.aod +++ b/process/Appointment_lib/Appointment_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Appointment_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Appointment_lib/process.js</process> diff --git a/process/AttributeFilter_lib/AttributeFilter_lib.aod b/process/AttributeFilter_lib/AttributeFilter_lib.aod index 57e3edcba2b..0e96ad73bb4 100644 --- a/process/AttributeFilter_lib/AttributeFilter_lib.aod +++ b/process/AttributeFilter_lib/AttributeFilter_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>AttributeFilter_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/AttributeFilter_lib/process.js</process> diff --git a/process/AttributeRegistry_basic/AttributeRegistry_basic.aod b/process/AttributeRegistry_basic/AttributeRegistry_basic.aod index d4917ea14ea..3ed840c1e53 100644 --- a/process/AttributeRegistry_basic/AttributeRegistry_basic.aod +++ b/process/AttributeRegistry_basic/AttributeRegistry_basic.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>AttributeRegistry_basic</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/AttributeRegistry_basic/process.js</process> diff --git a/process/Attribute_lib/Attribute_lib.aod b/process/Attribute_lib/Attribute_lib.aod index 7d9936e8182..0d46a6a7dc9 100644 --- a/process/Attribute_lib/Attribute_lib.aod +++ b/process/Attribute_lib/Attribute_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Attribute_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Attribute_lib/process.js</process> diff --git a/process/Binary_lib/Binary_lib.aod b/process/Binary_lib/Binary_lib.aod index 39de483b5c2..338211a33b6 100644 --- a/process/Binary_lib/Binary_lib.aod +++ b/process/Binary_lib/Binary_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Binary_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Binary_lib/process.js</process> diff --git a/process/Bulkmail_lib/Bulkmail_lib.aod b/process/Bulkmail_lib/Bulkmail_lib.aod index 0befb2a7348..6bc2e64de1b 100644 --- a/process/Bulkmail_lib/Bulkmail_lib.aod +++ b/process/Bulkmail_lib/Bulkmail_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Bulkmail_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Bulkmail_lib/process.js</process> diff --git a/process/CachedRecordContainer_lib/CachedRecordContainer_lib.aod b/process/CachedRecordContainer_lib/CachedRecordContainer_lib.aod index 07b3e2150f4..7257f6acb05 100644 --- a/process/CachedRecordContainer_lib/CachedRecordContainer_lib.aod +++ b/process/CachedRecordContainer_lib/CachedRecordContainer_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CachedRecordContainer_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/CachedRecordContainer_lib/process.js</process> diff --git a/process/Calendar_lib/Calendar_lib.aod b/process/Calendar_lib/Calendar_lib.aod index ba466c5bf5f..657f6034dea 100644 --- a/process/Calendar_lib/Calendar_lib.aod +++ b/process/Calendar_lib/Calendar_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Calendar_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Calendar_lib/process.js</process> diff --git a/process/Campaign_lib/Campaign_lib.aod b/process/Campaign_lib/Campaign_lib.aod index 6cff8443c74..1018469206a 100644 --- a/process/Campaign_lib/Campaign_lib.aod +++ b/process/Campaign_lib/Campaign_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Campaign_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Campaign_lib/process.js</process> diff --git a/process/ClassificationFilter_lib/ClassificationFilter_lib.aod b/process/ClassificationFilter_lib/ClassificationFilter_lib.aod index 9b182044a87..705efe2d662 100644 --- a/process/ClassificationFilter_lib/ClassificationFilter_lib.aod +++ b/process/ClassificationFilter_lib/ClassificationFilter_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ClassificationFilter_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ClassificationFilter_lib/process.js</process> diff --git a/process/Classification_lib/Classification_lib.aod b/process/Classification_lib/Classification_lib.aod index 659223c9d3b..5b4114c59ea 100644 --- a/process/Classification_lib/Classification_lib.aod +++ b/process/Classification_lib/Classification_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Classification_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Classification_lib/process.js</process> diff --git a/process/Communication_lib/Communication_lib.aod b/process/Communication_lib/Communication_lib.aod index a69299aa2aa..1bc1f16ef81 100644 --- a/process/Communication_lib/Communication_lib.aod +++ b/process/Communication_lib/Communication_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Communication_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Communication_lib/process.js</process> diff --git a/process/Contact_lib/Contact_lib.aod b/process/Contact_lib/Contact_lib.aod index ea8e5020017..3f85ffbdb21 100644 --- a/process/Contact_lib/Contact_lib.aod +++ b/process/Contact_lib/Contact_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Contact_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Contact_lib/process.js</process> diff --git a/process/Context_lib/Context_lib.aod b/process/Context_lib/Context_lib.aod index 88f0211eaca..85bdd8cc4de 100644 --- a/process/Context_lib/Context_lib.aod +++ b/process/Context_lib/Context_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Context_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Context_lib/process.js</process> diff --git a/process/Contract_lib/Contract_lib.aod b/process/Contract_lib/Contract_lib.aod index f7e066be340..080920179a5 100644 --- a/process/Contract_lib/Contract_lib.aod +++ b/process/Contract_lib/Contract_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Contract_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Contract_lib/process.js</process> diff --git a/process/CountryInfoData_lib/CountryInfoData_lib.aod b/process/CountryInfoData_lib/CountryInfoData_lib.aod index d1612a9f77a..ecc2eedbcd9 100644 --- a/process/CountryInfoData_lib/CountryInfoData_lib.aod +++ b/process/CountryInfoData_lib/CountryInfoData_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CountryInfoData_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/CountryInfoData_lib/process.js</process> diff --git a/process/CountryInfo_lib/CountryInfo_lib.aod b/process/CountryInfo_lib/CountryInfo_lib.aod index d078970229a..69b0a804f39 100644 --- a/process/CountryInfo_lib/CountryInfo_lib.aod +++ b/process/CountryInfo_lib/CountryInfo_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CountryInfo_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/CountryInfo_lib/process.js</process> diff --git a/process/CreateActivity_workflowService/CreateActivity_workflowService.aod b/process/CreateActivity_workflowService/CreateActivity_workflowService.aod index 0241a4b95bb..d58e8547041 100644 --- a/process/CreateActivity_workflowService/CreateActivity_workflowService.aod +++ b/process/CreateActivity_workflowService/CreateActivity_workflowService.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CreateActivity_workflowService</name> <title>Create activity</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/CreateNotification_workflowService/CreateNotification_workflowService.aod b/process/CreateNotification_workflowService/CreateNotification_workflowService.aod index e6455f2cd5a..d2630a2a563 100644 --- a/process/CreateNotification_workflowService/CreateNotification_workflowService.aod +++ b/process/CreateNotification_workflowService/CreateNotification_workflowService.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CreateNotification_workflowService</name> <title>Create notification</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/CreateSalesprojectTouchpoint_workflowService/CreateSalesprojectTouchpoint_workflowService.aod b/process/CreateSalesprojectTouchpoint_workflowService/CreateSalesprojectTouchpoint_workflowService.aod index df1d296af52..6e44f166f64 100644 --- a/process/CreateSalesprojectTouchpoint_workflowService/CreateSalesprojectTouchpoint_workflowService.aod +++ b/process/CreateSalesprojectTouchpoint_workflowService/CreateSalesprojectTouchpoint_workflowService.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CreateSalesprojectTouchpoint_workflowService</name> <title>Create salesproject touchpoint</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/CreateSalesproject_workflowService/CreateSalesproject_workflowService.aod b/process/CreateSalesproject_workflowService/CreateSalesproject_workflowService.aod index 8b41b437136..fa5f2a849d6 100644 --- a/process/CreateSalesproject_workflowService/CreateSalesproject_workflowService.aod +++ b/process/CreateSalesproject_workflowService/CreateSalesproject_workflowService.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CreateSalesproject_workflowService</name> <title>Create salesproject</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/CustomPlaceholder_lib/CustomPlaceholder_lib.aod b/process/CustomPlaceholder_lib/CustomPlaceholder_lib.aod index 8e915687a2a..1a6e6266888 100644 --- a/process/CustomPlaceholder_lib/CustomPlaceholder_lib.aod +++ b/process/CustomPlaceholder_lib/CustomPlaceholder_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CustomPlaceholder_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/CustomPlaceholder_lib/process.js</process> diff --git a/process/DataCaching_lib/DataCaching_lib.aod b/process/DataCaching_lib/DataCaching_lib.aod index 732c9784be4..06e4baffd56 100644 --- a/process/DataCaching_lib/DataCaching_lib.aod +++ b/process/DataCaching_lib/DataCaching_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>DataCaching_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/DataCaching_lib/process.js</process> diff --git a/process/DataPrivacy_lib/DataPrivacy_lib.aod b/process/DataPrivacy_lib/DataPrivacy_lib.aod index 87e4a73a1b3..229eb4f8965 100644 --- a/process/DataPrivacy_lib/DataPrivacy_lib.aod +++ b/process/DataPrivacy_lib/DataPrivacy_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>DataPrivacy_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/DataPrivacy_lib/process.js</process> diff --git a/process/Data_lib/Data_lib.aod b/process/Data_lib/Data_lib.aod index 7e6dc0e007d..316134e4f97 100644 --- a/process/Data_lib/Data_lib.aod +++ b/process/Data_lib/Data_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Data_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Data_lib/process.js</process> diff --git a/process/Date_lib/Date_lib.aod b/process/Date_lib/Date_lib.aod index 9833cb86c53..4442988df03 100644 --- a/process/Date_lib/Date_lib.aod +++ b/process/Date_lib/Date_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Date_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Date_lib/process.js</process> diff --git a/process/Dependency_lib/Dependency_lib.aod b/process/Dependency_lib/Dependency_lib.aod index 3475b073c30..be3eec18d19 100644 --- a/process/Dependency_lib/Dependency_lib.aod +++ b/process/Dependency_lib/Dependency_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Dependency_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Dependency_lib/process.js</process> diff --git a/process/DocumentTemplate_lib/DocumentTemplate_lib.aod b/process/DocumentTemplate_lib/DocumentTemplate_lib.aod index f7dede09487..65a45cc2df2 100644 --- a/process/DocumentTemplate_lib/DocumentTemplate_lib.aod +++ b/process/DocumentTemplate_lib/DocumentTemplate_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>DocumentTemplate_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/DocumentTemplate_lib/documentation.adoc</documentation> diff --git a/process/Document_lib/Document_lib.aod b/process/Document_lib/Document_lib.aod index 9f2ede3e40f..cc120d3f86f 100644 --- a/process/Document_lib/Document_lib.aod +++ b/process/Document_lib/Document_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Document_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Document_lib/process.js</process> diff --git a/process/DocxTemplater_lib/DocxTemplater_lib.aod b/process/DocxTemplater_lib/DocxTemplater_lib.aod index 3c96ec6b826..8dfbdd5ebc9 100644 --- a/process/DocxTemplater_lib/DocxTemplater_lib.aod +++ b/process/DocxTemplater_lib/DocxTemplater_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>DocxTemplater_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/DocxTemplater_lib/process.js</process> diff --git a/process/DuplicateScanner_lib/DuplicateScanner_lib.aod b/process/DuplicateScanner_lib/DuplicateScanner_lib.aod index 17d38fd00ac..6b45659f204 100644 --- a/process/DuplicateScanner_lib/DuplicateScanner_lib.aod +++ b/process/DuplicateScanner_lib/DuplicateScanner_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>DuplicateScanner_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/DuplicateScanner_lib/process.js</process> diff --git a/process/EmailUtil_lib/EmailUtil_lib.aod b/process/EmailUtil_lib/EmailUtil_lib.aod index 04b24ec7e10..694639f440c 100644 --- a/process/EmailUtil_lib/EmailUtil_lib.aod +++ b/process/EmailUtil_lib/EmailUtil_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>EmailUtil_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/EmailUtil_lib/process.js</process> diff --git a/process/Email_lib/Email_lib.aod b/process/Email_lib/Email_lib.aod index 6022256dea0..d1b4a5a2f48 100644 --- a/process/Email_lib/Email_lib.aod +++ b/process/Email_lib/Email_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Email_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Email_lib/process.js</process> diff --git a/process/Employee_lib/Employee_lib.aod b/process/Employee_lib/Employee_lib.aod index 1a08f91b6ef..bf491daa912 100644 --- a/process/Employee_lib/Employee_lib.aod +++ b/process/Employee_lib/Employee_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Employee_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Employee_lib/process.js</process> diff --git a/process/Entity_lib/Entity_lib.aod b/process/Entity_lib/Entity_lib.aod index d106b77a163..81c2102218a 100644 --- a/process/Entity_lib/Entity_lib.aod +++ b/process/Entity_lib/Entity_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Entity_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Entity_lib/process.js</process> diff --git a/process/EwsClient_lib/EwsClient_lib.aod b/process/EwsClient_lib/EwsClient_lib.aod index 6343b20344c..988c9f615a2 100644 --- a/process/EwsClient_lib/EwsClient_lib.aod +++ b/process/EwsClient_lib/EwsClient_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>EwsClient_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/EwsClient_lib/process.js</process> diff --git a/process/ExportTemplate_lib/ExportTemplate_lib.aod b/process/ExportTemplate_lib/ExportTemplate_lib.aod index 7caa047e49c..347c2bddef0 100644 --- a/process/ExportTemplate_lib/ExportTemplate_lib.aod +++ b/process/ExportTemplate_lib/ExportTemplate_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ExportTemplate_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ExportTemplate_lib/process.js</process> diff --git a/process/Favorites_lib/Favorites_lib.aod b/process/Favorites_lib/Favorites_lib.aod index cae0fb68bab..1512c3b435d 100644 --- a/process/Favorites_lib/Favorites_lib.aod +++ b/process/Favorites_lib/Favorites_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Favorites_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Favorites_lib/process.js</process> diff --git a/process/FilterCondition_lib/FilterCondition_lib.aod b/process/FilterCondition_lib/FilterCondition_lib.aod index 501b03729ea..a69dbb1ec75 100644 --- a/process/FilterCondition_lib/FilterCondition_lib.aod +++ b/process/FilterCondition_lib/FilterCondition_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>FilterCondition_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/FilterCondition_lib/process.js</process> diff --git a/process/FilterViewAction_lib/FilterViewAction_lib.aod b/process/FilterViewAction_lib/FilterViewAction_lib.aod index 48c19eee90b..83be35832aa 100644 --- a/process/FilterViewAction_lib/FilterViewAction_lib.aod +++ b/process/FilterViewAction_lib/FilterViewAction_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>FilterViewAction_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/FilterViewAction_lib/process.js</process> diff --git a/process/Html_lib/Html_lib.aod b/process/Html_lib/Html_lib.aod index 98ca38b6fb0..52d9fb2676c 100644 --- a/process/Html_lib/Html_lib.aod +++ b/process/Html_lib/Html_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Html_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Html_lib/process.js</process> diff --git a/process/ImporterCustomMappingFunctions_lib/ImporterCustomMappingFunctions_lib.aod b/process/ImporterCustomMappingFunctions_lib/ImporterCustomMappingFunctions_lib.aod index bda7727edbe..e5e687932c1 100644 --- a/process/ImporterCustomMappingFunctions_lib/ImporterCustomMappingFunctions_lib.aod +++ b/process/ImporterCustomMappingFunctions_lib/ImporterCustomMappingFunctions_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ImporterCustomMappingFunctions_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/ImporterCustomMappingFunctions_lib/documentation.adoc</documentation> diff --git a/process/ImporterMappingFunctions_lib/ImporterMappingFunctions_lib.aod b/process/ImporterMappingFunctions_lib/ImporterMappingFunctions_lib.aod index 8a5c80a490d..9c1fdace0d7 100644 --- a/process/ImporterMappingFunctions_lib/ImporterMappingFunctions_lib.aod +++ b/process/ImporterMappingFunctions_lib/ImporterMappingFunctions_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ImporterMappingFunctions_lib</name> <comment></comment> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/ImporterTest_lib/ImporterTest_lib.aod b/process/ImporterTest_lib/ImporterTest_lib.aod index e1204321106..18c823d8efb 100644 --- a/process/ImporterTest_lib/ImporterTest_lib.aod +++ b/process/ImporterTest_lib/ImporterTest_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ImporterTest_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ImporterTest_lib/process.js</process> diff --git a/process/Importer_lib/Importer_lib.aod b/process/Importer_lib/Importer_lib.aod index 157f0d47a73..1d6a37d39b4 100644 --- a/process/Importer_lib/Importer_lib.aod +++ b/process/Importer_lib/Importer_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Importer_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/Importer_lib/documentation.adoc</documentation> diff --git a/process/IncomingCallExecutor_lib/IncomingCallExecutor_lib.aod b/process/IncomingCallExecutor_lib/IncomingCallExecutor_lib.aod index 9d36946fdfe..6659a5fab6a 100644 --- a/process/IncomingCallExecutor_lib/IncomingCallExecutor_lib.aod +++ b/process/IncomingCallExecutor_lib/IncomingCallExecutor_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>IncomingCallExecutor_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/IncomingCallExecutor_lib/process.js</process> diff --git a/process/IncomingEmailExecutor_lib/IncomingEmailExecutor_lib.aod b/process/IncomingEmailExecutor_lib/IncomingEmailExecutor_lib.aod index 1dbef1a8825..5d940a9124d 100644 --- a/process/IncomingEmailExecutor_lib/IncomingEmailExecutor_lib.aod +++ b/process/IncomingEmailExecutor_lib/IncomingEmailExecutor_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>IncomingEmailExecutor_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/IncomingEmailExecutor_lib/process.js</process> diff --git a/process/IndexSearch_lib/IndexSearch_lib.aod b/process/IndexSearch_lib/IndexSearch_lib.aod index bfc314526ea..b5a2aacd8c3 100644 --- a/process/IndexSearch_lib/IndexSearch_lib.aod +++ b/process/IndexSearch_lib/IndexSearch_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>IndexSearch_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/IndexSearch_lib/process.js</process> diff --git a/process/JditoFilter_lib/JditoFilter_lib.aod b/process/JditoFilter_lib/JditoFilter_lib.aod index e6721ea4e24..1276959dc46 100644 --- a/process/JditoFilter_lib/JditoFilter_lib.aod +++ b/process/JditoFilter_lib/JditoFilter_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>JditoFilter_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/JditoFilter_lib/documentation.adoc</documentation> diff --git a/process/KeywordAttribute_test/KeywordAttribute_test.aod b/process/KeywordAttribute_test/KeywordAttribute_test.aod index 5956980e85a..d22a7e77434 100644 --- a/process/KeywordAttribute_test/KeywordAttribute_test.aod +++ b/process/KeywordAttribute_test/KeywordAttribute_test.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>KeywordAttribute_test</name> <title>[TEST] KeywordAttribute_lib</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/KeywordData_lib/KeywordData_lib.aod b/process/KeywordData_lib/KeywordData_lib.aod index a4aab38ec5e..6955ec39f1f 100644 --- a/process/KeywordData_lib/KeywordData_lib.aod +++ b/process/KeywordData_lib/KeywordData_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>KeywordData_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/KeywordData_lib/process.js</process> diff --git a/process/KeywordRegistry_basic/KeywordRegistry_basic.aod b/process/KeywordRegistry_basic/KeywordRegistry_basic.aod index f16c2160c96..3e8c6225484 100644 --- a/process/KeywordRegistry_basic/KeywordRegistry_basic.aod +++ b/process/KeywordRegistry_basic/KeywordRegistry_basic.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>KeywordRegistry_basic</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/KeywordRegistry_basic/process.js</process> diff --git a/process/Keyword_lib/Keyword_lib.aod b/process/Keyword_lib/Keyword_lib.aod index 2dd2a647ff9..641f19343bb 100644 --- a/process/Keyword_lib/Keyword_lib.aod +++ b/process/Keyword_lib/Keyword_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Keyword_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Keyword_lib/process.js</process> diff --git a/process/Keyword_test/Keyword_test.aod b/process/Keyword_test/Keyword_test.aod index e654f56663b..fa9513b2863 100644 --- a/process/Keyword_test/Keyword_test.aod +++ b/process/Keyword_test/Keyword_test.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Keyword_test</name> <title>[TEST] Keyword_lib</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod b/process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod index 7119bdb3846..38b9d6a998f 100644 --- a/process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod +++ b/process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>KnowledgeManagement_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/KnowledgeManagement_lib/process.js</process> diff --git a/process/LeadQuickAcquisition_lib/LeadQuickAcquisition_lib.aod b/process/LeadQuickAcquisition_lib/LeadQuickAcquisition_lib.aod index dd1aecc728e..2ac6bab47ac 100644 --- a/process/LeadQuickAcquisition_lib/LeadQuickAcquisition_lib.aod +++ b/process/LeadQuickAcquisition_lib/LeadQuickAcquisition_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>LeadQuickAcquisition_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/LeadQuickAcquisition_lib/process.js</process> diff --git a/process/Leadimport_lib/Leadimport_lib.aod b/process/Leadimport_lib/Leadimport_lib.aod index 2b0a6ccc761..6426e096502 100644 --- a/process/Leadimport_lib/Leadimport_lib.aod +++ b/process/Leadimport_lib/Leadimport_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Leadimport_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Leadimport_lib/process.js</process> diff --git a/process/Liquibase_lib/Liquibase_lib.aod b/process/Liquibase_lib/Liquibase_lib.aod index 5fc68808e15..31fe997666b 100644 --- a/process/Liquibase_lib/Liquibase_lib.aod +++ b/process/Liquibase_lib/Liquibase_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Liquibase_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Liquibase_lib/process.js</process> diff --git a/process/Location_lib/Location_lib.aod b/process/Location_lib/Location_lib.aod index 1a9a229f653..81211576721 100644 --- a/process/Location_lib/Location_lib.aod +++ b/process/Location_lib/Location_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Location_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Location_lib/process.js</process> diff --git a/process/Loghistory_lib/Loghistory_lib.aod b/process/Loghistory_lib/Loghistory_lib.aod index 454f37cd2f2..bcbd876cc0f 100644 --- a/process/Loghistory_lib/Loghistory_lib.aod +++ b/process/Loghistory_lib/Loghistory_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Loghistory_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Loghistory_lib/process.js</process> diff --git a/process/MSTeams_lib/MSTeams_lib.aod b/process/MSTeams_lib/MSTeams_lib.aod index 466fb42fa29..8572851b599 100644 --- a/process/MSTeams_lib/MSTeams_lib.aod +++ b/process/MSTeams_lib/MSTeams_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>MSTeams_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/MSTeams_lib/process.js</process> diff --git a/process/MimeType_lib/MimeType_lib.aod b/process/MimeType_lib/MimeType_lib.aod index 01ad226f611..dbc01a017d0 100644 --- a/process/MimeType_lib/MimeType_lib.aod +++ b/process/MimeType_lib/MimeType_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>MimeType_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/MimeType_lib/process.js</process> diff --git a/process/Money_lib/Money_lib.aod b/process/Money_lib/Money_lib.aod index 9c27e1c6deb..5232420c51a 100644 --- a/process/Money_lib/Money_lib.aod +++ b/process/Money_lib/Money_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Money_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Money_lib/process.js</process> diff --git a/process/Neon_lib/Neon_lib.aod b/process/Neon_lib/Neon_lib.aod index 6c99555616c..0a51cffca15 100644 --- a/process/Neon_lib/Neon_lib.aod +++ b/process/Neon_lib/Neon_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Neon_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/Neon_lib/documentation.adoc</documentation> diff --git a/process/NewsSystem_lib/NewsSystem_lib.aod b/process/NewsSystem_lib/NewsSystem_lib.aod index f4907ecd213..8c226c330e0 100644 --- a/process/NewsSystem_lib/NewsSystem_lib.aod +++ b/process/NewsSystem_lib/NewsSystem_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>NewsSystem_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/NewsSystem_lib/process.js</process> diff --git a/process/Notification_lib/Notification_lib.aod b/process/Notification_lib/Notification_lib.aod index 41cd1071d9d..28beacbb0d8 100644 --- a/process/Notification_lib/Notification_lib.aod +++ b/process/Notification_lib/Notification_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Notification_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Notification_lib/process.js</process> diff --git a/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod b/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod index fe86c4d1f97..65ad5b0b0b2 100644 --- a/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod +++ b/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ObjectRelationTypeRegistry_basic</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ObjectRelationTypeRegistry_basic/process.js</process> diff --git a/process/ObjectRelation_lib/ObjectRelation_lib.aod b/process/ObjectRelation_lib/ObjectRelation_lib.aod index e5a4d95eb35..b48e1daede5 100644 --- a/process/ObjectRelation_lib/ObjectRelation_lib.aod +++ b/process/ObjectRelation_lib/ObjectRelation_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ObjectRelation_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ObjectRelation_lib/process.js</process> diff --git a/process/OfferOrder_lib/OfferOrder_lib.aod b/process/OfferOrder_lib/OfferOrder_lib.aod index 0df9d9a624d..353cb8ca017 100644 --- a/process/OfferOrder_lib/OfferOrder_lib.aod +++ b/process/OfferOrder_lib/OfferOrder_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>OfferOrder_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/OfferOrder_lib/process.js</process> diff --git a/process/Offer_lib/Offer_lib.aod b/process/Offer_lib/Offer_lib.aod index 41247d62423..d1f79adeeb6 100644 --- a/process/Offer_lib/Offer_lib.aod +++ b/process/Offer_lib/Offer_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Offer_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Offer_lib/process.js</process> diff --git a/process/Order_lib/Order_lib.aod b/process/Order_lib/Order_lib.aod index 3e225851b15..5f4e4c315b8 100644 --- a/process/Order_lib/Order_lib.aod +++ b/process/Order_lib/Order_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Order_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Order_lib/process.js</process> diff --git a/process/Organisation_lib/Organisation_lib.aod b/process/Organisation_lib/Organisation_lib.aod index 47bca652458..1f0d01aabbd 100644 --- a/process/Organisation_lib/Organisation_lib.aod +++ b/process/Organisation_lib/Organisation_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Organisation_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Organisation_lib/process.js</process> diff --git a/process/PermissionCalendar_lib/PermissionCalendar_lib.aod b/process/PermissionCalendar_lib/PermissionCalendar_lib.aod index 8f5c6970ce7..1b2ab4f4651 100644 --- a/process/PermissionCalendar_lib/PermissionCalendar_lib.aod +++ b/process/PermissionCalendar_lib/PermissionCalendar_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>PermissionCalendar_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/PermissionCalendar_lib/process.js</process> diff --git a/process/Permission_lib/Permission_lib.aod b/process/Permission_lib/Permission_lib.aod index 00dceca9751..642b9b00218 100644 --- a/process/Permission_lib/Permission_lib.aod +++ b/process/Permission_lib/Permission_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Permission_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Permission_lib/process.js</process> diff --git a/process/Person_lib/Person_lib.aod b/process/Person_lib/Person_lib.aod index 04c0795c9a2..80e4dc8248f 100644 --- a/process/Person_lib/Person_lib.aod +++ b/process/Person_lib/Person_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Person_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Person_lib/process.js</process> diff --git a/process/Placeholder_lib/Placeholder_lib.aod b/process/Placeholder_lib/Placeholder_lib.aod index 1cc12d42bd4..2af9f3a9ab1 100644 --- a/process/Placeholder_lib/Placeholder_lib.aod +++ b/process/Placeholder_lib/Placeholder_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Placeholder_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Placeholder_lib/process.js</process> diff --git a/process/PostalAddress_lib/PostalAddress_lib.aod b/process/PostalAddress_lib/PostalAddress_lib.aod index f7af81f2c9b..a07348310e4 100644 --- a/process/PostalAddress_lib/PostalAddress_lib.aod +++ b/process/PostalAddress_lib/PostalAddress_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>PostalAddress_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/PostalAddress_lib/process.js</process> diff --git a/process/Product_lib/Product_lib.aod b/process/Product_lib/Product_lib.aod index 9c72fa0f0cd..a1197452b92 100644 --- a/process/Product_lib/Product_lib.aod +++ b/process/Product_lib/Product_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Product_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Product_lib/process.js</process> diff --git a/process/Proto_lib/Proto_lib.aod b/process/Proto_lib/Proto_lib.aod index dd8841dc7ab..ce167574ad6 100644 --- a/process/Proto_lib/Proto_lib.aod +++ b/process/Proto_lib/Proto_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Proto_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Proto_lib/process.js</process> diff --git a/process/RebuildAllDuplicateCaches_serverProcess/RebuildAllDuplicateCaches_serverProcess.aod b/process/RebuildAllDuplicateCaches_serverProcess/RebuildAllDuplicateCaches_serverProcess.aod index 7d7d887aa09..11432054cc7 100644 --- a/process/RebuildAllDuplicateCaches_serverProcess/RebuildAllDuplicateCaches_serverProcess.aod +++ b/process/RebuildAllDuplicateCaches_serverProcess/RebuildAllDuplicateCaches_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>RebuildAllDuplicateCaches_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/RebuildAllDuplicateCaches_serverProcess/process.js</process> diff --git a/process/RebuildDuplicatesCache_serverProcess/RebuildDuplicatesCache_serverProcess.aod b/process/RebuildDuplicatesCache_serverProcess/RebuildDuplicatesCache_serverProcess.aod index 21d05594806..078550c7200 100644 --- a/process/RebuildDuplicatesCache_serverProcess/RebuildDuplicatesCache_serverProcess.aod +++ b/process/RebuildDuplicatesCache_serverProcess/RebuildDuplicatesCache_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>RebuildDuplicatesCache_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/RebuildDuplicatesCache_serverProcess/process.js</process> diff --git a/process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.aod b/process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.aod index 8dde3d1708e..9a2e06c6e71 100644 --- a/process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.aod +++ b/process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>RemoveFromCampaign_workflowService</name> <title>Remove from Campaign</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/Report_lib/Report_lib.aod b/process/Report_lib/Report_lib.aod index b847e04de62..a7caa940389 100644 --- a/process/Report_lib/Report_lib.aod +++ b/process/Report_lib/Report_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Report_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Report_lib/process.js</process> diff --git a/process/Salesproject_lib/Salesproject_lib.aod b/process/Salesproject_lib/Salesproject_lib.aod index 06956e42708..32fb545354a 100644 --- a/process/Salesproject_lib/Salesproject_lib.aod +++ b/process/Salesproject_lib/Salesproject_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Salesproject_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Salesproject_lib/process.js</process> diff --git a/process/SendEmail_workflowService/SendEmail_workflowService.aod b/process/SendEmail_workflowService/SendEmail_workflowService.aod index d58abf46337..2dbab69e62e 100644 --- a/process/SendEmail_workflowService/SendEmail_workflowService.aod +++ b/process/SendEmail_workflowService/SendEmail_workflowService.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>SendEmail_workflowService</name> <title>Send email</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/SetAttribute_workflowService/SetAttribute_workflowService.aod b/process/SetAttribute_workflowService/SetAttribute_workflowService.aod index 0816609206a..17c234d1ae4 100644 --- a/process/SetAttribute_workflowService/SetAttribute_workflowService.aod +++ b/process/SetAttribute_workflowService/SetAttribute_workflowService.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>SetAttribute_workflowService</name> <title>Set attribute</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.aod b/process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.aod index 708612a5a1a..202fd456008 100644 --- a/process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.aod +++ b/process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>SetCampaignStep_workflowService</name> <title>Set Campaign Step</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/SetSalesprojectPhase_workflowService/SetSalesprojectPhase_workflowService.aod b/process/SetSalesprojectPhase_workflowService/SetSalesprojectPhase_workflowService.aod index cd9e8f63d12..19550d2d6b5 100644 --- a/process/SetSalesprojectPhase_workflowService/SetSalesprojectPhase_workflowService.aod +++ b/process/SetSalesprojectPhase_workflowService/SetSalesprojectPhase_workflowService.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>SetSalesprojectPhase_workflowService</name> <title>Set salesproject phase</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/SqlBuilder_test/SqlBuilder_test.aod b/process/SqlBuilder_test/SqlBuilder_test.aod index 39922829116..c8c1620c9e4 100644 --- a/process/SqlBuilder_test/SqlBuilder_test.aod +++ b/process/SqlBuilder_test/SqlBuilder_test.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>SqlBuilder_test</name> <title>[TEST] Sql_lib - SqlBuilder</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod b/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod index 8636a3707b1..e3fbcc2640d 100644 --- a/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod +++ b/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>SqlMaskingUtils_test</name> <title>[TEST] Sql_lib - SqlMaskingUtils</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/Sql_lib/Sql_lib.aod b/process/Sql_lib/Sql_lib.aod index 8e786ba49ef..9ecdf3e0cef 100644 --- a/process/Sql_lib/Sql_lib.aod +++ b/process/Sql_lib/Sql_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Sql_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/Sql_lib/documentation.adoc</documentation> diff --git a/process/StandardObject_lib/StandardObject_lib.aod b/process/StandardObject_lib/StandardObject_lib.aod index 94c1fcc045a..c69d626eb8d 100644 --- a/process/StandardObject_lib/StandardObject_lib.aod +++ b/process/StandardObject_lib/StandardObject_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>StandardObject_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/StandardObject_lib/documentation.adoc</documentation> diff --git a/process/TempRebuildIndexPerson_serverProcess/TempRebuildIndexPerson_serverProcess.aod b/process/TempRebuildIndexPerson_serverProcess/TempRebuildIndexPerson_serverProcess.aod index bffee7201af..3d6e25db86c 100644 --- a/process/TempRebuildIndexPerson_serverProcess/TempRebuildIndexPerson_serverProcess.aod +++ b/process/TempRebuildIndexPerson_serverProcess/TempRebuildIndexPerson_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>TempRebuildIndexPerson_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/TempRebuildIndexPerson_serverProcess/process.js</process> diff --git a/process/Terminal_lib/Terminal_lib.aod b/process/Terminal_lib/Terminal_lib.aod index 9fa0811425e..fee1f093874 100644 --- a/process/Terminal_lib/Terminal_lib.aod +++ b/process/Terminal_lib/Terminal_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Terminal_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/Terminal_lib/documentation.adoc</documentation> diff --git a/process/TestIndexSearch/TestIndexSearch.aod b/process/TestIndexSearch/TestIndexSearch.aod index 9dfabc2aa4b..66107b82c66 100644 --- a/process/TestIndexSearch/TestIndexSearch.aod +++ b/process/TestIndexSearch/TestIndexSearch.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>TestIndexSearch</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/TestIndexSearch/process.js</process> diff --git a/process/Ticket_lib/Ticket_lib.aod b/process/Ticket_lib/Ticket_lib.aod index 5ce9c41505c..f8dd6fe8f2e 100644 --- a/process/Ticket_lib/Ticket_lib.aod +++ b/process/Ticket_lib/Ticket_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Ticket_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Ticket_lib/process.js</process> diff --git a/process/Timetracking_lib/Timetracking_lib.aod b/process/Timetracking_lib/Timetracking_lib.aod index b514721991f..140b9a95c1b 100644 --- a/process/Timetracking_lib/Timetracking_lib.aod +++ b/process/Timetracking_lib/Timetracking_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Timetracking_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Timetracking_lib/process.js</process> diff --git a/process/Turnover_lib/Turnover_lib.aod b/process/Turnover_lib/Turnover_lib.aod index 28bacd7d8ea..12dbb916887 100644 --- a/process/Turnover_lib/Turnover_lib.aod +++ b/process/Turnover_lib/Turnover_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Turnover_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Turnover_lib/process.js</process> diff --git a/process/UnitTest_lib/UnitTest_lib.aod b/process/UnitTest_lib/UnitTest_lib.aod index a4499316765..25bd7badb37 100644 --- a/process/UnitTest_lib/UnitTest_lib.aod +++ b/process/UnitTest_lib/UnitTest_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>UnitTest_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:CHECK_CIRCLE_O</icon> diff --git a/process/UnitTest_test/UnitTest_test.aod b/process/UnitTest_test/UnitTest_test.aod index 095a395529b..853608a4031 100644 --- a/process/UnitTest_test/UnitTest_test.aod +++ b/process/UnitTest_test/UnitTest_test.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>UnitTest_test</name> <title>[TEST] UnitTest_lib</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod b/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod index 6afa7117eb9..39149b2c28f 100644 --- a/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod +++ b/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>UpdateOffer_workflowService</name> <title>Update offer</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/UserSettings_lib/UserSettings_lib.aod b/process/UserSettings_lib/UserSettings_lib.aod index 41d85657ed0..c1470052e9c 100644 --- a/process/UserSettings_lib/UserSettings_lib.aod +++ b/process/UserSettings_lib/UserSettings_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>UserSettings_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/UserSettings_lib/process.js</process> diff --git a/process/Util_lib/Util_lib.aod b/process/Util_lib/Util_lib.aod index 6a28f6ac135..67bbab87069 100644 --- a/process/Util_lib/Util_lib.aod +++ b/process/Util_lib/Util_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Util_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Util_lib/process.js</process> diff --git a/process/ViewTemplateData_lib/ViewTemplateData_lib.aod b/process/ViewTemplateData_lib/ViewTemplateData_lib.aod index 5bb45484658..c176378fed5 100644 --- a/process/ViewTemplateData_lib/ViewTemplateData_lib.aod +++ b/process/ViewTemplateData_lib/ViewTemplateData_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ViewTemplateData_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ViewTemplateData_lib/process.js</process> diff --git a/process/Workflow_lib/Workflow_lib.aod b/process/Workflow_lib/Workflow_lib.aod index 3045e31bec2..bff9603a4c8 100644 --- a/process/Workflow_lib/Workflow_lib.aod +++ b/process/Workflow_lib/Workflow_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Workflow_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Workflow_lib/process.js</process> diff --git a/process/WsValidation_lib/WsValidation_lib.aod b/process/WsValidation_lib/WsValidation_lib.aod index a896dd2fdc1..fcb5a966b0d 100644 --- a/process/WsValidation_lib/WsValidation_lib.aod +++ b/process/WsValidation_lib/WsValidation_lib.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>WsValidation_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/WsValidation_lib/documentation.adoc</documentation> diff --git a/process/_all_test/_all_test.aod b/process/_all_test/_all_test.aod index 4336a9ddb94..f65a8c72b0b 100644 --- a/process/_all_test/_all_test.aod +++ b/process/_all_test/_all_test.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>_all_test</name> <title>[TEST] .All</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/_test_clientProcess/_test_clientProcess.aod b/process/_test_clientProcess/_test_clientProcess.aod index d003fb54e12..083128043b0 100644 --- a/process/_test_clientProcess/_test_clientProcess.aod +++ b/process/_test_clientProcess/_test_clientProcess.aod @@ -1,12 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>_test_clientProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/_test_clientProcess/documentation.adoc</documentation> <process>%aditoprj%/process/_test_clientProcess/process.js</process> <publishAsWebservice v="true" /> <wsdl>%aditoprj%/process/_test_clientProcess/wsdl.wsdl</wsdl> - <loginTypeId>internal.none</loginTypeId> + <loginTypeId> + <element>internal.none</element> + </loginTypeId> <alias>Data_alias</alias> <variants> <element>EXECUTABLE</element> diff --git a/process/_test_importer/_test_importer.aod b/process/_test_importer/_test_importer.aod index 609067fbad2..86b1e22c42f 100644 --- a/process/_test_importer/_test_importer.aod +++ b/process/_test_importer/_test_importer.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>_test_importer</name> <title>Importer</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/autostartNeon/autostartNeon.aod b/process/autostartNeon/autostartNeon.aod index 5cae2b54c4d..53cfbced037 100644 --- a/process/autostartNeon/autostartNeon.aod +++ b/process/autostartNeon/autostartNeon.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>autostartNeon</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/autostartNeon/process.js</process> diff --git a/process/blobHandler/blobHandler.aod b/process/blobHandler/blobHandler.aod index ea16fe91642..df5da687878 100644 --- a/process/blobHandler/blobHandler.aod +++ b/process/blobHandler/blobHandler.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>blobHandler</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/blobHandler/process.js</process> diff --git a/process/buildSerialLetter_serverProcess/buildSerialLetter_serverProcess.aod b/process/buildSerialLetter_serverProcess/buildSerialLetter_serverProcess.aod index 5474adbf834..c5fa5bae70e 100644 --- a/process/buildSerialLetter_serverProcess/buildSerialLetter_serverProcess.aod +++ b/process/buildSerialLetter_serverProcess/buildSerialLetter_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>buildSerialLetter_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/buildSerialLetter_serverProcess/documentation.adoc</documentation> diff --git a/process/ctiCall/ctiCall.aod b/process/ctiCall/ctiCall.aod index efab080bf75..6614528e038 100644 --- a/process/ctiCall/ctiCall.aod +++ b/process/ctiCall/ctiCall.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ctiCall</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ctiCall/process.js</process> diff --git a/process/ctiServerEvents/ctiServerEvents.aod b/process/ctiServerEvents/ctiServerEvents.aod index 0b6ce1bf162..4f02a720a23 100644 --- a/process/ctiServerEvents/ctiServerEvents.aod +++ b/process/ctiServerEvents/ctiServerEvents.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ctiServerEvents</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ctiServerEvents/process.js</process> diff --git a/process/emailWrite/emailWrite.aod b/process/emailWrite/emailWrite.aod index 60d3efe9f57..a752349818c 100644 --- a/process/emailWrite/emailWrite.aod +++ b/process/emailWrite/emailWrite.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>emailWrite</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/emailWrite/process.js</process> diff --git a/process/ewsSyncCalendarPermissions_serverProcess/ewsSyncCalendarPermissions_serverProcess.aod b/process/ewsSyncCalendarPermissions_serverProcess/ewsSyncCalendarPermissions_serverProcess.aod index 703deab5221..353165e368d 100644 --- a/process/ewsSyncCalendarPermissions_serverProcess/ewsSyncCalendarPermissions_serverProcess.aod +++ b/process/ewsSyncCalendarPermissions_serverProcess/ewsSyncCalendarPermissions_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ewsSyncCalendarPermissions_serverProcess</name> <title>Synchronize calendar permissions from Exchange to ADITO</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/exportLiquibaseContent_serverProcess/exportLiquibaseContent_serverProcess.aod b/process/exportLiquibaseContent_serverProcess/exportLiquibaseContent_serverProcess.aod index 117726612c9..81c78189574 100644 --- a/process/exportLiquibaseContent_serverProcess/exportLiquibaseContent_serverProcess.aod +++ b/process/exportLiquibaseContent_serverProcess/exportLiquibaseContent_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>exportLiquibaseContent_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/exportLiquibaseContent_serverProcess/documentation.adoc</documentation> diff --git a/process/exportLiquibaseSystemalias_serverProcess/exportLiquibaseSystemalias_serverProcess.aod b/process/exportLiquibaseSystemalias_serverProcess/exportLiquibaseSystemalias_serverProcess.aod index 9437d3b3053..2f46ffd47d1 100644 --- a/process/exportLiquibaseSystemalias_serverProcess/exportLiquibaseSystemalias_serverProcess.aod +++ b/process/exportLiquibaseSystemalias_serverProcess/exportLiquibaseSystemalias_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>exportLiquibaseSystemalias_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/exportLiquibaseSystemalias_serverProcess/process.js</process> diff --git a/process/getDocxDocument_serverProcess/getDocxDocument_serverProcess.aod b/process/getDocxDocument_serverProcess/getDocxDocument_serverProcess.aod index cb4430fb0bc..fe54f57b76a 100644 --- a/process/getDocxDocument_serverProcess/getDocxDocument_serverProcess.aod +++ b/process/getDocxDocument_serverProcess/getDocxDocument_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>getDocxDocument_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/getDocxDocument_serverProcess/documentation.adoc</documentation> diff --git a/process/importLead_serverProcess/importLead_serverProcess.aod b/process/importLead_serverProcess/importLead_serverProcess.aod index 4316e412717..a73a9e8246f 100644 --- a/process/importLead_serverProcess/importLead_serverProcess.aod +++ b/process/importLead_serverProcess/importLead_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>importLead_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/importLead_serverProcess/process.js</process> diff --git a/process/mailbridge/mailbridge.aod b/process/mailbridge/mailbridge.aod index 254ff35492e..079dab4650b 100644 --- a/process/mailbridge/mailbridge.aod +++ b/process/mailbridge/mailbridge.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>mailbridge</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/mailbridge/documentation.adoc</documentation> diff --git a/process/mark_cachedrecordcontainers_invalid_serverProcess/mark_cachedrecordcontainers_invalid_serverProcess.aod b/process/mark_cachedrecordcontainers_invalid_serverProcess/mark_cachedrecordcontainers_invalid_serverProcess.aod index cfd92c97942..a6d4fe24cf1 100644 --- a/process/mark_cachedrecordcontainers_invalid_serverProcess/mark_cachedrecordcontainers_invalid_serverProcess.aod +++ b/process/mark_cachedrecordcontainers_invalid_serverProcess/mark_cachedrecordcontainers_invalid_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>mark_cachedrecordcontainers_invalid_serverProcess</name> <title>Mark all cached record containers as invalid</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/mstBot_rest/mstBot_rest.aod b/process/mstBot_rest/mstBot_rest.aod index dd88fc1a4c1..64a88b44527 100644 --- a/process/mstBot_rest/mstBot_rest.aod +++ b/process/mstBot_rest/mstBot_rest.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>mstBot_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/mstBot_rest/process.js</process> @@ -7,7 +7,9 @@ <style>REST</style> <restAcceptedMimeType>application/json</restAcceptedMimeType> <restDeliveredMimeType>application/json</restDeliveredMimeType> - <loginTypeId>internal.none</loginTypeId> + <loginTypeId> + <element>internal.none</element> + </loginTypeId> <publishAsClientWebservice v="true" /> <alias>Data_alias</alias> </process> diff --git a/process/process_audit/process_audit.aod b/process/process_audit/process_audit.aod index 55b53099a0f..fb5dcd8da90 100644 --- a/process/process_audit/process_audit.aod +++ b/process/process_audit/process_audit.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>process_audit</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/process_audit/process.js</process> diff --git a/process/rebuildIndex_serverProcess/rebuildIndex_serverProcess.aod b/process/rebuildIndex_serverProcess/rebuildIndex_serverProcess.aod index 71006318489..106c678f9ad 100644 --- a/process/rebuildIndex_serverProcess/rebuildIndex_serverProcess.aod +++ b/process/rebuildIndex_serverProcess/rebuildIndex_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>rebuildIndex_serverProcess</name> <title>rebuild Index</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/redirect_rest/redirect_rest.aod b/process/redirect_rest/redirect_rest.aod index 3087b0ad4b7..bda233f7990 100644 --- a/process/redirect_rest/redirect_rest.aod +++ b/process/redirect_rest/redirect_rest.aod @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>redirect_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/redirect_rest/process.js</process> <publishAsWebservice v="true" /> <style>REST</style> - <loginTypeId>internal.none</loginTypeId> + <loginTypeId> + <element>internal.none</element> + </loginTypeId> <variants> <element>EXECUTABLE</element> </variants> diff --git a/process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod b/process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod index f8b67e0fdd0..c120e20c39f 100644 --- a/process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod +++ b/process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>removeMSTTeams_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/removeMSTTeams_serverProcess/process.js</process> diff --git a/process/sendBulkMail_serverProcess/sendBulkMail_serverProcess.aod b/process/sendBulkMail_serverProcess/sendBulkMail_serverProcess.aod index 645ed890444..8357bb2adf8 100644 --- a/process/sendBulkMail_serverProcess/sendBulkMail_serverProcess.aod +++ b/process/sendBulkMail_serverProcess/sendBulkMail_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>sendBulkMail_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/sendBulkMail_serverProcess/documentation.adoc</documentation> diff --git a/process/setMissingAddressLocations_serverProcess/setMissingAddressLocations_serverProcess.aod b/process/setMissingAddressLocations_serverProcess/setMissingAddressLocations_serverProcess.aod index 3752f6718de..23c67a18a2d 100644 --- a/process/setMissingAddressLocations_serverProcess/setMissingAddressLocations_serverProcess.aod +++ b/process/setMissingAddressLocations_serverProcess/setMissingAddressLocations_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>setMissingAddressLocations_serverProcess</name> <title>Set missing address locations</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/startWorkflowInstances_serverProcess/startWorkflowInstances_serverProcess.aod b/process/startWorkflowInstances_serverProcess/startWorkflowInstances_serverProcess.aod index 5d5de80f53c..e1cb70568a3 100644 --- a/process/startWorkflowInstances_serverProcess/startWorkflowInstances_serverProcess.aod +++ b/process/startWorkflowInstances_serverProcess/startWorkflowInstances_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>startWorkflowInstances_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/startWorkflowInstances_serverProcess/process.js</process> diff --git a/process/test_iCommRestriction/test_iCommRestriction.aod b/process/test_iCommRestriction/test_iCommRestriction.aod index cc954a462d0..6d894bcf6be 100644 --- a/process/test_iCommRestriction/test_iCommRestriction.aod +++ b/process/test_iCommRestriction/test_iCommRestriction.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>test_iCommRestriction</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/test_iCommRestriction/process.js</process> diff --git a/process/updateActivities_serverProzess/updateActivities_serverProzess.aod b/process/updateActivities_serverProzess/updateActivities_serverProzess.aod index 51684eaceb2..8d14a4c15d8 100644 --- a/process/updateActivities_serverProzess/updateActivities_serverProzess.aod +++ b/process/updateActivities_serverProzess/updateActivities_serverProzess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>updateActivities_serverProzess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/updateActivities_serverProzess/process.js</process> diff --git a/process/updateAllAddressLocations_serverProcess/updateAllAddressLocations_serverProcess.aod b/process/updateAllAddressLocations_serverProcess/updateAllAddressLocations_serverProcess.aod index e0b953cac1c..3b386451841 100644 --- a/process/updateAllAddressLocations_serverProcess/updateAllAddressLocations_serverProcess.aod +++ b/process/updateAllAddressLocations_serverProcess/updateAllAddressLocations_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>updateAllAddressLocations_serverProcess</name> <title>Set all address locations</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod b/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod index 52e9c03b7cf..c3142850326 100644 --- a/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod +++ b/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>updateClassifications_serverProcess</name> <title>Update all Classification entries in the system</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/workflowDeploy_rest/workflowDeploy_rest.aod b/process/workflowDeploy_rest/workflowDeploy_rest.aod index 05c891a9028..ad6fb04bf23 100644 --- a/process/workflowDeploy_rest/workflowDeploy_rest.aod +++ b/process/workflowDeploy_rest/workflowDeploy_rest.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowDeploy_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/workflowDeploy_rest/process.js</process> diff --git a/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod b/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod index d9ed92e0f4d..195a4cd633e 100644 --- a/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod +++ b/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowExtension_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/workflowExtension_serverProcess/process.js</process> diff --git a/process/workflowLinkTracking_rest/workflowLinkTracking_rest.aod b/process/workflowLinkTracking_rest/workflowLinkTracking_rest.aod index 9d33ad87327..c52adefed8b 100644 --- a/process/workflowLinkTracking_rest/workflowLinkTracking_rest.aod +++ b/process/workflowLinkTracking_rest/workflowLinkTracking_rest.aod @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowLinkTracking_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/workflowLinkTracking_rest/process.js</process> <publishAsWebservice v="false" /> <style>REST</style> - <loginTypeId>internal.none</loginTypeId> + <loginTypeId> + <element>internal.none</element> + </loginTypeId> <restrictedRoles /> <alias>Data_alias</alias> <variants> diff --git a/process/workflowPrivileges_rest/workflowPrivileges_rest.aod b/process/workflowPrivileges_rest/workflowPrivileges_rest.aod index 5a75e4758d9..5ea1497835d 100644 --- a/process/workflowPrivileges_rest/workflowPrivileges_rest.aod +++ b/process/workflowPrivileges_rest/workflowPrivileges_rest.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowPrivileges_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/workflowPrivileges_rest/process.js</process> diff --git a/process/workflowRoles_rest/workflowRoles_rest.aod b/process/workflowRoles_rest/workflowRoles_rest.aod index 4f15d52de42..6cfb124a661 100644 --- a/process/workflowRoles_rest/workflowRoles_rest.aod +++ b/process/workflowRoles_rest/workflowRoles_rest.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowRoles_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/workflowRoles_rest/documentation.adoc</documentation> diff --git a/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod b/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod index 7922e7f73b3..24c524d5bbe 100644 --- a/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod +++ b/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowServiceTaskParams_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/workflowServiceTaskParams_rest/documentation.adoc</documentation> diff --git a/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod b/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod index ea3dfbea15a..189d4377abe 100644 --- a/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod +++ b/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowServiceTasks_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/workflowServiceTasks_rest/documentation.adoc</documentation> diff --git a/process/workflowSignal_rest/workflowSignal_rest.aod b/process/workflowSignal_rest/workflowSignal_rest.aod index 3006dce1189..db28e29d522 100644 --- a/process/workflowSignal_rest/workflowSignal_rest.aod +++ b/process/workflowSignal_rest/workflowSignal_rest.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowSignal_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/workflowSignal_rest/process.js</process> diff --git a/process/workflowUsers_rest/workflowUsers_rest.aod b/process/workflowUsers_rest/workflowUsers_rest.aod index 6669992f8a6..ff6c8aa88c1 100644 --- a/process/workflowUsers_rest/workflowUsers_rest.aod +++ b/process/workflowUsers_rest/workflowUsers_rest.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowUsers_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/workflowUsers_rest/documentation.adoc</documentation> -- GitLab