From f644b3ba971cdf22c6dea1d714458ae539522521 Mon Sep 17 00:00:00 2001 From: Maurice Wachsmuth <m.wachsmuth@adito.de> Date: Fri, 20 Aug 2021 14:16:04 +0000 Subject: [PATCH] [Projekt: xRM-ContactManagement][TicketNr.: 1070092][Gruppenaufgaben] Revert Changes of Team Internal --- .../Data_alias/basic/2021.1.2/changelog.xml | 2 +- .../2021.1.3/Grouptask/add_ColumnTask.xml | 11 + .../basic/2021.1.3/Grouptask/changelog.xml | 6 + .../Grouptask/create_TaskAttendees.xml | 27 + .../Data_alias/basic/2021.1.3/changelog.xml | 2 +- .../Data_alias/basic/_demoData/changelog.xml | 1 + .../basic/_demoData/generatedData/task.xml | 639 +++++++++++------- .../_demoData/generatedData/taskattendees.xml | 186 +++++ aliasDefinition/Data_alias/Data_alias.aod | 198 +++++- .../entityfields/newtask/onActionProcess.js | 2 +- entity/Advertising_entity/documentation.adoc | 6 +- entity/Contract_entity/Contract_entity.aod | 1 + entity/Object_entity/Object_entity.aod | 2 +- .../TaskAttendees_entity.aod | 163 +++++ .../contact_id/displayValueProcess.js | 8 + .../entityfields/date_edit/valueProcess.js | 9 + .../entityfields/date_new/valueProcess.js | 9 + .../department_id/displayValueProcess.js | 5 + .../department_id/onValidation.js | 13 + .../children/parentid_param/valueProcess.js | 4 + .../departmentsonly_param/valueProcess.js | 2 + .../isdepartment/displayValueProcess.js | 17 + .../entityfields/isdepartment/valueProcess.js | 11 + .../entityfields/rowid/displayValueProcess.js | 16 + .../rowid/linkedContextProcess.js | 8 + .../entityfields/rowid/valueProcess.js | 16 + .../entityfields/task_id/valueProcess.js | 8 + .../entityfields/user_edit/valueProcess.js | 6 + .../entityfields/user_new/valueProcess.js | 5 + .../recordcontainers/db/conditionProcess.js | 25 + .../recordcontainers/db/orderClauseProcess.js | 4 + .../contact_id.displayvalue/expression.js | 5 + entity/Task_entity/Task_entity.aod | 362 +++++++--- entity/Task_entity/afterSave.js | 192 ++++++ .../children/rowid_param/valueProcess.js | 4 + .../onlyactives_param/valueProcess.js | 2 + .../onlyactives_param/valueProcess.js | 2 + .../createsingletasks/stateProcess.js | 6 + .../entityfields/date_edit/valueProcess.js | 6 + .../entityfields/date_new/valueProcess.js | 6 + .../children/parentid_param/valueProcess.js | 4 + .../entityfields/description/valueProcess.js | 9 + .../editor_contact_id/displayValueProcess.js | 8 - .../editor_contact_id/valueProcess.js | 7 - .../cancelobservation/onActionProcess.js | 0 .../cancelobservation/stateProcess.js | 0 .../cancelobservation/titleProcess.js | 0 .../children/observe/onActionProcess.js | 0 .../children/observe/stateProcess.js | 0 .../children/observe/titleProcess.js | 0 .../children/setcomplete/onActionProcess.js | 12 + .../children/setcomplete/stateProcess.js | 42 ++ .../entityfields/icon_color/valueProcess.js | 23 +- .../entityfields/newoffer/onActionProcess.js | 30 +- .../newsupportticket/onActionProcess.js | 12 +- .../openadminview/onActionProcess.js | 5 +- .../entityfields/priority/valueProcess.js | 2 +- .../priority_icon/valueProcess.js | 25 +- .../protectionlevel/valueProcess.js | 7 - .../displayValueProcess.js | 1 + .../requestor_contact_id/stateProcess.js | 6 + .../setcompletepreview/onActionProcess.js | 12 + .../setcompletepreview/stateProcess.js | 45 ++ .../entityfields/subject/valueProcess.js | 9 + .../subject_details/valueProcess.js | 5 - .../personsonly_param/valueProcess.js | 2 + .../children/rowid_param/valueProcess.js | 3 + .../taskattendeesmulti/onValidation.js | 25 + .../departmentsonly_param/valueProcess.js | 2 + .../children/rowid_param/valueProcess.js | 3 + .../taskdepartmentsmulti/onValidation.js | 23 + .../entityfields/user_edit/valueProcess.js | 6 + .../entityfields/user_new/valueProcess.js | 5 + entity/Task_entity/grantDeleteProcess.js | 16 +- entity/Task_entity/grantUpdateProcess.js | 36 + entity/Task_entity/iconIdProcess.js | 2 +- entity/Task_entity/initFilterProcess.js | 37 +- .../recordcontainers/db/conditionProcess.js | 62 +- .../attendees/filterConditionProcess.js | 40 ++ .../attendees/filterValuesProcess.js | 21 + .../department/filterConditionProcess.js | 43 ++ .../department/filterValuesProcess.js | 14 + .../recordcontainers/db/fromClauseProcess.js | 13 + .../recordcontainers/db/onDBDelete.js | 1 + .../expression.js | 48 ++ .../connections.value/expression.js | 12 + .../expression.js | 5 - .../maturitydate_day.value/expression.js | 2 + .../expression.js | 4 +- .../startdate_day.value/expression.js | 2 + .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 61 ++ neonContext/Task/Task.aod | 13 + neonContext/TaskAttendees/TaskAttendees.aod | 29 + neonDashboard/Home/Home.aod | 2 +- .../OrganisationTaskAppointment_view.aod | 2 +- .../PersonTaskAppointment_view.aod | 2 +- .../TaskAttendeesFilterDepartment_view.aod | 23 + .../TaskAttendeesFitlerContacts_view.aod | 22 + .../TaskAttendeesMultiContactEdit_view.aod | 25 + .../TaskAttendeesMultiDepartmentEdit_view.aod | 28 + .../TaskAttendeesPreviewList_view.aod | 27 + .../TaskDescriptionMain_view.aod | 27 + neonView/TaskDrawer_view/TaskDrawer_view.aod | 18 + neonView/TaskEdit_view/TaskEdit_view.aod | 25 +- neonView/TaskFilter_view/TaskFilter_view.aod | 59 +- .../TaskMainAttendees_view.aod | 23 + neonView/TaskMain_view/TaskMain_view.aod | 29 +- .../TaskPreview_view/TaskPreview_view.aod | 16 +- .../_____PREFERENCES_PROJECT.aod | 1 + process/ActivityTask_lib/process.js | 193 +++++- process/Organisation_lib/process.js | 15 +- process/migrateTask/documentation.adoc | 4 + process/migrateTask/migrateTask.aod | 11 + process/migrateTask/process.js | 39 ++ report/Organisation_report/Aufgaben.jrxml | 14 +- report/Organisation_report/reportData.jrxml | 6 +- 116 files changed, 2862 insertions(+), 540 deletions(-) create mode 100644 .liquibase/Data_alias/basic/2021.1.3/Grouptask/add_ColumnTask.xml create mode 100644 .liquibase/Data_alias/basic/2021.1.3/Grouptask/changelog.xml create mode 100644 .liquibase/Data_alias/basic/2021.1.3/Grouptask/create_TaskAttendees.xml create mode 100644 .liquibase/Data_alias/basic/_demoData/generatedData/taskattendees.xml create mode 100644 entity/TaskAttendees_entity/TaskAttendees_entity.aod create mode 100644 entity/TaskAttendees_entity/entityfields/contact_id/displayValueProcess.js create mode 100644 entity/TaskAttendees_entity/entityfields/date_edit/valueProcess.js create mode 100644 entity/TaskAttendees_entity/entityfields/date_new/valueProcess.js create mode 100644 entity/TaskAttendees_entity/entityfields/department_id/displayValueProcess.js create mode 100644 entity/TaskAttendees_entity/entityfields/department_id/onValidation.js create mode 100644 entity/TaskAttendees_entity/entityfields/departments/children/parentid_param/valueProcess.js create mode 100644 entity/TaskAttendees_entity/entityfields/departmentsonly_param/valueProcess.js create mode 100644 entity/TaskAttendees_entity/entityfields/isdepartment/displayValueProcess.js create mode 100644 entity/TaskAttendees_entity/entityfields/isdepartment/valueProcess.js create mode 100644 entity/TaskAttendees_entity/entityfields/rowid/displayValueProcess.js create mode 100644 entity/TaskAttendees_entity/entityfields/rowid/linkedContextProcess.js create mode 100644 entity/TaskAttendees_entity/entityfields/rowid/valueProcess.js create mode 100644 entity/TaskAttendees_entity/entityfields/task_id/valueProcess.js create mode 100644 entity/TaskAttendees_entity/entityfields/user_edit/valueProcess.js create mode 100644 entity/TaskAttendees_entity/entityfields/user_new/valueProcess.js create mode 100644 entity/TaskAttendees_entity/recordcontainers/db/conditionProcess.js create mode 100644 entity/TaskAttendees_entity/recordcontainers/db/orderClauseProcess.js create mode 100644 entity/TaskAttendees_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js create mode 100644 entity/Task_entity/afterSave.js create mode 100644 entity/Task_entity/entityfields/alltaskattendees/children/rowid_param/valueProcess.js create mode 100644 entity/Task_entity/entityfields/contacteditors/children/onlyactives_param/valueProcess.js create mode 100644 entity/Task_entity/entityfields/contactrequestors/children/onlyactives_param/valueProcess.js create mode 100644 entity/Task_entity/entityfields/createsingletasks/stateProcess.js create mode 100644 entity/Task_entity/entityfields/date_edit/valueProcess.js create mode 100644 entity/Task_entity/entityfields/date_new/valueProcess.js create mode 100644 entity/Task_entity/entityfields/departments/children/parentid_param/valueProcess.js create mode 100644 entity/Task_entity/entityfields/description/valueProcess.js delete mode 100644 entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js delete mode 100644 entity/Task_entity/entityfields/editor_contact_id/valueProcess.js rename entity/Task_entity/entityfields/{observeactiongroup => filteractiongroup}/children/cancelobservation/onActionProcess.js (100%) rename entity/Task_entity/entityfields/{observeactiongroup => filteractiongroup}/children/cancelobservation/stateProcess.js (100%) rename entity/Task_entity/entityfields/{observeactiongroup => filteractiongroup}/children/cancelobservation/titleProcess.js (100%) rename entity/Task_entity/entityfields/{observeactiongroup => filteractiongroup}/children/observe/onActionProcess.js (100%) rename entity/Task_entity/entityfields/{observeactiongroup => filteractiongroup}/children/observe/stateProcess.js (100%) rename entity/Task_entity/entityfields/{observeactiongroup => filteractiongroup}/children/observe/titleProcess.js (100%) create mode 100644 entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/onActionProcess.js create mode 100644 entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/stateProcess.js delete mode 100644 entity/Task_entity/entityfields/protectionlevel/valueProcess.js create mode 100644 entity/Task_entity/entityfields/requestor_contact_id/stateProcess.js create mode 100644 entity/Task_entity/entityfields/setcompletepreview/onActionProcess.js create mode 100644 entity/Task_entity/entityfields/setcompletepreview/stateProcess.js create mode 100644 entity/Task_entity/entityfields/subject/valueProcess.js delete mode 100644 entity/Task_entity/entityfields/subject_details/valueProcess.js create mode 100644 entity/Task_entity/entityfields/taskattendeesmulti/children/personsonly_param/valueProcess.js create mode 100644 entity/Task_entity/entityfields/taskattendeesmulti/children/rowid_param/valueProcess.js create mode 100644 entity/Task_entity/entityfields/taskattendeesmulti/onValidation.js create mode 100644 entity/Task_entity/entityfields/taskdepartmentsmulti/children/departmentsonly_param/valueProcess.js create mode 100644 entity/Task_entity/entityfields/taskdepartmentsmulti/children/rowid_param/valueProcess.js create mode 100644 entity/Task_entity/entityfields/taskdepartmentsmulti/onValidation.js create mode 100644 entity/Task_entity/entityfields/user_edit/valueProcess.js create mode 100644 entity/Task_entity/entityfields/user_new/valueProcess.js create mode 100644 entity/Task_entity/grantUpdateProcess.js create mode 100644 entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterConditionProcess.js create mode 100644 entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterValuesProcess.js create mode 100644 entity/Task_entity/recordcontainers/db/filterextensions/department/filterConditionProcess.js create mode 100644 entity/Task_entity/recordcontainers/db/filterextensions/department/filterValuesProcess.js create mode 100644 entity/Task_entity/recordcontainers/db/fromClauseProcess.js create mode 100644 entity/Task_entity/recordcontainers/db/recordfieldmappings/allattendeesfilter.displayvalue/expression.js create mode 100644 entity/Task_entity/recordcontainers/db/recordfieldmappings/connections.value/expression.js delete mode 100644 entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js create mode 100644 entity/Task_entity/recordcontainers/db/recordfieldmappings/maturitydate_day.value/expression.js create mode 100644 entity/Task_entity/recordcontainers/db/recordfieldmappings/startdate_day.value/expression.js create mode 100644 neonContext/TaskAttendees/TaskAttendees.aod create mode 100644 neonView/TaskAttendeesFilterDepartment_view/TaskAttendeesFilterDepartment_view.aod create mode 100644 neonView/TaskAttendeesFitlerContacts_view/TaskAttendeesFitlerContacts_view.aod create mode 100644 neonView/TaskAttendeesMultiContactEdit_view/TaskAttendeesMultiContactEdit_view.aod create mode 100644 neonView/TaskAttendeesMultiDepartmentEdit_view/TaskAttendeesMultiDepartmentEdit_view.aod create mode 100644 neonView/TaskAttendeesPreviewList_view/TaskAttendeesPreviewList_view.aod create mode 100644 neonView/TaskDescriptionMain_view/TaskDescriptionMain_view.aod create mode 100644 neonView/TaskDrawer_view/TaskDrawer_view.aod create mode 100644 neonView/TaskMainAttendees_view/TaskMainAttendees_view.aod create mode 100644 process/migrateTask/documentation.adoc create mode 100644 process/migrateTask/migrateTask.aod create mode 100644 process/migrateTask/process.js diff --git a/.liquibase/Data_alias/basic/2021.1.2/changelog.xml b/.liquibase/Data_alias/basic/2021.1.2/changelog.xml index 931906c684..f436574bf0 100644 --- a/.liquibase/Data_alias/basic/2021.1.2/changelog.xml +++ b/.liquibase/Data_alias/basic/2021.1.2/changelog.xml @@ -8,4 +8,4 @@ <include relativeToChangelogFile="true" file="Registration_Webservice/changelog.xml"/> <include relativeToChangelogFile="true" file="VisitPlan/changelog.xml"/> <include relativeToChangelogFile="true" file="Duplicate/changelog.xml"/> -</databaseChangeLog> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.1.3/Grouptask/add_ColumnTask.xml b/.liquibase/Data_alias/basic/2021.1.3/Grouptask/add_ColumnTask.xml new file mode 100644 index 0000000000..b2ae7c95ba --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.1.3/Grouptask/add_ColumnTask.xml @@ -0,0 +1,11 @@ +<?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-4.1.xsd"> + <changeSet author="m.wachsmuth" id="7a2f96e5-3aa5-4468-95b1-41ec722ed7a4"> + <addColumn tableName="TASK"> + <column name="DATE_EDIT" type="DATETIME"/> + <column name="DATE_NEW" type="DATETIME"/> + <column name="USER_NEW" type="VARCHAR(30)"/> + <column name="USER_EDIT" type="VARCHAR(30)"/> + </addColumn> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.1.3/Grouptask/changelog.xml b/.liquibase/Data_alias/basic/2021.1.3/Grouptask/changelog.xml new file mode 100644 index 0000000000..2de952fad0 --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.1.3/Grouptask/changelog.xml @@ -0,0 +1,6 @@ +<?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="add_ColumnTask.xml"/> + <include relativeToChangelogFile="true" file="create_TaskAttendees.xml"/> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.1.3/Grouptask/create_TaskAttendees.xml b/.liquibase/Data_alias/basic/2021.1.3/Grouptask/create_TaskAttendees.xml new file mode 100644 index 0000000000..6786e76ee6 --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.1.3/Grouptask/create_TaskAttendees.xml @@ -0,0 +1,27 @@ +<?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-4.1.xsd"> + <changeSet author="m.wachsmuth" id="781b015e-b53d-4d32-bec7-d68af0ac3d42"> + <createTable tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" type="CHAR(36)"> + <constraints nullable="false" primaryKey="true" primaryKeyName="PK_TASKATTENDEESID"/> + </column> + <column name="CONTACT_ID" type="CHAR(36)"/> + <column name="TASK_ID" type="CHAR(36)"/> + <column name="DEPARTMENT_ID" type="CHAR(36)"/> + <column name="DATE_EDIT" type="DATETIME"/> + <column name="DATE_NEW" type="DATETIME"/> + <column name="USER_NEW" type="VARCHAR(30)"/> + <column name="USER_EDIT" type="VARCHAR(30)"/> + </createTable> + </changeSet> + <changeSet author="m.wachsmuth" id="cca1cd75-42e5-4397-b091-77ae5d774638"> + <createIndex indexName="IDX_CONTACT_ID" tableName="TASKATTENDEES"> + <column name="CONTACT_ID"/> + </createIndex> + </changeSet> + <changeSet author="m.wachsmuth" id="c9926883-a66b-41bb-a209-bbda0f51aaee"> + <createIndex indexName="IDX_DEPARTMENT_ID" tableName="TASKATTENDEES"> + <column name="DEPARTMENT_ID"/> + </createIndex> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.1.3/changelog.xml b/.liquibase/Data_alias/basic/2021.1.3/changelog.xml index 147d250c82..ef8ebadc89 100644 --- a/.liquibase/Data_alias/basic/2021.1.3/changelog.xml +++ b/.liquibase/Data_alias/basic/2021.1.3/changelog.xml @@ -2,8 +2,8 @@ <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="defaultWeblinks/changelog.xml"/> <include relativeToChangelogFile="true" file="Checklist/changelog.xml"/> <include relativeToChangelogFile="true" file="alter_dataTypesToDateTime.xml"/> + <include relativeToChangelogFile="true" file="Grouptask/changelog.xml"/> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/_demoData/changelog.xml b/.liquibase/Data_alias/basic/_demoData/changelog.xml index 1a3228fca3..5bec7adbff 100644 --- a/.liquibase/Data_alias/basic/_demoData/changelog.xml +++ b/.liquibase/Data_alias/basic/_demoData/changelog.xml @@ -101,6 +101,7 @@ <include file="generatedData/standard_workflow.xml" relativeToChangelogFile="true"/> <include file="generatedData/stock.xml" relativeToChangelogFile="true"/> <include file="generatedData/task.xml" relativeToChangelogFile="true"/> + <include file="generatedData/taskattendees.xml" relativeToChangelogFile="true"/> <include file="generatedData/tasklink.xml" relativeToChangelogFile="true"/> <include file="generatedData/ticket.xml" relativeToChangelogFile="true"/> <include file="generatedData/timetracking.xml" relativeToChangelogFile="true"/> diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/task.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/task.xml index 62f44c80a9..0d3eb5b59f 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/task.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/task.xml @@ -1,275 +1,406 @@ -<?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="autogenerated" id="bdca8df5-b7ff-40ac-abf3-dc654b0957ca"> - <delete tableName="task"/> - <insert tableName="task"> - <column name="SUBJECT" value="Firma: Prüfen ob es sich um eine Dublette handelt"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> - <column name="DESCRIPTION" value="Prüfen, ob die beiden Firmen zusammen gehören und ggf beide Firmen zusammenlegen bzw vermerken, dass es sich um keine Dublette handelt"/> - <column name="MATURITY_DATE" valueDate="2021-07-06T12:10:00"/> - <column name="PRIORITY" value="TASKPRIOLOW"/> - <column name="EDITOR_CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG0"/> - <column name="TASKID" value="0066cd29-a246-4a8c-8c11-c507538d997b"/> - <column name="STATUS" value="NEW"/> - <column name="START_DATE" valueDate="2021-06-29T12:10:00"/> +<?xml version="1.0" encoding="UTF-8"?> +<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-4.1.xsd"> + <changeSet author="s.pongratz" id="70aff731-ee61-4d81-a072-bb02ac6d2582"> + <delete tableName="TASK"/> + <insert tableName="TASK"> + <column name="TASKID" value="0066cd29-a246-4a8c-8c11-c507538d997b" /> + <column name="SUBJECT" value="Firma: Prüfen ob es sich um eine Dublette handelt" /> + <column name="STATUS" value="NEW" /> + <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> + <column name="EDITOR_CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9" /> + <column name="START_DATE" valueDate="2021-06-29T12:10:00" /> + <column name="MATURITY_DATE" valueDate="2021-07-06T12:10:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" value="Pr&uuml;fen,&nbsp;ob&nbsp;die&nbsp;beiden&nbsp;Firmen&nbsp;zusammen&nbsp;geh&ouml;ren&nbsp;und&nbsp;ggf&nbsp;beide&nbsp;Firmen&nbsp;zusammenlegen&nbsp;bzw&nbsp;vermerken,&nbsp;dass&nbsp;es&nbsp;sich&nbsp;um&nbsp;keine&nbsp;Dublette&nbsp;handelt" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG0" /> + <column name="PRIORITY" value="TASKPRIOLOW" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Autoreifen wechseln"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="DESCRIPTION" value="Winterreifen draufmachen lassen"/> - <column name="MATURITY_DATE" valueDate="2020-10-01T06:05:00"/> - <column name="PRIORITY" value="TASKPRIONONE"/> - <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG0"/> - <column name="TASKID" value="0d126a7e-4308-4857-9245-5a40f3e2b36e"/> - <column name="STATUS" value="NEW"/> - <column name="START_DATE" valueDate="2020-05-20T06:05:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="0d126a7e-4308-4857-9245-5a40f3e2b36e" /> + <column name="SUBJECT" value="Autoreifen wechseln" /> + <column name="STATUS" value="NEW" /> + <column name="REQUESTOR_CONTACT_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d" /> + <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="START_DATE" valueDate="2020-05-20T06:05:00" /> + <column name="MATURITY_DATE" valueDate="2020-10-01T06:05:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" value="Winterreifen&nbsp;draufmachen&nbsp;lassen" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG0" /> + <column name="PRIORITY" value="TASKPRIONONE" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Vorbereitung Präsentation"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/> - <column name="MATURITY_DATE" valueDate="2020-10-27T02:46:00"/> - <column name="PRIORITY" value="TASKPRIONONE"/> - <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG50"/> - <column name="TASKID" value="2e50d2cd-9429-433c-8f6e-2e31a9e7908e"/> - <column name="STATUS" value="IN-PROGRESS"/> - <column name="START_DATE" valueDate="2020-10-27T02:46:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="2e50d2cd-9429-433c-8f6e-2e31a9e7908e" /> + <column name="SUBJECT" value="Vorbereitung Präsentation" /> + <column name="STATUS" value="IN-PROGRESS" /> + <column name="REQUESTOR_CONTACT_ID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7" /> + <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="START_DATE" valueDate="2020-10-27T02:46:00" /> + <column name="MATURITY_DATE" valueDate="2020-10-27T02:46:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG50" /> + <column name="PRIORITY" value="TASKPRIONONE" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Kampagne zu Akquise planen"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> - <column name="DESCRIPTION" value="Kampagnenplanung für dieses Jahr beenden."/> - <column name="MATURITY_DATE" valueDate="2020-10-30T11:25:00"/> - <column name="PRIORITY" value="TASKPRIOHIGH"/> - <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG0"/> - <column name="TASKID" value="380c1ae1-c7d4-49b7-87e1-4fe2e16c4c52"/> - <column name="STATUS" value="NEW"/> - <column name="START_DATE" valueDate="2020-10-26T11:25:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="380c1ae1-c7d4-49b7-87e1-4fe2e16c4c52" /> + <column name="SUBJECT" value="Kampagne zu Akquise planen" /> + <column name="STATUS" value="NEW" /> + <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> + <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="START_DATE" valueDate="2020-10-26T11:25:00" /> + <column name="MATURITY_DATE" valueDate="2020-10-30T11:25:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" value="Kampagnenplanung&nbsp;f&uuml;r&nbsp;dieses&nbsp;Jahr&nbsp;beenden." /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG0" /> + <column name="PRIORITY" value="TASKPRIOHIGH" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Beschädigte Ware"/> - <column name="KIND" value="TICKET"/> - <column name="REQUESTOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="DESCRIPTION" value="Verpackung der Ware hat bei Zustellung äußerliche Beschädigungen aufgewiesen. An den gleichen Stellen ist die Ware ebenfalls beshädigt."/> - <column name="MATURITY_DATE" valueDate="2019-11-22T10:59:00"/> - <column name="PRIORITY" value="TASKPRIOLOW"/> - <column name="EDITOR_CONTACT_ID" value="57d524f6-ad66-4550-be83-fee6e31b7a52"/> - <column name="PROGRESS" value="TASKPROG0"/> - <column name="TASKID" value="46164eac-62d1-4dbb-a252-93ac49429855"/> - <column name="STATUS" value="ASSIGNED"/> - <column name="START_DATE" valueDate="2019-11-15T10:59:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="46164eac-62d1-4dbb-a252-93ac49429855" /> + <column name="SUBJECT" value="Beschädigte Ware" /> + <column name="STATUS" value="ASSIGNED" /> + <column name="REQUESTOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="EDITOR_CONTACT_ID" value="57d524f6-ad66-4550-be83-fee6e31b7a52" /> + <column name="START_DATE" valueDate="2019-11-15T10:59:00" /> + <column name="MATURITY_DATE" valueDate="2019-11-22T10:59:00" /> + <column name="KIND" value="TICKET" /> + <column name="DESCRIPTION" value="Verpackung der Ware hat bei Zustellung äußerliche Beschädigungen aufgewiesen. An den gleichen Stellen ist die Ware ebenfalls beshädigt." /> + <column name="PROTECTIONLEVEL" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG0" /> + <column name="PRIORITY" value="TASKPRIOLOW" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Beleg zum Angebot verschicken"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> - <column name="MATURITY_DATE" valueDate="2020-06-29T06:03:00"/> - <column name="PRIORITY" value="TASKPRIOLOW"/> - <column name="EDITOR_CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG0"/> - <column name="TASKID" value="51cfa90a-93be-4d26-97ae-05f050631543"/> - <column name="STATUS" value="NEW"/> - <column name="START_DATE" valueDate="2020-06-29T06:03:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="51cfa90a-93be-4d26-97ae-05f050631543" /> + <column name="SUBJECT" value="Beleg zum Angebot verschicken" /> + <column name="STATUS" value="NEW" /> + <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> + <column name="EDITOR_CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9" /> + <column name="START_DATE" valueDate="2020-06-29T06:03:00" /> + <column name="MATURITY_DATE" valueDate="2020-06-29T06:03:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG0" /> + <column name="PRIORITY" value="TASKPRIOLOW" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Lead nachfassen"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="DESCRIPTION" value="Kunde ist sehr interessiert an unseren Produkten, weitere Produktabstimmung intern."/> - <column name="MATURITY_DATE" valueDate="2021-05-31T12:48:00"/> - <column name="PRIORITY" value="TASKPRIOLOW"/> - <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG50"/> - <column name="TASKID" value="67afcc4b-f71b-4da6-a8b3-e7947c411a2a"/> - <column name="STATUS" value="NEW"/> - <column name="START_DATE" valueDate="2020-09-30T12:48:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="67afcc4b-f71b-4da6-a8b3-e7947c411a2a" /> + <column name="SUBJECT" value="Lead nachfassen" /> + <column name="STATUS" value="NEW" /> + <column name="REQUESTOR_CONTACT_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d" /> + <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="START_DATE" valueDate="2020-09-30T12:48:00" /> + <column name="MATURITY_DATE" valueDate="2021-05-31T12:48:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" value="Kunde&nbsp;ist&nbsp;sehr&nbsp;interessiert&nbsp;an&nbsp;unseren&nbsp;Produkten,&nbsp;weitere&nbsp;Produktabstimmung&nbsp;intern." /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG50" /> + <column name="PRIORITY" value="TASKPRIOLOW" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Nachfassen bei Kunden"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="DESCRIPTION" value="Kunde wollte ein Angebot, hierzu die offenen Posten klären"/> - <column name="MATURITY_DATE" valueDate="2020-12-22T10:36:00"/> - <column name="PRIORITY" value="TASKPRIOMEDIUM"/> - <column name="EDITOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG0"/> - <column name="TASKID" value="783f38b6-db71-42b5-9117-848553905c93"/> - <column name="STATUS" value="IN-PROGRESS"/> - <column name="START_DATE" valueDate="2020-12-22T10:36:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="783f38b6-db71-42b5-9117-848553905c93" /> + <column name="SUBJECT" value="Nachfassen bei Kunden" /> + <column name="STATUS" value="IN-PROGRESS" /> + <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="EDITOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> + <column name="START_DATE" valueDate="2020-12-22T10:36:00" /> + <column name="MATURITY_DATE" valueDate="2020-12-22T10:36:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" value="Kunde&nbsp;wollte&nbsp;ein&nbsp;Angebot,&nbsp;hierzu&nbsp;die&nbsp;offenen&nbsp;Posten&nbsp;kl&auml;ren" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG0" /> + <column name="PRIORITY" value="TASKPRIOMEDIUM" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Forecast anpassen"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="DESCRIPTION" value="Zu offenen Opportunities den Forecast anpassen"/> - <column name="MATURITY_DATE" valueDate="2020-10-30T10:34:00"/> - <column name="PRIORITY" value="TASKPRIOLOW"/> - <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG0"/> - <column name="TASKID" value="7d404da2-78bf-427b-8abb-4c7e953220ca"/> - <column name="STATUS" value="NEW"/> - <column name="START_DATE" valueDate="2020-10-21T09:34:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="7d404da2-78bf-427b-8abb-4c7e953220ca" /> + <column name="SUBJECT" value="Forecast anpassen" /> + <column name="STATUS" value="NEW" /> + <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="START_DATE" valueDate="2020-10-21T09:34:00" /> + <column name="MATURITY_DATE" valueDate="2020-10-30T10:34:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" value="Zu&nbsp;offenen&nbsp;Opportunities&nbsp;den&nbsp;Forecast&nbsp;anpassen" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG0" /> + <column name="PRIORITY" value="TASKPRIOLOW" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Mit der Vertriebsleitung abstimmen, wie viel Prozent Rabatt gegeben werden kann."/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="DESCRIPTION" value="Preisabstimmung."/> - <column name="MATURITY_DATE" valueDate="2021-06-28T09:08:00"/> - <column name="PRIORITY" value="TASKPRIOMEDIUM"/> - <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG75"/> - <column name="TASKID" value="81a4c8e7-4429-41e1-a534-f1be21e56b5e"/> - <column name="STATUS" value="WAITING"/> - <column name="START_DATE" valueDate="2020-10-21T09:08:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="81a4c8e7-4429-41e1-a534-f1be21e56b5e" /> + <column name="SUBJECT" value="Mit der Vertriebsleitung abstimmen, wie viel Prozent Rabatt gegeben werden kann." /> + <column name="STATUS" value="WAITING" /> + <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="START_DATE" valueDate="2020-10-21T09:08:00" /> + <column name="MATURITY_DATE" valueDate="2021-06-28T09:08:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" value="Preisabstimmung." /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG75" /> + <column name="PRIORITY" value="TASKPRIOMEDIUM" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Test"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="MATURITY_DATE" valueDate="2020-05-29T11:50:00"/> - <column name="PRIORITY" value="TASKPRIOLOW"/> - <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG0"/> - <column name="TASKID" value="81a4d411-f317-4080-84b6-55ed91d26d34"/> - <column name="STATUS" value="NEW"/> - <column name="START_DATE" valueDate="2020-05-21T11:50:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="81a4d411-f317-4080-84b6-55ed91d26d34" /> + <column name="SUBJECT" value="Test" /> + <column name="STATUS" value="NEW" /> + <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="START_DATE" valueDate="2020-05-21T11:50:00" /> + <column name="MATURITY_DATE" valueDate="2020-05-29T11:50:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG0" /> + <column name="PRIORITY" value="TASKPRIOLOW" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Präsentation vor Ort vorbereiten"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> - <column name="MATURITY_DATE" valueDate="2020-05-28T09:21:00"/> - <column name="PRIORITY" value="TASKPRIOHIGH"/> - <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG75"/> - <column name="TASKID" value="96ec8b48-9fac-4216-bc98-a8323f0592f9"/> - <column name="STATUS" value="NEW"/> - <column name="START_DATE" valueDate="2020-05-21T09:21:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="96ec8b48-9fac-4216-bc98-a8323f0592f9" /> + <column name="SUBJECT" value="Präsentation vor Ort vorbereiten" /> + <column name="STATUS" value="NEW" /> + <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> + <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="START_DATE" valueDate="2020-05-21T09:21:00" /> + <column name="MATURITY_DATE" valueDate="2020-05-28T09:21:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG75" /> + <column name="PRIORITY" value="TASKPRIOHIGH" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Projektplanung fehlerhaft"/> - <column name="KIND" value="TICKET"/> - <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="DESCRIPTION" value="Die Funktionalitäten des Tools erfüllen nicht die geforderten Funktionalitäten. Im Detail: Die Zeiterfassung kann nicht zu Tickets erfasst werden. "/> - <column name="MATURITY_DATE" valueDate="2019-09-12T01:43:00"/> - <column name="PRIORITY" value="TASKPRIOLOW"/> - <column name="EDITOR_CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9"/> - <column name="PROGRESS" value="TASKPROG0"/> - <column name="TASKID" value="998d95e6-3d3b-448b-a634-5516c0e392a5"/> - <column name="STATUS" value="ASSIGNED"/> - <column name="START_DATE" valueDate="2019-09-05T01:43:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="998d95e6-3d3b-448b-a634-5516c0e392a5" /> + <column name="SUBJECT" value="Projektplanung fehlerhaft" /> + <column name="STATUS" value="ASSIGNED" /> + <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="EDITOR_CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9" /> + <column name="START_DATE" valueDate="2019-09-05T01:43:00" /> + <column name="MATURITY_DATE" valueDate="2019-09-12T01:43:00" /> + <column name="KIND" value="TICKET" /> + <column name="DESCRIPTION" value="Die Funktionalitäten des Tools erfüllen nicht die geforderten Funktionalitäten.
Im Detail: Die Zeiterfassung kann nicht zu Tickets erfasst werden.
" /> + <column name="PROTECTIONLEVEL" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG0" /> + <column name="PRIORITY" value="TASKPRIOLOW" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Rückruf Herr. Feldner"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="MATURITY_DATE" valueDate="2019-12-02T10:00:00"/> - <column name="PRIORITY" value="TASKPRIOHIGH"/> - <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG50"/> - <column name="TASKID" value="cb00abc2-afc7-4cde-9e44-baf02248edd2"/> - <column name="STATUS" value="ENDED"/> - <column name="START_DATE" valueDate="2019-11-26T01:00:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="cb00abc2-afc7-4cde-9e44-baf02248edd2" /> + <column name="SUBJECT" value="Rückruf Herr. Feldner" /> + <column name="STATUS" value="ENDED" /> + <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="START_DATE" valueDate="2019-11-26T01:00:00" /> + <column name="MATURITY_DATE" valueDate="2019-12-02T10:00:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG50" /> + <column name="PRIORITY" value="TASKPRIOHIGH" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Produkt Präsentation vorbereiten und mit Lisa Sommer abstimmen"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="MATURITY_DATE" valueDate="2020-06-19T06:03:00"/> - <column name="PRIORITY" value="TASKPRIOLOW"/> - <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG25"/> - <column name="TASKID" value="cf99cace-a6e1-46a6-ad83-c634e373f320"/> - <column name="STATUS" value="NEW"/> - <column name="START_DATE" valueDate="2020-03-09T06:03:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="cf99cace-a6e1-46a6-ad83-c634e373f320" /> + <column name="SUBJECT" value="Produkt Präsentation vorbereiten und mit Lisa Sommer abstimmen" /> + <column name="STATUS" value="NEW" /> + <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="START_DATE" valueDate="2020-03-09T06:03:00" /> + <column name="MATURITY_DATE" valueDate="2020-06-19T06:03:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG25" /> + <column name="PRIORITY" value="TASKPRIOLOW" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Besuch vorbereiten"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="MATURITY_DATE" valueDate="2020-10-28T10:38:00"/> - <column name="PRIORITY" value="TASKPRIOMEDIUM"/> - <column name="EDITOR_CONTACT_ID" value="4cc98357-25f3-462b-898c-440f9faf4b97"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG0"/> - <column name="TASKID" value="d6217dc5-5585-4919-a545-9cdc64a1ca58"/> - <column name="STATUS" value="NEW"/> - <column name="START_DATE" valueDate="2020-10-14T09:38:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="d6217dc5-5585-4919-a545-9cdc64a1ca58" /> + <column name="SUBJECT" value="Besuch vorbereiten" /> + <column name="STATUS" value="NEW" /> + <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="EDITOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> + <column name="START_DATE" valueDate="2020-10-14T09:38:00" /> + <column name="MATURITY_DATE" valueDate="2020-10-28T10:38:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG0" /> + <column name="PRIORITY" value="TASKPRIOMEDIUM" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Event im Hause"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> - <column name="DESCRIPTION" value="Strategieevent 2-Tage"/> - <column name="MATURITY_DATE" valueDate="2020-11-11T06:04:00"/> - <column name="PRIORITY" value="TASKPRIOHIGH"/> - <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG75"/> - <column name="TASKID" value="d8f35764-2c56-45be-93c7-f1e0695e2417"/> - <column name="STATUS" value="NEW"/> - <column name="START_DATE" valueDate="2020-05-20T06:04:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="d8f35764-2c56-45be-93c7-f1e0695e2417" /> + <column name="SUBJECT" value="Event im Hause" /> + <column name="STATUS" value="NEW" /> + <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> + <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="START_DATE" valueDate="2020-05-20T06:04:00" /> + <column name="MATURITY_DATE" valueDate="2020-11-11T06:04:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" value="Strategieevent&nbsp;2-Tage" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG75" /> + <column name="PRIORITY" value="TASKPRIOHIGH" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="effiziente Wertschöpfungsketten bündeln und anlaysieren"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="DESCRIPTION" value="Es sollen die effizienten Wertschöpfungsketten der Prozessdefinitionseinheiten im primären Schritt gebündelt und sekundär analysiert und verifiziert werden."/> - <column name="MATURITY_DATE" valueDate="2021-01-20T03:00:00"/> - <column name="PRIORITY" value="TASKPRIOHIGH"/> - <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG0"/> - <column name="TASKID" value="e9cb198d-c420-4192-9c29-b23682457d8e"/> - <column name="STATUS" value="IN-PROGRESS"/> - <column name="START_DATE" valueDate="2021-01-20T03:00:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="e9cb198d-c420-4192-9c29-b23682457d8e" /> + <column name="SUBJECT" value="effiziente Wertschöpfungsketten bündeln und anlaysieren" /> + <column name="STATUS" value="IN-PROGRESS" /> + <column name="REQUESTOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="START_DATE" valueDate="2021-01-20T03:00:00" /> + <column name="MATURITY_DATE" valueDate="2021-01-20T03:00:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" value="Es&nbsp;sollen&nbsp;die&nbsp;effizienten&nbsp;Wertsch&ouml;pfungsketten&nbsp;der&nbsp;Prozessdefinitionseinheiten&nbsp;im&nbsp;prim&auml;ren&nbsp;Schritt&nbsp;geb&uuml;ndelt&nbsp;und&nbsp;sekund&auml;r&nbsp;analysiert&nbsp;und&nbsp;verifiziert&nbsp;werden." /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG0" /> + <column name="PRIORITY" value="TASKPRIOHIGH" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Controlling Termin Vorbereiten"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="MATURITY_DATE" valueDate="2020-12-02T09:59:00"/> - <column name="PRIORITY" value="TASKPRIOLOW"/> - <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG0"/> - <column name="TASKID" value="eadbfbc2-3664-49c8-bda1-b6f8e15e5f21"/> - <column name="STATUS" value="NEW"/> - <column name="START_DATE" valueDate="2020-11-23T09:59:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="eadbfbc2-3664-49c8-bda1-b6f8e15e5f21" /> + <column name="SUBJECT" value="Controlling Termin Vorbereiten" /> + <column name="STATUS" value="NEW" /> + <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="START_DATE" valueDate="2020-11-23T09:59:00" /> + <column name="MATURITY_DATE" valueDate="2020-12-02T09:59:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG0" /> + <column name="PRIORITY" value="TASKPRIOLOW" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> - <insert tableName="task"> - <column name="SUBJECT" value="Skyscraper VP für nächste Schritte"/> - <column name="KIND" value="TASK"/> - <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> - <column name="MATURITY_DATE" valueDate="2020-11-12T02:44:00"/> - <column name="PRIORITY" value="TASKPRIOMEDIUM"/> - <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="PROTECTIONLEVEL" valueNumeric="0"/> - <column name="PROGRESS" value="TASKPROG50"/> - <column name="TASKID" value="f8fcdce1-da60-46d6-9ce3-3866e093730d"/> - <column name="STATUS" value="IN-PROGRESS"/> - <column name="START_DATE" valueDate="2020-10-21T01:44:00"/> + <insert tableName="TASK"> + <column name="TASKID" value="f8fcdce1-da60-46d6-9ce3-3866e093730d" /> + <column name="SUBJECT" value="Skyscraper VP für nächste Schritte" /> + <column name="STATUS" value="IN-PROGRESS" /> + <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> + <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="START_DATE" valueDate="2020-10-21T01:44:00" /> + <column name="MATURITY_DATE" valueDate="2020-11-12T02:44:00" /> + <column name="KIND" value="TASK" /> + <column name="DESCRIPTION" /> + <column name="PROTECTIONLEVEL" valueNumeric="0" /> + <column name="PARENT_CONTEXT" /> + <column name="PARENT_ID" /> + <column name="PROGRESS" value="TASKPROG50" /> + <column name="PRIORITY" value="TASKPRIOMEDIUM" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" /> + <column name="USER_NEW" /> + <column name="USER_EDIT" /> </insert> </changeSet> -</databaseChangeLog> \ No newline at end of file +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/taskattendees.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/taskattendees.xml new file mode 100644 index 0000000000..a79f3d86cc --- /dev/null +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/taskattendees.xml @@ -0,0 +1,186 @@ +<?xml version="1.0" encoding="UTF-8"?> +<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-4.1.xsd"> + <changeSet author="s.pongratz" id="3e27f9be-66ff-4d51-8ecf-76f04abb49ed"> + <delete tableName="TASKATTENDEES"/> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="2aa5b8db-53fa-4ba7-93fb-2524afa94006" /> + <column name="CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9" /> + <column name="TASK_ID" value="0066cd29-a246-4a8c-8c11-c507538d997b" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="f3032256-a2a8-48b3-ad18-783ea18b6f02" /> + <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="TASK_ID" value="0d126a7e-4308-4857-9245-5a40f3e2b36e" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="5801ac8b-eed3-48b0-b29d-eccec729b29e" /> + <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="TASK_ID" value="2e50d2cd-9429-433c-8f6e-2e31a9e7908e" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="b86a3835-c406-4206-891e-d3cfa8a6157a" /> + <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="TASK_ID" value="380c1ae1-c7d4-49b7-87e1-4fe2e16c4c52" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="e48dd6ef-7ee0-4bd4-8e4a-f3b9ddcf3e6a" /> + <column name="CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9" /> + <column name="TASK_ID" value="51cfa90a-93be-4d26-97ae-05f050631543" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="10a0a39a-72d1-4ff0-a47a-da9a356dd9ea" /> + <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="TASK_ID" value="67afcc4b-f71b-4da6-a8b3-e7947c411a2a" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="e4788d62-6273-464b-b9cb-0f44580803a7" /> + <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> + <column name="TASK_ID" value="783f38b6-db71-42b5-9117-848553905c93" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="3d2c9654-5a6b-4683-8095-590a1b58575a" /> + <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="TASK_ID" value="7d404da2-78bf-427b-8abb-4c7e953220ca" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="8808a4f1-e4c3-4c0c-a7c1-c4c2e07e1162" /> + <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="TASK_ID" value="81a4c8e7-4429-41e1-a534-f1be21e56b5e" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="61501abc-cbe6-46b4-a668-073e4db0377c" /> + <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="TASK_ID" value="81a4d411-f317-4080-84b6-55ed91d26d34" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="7a76482d-28b7-49bb-80d7-520b10bafd11" /> + <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="TASK_ID" value="96ec8b48-9fac-4216-bc98-a8323f0592f9" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="652b0326-f33b-4f2e-9dae-883ddc2eec7c" /> + <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="TASK_ID" value="cb00abc2-afc7-4cde-9e44-baf02248edd2" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="fb926b3b-6bc9-4dff-b14e-33281b9472c2" /> + <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="TASK_ID" value="cf99cace-a6e1-46a6-ad83-c634e373f320" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="0f929021-df89-4dec-b393-58b72222b346" /> + <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> + <column name="TASK_ID" value="d6217dc5-5585-4919-a545-9cdc64a1ca58" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="0096a10b-324a-4a2a-b72e-237e8490bffc" /> + <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="TASK_ID" value="d8f35764-2c56-45be-93c7-f1e0695e2417" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="5b226e0c-97db-4a06-87c5-38d2bf49fa14" /> + <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + <column name="TASK_ID" value="e9cb198d-c420-4192-9c29-b23682457d8e" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="8565d5d0-40f7-46a6-8d0e-1cb272f658c4" /> + <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="TASK_ID" value="eadbfbc2-3664-49c8-bda1-b6f8e15e5f21" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + <insert tableName="TASKATTENDEES"> + <column name="TASKATTENDEESID" value="61c4a865-ce1f-437e-80ca-cdc4c15082c8" /> + <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + <column name="TASK_ID" value="f8fcdce1-da60-46d6-9ce3-3866e093730d" /> + <column name="DEPARTMENT_ID" /> + <column name="DATE_EDIT" /> + <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" /> + <column name="USER_NEW" value="Admin" /> + <column name="USER_EDIT" /> + </insert> + </changeSet> +</databaseChangeLog> diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 152dc64c46..58c01635d5 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -5417,8 +5417,8 @@ <dbName></dbName> <primaryKey v="false" /> <columnType v="93" /> - <size v="19" /> - <scale v="0" /> + <size v="29" /> + <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -5510,7 +5510,7 @@ <name>DESCRIPTION</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="-1" /> + <columnType v="2005" /> <size v="2147483647" /> <scale v="0" /> <notNull v="false" /> @@ -5612,8 +5612,8 @@ <dbName></dbName> <primaryKey v="false" /> <columnType v="93" /> - <size v="19" /> - <scale v="0" /> + <size v="29" /> + <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -5722,6 +5722,62 @@ </customStringProperty> </customProperties> </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>USER_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="30" /> + <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="30" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -21852,6 +21908,138 @@ </entityFieldDb> </entityFields> </entityDb> + <entityDb> + <name>TASKATTENDEES</name> + <dbName></dbName> + <idColumn>TASKATTENDEESID</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>DEPARTMENT_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> + <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>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> + <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="30" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>TASKATTENDEESID</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>TASK_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_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="30" /> + <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/newtask/onActionProcess.js b/entity/Activity_entity/entityfields/newtask/onActionProcess.js index 47fc462291..37bc32f556 100644 --- a/entity/Activity_entity/entityfields/newtask/onActionProcess.js +++ b/entity/Activity_entity/entityfields/newtask/onActionProcess.js @@ -2,4 +2,4 @@ import("system.vars"); import("ActivityTask_lib"); import("Context_lib"); -TaskUtils.createNewTask(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.ACTIVITYID")); \ No newline at end of file +TaskUtils.createNewTask(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.ACTIVITYID"), {"Description_param" : vars.get("$field.INFO"), "Subject_param": vars.get("$field.SUBJECT")}); \ No newline at end of file diff --git a/entity/Advertising_entity/documentation.adoc b/entity/Advertising_entity/documentation.adoc index a6942a22dd..864dc4d429 100644 --- a/entity/Advertising_entity/documentation.adoc +++ b/entity/Advertising_entity/documentation.adoc @@ -1,4 +1,4 @@ -==Advertising_entity +== Advertising_entity An Entity for handling the process of Advertising Shipment Advertising has a 1 : n relationship to AdvertisingItems @@ -10,7 +10,7 @@ Currency : the currency in which the items should be processed Row_ID : the linked data set currently activity Date_new : creation date of the advertising shipment -=Where to start += Where to start In the current version (2021.1.0) Advertisings are linked to an Activity (this can change in the future) While creating a new Activity the user has the possibility to say 'has Advertisings' If opt in, the needed data will be prepared in the background. @@ -61,7 +61,7 @@ you can have up to 3 workflow instances. In order to group the sending by handov Depending on which handover type there are different actions: -personal -The advertising was given directly in person to a contact -> a follow up task will be generated after a defined amount of time currently 5M +The advertising was given directly in person to a contact - > a follow up task will be generated after a defined amount of time currently 5M (for testing you can change the time in the workflow) -post /mail The item will be send via mail so a usertask is generated which provides the needed information -> after that a follow up task will be generated diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod index bf30590d50..4b39e0dc67 100644 --- a/entity/Contract_entity/Contract_entity.aod +++ b/entity/Contract_entity/Contract_entity.aod @@ -355,6 +355,7 @@ <entityParameter> <name>PresetLinks_param</name> <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> + <expose v="true" /> </entityParameter> </children> </entityConsumer> diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod index 6aba8ccb6b..3aa1526759 100644 --- a/entity/Object_entity/Object_entity.aod +++ b/entity/Object_entity/Object_entity.aod @@ -210,7 +210,7 @@ <dependency> <name>dependency</name> <entityName>Task_entity</entityName> - <fieldName>#PROVIDER</fieldName> + <fieldName>Tasks</fieldName> </dependency> </entityConsumer> <entityProvider> diff --git a/entity/TaskAttendees_entity/TaskAttendees_entity.aod b/entity/TaskAttendees_entity/TaskAttendees_entity.aod new file mode 100644 index 0000000000..f90bbf0355 --- /dev/null +++ b/entity/TaskAttendees_entity/TaskAttendees_entity.aod @@ -0,0 +1,163 @@ +<?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.21" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.21"> + <name>TaskAttendees_entity</name> + <title>Attendee</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <titlePlural>Attendees</titlePlural> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityField> + <name>CONTACT_ID</name> + <title>Attendee</title> + <consumer>ContactEmployee</consumer> + <linkedContext>Person</linkedContext> + <displayValueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>TASKATTENDEESID</name> + </entityField> + <entityField> + <name>DATE_NEW</name> + <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/date_new/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>DATE_EDIT</name> + <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/date_edit/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>USER_NEW</name> + <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/user_new/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>USER_EDIT</name> + <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/user_edit/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>TASK_ID</name> + <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/task_id/valueProcess.js</valueProcess> + </entityField> + <entityProvider> + <name>TaskAttendee</name> + </entityProvider> + <entityField> + <name>grouptask</name> + <title>Grouptask</title> + <contentType>BOOLEAN</contentType> + </entityField> + <entityConsumer> + <name>ContactEmployee</name> + <dependency> + <name>dependency</name> + <entityName>Employee_entity</entityName> + <fieldName>Employees</fieldName> + </dependency> + </entityConsumer> + <entityParameter> + <name>RowId_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>DEPARTMENT_ID</name> + <title>Department</title> + <consumer>Departments</consumer> + <displayValueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/department_id/displayValueProcess.js</displayValueProcess> + <onValidation>%aditoprj%/entity/TaskAttendees_entity/entityfields/department_id/onValidation.js</onValidation> + </entityField> + <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/TaskAttendees_entity/entityfields/departments/children/parentid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityParameter> + <name>DepartmentsOnly_param</name> + <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/departmentsonly_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + <entityField> + <name>isDepartment</name> + <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/isdepartment/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/isdepartment/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>rowID</name> + <linkedContextProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/rowid/linkedContextProcess.js</linkedContextProcess> + <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/rowid/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/rowid/displayValueProcess.js</displayValueProcess> + </entityField> + <entityParameter> + <name>PersonsOnly_param</name> + <expose v="true" /> + </entityParameter> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <conditionProcess>%aditoprj%/entity/TaskAttendees_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <orderClauseProcess>%aditoprj%/entity/TaskAttendees_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> + <alias>Data_alias</alias> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>TASKATTENDEESID.value</name> + <recordfield>TASKATTENDEES.TASKATTENDEESID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ID.value</name> + <recordfield>TASKATTENDEES.CONTACT_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>TASK_ID.value</name> + <recordfield>TASKATTENDEES.TASK_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>TASKATTENDEES.DATE_NEW</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DEPARTMENT_ID.value</name> + <recordfield>TASKATTENDEES.DEPARTMENT_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_EDIT.value</name> + <recordfield>TASKATTENDEES.DATE_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_NEW.value</name> + <recordfield>TASKATTENDEES.USER_NEW</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_EDIT.value</name> + <recordfield>TASKATTENDEES.USER_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/TaskAttendees_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + </recordFieldMappings> + <linkInformation> + <linkInformation> + <name>9b7516a8-c092-418e-adba-547f85bcdc8c</name> + <tableName>TASKATTENDEES</tableName> + <primaryKey>TASKATTENDEESID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/TaskAttendees_entity/entityfields/contact_id/displayValueProcess.js b/entity/TaskAttendees_entity/entityfields/contact_id/displayValueProcess.js new file mode 100644 index 0000000000..a286f7265d --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/contact_id/displayValueProcess.js @@ -0,0 +1,8 @@ +import("Contact_lib"); +import("system.result"); +import("system.vars"); + + +var title = ContactUtils.getTitleByContactId(vars.get("$this.value")); + +result.string(title); \ No newline at end of file diff --git a/entity/TaskAttendees_entity/entityfields/date_edit/valueProcess.js b/entity/TaskAttendees_entity/entityfields/date_edit/valueProcess.js new file mode 100644 index 0000000000..de962129f9 --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/date_edit/valueProcess.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if (vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) +{ + result.string(vars.get("$sys.date")); +} + \ No newline at end of file diff --git a/entity/TaskAttendees_entity/entityfields/date_new/valueProcess.js b/entity/TaskAttendees_entity/entityfields/date_new/valueProcess.js new file mode 100644 index 0000000000..f4409f0d98 --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/date_new/valueProcess.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if (vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + result.string(vars.get("$sys.date")); +} + \ No newline at end of file diff --git a/entity/TaskAttendees_entity/entityfields/department_id/displayValueProcess.js b/entity/TaskAttendees_entity/entityfields/department_id/displayValueProcess.js new file mode 100644 index 0000000000..e819f2e4f9 --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/department_id/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("Attribute_lib"); + +result.string(AttributeUtil.getFullAttributeName(vars.get("$field.DEPARTMENT_ID"), undefined, true, 1)); diff --git a/entity/TaskAttendees_entity/entityfields/department_id/onValidation.js b/entity/TaskAttendees_entity/entityfields/department_id/onValidation.js new file mode 100644 index 0000000000..14756eaee0 --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/department_id/onValidation.js @@ -0,0 +1,13 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("system.tools"); + +if (vars.get("$this.value")) +{ + var departmentUser = tools.getUsersByAttribute("department", [vars.get("this.value")], tools.PROFILE_DEFAULT); + if(departmentUser.length == 0) + { + result.string(translate.text("There are no valid employees in the department.")); + } +} diff --git a/entity/TaskAttendees_entity/entityfields/departments/children/parentid_param/valueProcess.js b/entity/TaskAttendees_entity/entityfields/departments/children/parentid_param/valueProcess.js new file mode 100644 index 0000000000..246beece1e --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/departments/children/parentid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("AttributeRegistry_basic"); +import("system.result"); + +result.string($AttributeRegistry.departments()); \ No newline at end of file diff --git a/entity/TaskAttendees_entity/entityfields/departmentsonly_param/valueProcess.js b/entity/TaskAttendees_entity/entityfields/departmentsonly_param/valueProcess.js new file mode 100644 index 0000000000..850bb65bdd --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/departmentsonly_param/valueProcess.js @@ -0,0 +1,2 @@ +import("system.result"); +result.string(false); \ No newline at end of file diff --git a/entity/TaskAttendees_entity/entityfields/isdepartment/displayValueProcess.js b/entity/TaskAttendees_entity/entityfields/isdepartment/displayValueProcess.js new file mode 100644 index 0000000000..2569108c2a --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/isdepartment/displayValueProcess.js @@ -0,0 +1,17 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("Util_lib"); + +let title; + +if (!Utils.toBoolean(vars.get("$this.value"))) +{ + title = translate.text("Department"); +} +else +{ + title = translate.text("Contact"); +} + +result.string(title); \ No newline at end of file diff --git a/entity/TaskAttendees_entity/entityfields/isdepartment/valueProcess.js b/entity/TaskAttendees_entity/entityfields/isdepartment/valueProcess.js new file mode 100644 index 0000000000..ce61bc8720 --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/isdepartment/valueProcess.js @@ -0,0 +1,11 @@ +import("system.result"); +import("system.vars"); + +if(!vars.get("$field.DEPARTMENT_ID")) +{ + result.string("1"); +} +else if(!vars.get("$field.CONTACT_ID")) +{ + result.string("0"); +} diff --git a/entity/TaskAttendees_entity/entityfields/rowid/displayValueProcess.js b/entity/TaskAttendees_entity/entityfields/rowid/displayValueProcess.js new file mode 100644 index 0000000000..f2643b0b06 --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/rowid/displayValueProcess.js @@ -0,0 +1,16 @@ +import("system.result"); +import("system.vars"); +import("Util_lib"); + +let displayValue; + +if (!Utils.toBoolean(vars.get("$field.isDepartment"))) +{ + displayValue = vars.get("$field.DEPARTMENT_ID.displayValue"); +} +else +{ + displayValue = vars.get("$field.CONTACT_ID.displayValue"); +} + +result.string(displayValue); \ No newline at end of file diff --git a/entity/TaskAttendees_entity/entityfields/rowid/linkedContextProcess.js b/entity/TaskAttendees_entity/entityfields/rowid/linkedContextProcess.js new file mode 100644 index 0000000000..cf7e835352 --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/rowid/linkedContextProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("Util_lib"); + +if (Utils.toBoolean(vars.get("$field.isDepartment"))) +{ + result.string("Person"); +} \ No newline at end of file diff --git a/entity/TaskAttendees_entity/entityfields/rowid/valueProcess.js b/entity/TaskAttendees_entity/entityfields/rowid/valueProcess.js new file mode 100644 index 0000000000..ff915290e6 --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/rowid/valueProcess.js @@ -0,0 +1,16 @@ +import("system.result"); +import("system.vars"); +import("Util_lib"); + +let id; + +if (!Utils.toBoolean(vars.get("$field.isDepartment"))) +{ + id = vars.get("$field.DEPARTMENT_ID"); +} +else +{ + id = vars.get("$field.CONTACT_ID"); +} + +result.string(id); \ No newline at end of file diff --git a/entity/TaskAttendees_entity/entityfields/task_id/valueProcess.js b/entity/TaskAttendees_entity/entityfields/task_id/valueProcess.js new file mode 100644 index 0000000000..7d697e8b81 --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/task_id/valueProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.vars"); + +if (vars.getString("$param.RowId_param") && !vars.get("$this.value")) +{ + result.string(vars.get("$param.RowId_param")); +} + diff --git a/entity/TaskAttendees_entity/entityfields/user_edit/valueProcess.js b/entity/TaskAttendees_entity/entityfields/user_edit/valueProcess.js new file mode 100644 index 0000000000..4f1799fbde --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/user_edit/valueProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if (vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) + result.string(vars.get("$sys.user")); \ No newline at end of file diff --git a/entity/TaskAttendees_entity/entityfields/user_new/valueProcess.js b/entity/TaskAttendees_entity/entityfields/user_new/valueProcess.js new file mode 100644 index 0000000000..2003bc1a40 --- /dev/null +++ b/entity/TaskAttendees_entity/entityfields/user_new/valueProcess.js @@ -0,0 +1,5 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(vars.get("$sys.user")) \ No newline at end of file diff --git a/entity/TaskAttendees_entity/recordcontainers/db/conditionProcess.js b/entity/TaskAttendees_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 0000000000..7649e4c646 --- /dev/null +++ b/entity/TaskAttendees_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,25 @@ +import("system.result"); +import("system.vars"); +import("Sql_lib"); +import("Util_lib") + +var cond = newWhere() + +if (vars.get("$param.RowId_param")) +{ + cond.and("TASKATTENDEES.TASK_ID", vars.get("$param.RowId_param")); + + let departmentOnly = Utils.toBoolean(vars.get("$param.DepartmentsOnly_param")); + let personOnly = Utils.toBoolean(vars.get("$param.PersonsOnly_param")); + + if(departmentOnly && !personOnly) + { + cond.and("TASKATTENDEES.DEPARTMENT_ID is not null") + .and("TASKATTENDEES.DEPARTMENT_ID != ''"); + } + else if (!departmentOnly && personOnly) + { + cond.and("TASKATTENDEES.DEPARTMENT_ID is null"); + } +} +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/TaskAttendees_entity/recordcontainers/db/orderClauseProcess.js b/entity/TaskAttendees_entity/recordcontainers/db/orderClauseProcess.js new file mode 100644 index 0000000000..217237a000 --- /dev/null +++ b/entity/TaskAttendees_entity/recordcontainers/db/orderClauseProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.db"); + +result.object({"TASKATTENDEES.DEPARTMENT_ID": db.ASCENDING}); \ No newline at end of file diff --git a/entity/TaskAttendees_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js b/entity/TaskAttendees_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js new file mode 100644 index 0000000000..b4ccdc34f5 --- /dev/null +++ b/entity/TaskAttendees_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js @@ -0,0 +1,5 @@ +import("Contact_lib"); +import("system.result"); +import("Person_lib"); + +result.string(ContactUtils.getResolvingDisplaySubSql("TASKATTENDEES.CONTACT_ID", false)) \ No newline at end of file diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod index 66ca5947da..5ed8cdb6fa 100644 --- a/entity/Task_entity/Task_entity.aod +++ b/entity/Task_entity/Task_entity.aod @@ -4,38 +4,24 @@ <title>Task</title> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Task_entity/documentation.adoc</documentation> + <grantUpdate v="false" /> + <grantUpdateProcess>%aditoprj%/entity/Task_entity/grantUpdateProcess.js</grantUpdateProcess> <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> + <afterSave>%aditoprj%/entity/Task_entity/afterSave.js</afterSave> <initFilterProcess>%aditoprj%/entity/Task_entity/initFilterProcess.js</initFilterProcess> <iconId>VAADIN:TASKS</iconId> <iconIdProcess>%aditoprj%/entity/Task_entity/iconIdProcess.js</iconIdProcess> <titlePlural>Tasks</titlePlural> <recordContainer>db</recordContainer> <entityFields> - <entityActionGroup> - <name>observeActionGroup</name> - <children> - <entityActionField> - <name>observe</name> - <title>Observe</title> - <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess> - <isObjectAction v="true" /> - <iconId>VAADIN:EYE</iconId> - <stateProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess> - <titleProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess> - </entityActionField> - <entityActionField> - <name>cancelObservation</name> - <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess> - <iconId>VAADIN:EYE_SLASH</iconId> - <stateProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess> - <titleProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess> - </entityActionField> - </children> - </entityActionGroup> + <entityField> + <name>USER_NEW</name> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/user_new/valueProcess.js</valueProcess> + </entityField> <entityProvider> <name>#PROVIDER</name> <recordContainer>db</recordContainer> @@ -44,6 +30,7 @@ <name>SUBJECT</name> <title>subject</title> <mandatory v="true" /> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/subject/valueProcess.js</valueProcess> </entityField> <entityField> <name>STATUS</name> @@ -70,19 +57,10 @@ <groupable v="true" /> <linkedContext>Person</linkedContext> <mandatory v="true" /> + <stateProcess>%aditoprj%/entity/Task_entity/entityfields/requestor_contact_id/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/requestor_contact_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js</displayValueProcess> </entityField> - <entityField> - <name>EDITOR_CONTACT_ID</name> - <title>{$TASK_EDITOR}</title> - <consumer>ContactEditors</consumer> - <groupable v="true" /> - <linkedContext>Person</linkedContext> - <mandatory v="true" /> - <valueProcess>%aditoprj%/entity/Task_entity/entityfields/editor_contact_id/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js</displayValueProcess> - </entityField> <entityField> <name>START_DATE</name> <title>Begin</title> @@ -106,14 +84,14 @@ <entityField> <name>DESCRIPTION</name> <title>description</title> - <contentType>LONG_TEXT</contentType> + <contentType>HTML</contentType> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/description/valueProcess.js</valueProcess> </entityField> <entityField> <name>PROTECTIONLEVEL</name> <contentType>BOOLEAN</contentType> <contentTypeProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/contentTypeProcess.js</contentTypeProcess> <titleProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/titleProcess.js</titleProcess> - <valueProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/valueProcess.js</valueProcess> </entityField> <entityField> <name>TASKID</name> @@ -128,6 +106,12 @@ <entityName>Employee_entity</entityName> <fieldName>Employees</fieldName> </dependency> + <children> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/contacteditors/children/onlyactives_param/valueProcess.js</valueProcess> + </entityParameter> + </children> </entityConsumer> <entityConsumer> <name>ContactRequestors</name> @@ -136,6 +120,12 @@ <entityName>Employee_entity</entityName> <fieldName>Employees</fieldName> </dependency> + <children> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/contactrequestors/children/onlyactives_param/valueProcess.js</valueProcess> + </entityParameter> + </children> </entityConsumer> <entityConsumer> <name>MainDocuments</name> @@ -167,7 +157,7 @@ <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/keywordstates/children/containername_param/valueProcess.js</valueProcess> - <expose v="false" /> + <expose v="true" /> </entityParameter> <entityParameter> <name>WhitelistIds_param</name> @@ -215,21 +205,6 @@ <expose v="true" /> <description>PARAMETER</description> </entityParameter> - <entityActionField> - <name>newActivity</name> - <title>New activity</title> - <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newactivity/onActionProcess.js</onActionProcess> - <iconId>VAADIN:HOURGLASS_END</iconId> - <tooltip>New activity</tooltip> - <tooltipProcess>%aditoprj%/entity/Task_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess> - </entityActionField> - <entityActionField> - <name>newTask</name> - <title>New task</title> - <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newtask/onActionProcess.js</onActionProcess> - <actionOrder v="1" /> - <iconId>VAADIN:TASKS</iconId> - </entityActionField> <entityParameter> <name>RowId_param</name> <expose v="true" /> @@ -253,15 +228,14 @@ <valueProcess>%aditoprj%/entity/Task_entity/entityfields/keywordpriorities/children/containername_param/valueProcess.js</valueProcess> <expose v="false" /> </entityParameter> + <entityParameter> + <name>ExcludedKeyIdsSubquery_param</name> + </entityParameter> + <entityParameter> + <name>OnlyActives_param</name> + </entityParameter> </children> </entityConsumer> - <entityActionField> - <name>newOffer</name> - <title>New offer</title> - <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newoffer/onActionProcess.js</onActionProcess> - <actionOrder v="0" /> - <iconId>VAADIN:CART</iconId> - </entityActionField> <entityField> <name>PROGRESS</name> <title>Progress</title> @@ -331,12 +305,6 @@ <documentation>%aditoprj%/entity/Task_entity/entityfields/presetlinks_param/documentation.adoc</documentation> <description>PARAMETER</description> </entityParameter> - <entityField> - <name>SUBJECT_DETAILS</name> - <title>subject</title> - <linkedContext>Task</linkedContext> - <valueProcess>%aditoprj%/entity/Task_entity/entityfields/subject_details/valueProcess.js</valueProcess> - </entityField> <entityParameter> <name>FilterOnlyOwnTask_param</name> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/filteronlyowntask_param/valueProcess.js</valueProcess> @@ -387,19 +355,6 @@ <name>TYPE</name> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/type/valueProcess.js</valueProcess> </entityField> - <entityActionField> - <name>newSupportticket</name> - <title>New Support ticket</title> - <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newsupportticket/onActionProcess.js</onActionProcess> - <iconId>VAADIN:CHAT</iconId> - </entityActionField> - <entityActionField> - <name>openAdminView</name> - <title>Open admin view</title> - <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/openadminview/onActionProcess.js</onActionProcess> - <iconId>VAADIN:CURLY_BRACKETS</iconId> - <stateProcess>%aditoprj%/entity/Task_entity/entityfields/openadminview/stateProcess.js</stateProcess> - </entityActionField> <entityField> <name>COUNT</name> <title>Count</title> @@ -450,11 +405,206 @@ </entityField> <entityField> <name>DATE_NEW</name> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/date_new/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>TaskAttendeesMulti</name> + <state>EDITABLE</state> + <onValidation>%aditoprj%/entity/Task_entity/entityfields/taskattendeesmulti/onValidation.js</onValidation> + <dependency> + <name>dependency</name> + <entityName>TaskAttendees_entity</entityName> + <fieldName>TaskAttendee</fieldName> + </dependency> + <children> + <entityParameter> + <name>RowId_param</name> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/taskattendeesmulti/children/rowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>PersonsOnly_param</name> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/taskattendeesmulti/children/personsonly_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <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/Task_entity/entityfields/departments/children/parentid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>TaskDepartmentsMulti</name> + <onValidation>%aditoprj%/entity/Task_entity/entityfields/taskdepartmentsmulti/onValidation.js</onValidation> + <dependency> + <name>dependency</name> + <entityName>TaskAttendees_entity</entityName> + <fieldName>TaskAttendee</fieldName> + </dependency> + <children> + <entityParameter> + <name>RowId_param</name> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/taskdepartmentsmulti/children/rowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>DepartmentsOnly_param</name> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/taskdepartmentsmulti/children/departmentsonly_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityParameter> + <name>dashletFilter_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>startDate_Day</name> + <title>Begin</title> + <contentType>DATE</contentType> + <resolution>DAY</resolution> + <outputFormat>dd.MM.yyyy</outputFormat> + <inputFormat>dd.MM.yyyy</inputFormat> + <groupable v="true" /> + </entityField> + <entityField> + <name>maturityDate_Day</name> + <title>Maturity</title> + <contentType>DATE</contentType> + <resolution>DAY</resolution> + <outputFormat>dd.MM.yyyy</outputFormat> + <inputFormat>dd.MM.yyyy</inputFormat> + <groupable v="true" /> + </entityField> + <entityField> + <name>connections</name> + <title>Verknüpfungen</title> + </entityField> + <entityField> + <name>DATE_EDIT</name> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/date_edit/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>USER_EDIT</name> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/user_edit/valueProcess.js</valueProcess> </entityField> + <entityField> + <name>allAttendeesFilter</name> + <title>{$TASK_EDITOR}</title> + </entityField> + <entityField> + <name>createSingleTasks</name> + <title>Einzelaufgaben erstellen</title> + <contentType>BOOLEAN</contentType> + <stateProcess>%aditoprj%/entity/Task_entity/entityfields/createsingletasks/stateProcess.js</stateProcess> + </entityField> + <entityParameter> + <name>Description_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>Subject_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>AllTaskAttendees</name> + <dependency> + <name>dependency</name> + <entityName>TaskAttendees_entity</entityName> + <fieldName>TaskAttendee</fieldName> + </dependency> + <children> + <entityParameter> + <name>RowId_param</name> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/alltaskattendees/children/rowid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityActionGroup> + <name>filterActionGroup</name> + <children> + <entityActionField> + <name>setComplete</name> + <title>Erledigt setzen</title> + <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <selectionType>MULTI</selectionType> + <iconId>NEON:MQL</iconId> + <state>DISABLED</state> + <stateProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>observe</name> + <title>Observe</title> + <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/observe/onActionProcess.js</onActionProcess> + <isObjectAction v="true" /> + <iconId>VAADIN:EYE</iconId> + <stateProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/observe/stateProcess.js</stateProcess> + <titleProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/observe/titleProcess.js</titleProcess> + </entityActionField> + <entityActionField> + <name>cancelObservation</name> + <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/onActionProcess.js</onActionProcess> + <iconId>VAADIN:EYE_SLASH</iconId> + <stateProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/stateProcess.js</stateProcess> + <titleProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/titleProcess.js</titleProcess> + </entityActionField> + </children> + </entityActionGroup> + <entityActionField> + <name>newActivity</name> + <title>New activity</title> + <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newactivity/onActionProcess.js</onActionProcess> + <iconId>VAADIN:HOURGLASS_END</iconId> + <tooltip>New activity</tooltip> + <tooltipProcess>%aditoprj%/entity/Task_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess> + </entityActionField> + <entityActionField> + <name>newTask</name> + <title>New task</title> + <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newtask/onActionProcess.js</onActionProcess> + <actionOrder v="1" /> + <iconId>VAADIN:TASKS</iconId> + <state>INVISIBLE</state> + </entityActionField> + <entityActionField> + <name>setCompletePreview</name> + <title>Erledigt setzen</title> + <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/setcompletepreview/onActionProcess.js</onActionProcess> + <iconId>NEON:MQL</iconId> + <state>DISABLED</state> + <stateProcess>%aditoprj%/entity/Task_entity/entityfields/setcompletepreview/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>newSupportticket</name> + <title>New Support ticket</title> + <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newsupportticket/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CHAT</iconId> + </entityActionField> + <entityActionField> + <name>newOffer</name> + <title>New offer</title> + <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newoffer/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CHART</iconId> + </entityActionField> + <entityActionField> + <name>openAdminView</name> + <title>Open admin view</title> + <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/openadminview/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CURLY_BRACKETS</iconId> + <stateProcess>%aditoprj%/entity/Task_entity/entityfields/openadminview/stateProcess.js</stateProcess> + </entityActionField> </entityFields> <recordContainers> <dbRecordContainer> <name>db</name> + <fromClauseProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> <conditionProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <orderClauseProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> <onDBInsert>%aditoprj%/entity/Task_entity/recordcontainers/db/onDBInsert.js</onDBInsert> @@ -468,17 +618,10 @@ <isFilterable v="true" /> <isLookupFilter v="false" /> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>EDITOR_CONTACT_ID.value</name> - <recordfield>TASK.EDITOR_CONTACT_ID</recordfield> - <isFilterable v="true" /> - <isLookupFilter v="false" /> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>MATURITY_DATE.value</name> <recordfield>TASK.MATURITY_DATE</recordfield> <isFilterable v="true" /> - <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>PRIORITY.value</name> @@ -490,7 +633,6 @@ <name>PROTECTIONLEVEL.value</name> <recordfield>TASK.PROTECTIONLEVEL</recordfield> <isFilterable v="true" /> - <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>REQUESTOR_CONTACT_ID.value</name> @@ -520,10 +662,6 @@ <name>TASKID.value</name> <recordfield>TASK.TASKID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>EDITOR_CONTACT_ID.displayValue</name> - <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>REQUESTOR_CONTACT_ID.displayValue</name> <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_contact_id.displayvalue/expression.js</expression> @@ -564,6 +702,38 @@ <recordfield>TASK.TASKID</recordfield> <aggregateType>COUNT</aggregateType> </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>USER_NEW.value</name> + <recordfield>TASK.USER_NEW</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>startDate_Day.value</name> + <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/startdate_day.value/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>maturityDate_Day.value</name> + <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/maturitydate_day.value/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>connections.value</name> + <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/connections.value/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_EDIT.value</name> + <recordfield>TASK.DATE_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>TASK.DATE_NEW</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_EDIT.value</name> + <recordfield>TASK.USER_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>allAttendeesFilter.displayValue</name> + <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/allattendeesfilter.displayvalue/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <linkInformation> <linkInformation> @@ -574,6 +744,24 @@ <readonly v="false" /> </linkInformation> </linkInformation> + <filterExtensions> + <filterExtension> + <name>Attendees</name> + <title>Attendee</title> + <contentType>TEXT</contentType> + <filterValuesProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterValuesProcess.js</filterValuesProcess> + <filterConditionProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterConditionProcess.js</filterConditionProcess> + <filtertype>BASIC</filtertype> + </filterExtension> + <filterExtension> + <name>Department</name> + <title>Department</title> + <contentType>TEXT</contentType> + <filterValuesProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/filterextensions/department/filterValuesProcess.js</filterValuesProcess> + <filterConditionProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/filterextensions/department/filterConditionProcess.js</filterConditionProcess> + <filtertype>BASIC</filtertype> + </filterExtension> + </filterExtensions> </dbRecordContainer> </recordContainers> </entity> diff --git a/entity/Task_entity/afterSave.js b/entity/Task_entity/afterSave.js new file mode 100644 index 0000000000..267d8e8163 --- /dev/null +++ b/entity/Task_entity/afterSave.js @@ -0,0 +1,192 @@ +import("Workflow_lib"); +import("Attribute_lib"); +import("system.tools"); +import("system.db"); +import("system.vars"); +import("system.result"); +import("Sql_lib"); +import("system.util"); +import("Employee_lib"); + +var data = vars.get("$local.entitydata") + +var contactIds = newSelect("CONTACT_ID") +.from("TASKATTENDEES") +.where("TASKATTENDEES.TASK_ID", data["TASKID"]) +.arrayColumn(); + +var avaiableAttendees = contactIds; + +if(contactIds.length > 0) + var contactIdsAvaiable = contactIds[0].length > 0; + +var departmentIds = newSelect("DEPARTMENT_ID") +.from("TASKATTENDEES") +.where("TASKATTENDEES.TASK_ID", data["TASKID"]) +.and("TASKATTENDEES.DEPARTMENT_ID is not null") +.arrayColumn(); + + +var departmentUser = tools.getUsersByAttribute("department", departmentIds, tools.PROFILE_DEFAULT) + +var departmentUserConId; + +for(let i = 0; i < departmentUser.length; i++) +{ + + if(contactIds[0] == "") + { + contactIds.shift() + } + + departmentUserConId = departmentUser[i][tools.PARAMS][tools.CONTACTID]; + + contactIds = contactIds.concat(departmentUserConId) + +} + +//delete empty contactIds +contactIds = contactIds.filter(function(curr) +{ +return curr != ""; +}); + +var taskLink = newSelect("OBJECT_TYPE, OBJECT_ROWID") +.from("TASKLINK") +.where("TASKLINK.TASK_ID", data["TASKID"]) +.table(); + +var colsAttendees = [ + "TASKATTENDEESID", + "TASK_ID", + "CONTACT_ID" + ] + +if(data["createSingleTasks"] == 1 && vars.get("$local.recordstate") == "NEW" && contactIds.length > 0) +{ + + //remove duplicates in contactIds + contactIds = Array.from(new Set(contactIds)); + + var colsTask = [ + "TASKID", + "KIND", + "SUBJECT", + "DESCRIPTION", + "START_DATE", + "MATURITY_DATE", + "STATUS", + "PROGRESS", + "PRIORITY", + "REQUESTOR_CONTACT_ID", + "USER_NEW" + ]; + + var colsLink = [ + "TASKLINKID", + "TASK_ID", + "OBJECT_TYPE", + "OBJECT_ROWID" + ] + + for(let i = 1; i < contactIds.length; i++) { + + var uuidTask = util.getNewUUID(); + var uuidAttendees = util.getNewUUID(); + + var valsAttendees = [ + uuidAttendees, + uuidTask, + contactIds[i] + ] + + var valsTask = [ + uuidTask, + vars.get("$field.TYPE"), + vars.get("$field.SUBJECT"), + vars.get("$field.DESCRIPTION"), + vars.get("$field.START_DATE"), + vars.get("$field.MATURITY_DATE"), + vars.get("$field.STATUS"), + vars.get("$field.PROGRESS"), + vars.get("$field.PRIORITY"), + vars.get("$field.REQUESTOR_CONTACT_ID"), + vars.get("$field.USER_NEW") + ]; + + + for(let j = 0; j < taskLink.length; j++) { + + var uuidLink = util.getNewUUID(); + + var valsLink = [ + uuidLink, + uuidTask, + taskLink[j][0], + taskLink[j][1] + ] + + db.insertData("TASKLINK", colsLink, null, valsLink) + } + + + var condAttendees = "TASK_ID = '" + data["TASKID"] + "' and CONTACT_ID = '" + contactIds[i] + "'" + + db.insertData("TASK", colsTask, null, valsTask); + + if(avaiableAttendees.includes(contactIds[i])) + db.updateData("TASKATTENDEES", ["TASK_ID"], null, [uuidTask], condAttendees); + else db.insertData("TASKATTENDEES", colsAttendees, null, valsAttendees) + } + + if(departmentIds.length > 0 && !contactIdsAvaiable) { + + let departmentsAttendees = newSelect("TASKATTENDEES.TASKATTENDEESID") + .from("TASKATTENDEES") + .where("TASKATTENDEES.TASK_ID", data["TASKID"]) + .and("TASKATTENDEES.DEPARTMENT_ID is not null") + .cell(); + + newWhere("TASKATTENDEES.TASK_ID", data["TASKID"]).and("TASKATTENDEES.DEPARTMENT_ID is not null") + .and("TASKATTENDEES.TASKATTENDEESID", departmentsAttendees, SqlBuilder.NOT_EQUAL()).deleteData() + + db.updateData("TASKATTENDEES", ["DEPARTMENT_ID", "CONTACT_ID"], null, ["", contactIds[0]], "TASK_ID = '" + data["TASKID"] + + "' and DEPARTMENT_ID is not null") + + } + else if(departmentIds.length > 0 && contactIdsAvaiable) { + + newWhere("TASKATTENDEES.TASK_ID", data["TASKID"]).and("TASKATTENDEES.DEPARTMENT_ID is not null") + .or("TASKATTENDEES.TASK_ID", data["TASKID"]).and("TASKATTENDEES.CONTACT_ID is null").deleteData(); + + } + + //delete useless attendees + for(let i = 0; i < contactIds.length; i++) { + var countAttendee = newSelect("count(*), TASKATTENDEES.TASKATTENDEESID") + .from("TASKATTENDEES") + .where("TASKATTENDEES.TASK_ID", data["TASKID"]) + .and("TASKATTENDEES.CONTACT_ID", contactIds[i]) + .groupBy("TASKATTENDEES.TASKATTENDEESID") + .table(); + + if(countAttendee[0]) { + if(countAttendee[0][0] > 1) + newWhere("TASKATTENDEES.TASK_ID", data["TASKID"]).and("TASKATTENDEES.TASKATTENDEESID", countAttendee[0][1]).deleteData(); + } + + } + +} +//in case no Attendee is selected, create new Attendee with current user +else if(vars.get("$local.recordstate") == "NEW" && contactIds.length == 0) { + + uuidAttendees = util.getNewUUID(); + valsAttendees = [ + uuidAttendees, + data["TASKID"], + EmployeeUtils.getCurrentContactId() + ] + + db.insertData("TASKATTENDEES", colsAttendees, null, valsAttendees) +} \ No newline at end of file diff --git a/entity/Task_entity/entityfields/alltaskattendees/children/rowid_param/valueProcess.js b/entity/Task_entity/entityfields/alltaskattendees/children/rowid_param/valueProcess.js new file mode 100644 index 0000000000..cf73f1e2a3 --- /dev/null +++ b/entity/Task_entity/entityfields/alltaskattendees/children/rowid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.TASKID")); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/contacteditors/children/onlyactives_param/valueProcess.js b/entity/Task_entity/entityfields/contacteditors/children/onlyactives_param/valueProcess.js new file mode 100644 index 0000000000..70aefbf842 --- /dev/null +++ b/entity/Task_entity/entityfields/contacteditors/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/Task_entity/entityfields/contactrequestors/children/onlyactives_param/valueProcess.js b/entity/Task_entity/entityfields/contactrequestors/children/onlyactives_param/valueProcess.js new file mode 100644 index 0000000000..70aefbf842 --- /dev/null +++ b/entity/Task_entity/entityfields/contactrequestors/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/Task_entity/entityfields/createsingletasks/stateProcess.js b/entity/Task_entity/entityfields/createsingletasks/stateProcess.js new file mode 100644 index 0000000000..295d32c8ec --- /dev/null +++ b/entity/Task_entity/entityfields/createsingletasks/stateProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) + result.string(neon.COMPONENTSTATE_INVISIBLE); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/date_edit/valueProcess.js b/entity/Task_entity/entityfields/date_edit/valueProcess.js new file mode 100644 index 0000000000..c636b6eb77 --- /dev/null +++ b/entity/Task_entity/entityfields/date_edit/valueProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if (vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) + result.string(vars.get("$sys.date")); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/date_new/valueProcess.js b/entity/Task_entity/entityfields/date_new/valueProcess.js new file mode 100644 index 0000000000..e4dccadcce --- /dev/null +++ b/entity/Task_entity/entityfields/date_new/valueProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if (vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(vars.get("$sys.date")); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/departments/children/parentid_param/valueProcess.js b/entity/Task_entity/entityfields/departments/children/parentid_param/valueProcess.js new file mode 100644 index 0000000000..246beece1e --- /dev/null +++ b/entity/Task_entity/entityfields/departments/children/parentid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("AttributeRegistry_basic"); +import("system.result"); + +result.string($AttributeRegistry.departments()); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/description/valueProcess.js b/entity/Task_entity/entityfields/description/valueProcess.js new file mode 100644 index 0000000000..acce89a591 --- /dev/null +++ b/entity/Task_entity/entityfields/description/valueProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.vars"); + +let param = vars.get("$param.Description_param"); + +if (!vars.get("$this.value") && param) +{ + result.string(param); +} \ No newline at end of file diff --git a/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js b/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js deleted file mode 100644 index ad1d3c7d63..0000000000 --- a/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js +++ /dev/null @@ -1,8 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Contact_lib"); - -var id = vars.get("$field.EDITOR_CONTACT_ID"); -//show the simpel title since this will be later an employee-entry and therefore no organisation is needed -var title = ContactUtils.getTitleByContactId(id); -result.string(title); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/editor_contact_id/valueProcess.js b/entity/Task_entity/entityfields/editor_contact_id/valueProcess.js deleted file mode 100644 index 4cc8f2bb8a..0000000000 --- a/entity/Task_entity/entityfields/editor_contact_id/valueProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.result"); -import("system.neon"); -import("system.vars"); -import("Employee_lib"); - -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/Task_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/onActionProcess.js similarity index 100% rename from entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js rename to entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/onActionProcess.js diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/stateProcess.js similarity index 100% rename from entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js rename to entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/stateProcess.js diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/titleProcess.js similarity index 100% rename from entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js rename to entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/titleProcess.js diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/observe/onActionProcess.js similarity index 100% rename from entity/Task_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js rename to entity/Task_entity/entityfields/filteractiongroup/children/observe/onActionProcess.js diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/observe/stateProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/observe/stateProcess.js similarity index 100% rename from entity/Task_entity/entityfields/observeactiongroup/children/observe/stateProcess.js rename to entity/Task_entity/entityfields/filteractiongroup/children/observe/stateProcess.js diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/observe/titleProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/observe/titleProcess.js similarity index 100% rename from entity/Task_entity/entityfields/observeactiongroup/children/observe/titleProcess.js rename to entity/Task_entity/entityfields/filteractiongroup/children/observe/titleProcess.js diff --git a/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/onActionProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/onActionProcess.js new file mode 100644 index 0000000000..3a57f271c6 --- /dev/null +++ b/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/onActionProcess.js @@ -0,0 +1,12 @@ +import("system.neon"); +import("Sql_lib"); +import("system.vars"); +import("system.db"); +import("KeywordRegistry_basic") + +var data = vars.get("$sys.selection") + +var cond = newWhere("TASK.TASKID", data, SqlBuilder.IN()).toString(); +db.updateData("TASK", ["STATUS"], null, [$KeywordRegistry.taskStatus$ended()], cond) + +neon.refreshAll() \ No newline at end of file diff --git a/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/stateProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/stateProcess.js new file mode 100644 index 0000000000..e36de81867 --- /dev/null +++ b/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/stateProcess.js @@ -0,0 +1,42 @@ +import("system.neon"); +import("system.tools"); +import("system.result"); +import("system.vars"); +import("Sql_lib"); +import("Employee_lib"); +import("system.project"); + +var contactId = EmployeeUtils.getCurrentContactId(); + +var userRole = tools.getUser(vars.get("$sys.user"), tools.PROFILE_FULL); + +var departmentId = newSelect("PROPVAL", project.getSystemTableAlias("ASYS_USERS")) +.from("ASYS_USERS") +.where("ASYS_USERS.PROPKEY", "department") +.and("ASYS_USERS.NAME", userRole.myRole) +.cell(); + + +var taskAttendee = newSelect("distinct TASK_ID") +.from("TASKATTENDEES") +.where("TASKATTENDEES.CONTACT_ID", contactId) +.or("TASKATTENDEES.DEPARTMENT_ID", departmentId) +.arrayColumn(); + +var canEdit = false; +var count = 0; + +while(!canEdit && count < taskAttendee.length) { + + if(taskAttendee[count] == vars.get("$sys.selection")) + canEdit = true + count++; + +} + +var role = tools.hasAnyRole(vars.getString("$sys.user"), ["PROJECT_Abt_Verwaltung", "PROJECT_Abt_Geschaeftsleitung"]) + +if(canEdit || vars.get("$field.REQUESTOR_CONTACT_ID") == contactId + || vars.get("$field.USER_NEW") == vars.get("$sys.user") || role) { + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/Task_entity/entityfields/icon_color/valueProcess.js b/entity/Task_entity/entityfields/icon_color/valueProcess.js index f15523e724..1ad291c450 100644 --- a/entity/Task_entity/entityfields/icon_color/valueProcess.js +++ b/entity/Task_entity/entityfields/icon_color/valueProcess.js @@ -1,21 +1,26 @@ +import("ActivityTask_lib"); +import("system.result"); import("system.vars"); import("KeywordRegistry_basic"); -import("system.result"); import("system.neon"); +var res; + switch(vars.getString("$field.PRIORITY")) { - case $KeywordRegistry.taskPriority$none(): - result.string(neon.PRIORITY_NONE_COLOR); - break; - case $KeywordRegistry.taskPriority$low(): - result.string(neon.PRIORITY_LOW_COLOR); + case $KeywordRegistry.taskPriority$high(): + res = neon.PRIORITY_HIGH_COLOR; break; case $KeywordRegistry.taskPriority$medium(): - result.string(neon.PRIORITY_MEDIUM_COLOR); + res = neon.PRIORITY_MEDIUM_COLOR; break; - case $KeywordRegistry.taskPriority$high(): - result.string(neon.PRIORITY_HIGH_COLOR); + case $KeywordRegistry.taskPriority$low(): + res = neon.PRIORITY_LOW_COLOR; + break; + case $KeywordRegistry.taskPriority$none(): + default: + res = neon.PRIORITY_NONE_COLOR; break; } +result.string(res); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/newoffer/onActionProcess.js b/entity/Task_entity/entityfields/newoffer/onActionProcess.js index 2a448a664b..54dd0674f3 100644 --- a/entity/Task_entity/entityfields/newoffer/onActionProcess.js +++ b/entity/Task_entity/entityfields/newoffer/onActionProcess.js @@ -3,13 +3,19 @@ import("system.vars"); import("Offer_lib"); var taskId = vars.get("$field.TASKID"); -var contactIds = [vars.get("$field.REQUESTOR_CONTACT_ID"), vars.get("$field.EDITOR_CONTACT_ID")]; + +var contactIds = newSelect("TASKATTENDEES.CONTACT_ID") +.from("TASKATTENDEES") +.where("TASKATTENDEES.TASK_ID", vars.get("$field.TASKID")) +.and("CONTACT_ID IS NOT NULL") +.arrayColumn() +.push(vars.get("$field.REQUESTOR_CONTACT_ID")); var links = newSelect("TASKLINK.OBJECT_TYPE, TASKLINK.OBJECT_ROWID") - .from("TASKLINK") - .where("TASKLINK.TASK_ID", vars.get("$field.TASKID")) - .and("TASKLINK.OBJECT_TYPE", ["PrivatePerson", "Organisation", "Salesproject"], SqlBuilder.IN()) - .table(); +.from("TASKLINK") +.where("TASKLINK.TASK_ID", vars.get("$field.TASKID")) +.and("TASKLINK.OBJECT_TYPE", ["PrivatePerson", "Organisation", "Salesproject"], SqlBuilder.IN()) +.table(); var organisationArray = []; var salesprojectId; for (var i = 0; i < links.length; i++) { @@ -37,13 +43,13 @@ for (var i = 0; i < links.length; i++) { for (i = 0; i < organisationArray.length; i++) { var orgContacts = newSelect("CONTACT.CONTACTID") - .from("CONTACT") - .where("CONTACT.ORGANISATION_ID", newSelect("ORGANISATION.ORGANISATIONID") - .from("ORGANISATION") - .join("CONTACT", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") - .where("CONTACT.CONTACTID", organisationArray[i]) - .cell()) - .arrayColumn(); + .from("CONTACT") + .where("CONTACT.ORGANISATION_ID", newSelect("ORGANISATION.ORGANISATIONID") + .from("ORGANISATION") + .join("CONTACT", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") + .where("CONTACT.CONTACTID", organisationArray[i]) + .cell()) + .arrayColumn(); contactIds = contactIds.concat(orgContacts); } diff --git a/entity/Task_entity/entityfields/newsupportticket/onActionProcess.js b/entity/Task_entity/entityfields/newsupportticket/onActionProcess.js index 500687bbf4..f5cf5b50ae 100644 --- a/entity/Task_entity/entityfields/newsupportticket/onActionProcess.js +++ b/entity/Task_entity/entityfields/newsupportticket/onActionProcess.js @@ -1,6 +1,6 @@ -import("system.vars"); -import("ActivityTask_lib"); -import("Context_lib"); -import("Ticket_lib") - -TicketUtils.createNewTicket(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.TASKID")) \ No newline at end of file +import("system.vars"); +import("ActivityTask_lib"); +import("Context_lib"); +import("Ticket_lib"); + +TicketUtils.createNewTicket(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.TASKID")) diff --git a/entity/Task_entity/entityfields/openadminview/onActionProcess.js b/entity/Task_entity/entityfields/openadminview/onActionProcess.js index f665fe2dca..f7917e5b66 100644 --- a/entity/Task_entity/entityfields/openadminview/onActionProcess.js +++ b/entity/Task_entity/entityfields/openadminview/onActionProcess.js @@ -4,6 +4,5 @@ import("Context_lib"); AdminViewUtils.open("TASKID", [ ["PARENT_ID", vars.get("$field.PARENT_ID")], ["PARENT_CONTEXT", vars.get("$field.PARENT_CONTEXT")], - ["REQUESTOR_CONTACT_ID", vars.get("$field.REQUESTOR_CONTACT_ID")], - ["EDITOR_CONTACT_ID", vars.get("$field.EDITOR_CONTACT_ID")] -]); \ No newline at end of file + ["REQUESTOR_CONTACT_ID", vars.get("$field.REQUESTOR_CONTACT_ID")] +]) \ No newline at end of file diff --git a/entity/Task_entity/entityfields/priority/valueProcess.js b/entity/Task_entity/entityfields/priority/valueProcess.js index ee23436dbb..2ec7098f6f 100644 --- a/entity/Task_entity/entityfields/priority/valueProcess.js +++ b/entity/Task_entity/entityfields/priority/valueProcess.js @@ -6,5 +6,5 @@ import("KeywordRegistry_basic"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { - result.string($KeywordRegistry.taskPriority$low()); + result.string($KeywordRegistry.taskPriority$medium()); } \ No newline at end of file diff --git a/entity/Task_entity/entityfields/priority_icon/valueProcess.js b/entity/Task_entity/entityfields/priority_icon/valueProcess.js index 5dc868f879..8360591175 100644 --- a/entity/Task_entity/entityfields/priority_icon/valueProcess.js +++ b/entity/Task_entity/entityfields/priority_icon/valueProcess.js @@ -1,6 +1,25 @@ import("system.vars"); -import("ActivityTask_lib"); -import("KeywordRegistry_basic"); import("system.result"); +import("system.neon"); +import("system.datetime"); -result.string(TaskUtils.getStatusIcon(vars.getString("$field.STATUS"))); \ No newline at end of file +var res; +// The cast to date and than to long again is necessary to get no timezone problems. +var maturityDate = datetime.toLong(datetime.toDate(vars.get("$field.maturityDate_Day"), "dd.MM.yyyy"), "dd.MM.yyyy") +var start = datetime.toLong(datetime.toDate(vars.get("$field.startDate_Day"), "dd.MM.yyyy"), "dd.MM.yyyy") +var today = datetime.today(); + +if(maturityDate < today) +{ + res = "NEON:OVERDUE"; +} +else if(start > today) +{ + res = "NEON:UNDUE"; +} +else +{ + res = "NEON:DUE"; +} + +result.string(res); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/protectionlevel/valueProcess.js b/entity/Task_entity/entityfields/protectionlevel/valueProcess.js deleted file mode 100644 index 06be75dc39..0000000000 --- a/entity/Task_entity/entityfields/protectionlevel/valueProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.util"); -import("system.result"); -import("system.neon"); -import("system.vars"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) - result.string("0"); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js b/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js index a54eaa531b..8678427b7b 100644 --- a/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js +++ b/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js @@ -5,4 +5,5 @@ import("Contact_lib"); var id = vars.get("$field.REQUESTOR_CONTACT_ID"); //show the simpel title since this will be later an employee-entry and therefore no organisation is needed var title = ContactUtils.getTitleByContactId(id); + result.string(title); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/requestor_contact_id/stateProcess.js b/entity/Task_entity/entityfields/requestor_contact_id/stateProcess.js new file mode 100644 index 0000000000..85b94d6ee9 --- /dev/null +++ b/entity/Task_entity/entityfields/requestor_contact_id/stateProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) + result.string(neon.COMPONENTSTATE_READONLY); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/setcompletepreview/onActionProcess.js b/entity/Task_entity/entityfields/setcompletepreview/onActionProcess.js new file mode 100644 index 0000000000..3a57f271c6 --- /dev/null +++ b/entity/Task_entity/entityfields/setcompletepreview/onActionProcess.js @@ -0,0 +1,12 @@ +import("system.neon"); +import("Sql_lib"); +import("system.vars"); +import("system.db"); +import("KeywordRegistry_basic") + +var data = vars.get("$sys.selection") + +var cond = newWhere("TASK.TASKID", data, SqlBuilder.IN()).toString(); +db.updateData("TASK", ["STATUS"], null, [$KeywordRegistry.taskStatus$ended()], cond) + +neon.refreshAll() \ No newline at end of file diff --git a/entity/Task_entity/entityfields/setcompletepreview/stateProcess.js b/entity/Task_entity/entityfields/setcompletepreview/stateProcess.js new file mode 100644 index 0000000000..325e6f20a9 --- /dev/null +++ b/entity/Task_entity/entityfields/setcompletepreview/stateProcess.js @@ -0,0 +1,45 @@ +import("system.project"); +import("system.neon"); +import("system.tools"); +import("system.result"); +import("system.vars"); +import("Sql_lib"); +import("Employee_lib"); + +var contactId = EmployeeUtils.getCurrentContactId(); + +var userRole = tools.getUser(vars.get("$sys.user"), tools.PROFILE_FULL); + +var departmentId = newSelect("PROPVAL", project.getSystemTableAlias("ASYS_USERS")) +.from("ASYS_USERS") +.where("ASYS_USERS.PROPKEY", "department") +.and("ASYS_USERS.NAME", userRole.myRole) +.cell(); + + +var taskAttendee = newSelect("distinct TASK_ID") +.from("TASKATTENDEES") +.where("TASKATTENDEES.CONTACT_ID", contactId) +.or("TASKATTENDEES.DEPARTMENT_ID", departmentId) +.arrayColumn(); + +var canEdit = false; +var count = 0; + +while(!canEdit && count < taskAttendee.length) +{ + if(taskAttendee[count] == vars.get("$sys.selection")) + { + canEdit = true + } + + count++; +} + +var role = tools.hasAnyRole(vars.getString("$sys.user"), ["INTERNAL_ADMINISTRATOR", "PROJECT_Inspector2"]) + +if(canEdit || vars.get("$field.REQUESTOR_CONTACT_ID") == contactId + || vars.get("$field.USER_NEW") == vars.get("$sys.user") || role) +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/Task_entity/entityfields/subject/valueProcess.js b/entity/Task_entity/entityfields/subject/valueProcess.js new file mode 100644 index 0000000000..9e9827a13f --- /dev/null +++ b/entity/Task_entity/entityfields/subject/valueProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.vars"); + +let param = vars.get("$param.Subject_param"); + +if (!vars.get("$this.value") && param) +{ + result.string(param); +} \ No newline at end of file diff --git a/entity/Task_entity/entityfields/subject_details/valueProcess.js b/entity/Task_entity/entityfields/subject_details/valueProcess.js deleted file mode 100644 index 7d49329d94..0000000000 --- a/entity/Task_entity/entityfields/subject_details/valueProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.vars"); -import("system.result"); - -var responsible = vars.get("$field.EDITOR_CONTACT_ID.displayValue"); -result.string(vars.get("$field.SUBJECT") + (responsible ? " (" + responsible + ")" : "")); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/taskattendeesmulti/children/personsonly_param/valueProcess.js b/entity/Task_entity/entityfields/taskattendeesmulti/children/personsonly_param/valueProcess.js new file mode 100644 index 0000000000..cda204045d --- /dev/null +++ b/entity/Task_entity/entityfields/taskattendeesmulti/children/personsonly_param/valueProcess.js @@ -0,0 +1,2 @@ +import("system.result"); +result.string(true); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/taskattendeesmulti/children/rowid_param/valueProcess.js b/entity/Task_entity/entityfields/taskattendeesmulti/children/rowid_param/valueProcess.js new file mode 100644 index 0000000000..1d60a52add --- /dev/null +++ b/entity/Task_entity/entityfields/taskattendeesmulti/children/rowid_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.vars"); +import("system.result"); +result.string(vars.get("$field.TASKID")); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/taskattendeesmulti/onValidation.js b/entity/Task_entity/entityfields/taskattendeesmulti/onValidation.js new file mode 100644 index 0000000000..22dc9fc638 --- /dev/null +++ b/entity/Task_entity/entityfields/taskattendeesmulti/onValidation.js @@ -0,0 +1,25 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("Entity_lib"); + +// These references are required because this process is intended to be performed when a line changes +vars.get("$field.TaskAttendeesMulti.insertedRows"); +vars.get("$field.TaskAttendeesMulti.changedRows"); +vars.get("$field.TaskAttendeesMulti.deletedRows"); + +var contactRows = EntityConsumerRowsHelper.getCurrentConsumerRows("TaskAttendeesMulti", ["CONTACT_ID"]); +var contactSet = new Set(); +var hasDuplicate = contactRows.some(function (row) +{ + var contacts = row["CONTACT_ID"].trim(); + if (contactSet.has(contacts)) + return true; + contactSet.add(contacts); + return false; +}); + +if (hasDuplicate) +{ + result.string(translate.text("Attendees cannot be assigned repeatedly!")); +} \ No newline at end of file diff --git a/entity/Task_entity/entityfields/taskdepartmentsmulti/children/departmentsonly_param/valueProcess.js b/entity/Task_entity/entityfields/taskdepartmentsmulti/children/departmentsonly_param/valueProcess.js new file mode 100644 index 0000000000..cda204045d --- /dev/null +++ b/entity/Task_entity/entityfields/taskdepartmentsmulti/children/departmentsonly_param/valueProcess.js @@ -0,0 +1,2 @@ +import("system.result"); +result.string(true); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/taskdepartmentsmulti/children/rowid_param/valueProcess.js b/entity/Task_entity/entityfields/taskdepartmentsmulti/children/rowid_param/valueProcess.js new file mode 100644 index 0000000000..1d60a52add --- /dev/null +++ b/entity/Task_entity/entityfields/taskdepartmentsmulti/children/rowid_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.vars"); +import("system.result"); +result.string(vars.get("$field.TASKID")); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/taskdepartmentsmulti/onValidation.js b/entity/Task_entity/entityfields/taskdepartmentsmulti/onValidation.js new file mode 100644 index 0000000000..e222f367b4 --- /dev/null +++ b/entity/Task_entity/entityfields/taskdepartmentsmulti/onValidation.js @@ -0,0 +1,23 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("Entity_lib"); + +// These references are required because this process is intended to be performed when a line changes +vars.get("$field.TaskDepartmentsMulti.insertedRows"); +vars.get("$field.TaskDepartmentsMulti.changedRows"); +vars.get("$field.TaskDepartmentsMulti.deletedRows"); + +var departmentRows = EntityConsumerRowsHelper.getCurrentConsumerRows("TaskDepartmentsMulti", ["DEPARTMENT_ID"]); +var departmentSet = new Set(); +var hasDuplicate = departmentRows.some(function (row) +{ + var departments = row["DEPARTMENT_ID"].trim(); + if (departmentSet.has(departments)) + return true; + departmentSet.add(departments); + return false; +}); + +if (hasDuplicate) + result.string(translate.text("Departments cannot be assigned repeatedly!")); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/user_edit/valueProcess.js b/entity/Task_entity/entityfields/user_edit/valueProcess.js new file mode 100644 index 0000000000..4f1799fbde --- /dev/null +++ b/entity/Task_entity/entityfields/user_edit/valueProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if (vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) + result.string(vars.get("$sys.user")); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/user_new/valueProcess.js b/entity/Task_entity/entityfields/user_new/valueProcess.js new file mode 100644 index 0000000000..2003bc1a40 --- /dev/null +++ b/entity/Task_entity/entityfields/user_new/valueProcess.js @@ -0,0 +1,5 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(vars.get("$sys.user")) \ No newline at end of file diff --git a/entity/Task_entity/grantDeleteProcess.js b/entity/Task_entity/grantDeleteProcess.js index 10e91522b8..269b40662f 100644 --- a/entity/Task_entity/grantDeleteProcess.js +++ b/entity/Task_entity/grantDeleteProcess.js @@ -1,10 +1,24 @@ +import("system.tools"); +import("Sql_lib"); import("Context_lib"); import("system.vars"); import("system.result"); import("Entity_lib"); +import("Employee_lib") var canDelete = new HasLinkedObjectTester() - .andNoEntityRows("Document_entity", "Documents", {AssignmentTable_param : "TASK", AssignmentRowId_param : vars.get("$field.TASKID")}) //Documents + .andNoEntityRows("Document_entity", "Documents", { + AssignmentTable_param : "TASK", + AssignmentRowId_param : vars.get("$field.TASKID") + }) //Documents .validate(); +if(vars.get("$field.REQUESTOR_CONTACT_ID") != EmployeeUtils.getCurrentContactId() + && canDelete + && vars.get("$field.USER_NEW") != vars.get("$sys.user")) +{ + canDelete = false; +} + + result.string(canDelete); \ No newline at end of file diff --git a/entity/Task_entity/grantUpdateProcess.js b/entity/Task_entity/grantUpdateProcess.js new file mode 100644 index 0000000000..3c0752cde8 --- /dev/null +++ b/entity/Task_entity/grantUpdateProcess.js @@ -0,0 +1,36 @@ +import("system.project"); +import("system.tools"); +import("system.result"); +import("system.vars"); +import("Sql_lib"); +import("Employee_lib"); + +var contactId = EmployeeUtils.getCurrentContactId(); + +var user = tools.getUser(vars.get("$sys.user"), tools.PROFILE_FULL); + +var departmentId = user[tools.PARAMS].department; + + +var taskAttendee = newSelect("distinct TASK_ID") +.from("TASKATTENDEES") +.where("TASKATTENDEES.CONTACT_ID", contactId) +.or("TASKATTENDEES.DEPARTMENT_ID", departmentId) +.arrayColumn(); + +var canEdit = false; +var count = 0; + +while(!canEdit && count < taskAttendee.length) +{ + if(taskAttendee[count] == vars.get("$field.TASKID")) + canEdit = true + count++; +} + +if(canEdit + || vars.get("$field.REQUESTOR_CONTACT_ID") == contactId + || vars.get("$field.USER_NEW") == vars.get("$sys.user")) +{ + result.string(true); +} \ No newline at end of file diff --git a/entity/Task_entity/iconIdProcess.js b/entity/Task_entity/iconIdProcess.js index c7a5eb8867..0fd79e39de 100644 --- a/entity/Task_entity/iconIdProcess.js +++ b/entity/Task_entity/iconIdProcess.js @@ -9,4 +9,4 @@ var category = vars.getString("$field.PRIORITY"); var keywordAttributes = KeywordUtils.getAttributeRelationsByKey(category, $KeywordRegistry.taskPriority()); var icon = keywordAttributes.defaultAvatarRepresentation; -result.string(icon || "VAADIN:TASKS"); \ No newline at end of file +result.string(icon || "VAADIN:TASKS"); diff --git a/entity/Task_entity/initFilterProcess.js b/entity/Task_entity/initFilterProcess.js index bfea2877c6..914bcc6d16 100644 --- a/entity/Task_entity/initFilterProcess.js +++ b/entity/Task_entity/initFilterProcess.js @@ -1,12 +1,25 @@ +import("Util_lib"); +import("Attribute_lib"); +import("Contact_lib"); +import("system.tools"); import("system.result"); import("Keyword_lib"); import("KeywordRegistry_basic"); import("system.neon"); import("system.vars"); -if (vars.get("$sys.presentationmode") === neon.CONTEXT_PRESENTATIONMODE_FILTER) + +if (vars.get("$sys.presentationmode") === neon.CONTEXT_PRESENTATIONMODE_FILTER + && !vars.get("$param.RowId_param") + || Utils.toBoolean(vars.get("$param.dashletFilter_param"))) { + + var user = tools.getCurrentUser(); + + var departmentAttrId = user[tools.PARAMS].department; + var currentUserId = user[tools.PARAMS][tools.CONTACTID]; var statusEnded = $KeywordRegistry.taskStatus$ended(); + var filter = { type: "group", operator: "AND", @@ -17,8 +30,30 @@ if (vars.get("$sys.presentationmode") === neon.CONTEXT_PRESENTATIONMODE_FILTER) contenttype: "TEXT", key: statusEnded, value: KeywordUtils.getViewValue($KeywordRegistry.taskStatus(), statusEnded) + }, { + type: "group", + operator: "OR", + childs: [] }] }; + + filter.childs[1].childs.push({ + type: "row", + name: "#EXTENSION.Attendees.Attendees#TEXT", + operator: "EQUAL", + contenttype: "TEXT", + key: currentUserId, + value: ContactUtils.getTitleByContactId(currentUserId) + + }) + filter.childs[1].childs.push({ + type: "row", + name: "#EXTENSION.Department.Department#TEXT", + operator: "EQUAL", + contenttype: "TEXT", + key: departmentAttrId, + value: AttributeUtil.getFullAttributeName(departmentAttrId) + }) result.string(JSON.stringify(filter)); } \ 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 c74072623e..3316842813 100644 --- a/entity/Task_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Task_entity/recordcontainers/db/conditionProcess.js @@ -1,3 +1,4 @@ +import("system.tools"); import("Employee_lib"); import("system.vars"); import("system.db"); @@ -6,47 +7,40 @@ import("Sql_lib"); import("KeywordRegistry_basic"); var cond = newWhere("TASK.KIND", $KeywordRegistry.taskType$task()) - -var loadNothing = false; var ownContactId = EmployeeUtils.getCurrentContactId(); +var user = tools.getUser(vars.get("$sys.user"), tools.PROFILE_FULL); +var userDepartment = user[tools.PARAMS]["department"] -if (vars.getString("$param.FilterOnlyOwnTask_param") == "true") +if(userDepartment) { - if (ownContactId) - cond.andIfSet("TASK.EDITOR_CONTACT_ID", ownContactId); - else - loadNothing = true; + cond.and("TASK.TASKID", newSelect("TASKID") + .from("TASK") + .where("TASK.PROTECTIONLEVEL is null") + .or("TASK.PROTECTIONLEVEL = 0") + .or("TASK.TASKID", (newSelect("TASK_ID") + .from("TASKATTENDEES") + .where("TASKATTENDEES.CONTACT_ID", ownContactId) + .or("TASKATTENDEES.DEPARTMENT_ID", userDepartment)), SqlBuilder.IN()) + .or("TASK.REQUESTOR_CONTACT_ID", ownContactId) + .or("TASK.USER_NEW", vars.get("$sys.user")), SqlBuilder.IN()) } -if (vars.exists("$param.RowId_param") && vars.get("$param.RowId_param") && vars.exists("$param.ObjectId_param") && vars.get("$param.ObjectId_param")) +else { - // TODO: more performant way than IN. Maybe a join? - cond.and("TASK.TASKID", newSelect("TASKLINK.TASK_ID") - .from("TASKLINK") - .where("TASKLINK.OBJECT_ROWID", "$param.RowId_param") - .and("TASKLINK.OBJECT_TYPE", "$param.ObjectId_param") - , SqlBuilder.IN()); + cond.and(SqlBuilder.NORESULT_CONDITION()) } -cond.andIfSet("TASK.PARENT_ID", "$param.ParentId_param"); -cond.andIfSet("TASK.PARENT_CONTEXT", "$param.ParentContext_param"); -if (loadNothing) +if (vars.exists("$param.AdditionalRowID_param") && vars.get("$param.AdditionalRowID_param") && vars.exists("$param.AdditionalObjectID_param") && vars.get("$param.AdditionalObjectID_param")) { - result.string(SqlBuilder.NORESULT_CONDITION()); + cond.and("TASKLINK.OBJECT_ROWID", JSON.parse(vars.get("$param.AdditionalRowID_param")), SqlBuilder.IN()) + .and("TASKLINK.OBJECT_TYPE", JSON.parse(vars.get("$param.AdditionalObjectID_param")), SqlBuilder.IN()); } -else +else if (vars.exists("$param.RowId_param") && vars.get("$param.RowId_param") && vars.exists("$param.ObjectId_param") && vars.get("$param.ObjectId_param")) { - //null has a special sql treatment, therefor check null and != 1 - var protectionLevelCondition = newWhere("TASK.PROTECTIONLEVEL != 1 or TASK.PROTECTIONLEVEL is null"); - if (ownContactId) - { - protectionLevelCondition.or( - newWhere("TASK.PROTECTIONLEVEL = 1") - .and(newWhere("TASK.EDITOR_CONTACT_ID", ownContactId) - .or("TASK.REQUESTOR_CONTACT_ID", ownContactId) - ) - ); - } - cond.and(protectionLevelCondition); - - result.string(cond.toString()); -} \ No newline at end of file + cond.and("TASKLINK.OBJECT_ROWID", "$param.RowId_param") + .and("TASKLINK.OBJECT_TYPE", "$param.ObjectId_param"); +} + +cond.andIfSet("TASK.PARENT_ID", "$param.ParentId_param"); +cond.andIfSet("TASK.PARENT_CONTEXT", "$param.ParentContext_param"); + +result.string(cond.toString()); diff --git a/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterConditionProcess.js b/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterConditionProcess.js new file mode 100644 index 0000000000..c4e8d7df50 --- /dev/null +++ b/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterConditionProcess.js @@ -0,0 +1,40 @@ +import("system.vars"); +import("system.result"); +import("Sql_lib"); + +var rawvalue = vars.get("$local.rawvalue") +var comparison = vars.get("$local.comparison") +var sqlCond; +var operator; + +switch(comparison) +{ + case "EQUAL": + operator = SqlBuilder.IN(); + break; + case "NOT_EQUAL": + operator = SqlBuilder.NOT_IN(); + break; +} + +sqlCond = newWhere("TASK.TASKID", + newSelect("TASK_ID") + .from("TASKATTENDEES") + .where("TASKATTENDEES.CONTACT_ID", rawvalue), operator); + +if(comparison == "ISNULL") +{ + sqlCond = newWhere("TASK.TASKID", + newSelect("TASK_ID") + .from("TASKATTENDEES") + .where("TASKATTENDEES.CONTACT_ID is null"), SqlBuilder.IN()); +} +else if(comparison == "ISNOTNULL") +{ + sqlCond = newWhere("TASK.TASKID", + newSelect("TASK_ID") + .from("TASKATTENDEES") + .where("TASKATTENDEES.CONTACT_ID is not null"), SqlBuilder.IN()); +} + +result.string(sqlCond.toString()); diff --git a/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterValuesProcess.js b/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterValuesProcess.js new file mode 100644 index 0000000000..2fd225d57b --- /dev/null +++ b/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterValuesProcess.js @@ -0,0 +1,21 @@ +import("system.tools"); +import("Sql_lib"); +import("system.result"); +import("Contact_lib"); + +var filter = []; +//var filterOrdered = []; +var employees = tools.getUsersByAttribute(tools.ISACTIVE, ["true"], tools.PROFILE_DEFAULT); +var contactIds = []; + +for(let i = 0; i < employees.length; i++) { + contactIds.push(employees[i][tools.PARAMS][tools.CONTACTID]) +} + +filter = newSelect(["CONTACTID", new SqlMaskingUtils().concatWithSeparator(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"], " ")]) +.from("CONTACT") +.join("PERSON", newWhere("PERSON.PERSONID = CONTACT.PERSON_ID")) +.where("CONTACT.CONTACTID", contactIds, SqlBuilder.IN()) +.table(); + +result.object(filter); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/filterextensions/department/filterConditionProcess.js b/entity/Task_entity/recordcontainers/db/filterextensions/department/filterConditionProcess.js new file mode 100644 index 0000000000..7168bcf291 --- /dev/null +++ b/entity/Task_entity/recordcontainers/db/filterextensions/department/filterConditionProcess.js @@ -0,0 +1,43 @@ +import("system.vars"); +import("system.result"); +import("Sql_lib"); + +var rawvalue = vars.get("$local.rawvalue") +var comparison = vars.get("$local.comparison") +var sqlCond; +var operator; + +switch(comparison) +{ + case "EQUAL": + operator = SqlBuilder.IN(); + break; + case "NOT_EQUAL": + operator = SqlBuilder.NOT_IN(); + break; +} + +var parentCount = newSelect("count(*)") +.from("AB_ATTRIBUTE") +.where("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", rawvalue) +.cell() + +if(parentCount >= 1) +{ + sqlCond = newWhere("TASK.TASKID", + newSelect("TASKATTENDEES.TASK_ID") + .from("TASKATTENDEES") + .where("TASKATTENDEES.DEPARTMENT_ID", + newSelect("AB_ATTRIBUTE.AB_ATTRIBUTEID") + .from("AB_ATTRIBUTE") + .where("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID",rawvalue), operator)); +} +else +{ + sqlCond = newWhere("TASK.TASKID", + newSelect("TASK_ID") + .from("TASKATTENDEES") + .where("TASKATTENDEES.DEPARTMENT_ID", rawvalue), operator); +} + +result.string(sqlCond.toString()); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/filterextensions/department/filterValuesProcess.js b/entity/Task_entity/recordcontainers/db/filterextensions/department/filterValuesProcess.js new file mode 100644 index 0000000000..1678bcb52f --- /dev/null +++ b/entity/Task_entity/recordcontainers/db/filterextensions/department/filterValuesProcess.js @@ -0,0 +1,14 @@ +import("system.entities"); +import("AttributeRegistry_basic"); +import("system.result"); + +var loadingConfig = entities.createConfigForLoadingRows().entity("Attribute_entity") +.provider("SpecificAttribute") +.fields(["UID", "FULL_ATTRIBUTE_NAME"]) +.addParameter("ParentId_param", $AttributeRegistry.departments()); + +var attributeRows = entities.getRows(loadingConfig); + +result.object(attributeRows.map(function (attributeRow) { + return [attributeRow["UID"], attributeRow["FULL_ATTRIBUTE_NAME"]] +})); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/fromClauseProcess.js b/entity/Task_entity/recordcontainers/db/fromClauseProcess.js new file mode 100644 index 0000000000..83589697b4 --- /dev/null +++ b/entity/Task_entity/recordcontainers/db/fromClauseProcess.js @@ -0,0 +1,13 @@ +import("system.vars"); +import("system.result"); +import("Sql_lib"); + +let from = new SqlBuilder().from("TASK") + +if ((vars.exists("$param.AdditionalRowID_param") && vars.get("$param.AdditionalRowID_param") && vars.exists("$param.AdditionalObjectID_param") && vars.get("$param.AdditionalObjectID_param")) || + vars.exists("$param.RowId_param") && vars.get("$param.RowId_param") && vars.exists("$param.ObjectId_param") && vars.get("$param.ObjectId_param")) +{ + from.join("TASKLINK", newWhere("TASK.TASKID = TASKLINK.TASK_ID")); +} + +result.string(from.toString()); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/onDBDelete.js b/entity/Task_entity/recordcontainers/db/onDBDelete.js index a59a05ae62..4c5d4c7591 100644 --- a/entity/Task_entity/recordcontainers/db/onDBDelete.js +++ b/entity/Task_entity/recordcontainers/db/onDBDelete.js @@ -2,5 +2,6 @@ import("Workflow_lib"); import("Sql_lib"); newWhere("TASKLINK.TASK_ID", "$field.TASKID").deleteData(); +newWhere("TASKATTENDEES.TASK_ID", "$field.TASKID").deleteData(); WorkflowSignalSender.deleted(); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/allattendeesfilter.displayvalue/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/allattendeesfilter.displayvalue/expression.js new file mode 100644 index 0000000000..4b299ecbce --- /dev/null +++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/allattendeesfilter.displayvalue/expression.js @@ -0,0 +1,48 @@ +import("system.result"); +import("Person_lib"); +import("Sql_lib"); +import("system.SQLTYPES"); + +var maskingUtils = new SqlMaskingUtils(); +var countAttendeesContact = newSelect(["COUNT(*)"]) +.from("TASKATTENDEES") +.where("TASKATTENDEES.TASK_ID = TASK.TASKID") +.and("TASKATTENDEES.CONTACT_ID is not null"); + +var getAttendeeName = newSelect([maskingUtils.concatWithSeparator(["FIRSTNAME", "LASTNAME"])]) +.from("CONTACT") +.join("PERSON", newWhere("CONTACT.PERSON_ID = PERSON.PERSONID")) +.where("CONTACT.CONTACTID", + newSelect([maskingUtils.max("CONTACT_ID")]) // Get only one Contact + .from("TASKATTENDEES") + .where("TASKATTENDEES.TASK_ID = TASK.TASKID")).toString(); + +getAttendeeName = "(" + getAttendeeName + ")"; + +var getAttendeeDepartmentName = newSelect("ATTRIBUTE_NAME") +.from("AB_ATTRIBUTE") +.where("AB_ATTRIBUTE.AB_ATTRIBUTEID", + newSelect([maskingUtils.max("DEPARTMENT_ID")]) // Get only one Department + .from("TASKATTENDEES") + .where("TASKATTENDEES.TASK_ID = TASK.TASKID") + .and("TASKATTENDEES.DEPARTMENT_ID is not null")).toString(); + +getAttendeeDepartmentName = "(" + getAttendeeDepartmentName + ")"; + +var countAttendeesDepartment = newSelect(["count(*)"]) +.from("TASKATTENDEES") +.where("TASKATTENDEES.TASK_ID = TASK.TASKID") +.and("TASKATTENDEES.DEPARTMENT_ID is not null"); + +var caseWhen = SqlBuilder.caseWhen(countAttendeesContact, 1, SqlBuilder.GREATER(), SQLTYPES.INTEGER) + .then(maskingUtils.concatWithSeparator([getAttendeeName, "'. . .'"])) + .when(newWhere(countAttendeesContact, 1,SqlBuilder.EQUAL(), SQLTYPES.INTEGER) + .and(countAttendeesDepartment, 0, SqlBuilder.GREATER(), SQLTYPES.INTEGER)) + .then(maskingUtils.concatWithSeparator([getAttendeeName, "'. . .'"])) + .when(countAttendeesContact, 1, SqlBuilder.EQUAL(), SQLTYPES.INTEGER) + .then(getAttendeeName) + .elseValue( + SqlBuilder.caseWhen(countAttendeesDepartment, 1, SqlBuilder.EQUAL(), SQLTYPES.INTEGER) + .then(getAttendeeDepartmentName) + .elseValue(maskingUtils.concatWithSeparator([getAttendeeDepartmentName.toString(), "'. . .'"]))) +result.string(caseWhen); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/connections.value/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/connections.value/expression.js new file mode 100644 index 0000000000..2047347c42 --- /dev/null +++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/connections.value/expression.js @@ -0,0 +1,12 @@ +import("system.result"); +import("Sql_lib"); +import("system.SQLTYPES"); + +var count = newSelect(["COUNT(*)"]).from("TASKLINK").where("TASKLINK.TASK_ID = TASK.TASKID"); + +result.string( + SqlBuilder.caseWhen(count, 0, SqlBuilder.GREATER(), SQLTYPES.INTEGER) + .then( + new SqlMaskingUtils().cast("(" + count.toString() + ")", SQLTYPES.CHAR, 2)) + .elseString("") + .toString()); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js deleted file mode 100644 index 8e7ea35c7f..0000000000 --- a/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("Person_lib"); - -var subSql = PersUtils.getResolvingDisplaySubSql("TASK.EDITOR_CONTACT_ID"); -result.string(subSql); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/maturitydate_day.value/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/maturitydate_day.value/expression.js new file mode 100644 index 0000000000..e2374fe39c --- /dev/null +++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/maturitydate_day.value/expression.js @@ -0,0 +1,2 @@ +import("system.result"); +result.string("cast(MATURITY_DATE as DATE)"); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_contact_id.displayvalue/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_contact_id.displayvalue/expression.js index 6c6d6087a2..0454543183 100644 --- a/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_contact_id.displayvalue/expression.js +++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_contact_id.displayvalue/expression.js @@ -1,6 +1,8 @@ import("system.result"); import("Person_lib"); +import("Contact_lib"); //TODO: try to find a better solution for this -> #TITLE-mechanic when available var subSql = PersUtils.getResolvingDisplaySubSql("TASK.REQUESTOR_CONTACT_ID"); -result.string(subSql); \ No newline at end of file + +result.string(subSql); diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/startdate_day.value/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/startdate_day.value/expression.js new file mode 100644 index 0000000000..d79f6a600f --- /dev/null +++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/startdate_day.value/expression.js @@ -0,0 +1,2 @@ +import("system.result"); +result.string("cast(START_DATE as DATE)"); \ No newline at end of file diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 13fce6618c..fdd7e1d874 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -12465,6 +12465,67 @@ Bitte Datumseingabe prüfen</value> <entry> <key>copy</key> </entry> + <entry> + <key>Attendees cannot be assigned repeatedly!</key> + <value>Teilnehmer können nicht mehrmals zugewiesen werden!</value> + </entry> + <entry> + <key>Departments cannot be assigned repeatedly!</key> + <value>Abteilungen können nicht mehrmals zugewiesen werden!</value> + </entry> + <entry> + <key>Appointments/Tasks</key> + <value>Aufgaben/Termine</value> + </entry> + <entry> + <key>All tasks that are not completed and assigned to me</key> + <value>Alle Aufgaben, die nicht abgeschlossen und mir zugeordnet sind</value> + </entry> + <entry> + <key>Open Admin View</key> + <value>Admin-Ansicht öffnen</value> + </entry> + <entry> + <key>Attendees</key> + <value>Bearbeiter</value> + </entry> + <entry> + <key>Verknüpfungen</key> + </entry> + <entry> + <key>Attendee</key> + <value>Bearbeiter</value> + </entry> + <entry> + <key>My Tasks</key> + <value>Meine Aufgaben</value> + </entry> + <entry> + <key>KeywordTest3</key> + </entry> + <entry> + <key>Task Attendees</key> + <value>Aufgaben Bearbeiter</value> + </entry> + <entry> + <key>KeywordTest4</key> + </entry> + <entry> + <key>KeywordTest5</key> + </entry> + <entry> + <key>Einzelaufgaben erstellen</key> + </entry> + <entry> + <key>Erledigt setzen</key> + </entry> + <entry> + <key>KeywordTest1</key> + </entry> + <entry> + <key>Grouptask</key> + <value>Guppenaufgabe</value> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/Task/Task.aod b/neonContext/Task/Task.aod index 2852eb6516..b96aacdb12 100644 --- a/neonContext/Task/Task.aod +++ b/neonContext/Task/Task.aod @@ -4,6 +4,7 @@ <title>Task</title> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/neonContext/Task/documentation.adoc</documentation> + <icon>VAADIN:TASKS</icon> <mainView>TaskMain_view</mainView> <filterView>TaskFilter_view</filterView> <editView>TaskEdit_view</editView> @@ -26,5 +27,17 @@ <name>83309ef0-d1c0-4f74-bb44-41fd8e054b4b</name> <view>TaskMain_view</view> </neonViewReference> + <neonViewReference> + <name>39e8b275-eb2a-447a-9d9b-c2bc3a080bb7</name> + <view>TaskMainAttendees_view</view> + </neonViewReference> + <neonViewReference> + <name>2f982d26-4d7b-4c9c-9123-60b786c3ecb8</name> + <view>TaskDescriptionMain_view</view> + </neonViewReference> + <neonViewReference> + <name>b75d2d2d-59a6-486a-8899-3a7a81f130df</name> + <view>TaskDrawer_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonContext/TaskAttendees/TaskAttendees.aod b/neonContext/TaskAttendees/TaskAttendees.aod new file mode 100644 index 0000000000..8afa93ceb8 --- /dev/null +++ b/neonContext/TaskAttendees/TaskAttendees.aod @@ -0,0 +1,29 @@ +<?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>TaskAttendees</name> + <title>Task Attendees</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>TaskAttendees_entity</entity> + <references> + <neonViewReference> + <name>4ef4b596-03a6-44e5-922b-fe6daac371fe</name> + <view>TaskAttendeesMultiContactEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>5ea0b730-1be8-439c-965a-73d49249a767</name> + <view>TaskAttendeesMultiDepartmentEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>0d1a3c66-10cc-47dd-ad37-9d231ebb4672</name> + <view>TaskAttendeesFilterDepartment_view</view> + </neonViewReference> + <neonViewReference> + <name>ac56c8c7-9316-4cbf-8655-261f1e1c1fbd</name> + <view>TaskAttendeesFitlerContacts_view</view> + </neonViewReference> + <neonViewReference> + <name>62b56475-ebfc-4d22-a575-50c9aeaaa05d</name> + <view>TaskAttendeesPreviewList_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonDashboard/Home/Home.aod b/neonDashboard/Home/Home.aod index 9290d02395..dfb2c2250e 100644 --- a/neonDashboard/Home/Home.aod +++ b/neonDashboard/Home/Home.aod @@ -34,7 +34,7 @@ <neonDashlet> <name>MytasksDashlet</name> <viewName>TaskFilter_view</viewName> - <configName>mytasks</configName> + <configName>DashletConfig</configName> <uiConfiguration> <name>uiConfiguration</name> <xPos v="0" /> diff --git a/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod b/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod index 436b9d871f..4dabb474a8 100644 --- a/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod +++ b/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_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.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> <name>OrganisationTaskAppointment_view</name> - <title>ToDo</title> + <title>Appointments/Tasks</title> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> <boxLayout> diff --git a/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod b/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod index 02d235196c..57bffe7767 100644 --- a/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod +++ b/neonView/PersonTaskAppointment_view/PersonTaskAppointment_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.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> <name>PersonTaskAppointment_view</name> - <title>ToDo</title> + <title>Appointments/Tasks</title> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> <boxLayout> diff --git a/neonView/TaskAttendeesFilterDepartment_view/TaskAttendeesFilterDepartment_view.aod b/neonView/TaskAttendeesFilterDepartment_view/TaskAttendeesFilterDepartment_view.aod new file mode 100644 index 0000000000..96b51b5c79 --- /dev/null +++ b/neonView/TaskAttendeesFilterDepartment_view/TaskAttendeesFilterDepartment_view.aod @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>TaskAttendeesFilterDepartment_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>NORMAL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>TableDep</name> + <isEditable v="false" /> + <columns> + <neonTableColumn> + <name>9baa5cbf-032e-43ff-a33a-3bd44af41bce</name> + <entityField>DEPARTMENT_ID</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/TaskAttendeesFitlerContacts_view/TaskAttendeesFitlerContacts_view.aod b/neonView/TaskAttendeesFitlerContacts_view/TaskAttendeesFitlerContacts_view.aod new file mode 100644 index 0000000000..2634e2b928 --- /dev/null +++ b/neonView/TaskAttendeesFitlerContacts_view/TaskAttendeesFitlerContacts_view.aod @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>TaskAttendeesFitlerContacts_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>TableContacts</name> + <isEditable v="false" /> + <columns> + <neonTableColumn> + <name>a08d9d8e-e445-4afc-b7a8-60bdefe0b931</name> + <entityField>CONTACT_ID</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/TaskAttendeesMultiContactEdit_view/TaskAttendeesMultiContactEdit_view.aod b/neonView/TaskAttendeesMultiContactEdit_view/TaskAttendeesMultiContactEdit_view.aod new file mode 100644 index 0000000000..126c82ca03 --- /dev/null +++ b/neonView/TaskAttendeesMultiContactEdit_view/TaskAttendeesMultiContactEdit_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.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>TaskAttendeesMultiContactEdit_view</name> + <title>Attendees</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + <autoHeight v="true" /> + </boxLayout> + </layout> + <children> + <genericMultipleViewTemplate> + <name>GenericMultiple</name> + <title>Attendees</title> + <columns> + <neonGenericMultipleTableColumn> + <name>2c45d8f2-1784-489f-91b3-e13a65b62074</name> + <entityField>CONTACT_ID</entityField> + <fullWidth v="true" /> + </neonGenericMultipleTableColumn> + </columns> + </genericMultipleViewTemplate> + </children> +</neonView> diff --git a/neonView/TaskAttendeesMultiDepartmentEdit_view/TaskAttendeesMultiDepartmentEdit_view.aod b/neonView/TaskAttendeesMultiDepartmentEdit_view/TaskAttendeesMultiDepartmentEdit_view.aod new file mode 100644 index 0000000000..09d8dfcf0f --- /dev/null +++ b/neonView/TaskAttendeesMultiDepartmentEdit_view/TaskAttendeesMultiDepartmentEdit_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.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>TaskAttendeesMultiDepartmentEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericMultipleViewTemplate> + <name>GenericMultiple</name> + <title>Departments</title> + <devices> + <element>MOBILE</element> + <element>TABLET</element> + <element>DESKTOP</element> + </devices> + <columns> + <neonGenericMultipleTableColumn> + <name>11e2f756-b314-448a-b6d7-ec19bc9f1e94</name> + <entityField>DEPARTMENT_ID</entityField> + <fullWidth v="true" /> + </neonGenericMultipleTableColumn> + </columns> + </genericMultipleViewTemplate> + </children> +</neonView> diff --git a/neonView/TaskAttendeesPreviewList_view/TaskAttendeesPreviewList_view.aod b/neonView/TaskAttendeesPreviewList_view/TaskAttendeesPreviewList_view.aod new file mode 100644 index 0000000000..e559d23dc7 --- /dev/null +++ b/neonView/TaskAttendeesPreviewList_view/TaskAttendeesPreviewList_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.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>TaskAttendeesPreviewList_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <titledListViewTemplate> + <name>Title</name> + <isDeletable v="false" /> + <isEditable v="false" /> + <columns> + <neonTitledListTableColumn> + <name>3628e6a8-4861-4d9c-b18e-2e02a7335615</name> + <entityField>isDepartment</entityField> + </neonTitledListTableColumn> + <neonTitledListTableColumn> + <name>691ae449-f7fd-4e1a-9552-4afadcdf7e57</name> + <entityField>rowID</entityField> + </neonTitledListTableColumn> + </columns> + </titledListViewTemplate> + </children> +</neonView> diff --git a/neonView/TaskDescriptionMain_view/TaskDescriptionMain_view.aod b/neonView/TaskDescriptionMain_view/TaskDescriptionMain_view.aod new file mode 100644 index 0000000000..ad315a1123 --- /dev/null +++ b/neonView/TaskDescriptionMain_view/TaskDescriptionMain_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.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>TaskDescriptionMain_view</name> + <title>Description</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericViewTemplate> + <name>Description</name> + <showDrawer v="true" /> + <drawerCaption>Description</drawerCaption> + <fixedDrawer v="true" /> + <hideLabels v="true" /> + <title>Description</title> + <fields> + <entityFieldLink> + <name>a1c63ef7-13bc-4bf7-b0a6-e1a0db38e82d</name> + <entityField>DESCRIPTION</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/TaskDrawer_view/TaskDrawer_view.aod b/neonView/TaskDrawer_view/TaskDrawer_view.aod new file mode 100644 index 0000000000..cd8c1505a6 --- /dev/null +++ b/neonView/TaskDrawer_view/TaskDrawer_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.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>TaskDrawer_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <drawerLayout> + <name>layout</name> + <layoutCaption>Tasks</layoutCaption> + </drawerLayout> + </layout> + <children> + <neonViewReference> + <name>b087ccaa-02a0-4db9-86e6-c1f04a13a4b1</name> + <entityField>#ENTITY</entityField> + <view>TaskFilter_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/TaskEdit_view/TaskEdit_view.aod b/neonView/TaskEdit_view/TaskEdit_view.aod index 2b71627deb..88f578ec22 100644 --- a/neonView/TaskEdit_view/TaskEdit_view.aod +++ b/neonView/TaskEdit_view/TaskEdit_view.aod @@ -1,7 +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.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> <name>TaskEdit_view</name> + <title>Task</title> <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:TASKS</icon> + <quickEntry v="7" /> <layout> <boxLayout> <name>layout</name> @@ -41,20 +44,30 @@ <name>0f600024-eb83-445c-8eb9-62bcf9e95313</name> <entityField>PRIORITY</entityField> </entityFieldLink> - <entityFieldLink> - <name>71d2b122-1687-454a-ae60-7e68aa83106c</name> - <entityField>PROTECTIONLEVEL</entityField> - </entityFieldLink> <entityFieldLink> <name>fd41b0ee-cae4-40b5-8aad-45740f4d6268</name> <entityField>REQUESTOR_CONTACT_ID</entityField> </entityFieldLink> <entityFieldLink> - <name>8428cbf6-7df0-4f7e-b6d6-5ab17e266028</name> - <entityField>EDITOR_CONTACT_ID</entityField> + <name>c7cad5f4-9f3b-480a-805e-1f135284de40</name> + <entityField>PROTECTIONLEVEL</entityField> + </entityFieldLink> + <entityFieldLink> + <name>54ff8299-5c57-42be-9a2b-4fa474818b29</name> + <entityField>createSingleTasks</entityField> </entityFieldLink> </fields> </genericViewTemplate> + <neonViewReference> + <name>9c74cc4c-307a-41a0-b44d-7d1fd61367a1</name> + <entityField>TaskAttendeesMulti</entityField> + <view>TaskAttendeesMultiContactEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>826658d1-627a-476b-bc24-28a80c3435ac</name> + <entityField>TaskDepartmentsMulti</entityField> + <view>TaskAttendeesMultiDepartmentEdit_view</view> + </neonViewReference> <neonViewReference> <name>ee35d86f-aef9-4ebd-b90a-d31b32cc3d5f</name> <entityField>Links</entityField> diff --git a/neonView/TaskFilter_view/TaskFilter_view.aod b/neonView/TaskFilter_view/TaskFilter_view.aod index faced0e152..fdc4f0d16b 100644 --- a/neonView/TaskFilter_view/TaskFilter_view.aod +++ b/neonView/TaskFilter_view/TaskFilter_view.aod @@ -5,24 +5,16 @@ <filterable v="true" /> <dashletConfigurations> <neonDashletConfiguration> - <name>mytasks</name> - <title>My tasks</title> - <description>Tasks for which I am responsible</description> - <fragment>Task/filter?search=eyJ0eXBlIjoiZ3JvdXAiLCJvcGVyYXRvciI6IkFORCIsImNoaWxkcyI6W3sidHlwZSI6InJvdyIsIm5hbWUiOiJTVEFUVVMiLCJvcGVyYXRvciI6Ik5PVF9FUVVBTCIsInZhbHVlIjoiRU5ERUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwia2V5IjoiRU5ERUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwiY29udGVudHR5cGUiOiJURVhUIn1dfSXc</fragment> - <singleton v="true" /> - <requiresConfiguration v="false" /> - <storeRoles /> + <name>DashletConfig</name> + <title>My Tasks</title> + <description>All tasks that are not completed and assigned to me</description> + <fragment>Task/filter</fragment> + <provider></provider> <icon>VAADIN:TASKS</icon> - <categories> - <neonDashletCategory> - <name>contactmanagement</name> - <title>Contact Management</title> - </neonDashletCategory> - </categories> <parameters> <neonDashletParameter> - <name>FilterOnlyOwnTask_param</name> - <value>true</value> + <name>dashletFilter_param</name> + <value>"true"</value> </neonDashletParameter> </parameters> </neonDashletConfiguration> @@ -35,12 +27,13 @@ <children> <timelineViewTemplate> <name>TasksTimeline</name> - <dateField>MATURITY_DATE</dateField> - <titleField>SUBJECT_DETAILS</titleField> + <dateField>maturityDate_Day</dateField> + <titleField>SUBJECT</titleField> <descriptionField>DESCRIPTION</descriptionField> + <subdescriptionField>allAttendeesFilter</subdescriptionField> <iconIdField>PRIORITY_ICON</iconIdField> <entityField>#ENTITY</entityField> - <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1> + <favoriteActionGroup1>filterActionGroup</favoriteActionGroup1> </timelineViewTemplate> <tableViewTemplate> <name>TasksTable</name> @@ -48,7 +41,7 @@ <titleField>SUBJECT</titleField> <subtitleField>STATUS</subtitleField> <entityField>#ENTITY</entityField> - <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1> + <favoriteActionGroup1>filterActionGroup</favoriteActionGroup1> <linkedColumns> <element>SUBJECT</element> </linkedColumns> @@ -71,21 +64,29 @@ <entityField>REQUESTOR_CONTACT_ID</entityField> </neonTableColumn> <neonTableColumn> - <name>958132c8-386b-4e0a-900c-acf99e551791</name> - <entityField>EDITOR_CONTACT_ID</entityField> + <name>21c9e02e-d7ae-4d0a-9afe-389a80a2b881</name> + <entityField>allAttendeesFilter</entityField> </neonTableColumn> <neonTableColumn> <name>5d11add4-d939-4c8e-9633-efd0c2991837</name> <entityField>PRIORITY</entityField> </neonTableColumn> + <neonTableColumn> + <name>4315233d-5677-4b9c-aabd-019830e06ccf</name> + <entityField>startDate_Day</entityField> + </neonTableColumn> <neonTableColumn> <name>154182d8-bc66-4901-a423-7d3a375d4154</name> - <entityField>MATURITY_DATE</entityField> + <entityField>maturityDate_Day</entityField> </neonTableColumn> <neonTableColumn> <name>2db57789-12bc-4d23-a7b2-850a1a776306</name> <entityField>PROGRESS</entityField> </neonTableColumn> + <neonTableColumn> + <name>1e3feb82-c847-4ed6-ac88-c274c6179ea2</name> + <entityField>connections</entityField> + </neonTableColumn> <neonTableColumn> <name>e3059d13-cec9-4e49-8f1e-176508c0331a</name> <entityField>DESCRIPTION</entityField> @@ -95,7 +96,7 @@ <treeTableViewTemplate> <name>Treetable</name> <entityField>#ENTITY</entityField> - <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1> + <favoriteActionGroup1>filterActionGroup</favoriteActionGroup1> <linkedColumns> <element>SUBJECT</element> </linkedColumns> @@ -118,20 +119,28 @@ </neonTreeTableColumn> <neonTreeTableColumn> <name>b6f0a3f3-5ea8-427a-a02a-4d999e344e07</name> - <entityField>EDITOR_CONTACT_ID</entityField> + <entityField>allAttendeesFilter</entityField> </neonTreeTableColumn> <neonTreeTableColumn> <name>834c9424-3ad3-474d-90b2-7eb879e3ee86</name> <entityField>PRIORITY</entityField> </neonTreeTableColumn> + <neonTreeTableColumn> + <name>542675c3-b44a-43b7-b664-12037f9929f6</name> + <entityField>startDate_Day</entityField> + </neonTreeTableColumn> <neonTreeTableColumn> <name>38aa316c-21ba-4ea6-9e6b-43b63fa24382</name> - <entityField>MATURITY_DATE</entityField> + <entityField>maturityDate_Day</entityField> </neonTreeTableColumn> <neonTreeTableColumn> <name>8c3b89a3-93ea-4d55-ac8d-4a2525ae938e</name> <entityField>PROGRESS</entityField> </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6556de03-17ac-4573-859d-ac50d2b467dd</name> + <entityField>connections</entityField> + </neonTreeTableColumn> <neonTreeTableColumn> <name>dc66b99a-1387-425a-ad2b-3ab44ee5234a</name> <entityField>DESCRIPTION</entityField> diff --git a/neonView/TaskMainAttendees_view/TaskMainAttendees_view.aod b/neonView/TaskMainAttendees_view/TaskMainAttendees_view.aod new file mode 100644 index 0000000000..36762c3f48 --- /dev/null +++ b/neonView/TaskMainAttendees_view/TaskMainAttendees_view.aod @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>TaskMainAttendees_view</name> + <title>Editor</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <neonViewReference> + <name>07524a9b-1fd8-4e87-9325-d90ae0857a53</name> + <entityField>TaskAttendeesMulti</entityField> + <view>TaskAttendeesFitlerContacts_view</view> + </neonViewReference> + <neonViewReference> + <name>a24a9386-183e-499e-bd2d-8842d7c86b8a</name> + <entityField>TaskDepartmentsMulti</entityField> + <view>TaskAttendeesFilterDepartment_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/TaskMain_view/TaskMain_view.aod b/neonView/TaskMain_view/TaskMain_view.aod index a45d314537..98f41aff60 100644 --- a/neonView/TaskMain_view/TaskMain_view.aod +++ b/neonView/TaskMain_view/TaskMain_view.aod @@ -9,27 +9,18 @@ </masterSlaveLayout> </layout> <children> - <genericViewTemplate> - <name>details</name> - <showDrawer v="true" /> - <drawerCaption></drawerCaption> - <fixedDrawer v="true" /> - <hideLabels v="false" /> + <neonViewReference> + <name>8bf0ebb9-e5ba-4bfe-88f0-f00a45457b23</name> <entityField>#ENTITY</entityField> - <title>Details</title> - <fields> - <entityFieldLink> - <name>e95918f5-d21e-4c99-8d05-d70811aa3d89</name> - <entityField>PROTECTIONLEVEL</entityField> - </entityFieldLink> - <entityFieldLink> - <name>fea59f13-750b-427d-bf33-cc1bead95446</name> - <entityField>DESCRIPTION</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> + <view>TaskDescriptionMain_view</view> + </neonViewReference> + <neonViewReference> + <name>ae732214-5db0-469c-ba3e-921e245e0659</name> + <entityField>#ENTITY</entityField> + <view>TaskMainAttendees_view</view> + </neonViewReference> <neonViewReference> - <name>4211b2cf-3a1f-4447-ad1c-f521d2d3f258</name> + <name>0a15d720-0583-47c1-a089-a9683fcec2db</name> <entityField>ModuleTrees</entityField> <view>ModuleTree_view</view> </neonViewReference> diff --git a/neonView/TaskPreview_view/TaskPreview_view.aod b/neonView/TaskPreview_view/TaskPreview_view.aod index ba8dd59ebf..8527470e83 100644 --- a/neonView/TaskPreview_view/TaskPreview_view.aod +++ b/neonView/TaskPreview_view/TaskPreview_view.aod @@ -13,7 +13,8 @@ <name>Header</name> <iconField>PRIORITY_ICON</iconField> <titleField>SUBJECT</titleField> - <favoriteAction1>newActivity</favoriteAction1> + <favoriteAction1>setCompletePreview</favoriteAction1> + <favoriteAction2>newActivity</favoriteAction2> <entityField>#ENTITY</entityField> </cardViewTemplate> <genericViewTemplate> @@ -42,20 +43,21 @@ <name>ebdffed8-4999-4ec1-ac4d-c22514dfed0c</name> <entityField>PRIORITY</entityField> </entityFieldLink> - <entityFieldLink> - <name>d9e4daef-84df-415c-9be7-3238c2760c07</name> - <entityField>PROTECTIONLEVEL</entityField> - </entityFieldLink> <entityFieldLink> <name>05de9afc-429e-46a8-8e3b-2ff689ed090e</name> <entityField>REQUESTOR_CONTACT_ID</entityField> </entityFieldLink> <entityFieldLink> - <name>bbf1a736-acf9-4b41-9df9-5675fc6d8943</name> - <entityField>EDITOR_CONTACT_ID</entityField> + <name>70d94d50-0dc3-4407-8cbb-b6013215e548</name> + <entityField>PROTECTIONLEVEL</entityField> </entityFieldLink> </fields> </genericViewTemplate> + <neonViewReference> + <name>4a904f32-e8f2-4aea-ae91-c7783354edb6</name> + <entityField>AllTaskAttendees</entityField> + <view>TaskAttendeesPreviewList_view</view> + </neonViewReference> <neonViewReference> <name>8cf85386-d25f-459a-a2a1-991c9e3287b6</name> <entityField>Links</entityField> diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod index 945bcb67a3..f7c6b1592f 100644 --- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod +++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod @@ -5,6 +5,7 @@ <customized /> <mailGlobalUserServerEnabled v="true" /> <projectName>ADITO xRM</projectName> + <defaultDataAlias>Data_alias</defaultDataAlias> <jditoMaxContentSize v="57671680" /> <mailEnableUserDefault v="true" /> <mailDefaultMailserver>mailServerIMAP</mailDefaultMailserver> diff --git a/process/ActivityTask_lib/process.js b/process/ActivityTask_lib/process.js index c15bd58554..2dccb611f4 100644 --- a/process/ActivityTask_lib/process.js +++ b/process/ActivityTask_lib/process.js @@ -1,3 +1,4 @@ +import("system.logging"); import("system.entities"); import("system.vars"); import("system.util"); @@ -560,6 +561,120 @@ TaskUtils.createNewTask = function(pRowId, pAdditionalLinks, pParentContext, pPa _ActivityTaskUtils._createNew("Task", pRowId, pAdditionalLinks, pParentContext, pParentId, pParams, pDocuments) } +/** + * Create a new task within the database-scope. + * This funciton will insert a complete new task into the database. + * + * @param {Object} pDataPreset={} (required) <p> + * An object that contains the data for the task. + * Required properties in data preset: + * <ul> + * <li>subject</li> + * <li>requestorContactId</li> + * </ul> + * Optional properties in data preset: + * <ul> + * <li>subject</li> + * <li>status - default: new</li> + * <li>progress - default: 0%</li> + * <li>priority - default: low</li> + * <li>requestorContactId</li> + * <li>description</li> + * <li>startDate - default: current date</li> + * <li>maturityDate - default: one week</li> + * </ul> + * @param {string|string[]} pTaskAttendees <p> + * ContactIds of the Attendees.<br> + * If Grouptask you'll need an Array. + * @param {Array} pTaskLinks (optional) <p> + * 2D array where each element is an array of<br> + * context name and objectid, for example: + * <br><pre>[["Organisation", + * "2d1e505c-a75a-4fa6-826b-7224a97d5b51"]]</pre> + * @return {Object} <p> + * Object where the following are filled: + * <ul> + * <li>activityId</li> + * </ul> + */ +TaskUtils.insertNewTask = function(pDataPreset, pTaskLinks, pTaskAttendees) +{ + var groupTask = pTaskAttendees instanceof Array; + var dataPreset = pDataPreset || {}; + var creationDate = datetime.date(); + var startDate = dataPreset.startDate || creationDate; + var config; + var taskId = util.getNewUUID(); + + config = entities.createConfigForAddingRows(); + config.entity("Task_entity"); + + var fields = { + "SUBJECT": dataPreset.subject, + "STATUS": dataPreset.status || "NEW", + "PROGRESS": dataPreset.progress || "TASKPROG0", + "PRIORITY": dataPreset.priority || "TASKPRIOLOW", + "REQUESTOR_CONTACT_ID": dataPreset.requestorContactId, + "START_DATE": startDate.toString(), + "MATURITY_DATE": dataPreset.maturityDate.toString() || eMath.addInt(startDate, datetime.ONE_WEEK).toString(), + "TASKID": taskId, + "createSingleTasks": false + } + + _addTaskField("DESCRIPTION", dataPreset.description); + + if (pTaskLinks) { + var configTaskLinks = entities.createConfigForAddingRows(); + + for (let i = 0; i < pTaskLinks.length; i++) { + configTaskLinks.fieldValues({ + "OBJECT_TYPE": pTaskLinks[i][0], + "OBJECT_ROWID": pTaskLinks[i][1] + }); + + _addTaskField("Links", configTaskLinks); + } + } + + if(pTaskAttendees) { + var configTaskAttendee = entities.createConfigForAddingRows(); + + if(!groupTask) { + configTaskAttendee.fieldValues({ + "CONTACT_ID": pTaskAttendees + }) + _addTaskField("TaskAttendeesMulti", configTaskAttendee); + } else { + configTaskAttendee.fieldValues({ + "CONTACT_ID": pTaskAttendees[0] + }) + _addTaskField("TaskAttendeesMulti", configTaskAttendee); + } + } + + config.fieldValues(fields); + taskId = entities.createRow(config); + + if(groupTask) { + for(let i = 1; i < pTaskAttendees.length; i++) + { + TaskUtils.insertAttendee(taskId, pTaskAttendees[i]) + } + } + + return { + taskId: taskId + }; + + function _addTaskField(pField, pValue, pDefaultValue) + { + if (pValue || pDefaultValue) + { + fields[pField] = pValue ? pValue : pDefaultValue; + } + } +}; + /** * Checks whether a record <i><u>(e.g.: person or company)</u></i> <br>with the given parameters has linked tasks or not. * @@ -576,10 +691,10 @@ TaskUtils.hasTasks = function(pRowId, pObjectType) if (pRowId != "" && pObjectType != "") { var taskCount = newSelect("count(*)") - .from("TASKLINK") - .where("TASKLINK.OBJECT_TYPE", pObjectType) - .and("TASKLINK.OBJECT_ROWID", pRowId) - .cell(); + .from("TASKLINK") + .where("TASKLINK.OBJECT_TYPE", pObjectType) + .and("TASKLINK.OBJECT_ROWID", pRowId) + .cell(); if (taskCount != "0") return true; @@ -589,6 +704,64 @@ TaskUtils.hasTasks = function(pRowId, pObjectType) else return true; } + +/** + * Adds an Attendee to an existing Task.<br> + * In the database table 'TASKATTENDEES'. + * + * @param {String} pTaskId <p> + * The id of the task.<br> + * @param {String} pContactId <p> + * The id of the contact.<br> + */ + +TaskUtils.insertAttendee = function (pTaskId, pContactId) +{ + var attendeesCols = [ + "TASKATTENDEESID", + "TASK_ID", + "CONTACT_ID" + ]; + + var attendeesVals = [ + util.getNewUUID(), + pTaskId, + pContactId + ]; + + db.insertData("TASKATTENDEES", attendeesCols, null, attendeesVals); +} + +/** + * Creates links for an activity.<br> + * In the database table 'TASKLINK'. + * + * @param {String} pTaskId <p> + * The id of the task.<br> + * @param {String} pObjectType <p> + * The type of the object.<br> + * @param {String} pRowId <p> + * The id of the row.<br> + */ +TaskUtils.insertLink = function (pTaskId, pObjectType, pRowId) +{ + var linkCols = [ + "TASKLINKID", + "TASK_ID", + "OBJECT_ROWID", + "OBJECT_TYPE" + ]; + + var linkVals = [ + util.getNewUUID(), + pTaskId, + pRowId, + pObjectType + ]; + + db.insertData("TASKLINK", linkCols, null, linkVals); +} + /** * Returns the name of the icon, to the given status. * Which can used in a icon process. @@ -638,12 +811,12 @@ TaskUtils.addLinkRecords = function(pObjectIdField, pRowIdField, pAdditionalLink TaskUtils.getOpenTaskCount = function(pRowId, pObjectType) { var taskCount = newSelect("count(*)") - .from("TASKLINK") - .join("TASK", "TASKLINK.TASK_ID = TASK.TASKID") - .where("TASKLINK.OBJECT_TYPE", pObjectType) - .and("TASKLINK.OBJECT_ROWID", pRowId) - .and("TASK.STATUS", $KeywordRegistry.taskStatus$ended(), SqlBuilder.NOT_EQUAL()) - .cell(); + .from("TASKLINK") + .join("TASK", "TASKLINK.TASK_ID = TASK.TASKID") + .where("TASKLINK.OBJECT_TYPE", pObjectType) + .and("TASKLINK.OBJECT_ROWID", pRowId) + .and("TASK.STATUS", $KeywordRegistry.taskStatus$ended(), SqlBuilder.NOT_EQUAL()) + .cell(); return parseInt(taskCount); } diff --git a/process/Organisation_lib/process.js b/process/Organisation_lib/process.js index 1e8fd5a29e..a16a0b0488 100644 --- a/process/Organisation_lib/process.js +++ b/process/Organisation_lib/process.js @@ -184,19 +184,28 @@ var activityData = activityQuery.table() .join("\n"); //tasks - var taskData = newSelect("TASK.SUBJECT, TASK.DESCRIPTION, TASK.STATUS, FIRSTNAME, LASTNAME") + var maskingUtils = new SqlMaskingUtils(); + + var taskData = newSelect("TASK.SUBJECT, TASK.DESCRIPTION, TASK.STATUS, " + maskingUtils.concatWithSeparator([ + maskingUtils.getGroupConcat( + maskingUtils.concatenate(["FIRSTNAME", "' '", "LASTNAME"]), "', '") + , maskingUtils.getGroupConcat("ATTRIBUTE_NAME", "', '")], ", ")) .from("TASK") .join("TASKLINK", "TASKLINK.TASK_ID = TASK.TASKID") + .join("TASKATTENDEES", "TASKATTENDEES.TASK_ID = TASK.TASKID") .join("CONTACT", "TASKLINK.OBJECT_ROWID = CONTACTID and (TASKLINK.OBJECT_TYPE = 'Organisation' or TASKLINK.OBJECT_TYPE = 'Person')") - .join("CONTACT c", "TASK.EDITOR_CONTACT_ID = c.CONTACTID") + .leftJoin("CONTACT c", "TASKATTENDEES.CONTACT_ID = c.CONTACTID") .leftJoin("PERSON", "c.PERSON_ID = PERSONID") + .leftJoin("AB_ATTRIBUTE", "AB_ATTRIBUTE.AB_ATTRIBUTEID = TASKATTENDEES.DEPARTMENT_ID") .where("CONTACT.ORGANISATION_ID", pOrgId) + .groupBy("TASK.TASKID") .table(); + taskData.forEach(function (row) { + row[1] = text.html2text(row[1]); row[2] = KeywordUtils.getViewValue($KeywordRegistry.taskStatus(), row[2]); - _joinArrayVals(row, 3, 2); //join FIRSTNAME and LASTNAME together }); taskData = ReportData.begin(["SUBJECT", "INFOTEXT", "STATUS", "RESPONSIBLE"]).add(taskData); diff --git a/process/migrateTask/documentation.adoc b/process/migrateTask/documentation.adoc new file mode 100644 index 0000000000..daa2400587 --- /dev/null +++ b/process/migrateTask/documentation.adoc @@ -0,0 +1,4 @@ += Tasks Migration +This process can be used to, either directly migrate the tasks in the database. + +All tasks editor will be copied to the taskattendees table and the content of the "description" field is converted to HTML. \ No newline at end of file diff --git a/process/migrateTask/migrateTask.aod b/process/migrateTask/migrateTask.aod new file mode 100644 index 0000000000..6ebea3aa8a --- /dev/null +++ b/process/migrateTask/migrateTask.aod @@ -0,0 +1,11 @@ +<?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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>migrateTask</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/migrateTask/documentation.adoc</documentation> + <process>%aditoprj%/process/migrateTask/process.js</process> + <alias>Data_alias_noAudit</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/migrateTask/process.js b/process/migrateTask/process.js new file mode 100644 index 0000000000..d4b0cc4cac --- /dev/null +++ b/process/migrateTask/process.js @@ -0,0 +1,39 @@ +import("KeywordRegistry_basic"); +import("system.logging"); +import("system.db"); +import("system.vars"); +import("system.util"); +import("system.text"); +import("Sql_lib"); + + +var oldTasks = newSelect(["TASK.DESCRIPTION", "TASK.TASKID", "TASK.EDITOR_CONTACT_ID", "TASK.USER_NEW", "TASK.DATE_NEW"]) +.from("TASK") +.where( + "TASK.TASKID", + newSelect("TASKATTENDEES.TASK_ID") + .from("TASKATTENDEES"), + SqlBuilder.NOT_IN() + ) +.and("TASK.KIND", $KeywordRegistry.taskType$task()) +.table(); + +var statements = []; + +oldTasks.forEach(function (pTask) { + logging.log(text.text2html(pTask[0], true)); + statements.push(newWhereIfSet("TASK.TASKID", pTask[1]) + .buildUpdateStatement({ + "TASK.DESCRIPTION" : text.text2html(pTask[0], true) + }, "TASK")); + + statements.push(new SqlBuilder().buildInsertStatement({ + "TASKATTENDEESID": util.getNewUUID(), + "TASK_ID": pTask[1], + "CONTACT_ID" : pTask[2], + "USER_NEW": pTask[3] || "adito.server", + "DATE_NEW": pTask[4] || vars.get("$sys.date") + }, "TASKATTENDEES")); +}); + +db.execute(statements); diff --git a/report/Organisation_report/Aufgaben.jrxml b/report/Organisation_report/Aufgaben.jrxml index 63b40d5bea..64cbd0961b 100644 --- a/report/Organisation_report/Aufgaben.jrxml +++ b/report/Organisation_report/Aufgaben.jrxml @@ -12,37 +12,37 @@ <band splitType="Stretch"/> </background> <detail> - <band height="16" splitType="Stretch"> + <band height="20" splitType="Stretch"> <textField> - <reportElement x="3" y="0" width="102" height="15" uuid="f4c173de-6106-4330-87c2-b2ce021394ed"/> + <reportElement x="3" y="1" width="102" height="15" uuid="f4c173de-6106-4330-87c2-b2ce021394ed"/> <textElement> <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{SUBJECT}]]></textFieldExpression> </textField> <textField isStretchWithOverflow="true"> - <reportElement x="118" y="0" width="168" height="15" uuid="389fc04e-a659-4ef9-923c-3ff73f5bfd18"/> + <reportElement x="118" y="1" width="168" height="15" uuid="389fc04e-a659-4ef9-923c-3ff73f5bfd18"/> <textElement> <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{INFOTEXT}]]></textFieldExpression> </textField> <textField> - <reportElement x="296" y="0" width="104" height="15" uuid="e8c8b469-8f88-47f0-8056-4a3fe23fd6e5"/> + <reportElement x="300" y="1" width="73" height="15" uuid="e8c8b469-8f88-47f0-8056-4a3fe23fd6e5"/> <textElement> <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{STATUS}]]></textFieldExpression> </textField> - <textField> - <reportElement x="445" y="0" width="100" height="15" uuid="fd1db5d1-8dc3-43ba-a723-da731405325c"/> + <textField isStretchWithOverflow="true"> + <reportElement x="384" y="1" width="143" height="15" uuid="fd1db5d1-8dc3-43ba-a723-da731405325c"/> <textElement> <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{RESPONSIBLE}]]></textFieldExpression> </textField> </band> - <band height="5"> + <band height="7"> <line> <reportElement x="0" y="1" width="555" height="1" uuid="1259315f-6fe1-4e0c-bc4a-81208ef427c6"/> <graphicElement> diff --git a/report/Organisation_report/reportData.jrxml b/report/Organisation_report/reportData.jrxml index ec9c9a8c37..04d3aaa066 100644 --- a/report/Organisation_report/reportData.jrxml +++ b/report/Organisation_report/reportData.jrxml @@ -1,6 +1,6 @@ <?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="Kundenstammblatt" 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.0"/> + <property name="ireport.zoom" value="1.2100000000000002"/> <property name="ireport.x" value="0"/> <property name="ireport.y" value="0"/> <parameter name="myAddr" class="java.lang.String"/> @@ -256,14 +256,14 @@ <textFieldExpression><![CDATA[$R{Description}]]></textFieldExpression> </textField> <textField> - <reportElement x="295" y="20" width="100" height="15" uuid="b3260378-eced-4883-ad0b-8692a3f83547"/> + <reportElement x="300" y="20" width="78" height="15" uuid="b3260378-eced-4883-ad0b-8692a3f83547"/> <textElement> <font size="8"/> </textElement> <textFieldExpression><![CDATA[$R{Status}]]></textFieldExpression> </textField> <textField> - <reportElement x="444" y="20" width="100" height="15" uuid="653a5cd5-4209-4570-b6c5-037285921d1a"/> + <reportElement x="385" y="20" width="100" height="15" uuid="653a5cd5-4209-4570-b6c5-037285921d1a"/> <textElement> <font size="8"/> </textElement> -- GitLab