diff --git a/.liquibase/Data_alias/basic/2021.1.2/changelog.xml b/.liquibase/Data_alias/basic/2021.1.2/changelog.xml index 931906c6849c27e195c1e4686ae9f7783479a8f6..f436574bf0c277174d26d35c7e416962f017c31d 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 0000000000000000000000000000000000000000..b2ae7c95ba8a179fae23a8c827a7a0ab6ffb1064 --- /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 0000000000000000000000000000000000000000..2de952fad00d3584a02170ea993c1f412950d622 --- /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 0000000000000000000000000000000000000000..6786e76ee664b82c2fae1c4f2e8bfb663b588a59 --- /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 147d250c82c2d5df2e8f4fec6a4c89ca6a162276..ef8ebadc8952c74c33a55045c4c76779dd41a35e 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 1a3228fca31d18956820ec38f7b3f8958a2837c4..5bec7adbff122e299ffb84d732950e48b2905eb5 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 62f44c80a9de9dce625c1bac84c67f2debb1010b..0d3eb5b59fffb58664348392a7edcbaaab53be60 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 0000000000000000000000000000000000000000..a79f3d86cc1322f2a348744d7e80a218c67c11d5 --- /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 152dc64c464865e94111cb814206be111f972a6f..58c01635d527d7b7722700fa607fee04731c164e 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 47fc4622916aac692f47be0c0cd750900fcb44ca..37bc32f556eb29135ab1339e0f4d98e9ffa9df11 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 a6942a22dd002328a38cebb291fde6bc7701d51c..864dc4d429f44f90de8fd6cf5699e2c800ebf3ac 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 bf30590d500661ce5b5c167697dc9cabea1c909f..4b39e0dc6708254140a89a27b6d22e5d5fc97a9c 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 6aba8ccb6be6887bd1cc524a12613d8e02f39848..3aa152675972a2cf7627bba7d76bcd2f3610e9a2 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 0000000000000000000000000000000000000000..f90bbf03554bbbb6d3afe5484086eff0dd72e8af --- /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 0000000000000000000000000000000000000000..a286f7265d0067a2c4bce0caba4f41eaa93c0cff --- /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 0000000000000000000000000000000000000000..de962129f9f821d5ac8db481c11beb2f193552db --- /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 0000000000000000000000000000000000000000..f4409f0d98e1d46470e62ded4776f6081e9db7dd --- /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 0000000000000000000000000000000000000000..e819f2e4f9e238b703fcf6b57f1a66d8f01c55cb --- /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 0000000000000000000000000000000000000000..14756eaee06610d30a43f5a6c77036923b8cbb86 --- /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 0000000000000000000000000000000000000000..246beece1e0537e3649fa0eeda40218eaa852864 --- /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 0000000000000000000000000000000000000000..850bb65bdd2f4722edf82d9fbfc1d30f99c677ff --- /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 0000000000000000000000000000000000000000..2569108c2adec1e4fa82f4b00885d7b4d75258c4 --- /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 0000000000000000000000000000000000000000..ce61bc87204ba029673fbc162bf5277c49dae6af --- /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 0000000000000000000000000000000000000000..f2643b0b063086523c73bcaaa44b88e3d30d6ecd --- /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 0000000000000000000000000000000000000000..cf7e83535278cb05b5b7d47ff09740aee2db0041 --- /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 0000000000000000000000000000000000000000..ff915290e6cf007b993f4369dc0bdcd47cd96ee9 --- /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 0000000000000000000000000000000000000000..7d697e8b8145dcd7879458ebdf841ae7d299b6be --- /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 0000000000000000000000000000000000000000..4f1799fbde5d491384c8e5e6fc4790cea4b0fd73 --- /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 0000000000000000000000000000000000000000..2003bc1a40211a97a78f5a394b9cd1411eac8d52 --- /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 0000000000000000000000000000000000000000..7649e4c646069b485f91d2492caeb7b514aaf640 --- /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 0000000000000000000000000000000000000000..217237a000def29d5bcdbef4551edad320d145ff --- /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 0000000000000000000000000000000000000000..b4ccdc34f598ec72f2965fab3b01ae13c517e34e --- /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 66ca5947daa6ffe4207083369a0a564b7424e0e2..5ed8cdb6fa66ea4a85f04f5127a74962d49ebcb9 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 0000000000000000000000000000000000000000..267d8e8163e6eee4e99e0d1ff18500f3e369c928 --- /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 0000000000000000000000000000000000000000..cf73f1e2a3c4acf31c86f28a5120f1728fd55aa1 --- /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 0000000000000000000000000000000000000000..70aefbf84202f8e9600cc7d5360989d42df60cf6 --- /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 0000000000000000000000000000000000000000..70aefbf84202f8e9600cc7d5360989d42df60cf6 --- /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 0000000000000000000000000000000000000000..295d32c8ecdd418e884f017cbc5e618766c400d4 --- /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 0000000000000000000000000000000000000000..c636b6eb771f8f771698782d94bf90c250d11d29 --- /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 0000000000000000000000000000000000000000..e4dccadcce0f7dfc663140814225af7daf5a9f0a --- /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 0000000000000000000000000000000000000000..246beece1e0537e3649fa0eeda40218eaa852864 --- /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 0000000000000000000000000000000000000000..acce89a5913902577bfd43e651dbfb49ad984751 --- /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 ad1d3c7d63b681688b3deaafd83db7a89b24dc03..0000000000000000000000000000000000000000 --- 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 4cc8f2bb8a1e0399e937fc1ad3db093f4c0c590c..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..3a57f271c622082bac9341b1b4932fc7538f0613 --- /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 0000000000000000000000000000000000000000..e36de81867f6b12b0c9fe8ee712a832587f89cc7 --- /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 f15523e7246f5c3c3c6336802201bbdc9c1ad65b..1ad291c450640aca67189f7637f803fdf8c64e77 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 2a448a664be7a87eadd4e5052101b52629ea3118..54dd0674f3950d2efc7698172d5384df8b936e76 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 500687bbf40310a5633b3c9e040e0e3df5eabad3..f5cf5b50aec0e1cd4bd55aabc1c5a14e45d54c06 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 f665fe2dca8da956fc5faee4d60b6fb3e4edddb6..f7917e5b664106725c1a516a4c1e5ea7983f07c8 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 ee23436dbb536eaf7196891941f62bb15384741c..2ec7098f6f9edf7115d2ea72bf1fca9ebf797137 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 5dc868f87908b415ce527da1d5ef7101e806da85..836059117536d68cd2d068d05c022724adf60989 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 06be75dc391630efc92dffbff413d7b9fa2100ab..0000000000000000000000000000000000000000 --- 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 a54eaa531bb911d666ce220e8ecf41da9f740c9e..8678427b7b91fe35e9a1e7d7644616357c17fbcb 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 0000000000000000000000000000000000000000..85b94d6ee92ba2c0977f550f77a5a60cf0d7af16 --- /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 0000000000000000000000000000000000000000..3a57f271c622082bac9341b1b4932fc7538f0613 --- /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 0000000000000000000000000000000000000000..325e6f20a93e503509d42967d5e6bd3d839e4234 --- /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 0000000000000000000000000000000000000000..9e9827a13fe0a08a4e4583ec845b08361e03ab54 --- /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 7d49329d94e2ba34c01b9659db8870b41f2d54e4..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..cda204045d2aba9ae974e0ce2200ba0cc6c852c0 --- /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 0000000000000000000000000000000000000000..1d60a52adde1c935ea0b6f40b9dd3d7cbb3d1a07 --- /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 0000000000000000000000000000000000000000..22dc9fc638d3564b467b04f159b1d47311e6a743 --- /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 0000000000000000000000000000000000000000..cda204045d2aba9ae974e0ce2200ba0cc6c852c0 --- /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 0000000000000000000000000000000000000000..1d60a52adde1c935ea0b6f40b9dd3d7cbb3d1a07 --- /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 0000000000000000000000000000000000000000..e222f367b4ade4a090d0cfa376ac75b8a876a132 --- /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 0000000000000000000000000000000000000000..4f1799fbde5d491384c8e5e6fc4790cea4b0fd73 --- /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 0000000000000000000000000000000000000000..2003bc1a40211a97a78f5a394b9cd1411eac8d52 --- /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 10e91522b8f6759b4aed75f537a646dad012f637..269b40662f3fb8c6cb9cb95a68cc1f8ab94e6e94 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 0000000000000000000000000000000000000000..3c0752cde8e15552e5790d4399be0353fd0168d1 --- /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 c7a5eb886768027f7020cd78e8d135e1c29f69ec..0fd79e39de4a01f38cc563754145ea9d23f1cb07 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 bfea2877c6eecc3503612abe4076f4e337ee51d3..914bcc6d16366bb57e75220f1ea4ce3a1c04d5ea 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 c74072623eb5c8a5bed06b76d70c73084a0815bd..3316842813fad7bb03711ef70da7ed1095e52939 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 0000000000000000000000000000000000000000..c4e8d7df50f8bacffb836dc5dd8120a5565799e8 --- /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 0000000000000000000000000000000000000000..2fd225d57b57fb275c465009982bef3ea01a0e80 --- /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 0000000000000000000000000000000000000000..7168bcf291e5ede4f611371b27ca8b5506530fce --- /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 0000000000000000000000000000000000000000..1678bcb52fa2ad4add436c30a31eac51de84eba9 --- /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 0000000000000000000000000000000000000000..83589697b4bbd94fe3b7f66a86f3fb0d1e5c5e9d --- /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 a59a05ae62f0fd5c2f51209fcf1d86c4b1d4df3a..4c5d4c75919e9e55be5db1cbeb590523b4f09dfe 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 0000000000000000000000000000000000000000..4b299ecbce1e9f4ecafed7357d8d090be7b55624 --- /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 0000000000000000000000000000000000000000..2047347c42c975a792b8325bc6c49e016a81c91e --- /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 8e7ea35c7f489e257f771a9f67d1672d35817c4b..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..e2374fe39c7cdf4456d55a1cfb15bb48f49d9712 --- /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 6c6d6087a2615c447bc2b84294d4e029b1cde9ba..0454543183a4bccd7f12af16b488300c30d1c026 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 0000000000000000000000000000000000000000..d79f6a600ff7730470a2cd23571474feea040b29 --- /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 13fce6618cf0d27feb7fe4678ea53d17a9d4dbdd..fdd7e1d8744f91e6e29efe3e2d841e2365ca238b 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 2852eb65161916a5c144d5ab2c2ec94891364116..b96aacdb1218ed3753d8107e5fc1183c4b5b1582 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 0000000000000000000000000000000000000000..8afa93ceb8ff7ab43865fbf855d7070c4e04fb4f --- /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 9290d02395d6a8e5c70dee0003890a9943e82461..dfb2c2250edb6cb90333a6dd3907935513f8a1a5 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 436b9d871f4fad7f504e63a84f0f4c9863b8613f..4dabb474a80b65ec06a102471b3ba6b3ab677523 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 02d235196c7b0a862a9125aefc5e9f9d5c7a3cdd..57bffe776776b375f83d71f150f284a315224b1e 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 0000000000000000000000000000000000000000..96b51b5c794eb623a4e0f55a43e5e291fed67ab2 --- /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 0000000000000000000000000000000000000000..2634e2b9287d6b96ff91b1d99bbbd9d72ae3dfe5 --- /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 0000000000000000000000000000000000000000..126c82ca034e10ba895aad1f285f375ad2b2dd91 --- /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 0000000000000000000000000000000000000000..09d8dfcf0fe83cda4577caf6503a24f32632388e --- /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 0000000000000000000000000000000000000000..e559d23dc7695558800f48b543f90b090779fd8d --- /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 0000000000000000000000000000000000000000..ad315a1123e0a323599bf649a4a0987a0503ee2c --- /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 0000000000000000000000000000000000000000..cd8c1505a642e4cf0e07345b99318241013b40ec --- /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 2b71627debb49c2810bf855c04f4d656759c0cd3..88f578ec22b627c79a5e23423f3d042b0164b07e 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 faced0e15204ee9aeb0cb85500539ea28f127d32..fdc4f0d16b344ba7d9f28e3f7743ff475ed08e40 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 0000000000000000000000000000000000000000..36762c3f48bfccc236e1a7f325d8d82ae99fc86c --- /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 a45d31453728d8ffc620ac13e75c8f4b8f73b881..98f41aff60a1a4c269eec85c145d566eb8e4125f 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 ba8dd59ebf6637edf37ba1ebf4620fa665d2dde1..8527470e832b8a212eb535bd5b0ef19af7e678e4 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 945bcb67a3c214c433f0106568d66d24b1a1c117..f7c6b1592f86da4783eb309560bfb9293bf3b332 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 c15bd585547241bd78663f68a4335a8ae86b07b3..2dccb611f41eb09a98eadc248c586feb100d2b50 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 1e8fd5a29e545e969d5a6208f5b9a6fd6e1ab389..a16a0b0488c461bd5a3a72baf368d2e5fa5b83da 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 0000000000000000000000000000000000000000..daa240058726e1004ae654063e9a2b0d4ab1c1a5 --- /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 0000000000000000000000000000000000000000..6ebea3aa8a2c9b672bc07d5205a26dbb1f795c03 --- /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 0000000000000000000000000000000000000000..d4b0cc4cac116f044ea8c3d033030d988e60304c --- /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 63b40d5bead6802004bdca6f07ce35ceb3499d28..64cbd0961ba9a7a247b9a48217d836d4e1befc56 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 ec9c9a8c37158890bf2ecedf07dfa72f2d1541a1..04d3aaa0664d919a845de1e15437a2a4fc137881 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>