diff --git a/.liquibase/Data_alias/basic/2019.1.4/Ticketmanagement/create_Ticket_table.xml b/.liquibase/Data_alias/basic/2019.1.4/Ticketmanagement/create_Ticket_table.xml index 80423ffb13e2082be2aa530082e21ee97051f2ac..a28b84b18fda2812b4273853ef5afd8a78aae8d6 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/Ticketmanagement/create_Ticket_table.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/Ticketmanagement/create_Ticket_table.xml @@ -1,6 +1,12 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <changeSet author="j.hoermann" id="15176b40-4b5e-48a9-8dfc-4540b01595c8"> + <preConditions onFail="CONTINUE"> + <not> + <tableExists tableName="TICKET"/> + </not> + </preConditions> + <createTable tableName="TICKET"> <column name="TICKETID" type="CHAR(36)"> <constraints primaryKey="true" primaryKeyName="PK_TICKET_TICKETID"/> @@ -12,6 +18,13 @@ <column name="TICKETTYPE" type="VARCHAR(36)"/> </createTable> + <sql dbms="mssql"> + DECLARE @ConstraintName nvarchar(200) + SELECT @ConstraintName = CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE TABLE_NAME = 'TASK' AND COLUMN_NAME = 'CODE' + IF @ConstraintName IS NOT NULL + EXEC('ALTER TABLE TASK DROP CONSTRAINT ' + @ConstraintName) + </sql> + <dropNotNullConstraint tableName="TASK" columnName="CODE" columnDataType="INTEGER"/> <dropColumn tableName="TASK" columnName="CODE"/> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2019.1.4/alter_activityLink.xml b/.liquibase/Data_alias/basic/2019.1.4/alter_activityLink.xml index 108c30fec50d07609f1fc73f106092a0724349ff..1bdf7bf46c8ddf6db4ba388a689ad68b1fbe7c05 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/alter_activityLink.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/alter_activityLink.xml @@ -9,13 +9,15 @@ </sql> </changeSet> - <changeSet author="j.hoermann" id="9a86323f-a299-42a5-937a-f5e37d0db507"> - <preConditions onFail="CONTINUE"> - <not> - <dbms type="derby" /> - </not> - </preConditions> - + <changeSet dbms="!derby,!mssql" author="j.hoermann" id="9a86323f-a299-42a5-937a-f5e37d0db507"> <modifyDataType tableName="ACTIVITYLINK" columnName="ACTIVITY_ID" newDataType="CHAR(36)"/> </changeSet> + + <changeSet dbms="mssql" author="s.listl" id="e8961eb9-80af-4a60-98cb-3cd843f2424a"> + <dropIndex tableName="ACTIVITYLINK" indexName="IDX_ACTIVITYLINK_ACTIVITY_ID"/> + <modifyDataType tableName="ACTIVITYLINK" columnName="ACTIVITY_ID" newDataType="CHAR(36)"/> + <createIndex indexName="IDX_ACTIVITYLINK_ACTIVITY_ID" tableName="ACTIVITYLINK"> + <column name="ACTIVITY_ID" /> + </createIndex> + </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.0.2/Memberroles/alter_member.xml b/.liquibase/Data_alias/basic/2020.0.2/Memberroles/alter_member.xml index d3dac713b4650952e08b611d697963e946adfb08..1be81f5ac3f01d510ceddb07ff864088a0079536 100644 --- a/.liquibase/Data_alias/basic/2020.0.2/Memberroles/alter_member.xml +++ b/.liquibase/Data_alias/basic/2020.0.2/Memberroles/alter_member.xml @@ -2,6 +2,11 @@ <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <changeSet author="s.pongratz" id="28627941-6c9b-46e8-922a-b4660b33723c"> + <preConditions onFail="CONTINUE"> + <columnExists tableName="OBJECTMEMBER" columnName="DECIDER"/> + </preConditions> + <dropNotNullConstraint tableName="OBJECTMEMBER" columnName="DECIDER" columnDataType="TINYINT"/> + <dropDefaultValue tableName="OBJECTMEMBER" columnName="DECIDER"/> <dropColumn tableName="OBJECTMEMBER" columnName="DECIDER"/> </changeSet> </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.1.1/AlterTablesToDatetime.xml b/.liquibase/Data_alias/basic/2020.1.1/AlterTablesToDatetime.xml new file mode 100644 index 0000000000000000000000000000000000000000..fd7b4c34897c0014a93213511af9a34c19572d93 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.1.1/AlterTablesToDatetime.xml @@ -0,0 +1,36 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="s.pongratz" id="b2894de0-4a19-4fcb-9412-0a5e91bfec80"> + <!--<modifyDataType columnName="VALID_TO" newDataType="DATETIME" tableName="DSGVO"/>--> + <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="DSGVO"/> + <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="DSGVO"/> + + <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="CAMPAIGN"/> + <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="CAMPAIGN"/> + + <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="CAMPAIGNCOST"/> + <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="CAMPAIGNCOST"/> + + <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="CAMPAIGNPARTICIPANT"/> + <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="CAMPAIGNPARTICIPANT"/> + + <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="CAMPAIGNSTEP"/> + <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="CAMPAIGNSTEP"/> + <!--<modifyDataType columnName="DATE_START" newDataType="DATETIME" tableName="CAMPAIGNSTEP"/> + <modifyDataType columnName="DATE_END" newDataType="DATETIME" tableName="CAMPAIGNSTEP"/>--> + + <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="DOCUMENTTEMPLATELINK"/> + <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="DOCUMENTTEMPLATELINK"/> + + <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="DUPLICATESCANNER"/> + <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="DUPLICATESCANNER"/> + + <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="DUPLICATESCANNERRESULTFIELDCONFIG"/> + <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="DUPLICATESCANNERRESULTFIELDCONFIG"/> + + <!--<modifyDataType columnName="ENTRYDATE" newDataType="DATETIME" tableName="VISITPLANENTRY"/> + + <modifyDataType columnName="DATEOFBIRTH" newDataType="DATETIME" tableName="PERSON"/>--> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.1.1/changelog.xml b/.liquibase/Data_alias/basic/2020.1.1/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..f5686ce22ccea6e17c577957774efd2009a0dd7f --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.1.1/changelog.xml @@ -0,0 +1,5 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <include relativeToChangelogFile="true" file="AlterTablesToDatetime.xml"/> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index eee29581d9dcafac77aceb7875c2a9c0a1a00c36..50c63b65a63025ae582f679ca7b2051471c3fd9e 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -12,6 +12,7 @@ <include relativeToChangelogFile="true" file="basic/2020.0.2/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.0.3/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.1.0/changelog.xml"/> + <include relativeToChangelogFile="true" file="basic/2020.1.1/changelog.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>--> diff --git a/.liquibase/_____SYSTEMALIAS/basic/Workflow/webserviceUser_flowableIdmService.xml b/.liquibase/_____SYSTEMALIAS/basic/Workflow/webserviceUser_flowableIdmService.xml index 0a2ee09d6b8b500b6cedb743a27d400a0529bd1e..a6c0bda8efa8be2321086abe97773941cd65a657 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/Workflow/webserviceUser_flowableIdmService.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/Workflow/webserviceUser_flowableIdmService.xml @@ -1,7 +1,7 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> - <changeSet author="s.listl" id=""> + <changeSet author="s.listl" id="198892eb-e2a6-4550-9a42-a4d016aa4d11"> <insert tableName="ASYS_USERS"> <column name="GROUPID" value="BASIC"/> <column name="NAME" value="_____USER_6283cfd9-cf4d-4711-95a1-9b0d74526e01"/> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers.xml index f09fdfb3185d0e64479373048402a51b628866ad..d26f8cd8e93f8b5c1bfdae1ffb1bb093b6513d39 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers.xml @@ -1,6 +1,6 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> -<changeSet author="m.sieber" id=""> +<changeSet author="m.sieber" id="b54fd2e4-77a8-4b5d-b006-5c8290d270b6"> <createTable tableName="ASYS_TIMERS"> <column name="TIMERID" type="VARCHAR(127)"> <constraints primaryKey="true" primaryKeyName="PK_ASYS_TIMERS_TIMERID"/> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml index 5c5a397fcd634356f2a2440c0d6fa69d2b4a1c74..fea891c550df4d29827915634728cef5af053042 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml @@ -1,6 +1,6 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> -<changeSet author="m.sieber" id=""> +<changeSet author="m.sieber" id="bbc95b35-05e4-4279-aa6c-fc05f0245e3a"> <createTable tableName="ASYS_TIMERS_SERVERRUNS"> <column name="SERVERID" type="VARCHAR(127)"> <constraints nullable="false"/> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml index c0b26e22fe876d4d5b191f76ee0d80dfb01a8496..b9105d5ca550931b9ea46ff6c7e7e66672a863ae 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml @@ -20,5 +20,8 @@ <column name="DATE_EDIT" type="DATETIME"/> <column name="DATE_NEW" type="DATETIME"/> </createTable> + <createIndex indexName="idx_asysusers_groupid" tableName="ASYS_USERS"> + <column name="GROUPID"/> + </createIndex> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/entity/Address_entity/recordcontainers/db/onDBInsert.js b/entity/Address_entity/recordcontainers/db/onDBInsert.js index 199ad53da66642101b7ce8a6a5bfe6397f72fb4d..bc66933dac2bbe757bf545283d13fa4ef9f373f3 100644 --- a/entity/Address_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Address_entity/recordcontainers/db/onDBInsert.js @@ -1,3 +1,4 @@ +import("Sql_lib"); import("system.logging"); import("KeywordRegistry_basic"); import("DataPrivacy_lib"); @@ -7,7 +8,7 @@ import("Keyword_lib"); var rowdata = vars.get("$local.rowdata"); var addrType = rowdata["ADDRESS.ADDR_TYPE"]; - +var id = rowdata["ADDRESS.CONTACT_ID"]; var typeParam = vars.get("$param.ContactType_param"); if (!typeParam && vars.exists("$param.PersonContactId_param") && vars.getString("$param.PersonContactId_param")) @@ -22,7 +23,27 @@ if (typeParam === "contact") else if (typeParam === "organisation") scopeType = "Organisation" -new StandardObject("Address", vars.get("$local.uid"), scopeType, rowdata["ADDRESS.CONTACT_ID"]) - .onObjectInsert(vars.exists("$param.ReplaceStandardAddress_param") ? vars.get("$param.ReplaceStandardAddress_param") : undefined) +new StandardObject("Address", vars.get("$local.uid"), scopeType, id) + .onObjectInsert(vars.exists("$param.ReplaceStandardAddress_param") ? vars.get("$param.ReplaceStandardAddress_param") : undefined); + +//adds the orgaddress as standard address to all the contact's that were created before the org had an address +if(scopeType == "Organisation") +{ + var contacts = newSelect("CONTACTID") + .from("CONTACT") + .where("CONTACT.ORGANISATION_ID", newSelect("CONTACT.ORGANISATION_ID") + .from("CONTACT") + .where("CONTACT.CONTACTID", id) + .cell()) + .and("CONTACT.PERSON_ID is not null") + .arrayColumn(); + + if(contacts.length > 0) + for (var i = 0; i < contacts.length; i++) + { + new StandardObject("Address", vars.get("$local.uid"), "Person", contacts[i]) + .onObjectInsert(vars.exists("$param.ReplaceStandardAddress_param") ? vars.get("$param.ReplaceStandardAddress_param") : undefined); + } +} DataPrivacyUtils.notifyNeedDataPrivacyUpdate(rowdata["ADDRESS.CONTACT_ID"], vars.get("$param.ShowDsgvoMessage_param")); diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod index ea4b4e03bb85dfca064ee1c4401f5174f586b282..174d18bdf2e02d632566658b9ce602aacf9d7388 100644 --- a/entity/AnyContact_entity/AnyContact_entity.aod +++ b/entity/AnyContact_entity/AnyContact_entity.aod @@ -82,10 +82,12 @@ <entityField> <name>ADDRESS_ID</name> <title>standard address</title> + <groupable v="true" /> <displayValueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/address_id/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>LANGUAGE</name> + <groupable v="true" /> </entityField> <entityField> <name>ORGANISATION_ID</name> @@ -98,6 +100,7 @@ </entityField> <entityField> <name>STATUS</name> + <groupable v="true" /> </entityField> <entityField> <name>contactType</name> @@ -177,6 +180,28 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description> <name>AvatarText_param</name> <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/avatartext_param/valueProcess.js</valueProcess> </entityParameter> + <entityProvider> + <name>ContactsByIds</name> + <documentation>%aditoprj%/entity/AnyContact_entity/entityfields/contactsbyids/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>0206f7a8-fd58-47e8-8b7a-5ff4531e56fb</name> + <entityName>QuickEntry_entity</entityName> + <fieldName>OrgAndPersDuplicates</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> + </entityProvider> + <entityParameter> + <name>ContactIds_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/AnyContact_entity/entityfields/contactsbyids/documentation.adoc b/entity/AnyContact_entity/entityfields/contactsbyids/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..bcf8477de138099f6d6302445c8a5930b79690eb --- /dev/null +++ b/entity/AnyContact_entity/entityfields/contactsbyids/documentation.adoc @@ -0,0 +1,3 @@ += AnyContact_entity - ContactsByIds + +The list of contacts can be filtered by providing the contact ids in the parameter "ContactIds_param" \ No newline at end of file diff --git a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js index b6d99a470cfc19de9e0beacdc2df797236c64e85..a793d04a1b1ac773414d333e4ccc4e645b1df960 100644 --- a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js +++ b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js @@ -24,10 +24,13 @@ if (vars.getString("$param.WithPrivatePersons_param") == "true") .and("CONTACT.PERSON_ID is not null")); } - //exclude private organisation var cond = newWhereIfSet(conditionPrivateOrganisation) .andIfSet("CONTACT.ORGANISATION_ID", orgContactId); +var contactIds = vars.exists("$param.ContactIds_param") && vars.get("$param.ContactIds_param"); +if (contactIds) + cond.andIfSet("CONTACT.CONTACTID", JSON.parse(contactIds), SqlBuilder.IN()); + //TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/stateProcess.js b/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/stateProcess.js index 8d1104b5aaa31e686a00a58b47dba81fe63ead08..1d16d29705904d8d5e24c0c3990b0d6b9693bcca 100644 --- a/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/stateProcess.js +++ b/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/stateProcess.js @@ -3,7 +3,7 @@ import("system.result"); import("system.vars"); import("system.neon"); -if(vars.get("$sys.selection").length == 1 && vars.get("$field.ATTRIBUTE_TYPE") == $AttributeTypes.GROUP.toString()) - result.string(neon.COMPONENTSTATE_EDITABLE) +if(vars.get("$sys.selection").length == 1 && (vars.get("$field.ATTRIBUTE_TYPE") == $AttributeTypes.GROUP.toString() || vars.get("$field.ATTRIBUTE_TYPE") == $AttributeTypes.OBJECTSELECTION.toString())) + result.string(neon.COMPONENTSTATE_EDITABLE); else - result.string(neon.COMPONENTSTATE_DISABLED) \ No newline at end of file + result.string(neon.COMPONENTSTATE_DISABLED); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod b/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod index 5a1cd9c9bb57983c6221069d7f2492eb5e86063c..e75ed952327e55f4b5e62fd7d5ffc4c90ba2d144 100644 --- a/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod +++ b/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod @@ -3,17 +3,18 @@ <name>BulkMailAddRecipients_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/BulkMailAddRecipients_entity/documentation.adoc</documentation> - <recordContainer>jdito</recordContainer> + <recordContainer>datalessConfig</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> </entityProvider> <entityField> <name>UID</name> + <state>EDITABLE</state> </entityField> <entityField> <name>recipientCountMessage</name> - <state>READONLY</state> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js</valueProcess> </entityField> <entityField> @@ -22,6 +23,7 @@ <consumer>BulkMails</consumer> <linkedContext>BulkMail</linkedContext> <mandatory v="true" /> + <state>EDITABLE</state> <displayValueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/bulkmail_id/displayValueProcess.js</displayValueProcess> </entityField> <entityConsumer> @@ -39,20 +41,28 @@ <entityField> <name>recipientContactIds</name> <description>the filtered contactIds (contactIds that are not already in the bulkmail and don't have a commrestriction)</description> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js</valueProcess> </entityField> + <entityActionField> + <name>addRecipients</name> + <title>Add Recipients</title> + <onActionProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/onActionProcess.js</onActionProcess> + <iconId>VAADIN:AT</iconId> + <state>DISABLED</state> + <stateProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/stateProcess.js</stateProcess> + </entityActionField> + <entityField> + <name>recipientCount</name> + <documentation>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/documentation.adoc</documentation> + <state>EDITABLE</state> + <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/valueProcess.js</valueProcess> + </entityField> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/BulkMailAddRecipients_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessConfig</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/BulkMailAddRecipients_entity/recordcontainers/jdito/onInsert.js b/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/onActionProcess.js similarity index 100% rename from entity/BulkMailAddRecipients_entity/recordcontainers/jdito/onInsert.js rename to entity/BulkMailAddRecipients_entity/entityfields/addrecipients/onActionProcess.js diff --git a/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/stateProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..361fb440599d3efccdfbb22747deae2b585fc3b0 --- /dev/null +++ b/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/stateProcess.js @@ -0,0 +1,9 @@ +import("system.neon"); +import("system.result"); +import("system.vars"); +var count = vars.getString("$field.recipientCount"); + +if (count == "0" || !count || vars.get("$sys.validationerrors")) + result.string(neon.COMPONENTSTATE_DISABLED); +else + result.string(neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js index 107d0af5ed33fdbed773fc5e8bbac0952a303646..9705275249c269d4a34d59acf53a49f83fa02521 100644 --- a/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js +++ b/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js @@ -5,4 +5,10 @@ import("system.vars"); var contactIds = JSON.parse(vars.getString("$param.ContactIds_param")); var bulkMailId = vars.get("$field.BULKMAIL_ID"); -result.string(JSON.stringify(BulkMailUtils.filterNewRecipients(bulkMailId, contactIds))); \ No newline at end of file +var res; +if (bulkMailId) + res = JSON.stringify(BulkMailUtils.filterNewRecipients(bulkMailId, contactIds)); +else + res = null; + +result.string(res); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/documentation.adoc b/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..cb66eaab85eed332b2f4d5e7c5e7bce70540b357 --- /dev/null +++ b/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/documentation.adoc @@ -0,0 +1,6 @@ +This field contains the count of the participants that can be added as string. +A value of null or empty string "" means that the count could not be determined (for example because no bulkmail was chosen). +A value of "0" means that the count could be determined but none of the participants can be added (for example because all selected participants are already in the bulkmail). +For example, a value of "12" means that 12 of the given participants can be added. + +This information is needed for disabling the action to proceed and to provide a message for the user. \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d04634f708b5331a305b800553ec8c5c9bd1b2fb --- /dev/null +++ b/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/valueProcess.js @@ -0,0 +1,11 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); + +var res = ""; +if (vars.get("$field.recipientContactIds")) +{ + res = JSON.parse(vars.getString("$field.recipientContactIds")).length; +} + +result.string(res); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js index a6023f60ee9164727f8856620af8d95cf04ad01d..ca3a11b99b6ee086734022d909edae33de24f635 100644 --- a/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js +++ b/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js @@ -2,8 +2,14 @@ import("system.translate"); import("system.result"); import("system.vars"); -if (vars.get("$field.BULKMAIL_ID")) +var count = vars.getString("$field.recipientCount") +var res = ""; +if (count && !vars.get("$sys.validationerrors")) { - var count = JSON.parse(vars.getString("$field.recipientContactIds")).length; - result.string(translate.withArguments("%0 new recipients will be added to the bulk mail.", [String(count)])); -} \ No newline at end of file + if (count == "0") + res = translate.text("No new recipients found that can be added to the bulk mail."); + else + res = translate.withArguments("%0 new recipients will be added to the bulk mail.", [count]); +} + +result.string(res); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/recordcontainers/jdito/contentProcess.js b/entity/BulkMailAddRecipients_entity/recordcontainers/jdito/contentProcess.js deleted file mode 100644 index e197aca8b7760073849e21fb581b065c47215654..0000000000000000000000000000000000000000 --- a/entity/BulkMailAddRecipients_entity/recordcontainers/jdito/contentProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.result"); -import("system.vars"); - -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; -if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id];}); - -result.object(rows); \ No newline at end of file diff --git a/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod b/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod index 59218772f1dd9a28bb56351fe7c0be8a46c19ae5..70e8a0f2629b1d0048edcb5781c0a84012128218 100644 --- a/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod +++ b/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod @@ -6,25 +6,28 @@ <siblings> <element>BulkMail_entity</element> </siblings> - <recordContainer>jdito</recordContainer> + <recordContainer>datalessRecordContainer</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> </entityProvider> <entityField> <name>UID</name> + <state>EDITABLE</state> </entityField> <entityField> <name>TESTING_CONTACT_ID</name> <title>Contact</title> <consumer>Contacts</consumer> <linkedContext>AnyContact</linkedContext> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/BulkMailTesting_entity/entityfields/testing_contact_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/BulkMailTesting_entity/entityfields/testing_contact_id/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>TESTING_EMAIL_ADDRESS</name> <title>Recipient address</title> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/BulkMailTesting_entity/entityfields/testing_email_address/valueProcess.js</valueProcess> </entityField> <entityField> @@ -32,6 +35,7 @@ <title>Save settings</title> <contentType>BOOLEAN</contentType> <dropDownProcess>%aditoprj%/entity/BulkMailTesting_entity/entityfields/savesettings/dropDownProcess.js</dropDownProcess> + <state>EDITABLE</state> </entityField> <entityParameter> <name>BulkMailId_param</name> @@ -46,18 +50,17 @@ <fieldName>#PROVIDER</fieldName> </dependency> </entityConsumer> + <entityActionField> + <name>testMail</name> + <title>Test email</title> + <onActionProcess>%aditoprj%/entity/BulkMailTesting_entity/entityfields/testmail/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CLIPBOARD_CHECK</iconId> + </entityActionField> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/BulkMailTesting_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/BulkMailTesting_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessRecordContainer</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/BulkMailTesting_entity/recordcontainers/jdito/onInsert.js b/entity/BulkMailTesting_entity/entityfields/testmail/onActionProcess.js similarity index 100% rename from entity/BulkMailTesting_entity/recordcontainers/jdito/onInsert.js rename to entity/BulkMailTesting_entity/entityfields/testmail/onActionProcess.js diff --git a/entity/BulkMailTesting_entity/recordcontainers/jdito/contentProcess.js b/entity/BulkMailTesting_entity/recordcontainers/jdito/contentProcess.js deleted file mode 100644 index e197aca8b7760073849e21fb581b065c47215654..0000000000000000000000000000000000000000 --- a/entity/BulkMailTesting_entity/recordcontainers/jdito/contentProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.result"); -import("system.vars"); - -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; -if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id];}); - -result.object(rows); \ No newline at end of file diff --git a/entity/BulkMail_entity/entityfields/testmail/onActionProcess.js b/entity/BulkMail_entity/entityfields/testmail/onActionProcess.js index 3852daca44d122f7a011d6fe4559d34cf7390321..3845e374537d50e6e9ab706741a4a672d7208d04 100644 --- a/entity/BulkMail_entity/entityfields/testmail/onActionProcess.js +++ b/entity/BulkMail_entity/entityfields/testmail/onActionProcess.js @@ -10,7 +10,7 @@ var testingEmail = vars.get("$field.TESTING_EMAIL_ADDRESS"); if (testingContact && testingEmail) BulkMailUtils.sendBulkMailOnServer(vars.get("$field.BULKMAILID"), [[testingContact, testingEmail]]); else - neon.openContext("BulkMailTesting", "BulkMailTesting_view", null, neon.OPERATINGSTATE_NEW, { + neon.openContext("BulkMailTesting", "BulkMailTesting_view", null, neon.OPERATINGSTATE_VIEW, { "BulkMailId_param" : vars.get("$field.BULKMAILID") }); diff --git a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod index 0a50fc3645daeb83d429228509346f025d45950d..427c1e2626f0baade4750445935fb8b335212bf9 100644 --- a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod +++ b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod @@ -8,7 +8,7 @@ <element>CampaignParticipant_entity</element> </siblings> <onValidation>%aditoprj%/entity/CampaignAddParticipants_entity/onValidation.js</onValidation> - <recordContainer>jdito</recordContainer> + <recordContainer>datalessConfig</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> @@ -18,7 +18,7 @@ <title>Campaign</title> <consumer>CampaignConsumer</consumer> <mandatory v="true" /> - <state>AUTO</state> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaign_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaign_id/displayValueProcess.js</displayValueProcess> <onValueChange>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaign_id/onValueChange.js</onValueChange> @@ -40,7 +40,7 @@ </entityField> <entityField> <name>campaignParticipantMessage</name> - <state>READONLY</state> + <state>EDITABLE</state> <onValueChangeTypes> <element>PROCESS</element> </onValueChangeTypes> @@ -75,6 +75,7 @@ </entityConsumer> <entityField> <name>UID</name> + <state>EDITABLE</state> </entityField> <entityParameter> <name>currentCampaignId_param</name> @@ -102,15 +103,18 @@ <entityField> <name>campaignStepCurrentParticipantCount</name> <title>Current participants</title> + <state>EDITABLE</state> <displayValueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaignstepcurrentparticipantcount/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>campaignStepMaxParticipantCount</name> <title>Max participants</title> + <state>EDITABLE</state> <displayValueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaignstepmaxparticipantcount/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>isUpdate</name> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/isupdate/valueProcess.js</valueProcess> </entityField> <entityParameter> @@ -123,8 +127,17 @@ </entityParameter> <entityField> <name>isOperationValid</name> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/isoperationvalid/valueProcess.js</valueProcess> </entityField> + <entityActionField> + <name>AddParticipants</name> + <title>Add Participants</title> + <onActionProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js</onActionProcess> + <iconId>NEON:GROUP_APPOINTMENT</iconId> + <state>DISABLED</state> + <stateProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/addparticipants/stateProcess.js</stateProcess> + </entityActionField> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -138,5 +151,9 @@ </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessConfig</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..bbf377c5c3803bd9e8c294d1de8ce1ccca72e0d6 --- /dev/null +++ b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js @@ -0,0 +1,153 @@ +import("system.neon"); +import("Sql_lib"); +import("system.vars"); +import("system.db"); +import("system.util"); +import("Campaign_lib"); + +var cols = []; + +var participantRowIds = JSON.parse(vars.getString("$param.campaignParticipantsRowIds_param")); +var participantCondition = ""; +var conditionSourceTableName = vars.getString("$param.dataSourceTableName_param"); + +var campaignId = vars.getString("$field.CAMPAIGN_ID"); +var newCampaignStepId = vars.getString("$field.CAMPAIGNSTEP_ID"); +var isUpdate = vars.get("$field.isUpdate"); + +var colNamesCampaignParticipantLog = CampaignUtils.getParticipantLogInsertColumnNames(); + +if(participantRowIds != null && participantRowIds.length > 0) +{ + let contactIdsToHandle = participantRowIds; + + if(isUpdate == "false") + contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByRowIds(campaignId, participantRowIds); + + _handleRowIds(contactIdsToHandle, campaignId); +} +else +{ + participantCondition = JSON.parse(vars.getString("$param.campaignParticipantsCondition_param")).condition; + _handleCondition(campaignId, conditionSourceTableName, participantCondition); +} + +if (!vars.exists("$param.currentCampaignId_param") || !vars.get("$param.currentCampaignId_param")) + neon.openContext("Campaign", "CampaignMain_view", [campaignId], neon.OPERATINGSTATE_VIEW, null); + +function _handleCondition(pCampaignId, pTargetTableName, pCondition) +{ + let contactIdsToHandle = []; + + let useRightJoinToGetOrgs = "false"; + if(pTargetTableName == "ORGANISATION") + { + useRightJoinToGetOrgs = "true"; + pCondition += " and PERSON.PERSONID is NULL" + } + + /* + * If it's an update of participants, get the participants defined by the condition in the selected campaign + * Because they already are participants, no restrictions apply to the affected IDs. + * + * Otherwise the participants ought to be inserted. The only restriction right now is, hat the participants to be inserted + * can't already be in this specific campaign. Therefore all IDs hat are defined by the condition and not in the campaign are selected. + */ + if(isUpdate == "true") + { + contactIdsToHandle = CampaignUtils.GetContactIdsInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs) + } + else + contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs); + + _handleRowIds(contactIdsToHandle, pCampaignId); +} + +function _handleRowIds(pParticipantRowIds, pCampaignId) +{ + var oldStepIds = {}; + if(isUpdate == "true") + { + cols = [ "CAMPAIGNSTEP_ID", + "USER_EDIT", + "DATE_EDIT" + ]; + let oldSteps = newSelect("CAMPAIGNPARTICIPANTID, CAMPAIGNSTEP_ID") + .from("CAMPAIGNPARTICIPANT") + .whereIfSet("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds, SqlBuilder.IN()) + .and("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId) + .table(true); + + oldSteps.forEach(function (step) + { + this[step[0]] = step[1]; + }, oldStepIds); + } + else + { + cols = [ "CAMPAIGNPARTICIPANTID" + ,"CONTACT_ID" + ,"CAMPAIGN_ID" + ,"CAMPAIGNSTEP_ID" + ,"USER_NEW" + ,"DATE_NEW" + ]; + } + + let statementArray = []; + let logArray = []; + + for (participant in pParticipantRowIds) + { + let campaignParticipantLogId = util.getNewUUID(); + + if(isUpdate == "true") + { + let oldCampaignStepId = oldStepIds[pParticipantRowIds[participant]] || ""; + let updatedValues = [newCampaignStepId, + vars.get("$sys.user"), + vars.get("$sys.date")]; + + let condition = newWhere("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds[participant]) + .or("CAMPAIGNPARTICIPANT.CAMPAIGNPARTICIPANTID", pParticipantRowIds[participant]); + + let valsCampaignParticipantLog = [ + pParticipantRowIds[participant], + campaignId, + newCampaignStepId, + campaignParticipantLogId, + vars.get("$sys.user"), + vars.get("$sys.date"), + oldCampaignStepId + ]; + + statementArray.push(["CAMPAIGNPARTICIPANT", cols, null, updatedValues, condition.build()]); + logArray.push(["CAMPAIGNPARTICIPANTLOG", colNamesCampaignParticipantLog, null, valsCampaignParticipantLog]); + } + else + { + let campaignParticipantId = util.getNewUUID(); + + let valsCampaignParticipant = [ campaignParticipantId + , pParticipantRowIds[participant] + , campaignId + , newCampaignStepId + , vars.get("$sys.user") + , vars.get("$sys.date") + ]; + + let valsCampaignParticipantLog = new Array(campaignParticipantId, campaignId, newCampaignStepId, campaignParticipantLogId, vars.get("$sys.user"), vars.get("$sys.date")); + + statementArray.push(["CAMPAIGNPARTICIPANT", cols, null, valsCampaignParticipant]); + } + } + if(isUpdate == "true") + { + db.updates(statementArray) + } + else + db.inserts(statementArray); + if(logArray.length > 0) + db.inserts(logArray); +} + diff --git a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/stateProcess.js b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..be5aec2ba0d4f21dc0a169a53489021c880b3c8b --- /dev/null +++ b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/stateProcess.js @@ -0,0 +1,8 @@ +import("system.neon"); +import("system.result"); +import("system.vars"); + +if (vars.get("$sys.validationerrors")) + result.string(neon.COMPONENTSTATE_DISABLED); +else + result.string(neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/CampaignAddParticipants_entity/recordcontainers/jdito/onInsert.js b/entity/CampaignAddParticipants_entity/recordcontainers/jdito/onInsert.js index 44bfa0e717f9ed3d3ad50b2e759b2a558a61fef6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/entity/CampaignAddParticipants_entity/recordcontainers/jdito/onInsert.js +++ b/entity/CampaignAddParticipants_entity/recordcontainers/jdito/onInsert.js @@ -1,153 +0,0 @@ -import("system.neon"); -import("Sql_lib"); -import("system.vars"); -import("system.db"); -import("system.util"); -import("Campaign_lib"); - -var cols = []; - -var participantRowIds = JSON.parse(vars.getString("$param.campaignParticipantsRowIds_param")); -var participantCondition = ""; -var conditionSourceTableName = vars.getString("$param.dataSourceTableName_param"); - -var campaignId = vars.getString("$field.CAMPAIGN_ID"); -var newCampaignStepId = vars.getString("$field.CAMPAIGNSTEP_ID"); -var isUpdate = vars.get("$field.isUpdate"); - -var colNamesCampaignParticipantLog = CampaignUtils.getParticipantLogInsertColumnNames(); - -if(participantRowIds != null && participantRowIds.length > 0) -{ - let contactIdsToHandle = participantRowIds; - - if(isUpdate == "false") - contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByRowIds(campaignId, participantRowIds); - - _handleRowIds(contactIdsToHandle, campaignId); -} -else -{ - participantCondition = JSON.parse(vars.getString("$param.campaignParticipantsCondition_param")).condition; - _handleCondition(campaignId, conditionSourceTableName, participantCondition); -} - -if (!vars.exists("$param.currentCampaignId_param") || !vars.get("$param.currentCampaignId_param")) - neon.openContext("Campaign", "CampaignMain_view", [campaignId], neon.OPERATINGSTATE_VIEW, null); - -function _handleCondition(pCampaignId, pTargetTableName, pCondition) -{ - let contactIdsToHandle = []; - - let useRightJoinToGetOrgs = "false"; - if(pTargetTableName == "ORGANISATION") - { - useRightJoinToGetOrgs = "true"; - pCondition += " and PERSON.PERSONID is NULL" - } - - /* - * If it's an update of participants, get the participants defined by the condition in the selected campaign - * Because they already are participants, no restrictions apply to the affected IDs. - * - * Otherwise the participants ought to be inserted. The only restriction right now is, hat the participants to be inserted - * can't already be in this specific campaign. Therefore all IDs hat are defined by the condition and not in the campaign are selected. - */ - if(isUpdate == "true") - { - contactIdsToHandle = CampaignUtils.GetContactIdsInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs) - } - else - contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs); - - _handleRowIds(contactIdsToHandle, pCampaignId); -} - -function _handleRowIds(pParticipantRowIds, pCampaignId) -{ - var oldStepIds = {}; - if(isUpdate == "true") - { - cols = [ "CAMPAIGNSTEP_ID", - "USER_EDIT", - "DATE_EDIT" - ]; - let oldSteps = newSelect("CAMPAIGNPARTICIPANTID, CAMPAIGNSTEP_ID") - .from("CAMPAIGNPARTICIPANT") - .whereIfSet("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds, SqlBuilder.IN()) - .and("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId) - .table(true); - - oldSteps.forEach(function (step) - { - this[step[0]] = step[1]; - }, oldStepIds); - } - else - { - cols = [ "CAMPAIGNPARTICIPANTID" - ,"CONTACT_ID" - ,"CAMPAIGN_ID" - ,"CAMPAIGNSTEP_ID" - ,"USER_NEW" - ,"DATE_NEW" - ]; - } - - let statementArray = []; - let logArray = []; - - for (participant in pParticipantRowIds) - { - let campaignParticipantLogId = util.getNewUUID(); - - if(isUpdate == "true") - { - let oldCampaignStepId = oldStepIds[pParticipantRowIds[participant]] || ""; - let updatedValues = [newCampaignStepId, - vars.get("$sys.user"), - vars.get("$sys.date")]; - - let condition = newWhere("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds[participant]) - .or("CAMPAIGNPARTICIPANT.CAMPAIGNPARTICIPANTID", pParticipantRowIds[participant]); - - let valsCampaignParticipantLog = [ - pParticipantRowIds[participant], - campaignId, - newCampaignStepId, - campaignParticipantLogId, - vars.get("$sys.user"), - vars.get("$sys.date"), - oldCampaignStepId - ]; - - statementArray.push(["CAMPAIGNPARTICIPANT", cols, null, updatedValues, condition.build()]); - logArray.push(["CAMPAIGNPARTICIPANTLOG", colNamesCampaignParticipantLog, null, valsCampaignParticipantLog]); - } - else - { - let campaignParticipantId = util.getNewUUID(); - - let valsCampaignParticipant = [ campaignParticipantId - , pParticipantRowIds[participant] - , campaignId - , newCampaignStepId - , vars.get("$sys.user") - , vars.get("$sys.date") - ]; - - let valsCampaignParticipantLog = new Array(campaignParticipantId, campaignId, newCampaignStepId, campaignParticipantLogId, vars.get("$sys.user"), vars.get("$sys.date")); - - statementArray.push(["CAMPAIGNPARTICIPANT", cols, null, valsCampaignParticipant]); - } - } - if(isUpdate == "true") - { - db.updates(statementArray) - } - else - db.inserts(statementArray); - if(logArray.length > 0) - db.inserts(logArray); -} - diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod index 6a95fa2e17f2edbf5014e8e7c0e81640cdb999a7..5c0c8448cd84839a753fd36b32d653fcbfc16827 100644 --- a/entity/Contact_entity/Contact_entity.aod +++ b/entity/Contact_entity/Contact_entity.aod @@ -47,6 +47,7 @@ <entityField> <name>DEPARTMENT</name> <title>Department</title> + <groupable v="true" /> <dropDownProcess>%aditoprj%/entity/Contact_entity/entityfields/department/dropDownProcess.js</dropDownProcess> <textInputAllowed v="true" /> </entityField> @@ -103,6 +104,7 @@ <entityField> <name>ADDRESS_ID</name> <title>standard address</title> + <groupable v="true" /> <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/address_id/valueProcess.js</valueProcess> </entityField> <entityField> @@ -143,6 +145,7 @@ <name>LANGUAGE</name> <title>Language</title> <consumer>Languages</consumer> + <groupable v="true" /> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/language/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Contact_entity/entityfields/language/displayValueProcess.js</displayValueProcess> @@ -189,6 +192,7 @@ <name>STATUS</name> <title>Status</title> <consumer>KeywordContactStates</consumer> + <groupable v="true" /> <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/status/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Contact_entity/entityfields/status/displayValueProcess.js</displayValueProcess> </entityField> diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod index e93a7dabbb417af046c96c4d1ed70df6aac8897d..6bb015cb39a37b2b6a4ebc1fb28fbb225534cf58 100644 --- a/entity/Contract_entity/Contract_entity.aod +++ b/entity/Contract_entity/Contract_entity.aod @@ -29,6 +29,7 @@ <resolution>DAY</resolution> <outputFormat>dd.MM.yyyy</outputFormat> <inputFormat>dd.MM.yyyy</inputFormat> + <groupable v="true" /> </entityField> <entityField> <name>CONTRACTEND</name> @@ -38,6 +39,7 @@ <resolution>DAY</resolution> <outputFormat>dd.MM.yyyy</outputFormat> <inputFormat>dd.MM.yyyy</inputFormat> + <groupable v="true" /> <onValueChange>%aditoprj%/entity/Contract_entity/entityfields/contractend/onValueChange.js</onValueChange> </entityField> <entityField> @@ -53,6 +55,7 @@ <resolution>DAY</resolution> <outputFormat>dd.MM.yyyy</outputFormat> <inputFormat>dd.MM.yyyy</inputFormat> + <groupable v="true" /> <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/contractstart/valueProcess.js</valueProcess> <onValueChange>%aditoprj%/entity/Contract_entity/entityfields/contractstart/onValueChange.js</onValueChange> </entityField> @@ -60,12 +63,14 @@ <name>CONTRACTSTATUS</name> <title>${CONTRACT_STATUS}</title> <consumer>ContractStates</consumer> + <groupable v="true" /> <displayValueProcess>%aditoprj%/entity/Contract_entity/entityfields/contractstatus/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>CONTRACTTYPE</name> <title>Type of contract</title> <consumer>ContractTypes</consumer> + <groupable v="true" /> <mandatory v="true" /> <displayValueProcess>%aditoprj%/entity/Contract_entity/entityfields/contracttype/displayValueProcess.js</displayValueProcess> </entityField> @@ -73,6 +78,7 @@ <name>PAYMENT</name> <title>Payment method</title> <consumer>ContractPayments</consumer> + <groupable v="true" /> <mandatory v="true" /> <displayValueProcess>%aditoprj%/entity/Contract_entity/entityfields/payment/displayValueProcess.js</displayValueProcess> </entityField> @@ -188,10 +194,12 @@ <entityField> <name>CONTACT_ORG_ID</name> <title>Company</title> + <groupable v="true" /> </entityField> <entityField> <name>CONTACT_PERSON_ID</name> <title>Person</title> + <groupable v="true" /> </entityField> <entityConsumer> <name>Documents</name> diff --git a/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod b/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod index da8a7c8b479f7dc608d5ceb9251aac1c5f433e50..1dfd409f9133b0587fc210804eea99d76a88b34d 100644 --- a/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod +++ b/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod @@ -151,6 +151,12 @@ </entityParameter> </children> </entityConsumer> + <entityActionField> + <name>SafeAndOpenReport</name> + <title>and open Report</title> + <onActionProcess>%aditoprj%/entity/DSGVOInfo_entity/entityfields/safeandopenreport/onActionProcess.js</onActionProcess> + <isSaveAction v="true" /> + </entityActionField> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/DSGVOInfo_entity/entityfields/safeandopenreport/onActionProcess.js b/entity/DSGVOInfo_entity/entityfields/safeandopenreport/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..9a6195801a21eb56a3224dd1f1ceabf02890e50e --- /dev/null +++ b/entity/DSGVOInfo_entity/entityfields/safeandopenreport/onActionProcess.js @@ -0,0 +1,20 @@ +import("system.vars"); +import("DataPrivacy_lib"); + +var entityData = vars.get("$local.entitydata"); + +var params = { + datasource: entityData["DATASOURCE"], + transmission: entityData["TRANSMISSION"], + recipient: entityData["RECIPIENT"], + garantees: entityData["GUARANTEE"], + requestDate: entityData["dateRequest"], + deadline: entityData["deadline"], + deadlineDate: entityData["dateDeadline"] + }; + +var contactId = entityData["param.ContactId_param"]; +var reportType = entityData["param.ReportType_param"]; + +if (reportType) + DataPrivacyUtils.openReport(contactId, reportType, params); \ No newline at end of file diff --git a/entity/DSGVOInfo_entity/recordcontainers/db/onDBInsert.js b/entity/DSGVOInfo_entity/recordcontainers/db/onDBInsert.js index ef08b6011add55be5ac2961455eb1d455f16d0c1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/entity/DSGVOInfo_entity/recordcontainers/db/onDBInsert.js +++ b/entity/DSGVOInfo_entity/recordcontainers/db/onDBInsert.js @@ -1,15 +0,0 @@ -import("system.vars"); -import("DataPrivacy_lib"); - -var rowdata = vars.get("$local.rowdata"); - -if (vars.get("$param.ReportType_param")) - DataPrivacyUtils.openReport(vars.get("$param.ContactId_param"), vars.get("$param.ReportType_param"), { - datasource: rowdata["DSGVOINFO.DATASOURCE"], - transmission: rowdata["DSGVOINFO.TRANSMISSION"], - recipient: rowdata["DSGVOINFO.RECIPIENT"], - garantees: rowdata["DSGVOINFO.GUARANTEE"], - requestDate: vars.get("$field.dateRequest"), - deadline: vars.get("$field.deadline"), - deadlineDate: vars.get("$field.dateDeadline") - }); \ No newline at end of file diff --git a/entity/DSGVOInfo_entity/recordcontainers/db/onDBUpdate.js b/entity/DSGVOInfo_entity/recordcontainers/db/onDBUpdate.js index ef08b6011add55be5ac2961455eb1d455f16d0c1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/entity/DSGVOInfo_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/DSGVOInfo_entity/recordcontainers/db/onDBUpdate.js @@ -1,15 +0,0 @@ -import("system.vars"); -import("DataPrivacy_lib"); - -var rowdata = vars.get("$local.rowdata"); - -if (vars.get("$param.ReportType_param")) - DataPrivacyUtils.openReport(vars.get("$param.ContactId_param"), vars.get("$param.ReportType_param"), { - datasource: rowdata["DSGVOINFO.DATASOURCE"], - transmission: rowdata["DSGVOINFO.TRANSMISSION"], - recipient: rowdata["DSGVOINFO.RECIPIENT"], - garantees: rowdata["DSGVOINFO.GUARANTEE"], - requestDate: vars.get("$field.dateRequest"), - deadline: vars.get("$field.deadline"), - deadlineDate: vars.get("$field.dateDeadline") - }); \ No newline at end of file diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod index 9c5bab5bdbc546fed183346758af0d40ff54ba55..fa1098dc639a05b340f5fc1a6fda4ca95bb2d521 100644 --- a/entity/Document_entity/Document_entity.aod +++ b/entity/Document_entity/Document_entity.aod @@ -57,6 +57,7 @@ <name>BINDATA_UPLOAD</name> <title>File</title> <contentType>FILE</contentType> + <mandatory v="true" /> <onValueChange>%aditoprj%/entity/Document_entity/entityfields/bindata_upload/onValueChange.js</onValueChange> <onValueChangeTypes> <element>MASK</element> diff --git a/entity/Email_entity/Email_entity.aod b/entity/Email_entity/Email_entity.aod index b328022e7bb7911735abc0e14869cb594e133bce..670910b84410344ceb0bc8d6f47d8d1ea5cf3202 100644 --- a/entity/Email_entity/Email_entity.aod +++ b/entity/Email_entity/Email_entity.aod @@ -3,7 +3,7 @@ <name>Email_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Email_entity/documentation.adoc</documentation> - <recordContainer>jdito</recordContainer> + <recordContainer>datalessRecordContainer</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> @@ -18,12 +18,14 @@ </entityProvider> <entityField> <name>UID</name> + <state>EDITABLE</state> </entityField> <entityField> <name>DOCUMENT_TEMPLATE</name> <title>Document Template</title> <consumer>DocumentTemplates</consumer> <linkedContext>DocumentTemplate</linkedContext> + <state>EDITABLE</state> </entityField> <entityConsumer> <name>DocumentTemplates</name> @@ -53,6 +55,7 @@ <title>Recipient</title> <consumer>EmailAddresses</consumer> <textInputAllowed v="true" /> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/Email_entity/entityfields/recipient/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Email_entity/entityfields/recipient/displayValueProcess.js</displayValueProcess> </entityField> @@ -79,6 +82,7 @@ <name>bindata</name> <title>Custom template</title> <contentType>FILE</contentType> + <state>EDITABLE</state> </entityField> <entityActionField> <name>downloadTemplate</name> @@ -93,6 +97,7 @@ </entityParameter> <entityField> <name>comingfrom</name> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/Email_entity/entityfields/comingfrom/valueProcess.js</valueProcess> </entityField> <entityParameter> @@ -106,23 +111,24 @@ <entityField> <name>subject</name> <title>Subject</title> + <state>EDITABLE</state> </entityField> <entityParameter> <name>EmailFilename</name> <expose v="true" /> </entityParameter> + <entityActionField> + <name>sendMail</name> + <title>send mail</title> + <onActionProcess>%aditoprj%/entity/Email_entity/entityfields/sendmail/onActionProcess.js</onActionProcess> + <iconId>VAADIN:AT</iconId> + <stateProcess>%aditoprj%/entity/Email_entity/entityfields/sendmail/stateProcess.js</stateProcess> + </entityActionField> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/Email_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/Email_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessRecordContainer</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/Email_entity/entityfields/recipient/valueProcess.js b/entity/Email_entity/entityfields/recipient/valueProcess.js index 3ad60d78a7acdb319c06b3a1bf67e775f71a15d0..28712f38d11117f0241a65aa12bac0cd0f7e89f9 100644 --- a/entity/Email_entity/entityfields/recipient/valueProcess.js +++ b/entity/Email_entity/entityfields/recipient/valueProcess.js @@ -3,14 +3,14 @@ import("system.result"); import("system.neon"); import("system.vars"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) +if (vars.get("$this.value") == null) { if (vars.exists("$param.Recipient_param") && vars.get("$param.Recipient_param")) result.string(vars.get("$param.Recipient_param")); else if (vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param")) result.string(CommUtil.getStandardMail(vars.get("$param.ContactId_param"))); } -else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.RECIPIENT").includes("@")) +else if (!vars.get("$field.RECIPIENT").includes("@")) result.string(newSelect("ADDR") .from("COMMUNICATION") .where("COMMUNICATION.COMMUNICATIONID", vars.get("$this.value")).cell()); \ No newline at end of file diff --git a/entity/Email_entity/recordcontainers/jdito/onInsert.js b/entity/Email_entity/entityfields/sendmail/onActionProcess.js similarity index 99% rename from entity/Email_entity/recordcontainers/jdito/onInsert.js rename to entity/Email_entity/entityfields/sendmail/onActionProcess.js index b266465e5e7d8102995d9f786ab61d9c84080438..3042a292b76f3871dc01286424cf353a51e85412 100644 --- a/entity/Email_entity/recordcontainers/jdito/onInsert.js +++ b/entity/Email_entity/entityfields/sendmail/onActionProcess.js @@ -8,7 +8,6 @@ import("Contact_lib"); import("Document_lib"); import("system.question"); - var attachments = JSON.parse(vars.get("$param.Attachments_param")); var senderContactId = vars.get("$param.ContactId_param"); var bindata = new FileUpload(vars.get("$field.bindata")); diff --git a/entity/Email_entity/entityfields/sendmail/stateProcess.js b/entity/Email_entity/entityfields/sendmail/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..4a3e809eef1cfe32e6d9ea3c849043949aa40e01 --- /dev/null +++ b/entity/Email_entity/entityfields/sendmail/stateProcess.js @@ -0,0 +1,8 @@ +import("system.neon"); +import("system.result"); +import("system.vars"); + +if (vars.get("$sys.validationerrors")) + result.string(neon.COMPONENTSTATE_DISABLED); +else + result.string(neon.COMPONENTSTATE_EDITABLE); diff --git a/entity/Email_entity/recordcontainers/jdito/contentProcess.js b/entity/Email_entity/recordcontainers/jdito/contentProcess.js deleted file mode 100644 index e197aca8b7760073849e21fb581b065c47215654..0000000000000000000000000000000000000000 --- a/entity/Email_entity/recordcontainers/jdito/contentProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.result"); -import("system.vars"); - -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; -if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id];}); - -result.object(rows); \ No newline at end of file diff --git a/entity/EmployeeRole_entity/entityfields/role/displayValueProcess.js b/entity/EmployeeRole_entity/entityfields/role/displayValueProcess.js index 3f92b2d22659c0b37d58f51750ddfcb1eda385c9..67aab71c1ae1e5db3595a0fa0e8bab3789a24ef8 100644 --- a/entity/EmployeeRole_entity/entityfields/role/displayValueProcess.js +++ b/entity/EmployeeRole_entity/entityfields/role/displayValueProcess.js @@ -3,8 +3,11 @@ import("system.vars"); import("system.tools"); var allRoles = tools.getAllRoles(); -var roleTitle = vars.get("$field.ROLE"); -if (roleTitle in allRoles) - roleTitle = allRoles[roleTitle][0]; +var roleTitle = vars.get("$this.value") +if(roleTitle != null) +{ + if (roleTitle in allRoles) + roleTitle = allRoles[roleTitle][0]; -result.string(roleTitle); \ No newline at end of file + result.string(roleTitle); +} \ No newline at end of file diff --git a/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js b/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js index b9cece778787960b813a01dffbff120df704b2e1..a798b7a80f57f615439eab376b8db4b13a48fedd 100644 --- a/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js @@ -3,6 +3,7 @@ import("system.vars"); import("system.tools"); var roles = []; +var singleRole = []; var userTitle = vars.exists("$param.UserTitle_param") && vars.get("$param.UserTitle_param"); var allRoles = tools.getAllRoles(); @@ -33,8 +34,23 @@ if (ids != null) if (role[0] == ids[i]) return true; } - return false; + return ids[i]; }); } - -result.object(roles); \ No newline at end of file +if(roles == undefined || roles.length > 0) + result.object(roles); +else +{ + var currentRole = vars.get("$field.ROLE") + roles = roles.filter(function(role) + { + for (let i = 0; i < ids.length; i++) + { + if (role[0] == currentRole) + return true; + } + return vars.get("$field.ROLE"); + }); + singleRole[0] = [currentRole.toUpperCase(), currentRole.toUpperCase(), allRoles[currentRole][0], "Role"]; + result.object(singleRole) +} \ No newline at end of file diff --git a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod index c71abcd85ffe75e618a0c6200d47d934392b62fd..de7cb9ab35c7b24aa5e1906d5068e532e53662fb 100644 --- a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod +++ b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod @@ -5,13 +5,14 @@ <documentation>%aditoprj%/entity/ExportTemplateSelection_entity/documentation.adoc</documentation> <title>Exporttempalte Selection</title> <contentTitleProcess>%aditoprj%/entity/ExportTemplateSelection_entity/contentTitleProcess.js</contentTitleProcess> - <recordContainer>jDito</recordContainer> + <recordContainer>datalessRecordContainer</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> </entityProvider> <entityField> <name>EXPORTTEMPLATESELECTIONID</name> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/exporttemplateselectionid/valueProcess.js</valueProcess> </entityField> <entityField> @@ -19,6 +20,7 @@ <title>Exporttemplate</title> <consumer>ExportTemplateComsumer</consumer> <mandatory v="true" /> + <state>EDITABLE</state> <displayValueProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/exporttemplate_id/displayValueProcess.js</displayValueProcess> </entityField> <entityParameter> @@ -45,14 +47,17 @@ </entityConsumer> <entityField> <name>UID</name> + <state>EDITABLE</state> </entityField> <entityField> <name>FILENAME</name> <title>Filename</title> + <state>EDITABLE</state> <tooltip>Automatically generates an defaulttitle if left Blank</tooltip> </entityField> <entityField> <name>selection</name> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/selection/valueProcess.js</valueProcess> </entityField> <entityParameter> @@ -61,20 +66,21 @@ </entityParameter> <entityField> <name>comingfrom</name> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/comingfrom/valueProcess.js</valueProcess> </entityField> + <entityActionField> + <name>safeandexport</name> + <title>export using the selected template</title> + <onActionProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js</onActionProcess> + <iconId>NEON:EXPORT</iconId> + <stateProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/safeandexport/stateProcess.js</stateProcess> + </entityActionField> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jDito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/ExportTemplateSelection_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/ExportTemplateSelection_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessRecordContainer</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/ExportTemplateSelection_entity/entityfields/exporttemplateselectionid/valueProcess.js b/entity/ExportTemplateSelection_entity/entityfields/exporttemplateselectionid/valueProcess.js index 6ff4a9c1959d04bc196a5b0f742958ac9cb73152..c6978d123834d829432f7912bd849615e1b8c5be 100644 --- a/entity/ExportTemplateSelection_entity/entityfields/exporttemplateselectionid/valueProcess.js +++ b/entity/ExportTemplateSelection_entity/entityfields/exporttemplateselectionid/valueProcess.js @@ -1,7 +1,6 @@ -import("system.neon"); +import("system.vars"); import("system.result"); import("system.util"); -import("system.vars"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) +if(vars.get("$this.value") == null) result.string(util.getNewUUID()); \ No newline at end of file diff --git a/entity/ExportTemplateSelection_entity/recordcontainers/jdito/onInsert.js b/entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js similarity index 100% rename from entity/ExportTemplateSelection_entity/recordcontainers/jdito/onInsert.js rename to entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js diff --git a/entity/ExportTemplateSelection_entity/entityfields/safeandexport/stateProcess.js b/entity/ExportTemplateSelection_entity/entityfields/safeandexport/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..4a3e809eef1cfe32e6d9ea3c849043949aa40e01 --- /dev/null +++ b/entity/ExportTemplateSelection_entity/entityfields/safeandexport/stateProcess.js @@ -0,0 +1,8 @@ +import("system.neon"); +import("system.result"); +import("system.vars"); + +if (vars.get("$sys.validationerrors")) + result.string(neon.COMPONENTSTATE_DISABLED); +else + result.string(neon.COMPONENTSTATE_EDITABLE); diff --git a/entity/ExportTemplateSelection_entity/recordcontainers/jdito/contentProcess.js b/entity/ExportTemplateSelection_entity/recordcontainers/jdito/contentProcess.js deleted file mode 100644 index e197aca8b7760073849e21fb581b065c47215654..0000000000000000000000000000000000000000 --- a/entity/ExportTemplateSelection_entity/recordcontainers/jdito/contentProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.result"); -import("system.vars"); - -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; -if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id];}); - -result.object(rows); \ No newline at end of file diff --git a/entity/Leadimport_entity/Leadimport_entity.aod b/entity/Leadimport_entity/Leadimport_entity.aod index 5c483b9f63d00e93dc890594bc436b40fb45f62e..b794f161e46182f88b34adf15eb7670350f3b11a 100644 --- a/entity/Leadimport_entity/Leadimport_entity.aod +++ b/entity/Leadimport_entity/Leadimport_entity.aod @@ -242,6 +242,7 @@ <title>Upload new file</title> <onActionProcess>%aditoprj%/entity/Leadimport_entity/entityfields/uploadnewfile/onActionProcess.js</onActionProcess> <iconId>VAADIN:UPLOAD_ALT</iconId> + <state>INVISIBLE</state> </entityActionField> <entityField> <name>information</name> @@ -260,7 +261,7 @@ <onActionProcess>%aditoprj%/entity/Leadimport_entity/entityfields/load_data/onActionProcess.js</onActionProcess> <isMenuAction v="true" /> <iconId>VAADIN:CLOUD_DOWNLOAD</iconId> - <state>INVISIBLE</state> + <state>EDITABLE</state> </entityActionField> <entityConsumer> <name>LeadTempC</name> diff --git a/entity/Letter_entity/Letter_entity.aod b/entity/Letter_entity/Letter_entity.aod index ee8ee1576e79872ea9f0366716643c7afd04106a..8bab19f92a2debbaf0ff15063e43609467f98db8 100644 --- a/entity/Letter_entity/Letter_entity.aod +++ b/entity/Letter_entity/Letter_entity.aod @@ -4,19 +4,21 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Letter_entity/documentation.adoc</documentation> <onValidation>%aditoprj%/entity/Letter_entity/onValidation.js</onValidation> - <recordContainer>jdito</recordContainer> + <recordContainer>datalessConfig</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> </entityProvider> <entityField> <name>UID</name> + <state>EDITABLE</state> </entityField> <entityField> <name>DOCUMENT_TEMPLATE</name> <title>Document Template</title> <consumer>DocumentTemplates</consumer> <linkedContext>DocumentTemplate</linkedContext> + <state>EDITABLE</state> </entityField> <entityConsumer> <name>DocumentTemplates</name> @@ -44,6 +46,7 @@ <name>bindata</name> <title>Custom template</title> <contentType>FILE</contentType> + <state>EDITABLE</state> </entityField> <entityActionField> <name>downloadTemplate</name> @@ -54,24 +57,26 @@ </entityActionField> <entityField> <name>comingfrom</name> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/Letter_entity/entityfields/comingfrom/valueProcess.js</valueProcess> </entityField> <entityParameter> <name>ComingFrom_param</name> <expose v="true" /> </entityParameter> + <entityActionField> + <name>downloadLetterAndCreateActivity</name> + <title>Download letter and create Activity</title> + <onActionProcess>%aditoprj%/entity/Letter_entity/entityfields/downloadletterandcreateactivity/onActionProcess.js</onActionProcess> + <iconId>VAADIN:DOWNLOAD_ALT</iconId> + <state>DISABLED</state> + <stateProcess>%aditoprj%/entity/Letter_entity/entityfields/downloadletterandcreateactivity/stateProcess.js</stateProcess> + </entityActionField> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/Letter_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/Letter_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessConfig</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/Letter_entity/recordcontainers/jdito/onInsert.js b/entity/Letter_entity/entityfields/downloadletterandcreateactivity/onActionProcess.js similarity index 89% rename from entity/Letter_entity/recordcontainers/jdito/onInsert.js rename to entity/Letter_entity/entityfields/downloadletterandcreateactivity/onActionProcess.js index f82590e6fcb0df7f693a219f05579bddae213eda..840d399140a26629f7d42a2dce81995ac1758d39 100644 --- a/entity/Letter_entity/recordcontainers/jdito/onInsert.js +++ b/entity/Letter_entity/entityfields/downloadletterandcreateactivity/onActionProcess.js @@ -24,3 +24,5 @@ if (template) ActivityUtils.createNewActivity(null, links, null, null, translate.text("Letter"), text.parseDocument(content), $KeywordRegistry.activityDirection$outgoing(), [[template.filename, content, false]]); } +else + throw new Error("Error while using a document template: The provided template does not contain data."); \ No newline at end of file diff --git a/entity/Letter_entity/entityfields/downloadletterandcreateactivity/stateProcess.js b/entity/Letter_entity/entityfields/downloadletterandcreateactivity/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f52d9a4f1aaef64c96319e83b2f5dae4da376fcd --- /dev/null +++ b/entity/Letter_entity/entityfields/downloadletterandcreateactivity/stateProcess.js @@ -0,0 +1,8 @@ +import("system.neon"); +import("system.result"); +import("system.vars"); + +if (vars.get("$sys.validationerrors") || (!vars.get("$field.bindata") && !vars.get("$field.DOCUMENT_TEMPLATE"))) + result.string(neon.COMPONENTSTATE_DISABLED); +else + result.string(neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Letter_entity/recordcontainers/jdito/contentProcess.js b/entity/Letter_entity/recordcontainers/jdito/contentProcess.js deleted file mode 100644 index e197aca8b7760073849e21fb581b065c47215654..0000000000000000000000000000000000000000 --- a/entity/Letter_entity/recordcontainers/jdito/contentProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.result"); -import("system.vars"); - -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; -if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id];}); - -result.object(rows); \ No newline at end of file diff --git a/entity/MemberRoles_entity/contentTitleProcess.js b/entity/MemberRoles_entity/contentTitleProcess.js index cdb5d2367c9e46074b268b96b200fa347b9c5ecf..163260409e0b50da23db6289380f09fde28da60c 100644 --- a/entity/MemberRoles_entity/contentTitleProcess.js +++ b/entity/MemberRoles_entity/contentTitleProcess.js @@ -1,4 +1,5 @@ import("system.vars"); import("system.result"); +import("system.translate") -result.string(vars.getString("$field.TITLE")); \ No newline at end of file +result.string(translate.text(vars.getString("$field.TITLE"))); \ No newline at end of file diff --git a/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js b/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js index a84e5d27e3d72d014a9b67046111649c98ed4099..d71f4187a27a06b8cd729143f27d7c6ecab4ee3a 100644 --- a/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js +++ b/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js @@ -25,7 +25,7 @@ if (vars.exists("$sys.selection") && vars.getString("$sys.selection")) var params = { "ObjectIds_param" : JSON.stringify(parentIds), "ObjectTypes_param" : JSON.stringify(parentObjectTypes), - "RelationType_param" : vars.get("$field.OBJECTRELATIONTYPEID") + "RelationTypes_param" : vars.get("$field.OBJECTRELATIONTYPEID") }; neon.openContext("ObjectTree", "ObjectTreeEdit_view", null, neon.OPERATINGSTATE_NEW, params); diff --git a/entity/ObjectTree_entity/entityfields/objectrelationtypeid/valueProcess.js b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/valueProcess.js index 6dad72dac58144e1246329a26405c1de0f7e8845..87ebf6111df6a09ba98f8c23763be72593d1dbea 100644 --- a/entity/ObjectTree_entity/entityfields/objectrelationtypeid/valueProcess.js +++ b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/valueProcess.js @@ -2,7 +2,7 @@ import("system.neon"); import("system.vars"); import("system.result"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.RelationType_param") && vars.get("$param.RelationType_param")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.RelationTypes_param") && vars.get("$param.RelationTypes_param")) { - result.string(vars.get("$param.RelationType_param")) + result.string(vars.get("$param.RelationTypes_param")); } \ No newline at end of file diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod index 18b73ee9d79ca1d272ecba210f69d47f240fa849..0968837cb500a102196278911944e12c5390f590 100644 --- a/entity/Offer_entity/Offer_entity.aod +++ b/entity/Offer_entity/Offer_entity.aod @@ -37,6 +37,7 @@ <name>CURRENCY</name> <title>Currency</title> <consumer>KeywordCurrencies</consumer> + <groupable v="true" /> <mandatory v="true" /> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/currency/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/currency/valueProcess.js</valueProcess> @@ -58,6 +59,7 @@ <resolution>DAY</resolution> <outputFormat>dd.MM.yyyy</outputFormat> <inputFormat>dd.MM.yyyy</inputFormat> + <groupable v="true" /> <mandatory v="true" /> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/offerdate/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offerdate/valueProcess.js</valueProcess> @@ -73,6 +75,7 @@ <title>Probability</title> <consumer>KeywordProbabilities</consumer> <contentType>NUMBER</contentType> + <groupable v="true" /> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/probability/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/probability/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/probability/displayValueProcess.js</displayValueProcess> @@ -81,6 +84,7 @@ <name>STATUS</name> <title>Status</title> <consumer>KeywordOfferStates</consumer> + <groupable v="true" /> <mandatory v="true" /> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/status/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/status/valueProcess.js</valueProcess> @@ -155,7 +159,9 @@ <name>NET</name> <title>Total net</title> <contentType>NUMBER</contentType> + <outputFormat>#,##0.00</outputFormat> <inputFormat>#,##0.00</inputFormat> + <groupable v="true" /> <state>READONLY</state> <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/net/displayValueProcess.js</displayValueProcess> </entityField> @@ -226,12 +232,14 @@ <name>CONTACT_ORG_ID</name> <title>Company</title> <consumer>Organisations</consumer> + <groupable v="true" /> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/contact_org_id/stateProcess.js</stateProcess> </entityField> <entityField> <name>CONTACT_PERSON_ID</name> <title>Person</title> <consumer>Persons</consumer> + <groupable v="true" /> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/contact_person_id/stateProcess.js</stateProcess> </entityField> <entityConsumer> @@ -524,6 +532,7 @@ <name>PAYMENTTERMS</name> <title>Payment term</title> <consumer>KeywordPaymentTerm</consumer> + <groupable v="true" /> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/paymentterms/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/paymentterms/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/paymentterms/displayValueProcess.js</displayValueProcess> @@ -532,6 +541,7 @@ <name>DELIVERYTERMS</name> <title>Delivery specification</title> <consumer>KeywordDeliveryTerm</consumer> + <groupable v="true" /> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/deliveryterms/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/deliveryterms/displayValueProcess.js</displayValueProcess> @@ -911,6 +921,7 @@ <documentation>%aditoprj%/entity/Offer_entity/entityfields/contact_id/documentation.adoc</documentation> <title>Contact</title> <consumer>AnyContacts</consumer> + <groupable v="true" /> <linkedContextProcess>%aditoprj%/entity/Offer_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess> <mandatory v="true" /> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/contact_id/stateProcess.js</stateProcess> @@ -1008,6 +1019,10 @@ <fieldName>#PROVIDER</fieldName> </dependency> </entityConsumer> + <entityAggregateField> + <name>NET_aggregate</name> + <parentField>NET</parentField> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -1241,6 +1256,11 @@ <name>ISOLANGUAGE.displayValue</name> <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/isolanguage.displayvalue/expression.js</expression> </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>NET_aggregate.value</name> + <recordfield>OFFER.NET</recordfield> + <aggregateType>SUM</aggregateType> + </aggregateFieldDbMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/price_aggregate.value/expression.js b/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/price_aggregate.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..6a3e3167e6a5d3a3ec8b30eefd928c665c58dc4a --- /dev/null +++ b/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/price_aggregate.value/expression.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("OFFERITEM.PRICE * OFFERITEM.QUANTITY * ((100 - OFFERITEM.DISCOUNT) / 100)"); \ No newline at end of file diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod index 30c65d442d8e914dbe9ed081c33c60132450794a..6bec26be42531a4a59b275c0674feb1be0099d62 100644 --- a/entity/Order_entity/Order_entity.aod +++ b/entity/Order_entity/Order_entity.aod @@ -50,6 +50,7 @@ <resolution>DAY</resolution> <outputFormat>dd.MM.yyyy</outputFormat> <inputFormat>dd.MM.yyyy</inputFormat> + <groupable v="true" /> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesorderdate/valueProcess.js</valueProcess> </entityField> @@ -134,6 +135,7 @@ <name>NET</name> <title>Total net</title> <contentType>NUMBER</contentType> + <groupable v="true" /> <state>READONLY</state> <valueProcess></valueProcess> <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/net/displayValueProcess.js</displayValueProcess> @@ -189,11 +191,13 @@ <name>CONTACT_ORG_ID</name> <title>Company</title> <consumer>Organisations</consumer> + <groupable v="true" /> </entityField> <entityField> <name>CONTACT_PERSON_ID</name> <title>Person</title> <consumer>Persons</consumer> + <groupable v="true" /> </entityField> <entityConsumer> <name>AnyContacts</name> @@ -349,6 +353,7 @@ <name>OFFER_ID</name> <title>Offer</title> <consumer>Offers</consumer> + <groupable v="true" /> <linkedContext>Offer</linkedContext> <state>AUTO</state> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/offer_id/valueProcess.js</valueProcess> @@ -434,6 +439,7 @@ <documentation>%aditoprj%/entity/Order_entity/entityfields/ordertype/documentation.adoc</documentation> <title>Order Type</title> <consumer>KeywordOrderTypes</consumer> + <groupable v="true" /> <mandatory v="true" /> <usePermissions v="true" /> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/ordertype/valueProcess.js</valueProcess> @@ -444,6 +450,7 @@ <documentation>%aditoprj%/entity/Order_entity/entityfields/orderstatus/documentation.adoc</documentation> <title>Sent</title> <contentType>BOOLEAN</contentType> + <groupable v="true" /> <dropDownProcess>%aditoprj%/entity/Order_entity/entityfields/orderstatus/dropDownProcess.js</dropDownProcess> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/orderstatus/valueProcess.js</valueProcess> </entityField> @@ -465,6 +472,7 @@ <documentation>%aditoprj%/entity/Order_entity/entityfields/cancellation/documentation.adoc</documentation> <title>${ORDER_CANCELLED}</title> <contentType>BOOLEAN</contentType> + <groupable v="true" /> <dropDownProcess>%aditoprj%/entity/Order_entity/entityfields/cancellation/dropDownProcess.js</dropDownProcess> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/cancellation/valueProcess.js</valueProcess> </entityField> @@ -489,6 +497,7 @@ <title>Pay date</title> <contentType>DATE</contentType> <resolution>DAY</resolution> + <groupable v="true" /> <stateProcess>%aditoprj%/entity/Order_entity/entityfields/paydate/stateProcess.js</stateProcess> </entityField> <entityField> diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index 96b76098fde1ff72a627226316fcbca2d88d72cc..875ad026d6d26f22daffee578b7e83c580b1639e 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -39,6 +39,7 @@ <name>LANGUAGE</name> <title>Language</title> <consumer>Languages</consumer> + <groupable v="true" /> <selectionMode>SINGLE</selectionMode> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/language/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Organisation_entity/entityfields/language/displayValueProcess.js</displayValueProcess> @@ -56,6 +57,7 @@ <name>STATUS</name> <title>Status</title> <consumer>KeywordContactStates</consumer> + <groupable v="true" /> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/status/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Organisation_entity/entityfields/status/displayValueProcess.js</displayValueProcess> </entityField> @@ -63,6 +65,7 @@ <name>TYPE</name> <title>Type</title> <consumer>KeywordOrganisationTypes</consumer> + <groupable v="true" /> <displayValueProcess>%aditoprj%/entity/Organisation_entity/entityfields/type/displayValueProcess.js</displayValueProcess> </entityField> <entityConsumer> @@ -785,6 +788,7 @@ <title>Turnover Current Year</title> <contentType>NUMBER</contentType> <outputFormat>#,##0.00€</outputFormat> + <groupable v="true" /> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnovercurrentyear/valueProcess.js</valueProcess> </entityField> <entityField> @@ -792,6 +796,7 @@ <title>Turnover Last Year</title> <contentType>NUMBER</contentType> <outputFormat>#,##0.00€</outputFormat> + <groupable v="true" /> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnoverlastyear/valueProcess.js</valueProcess> </entityField> <entityField> @@ -948,7 +953,6 @@ <entityProvider> <name>SelfDuplicatesProvider</name> <titlePlural>Duplicates</titlePlural> - <recordContainer>index</recordContainer> </entityProvider> <entityParameter> <name>OnlyShowContactIds_param</name> @@ -1003,6 +1007,7 @@ </entityActionGroup> <entityField> <name>STANDARD_COUNTRY</name> + <groupable v="true" /> </entityField> <entityParameter> <name>OnlyOwnSupervised_param</name> @@ -1022,6 +1027,7 @@ </entityParameter> <entityParameter> <name>DuplicateCurrentContactId_param</name> + <title></title> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/duplicatecurrentcontactid_param/valueProcess.js</valueProcess> </entityParameter> <entityParameter> @@ -1066,9 +1072,11 @@ </entityField> <entityField> <name>STANDARD_ZIP</name> + <groupable v="true" /> </entityField> <entityField> <name>STANDARD_CITY</name> + <groupable v="true" /> </entityField> <entityField> <name>ORGANISATION_REPORT_DATA</name> diff --git a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js index 68b83abdba534ab6e967244ddbab5057150be017..d33e137213bc04c9d971f030d68840ab0e9c46b4 100644 --- a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js +++ b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js @@ -8,7 +8,7 @@ if(sysSelection.length > 0) //if data selected -> use selected data params = { "selectedData_param" : JSON.stringify(sysSelection), "comingFrom_param" : vars.get("$sys.currentcontextname")} - neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_NEW, params); + neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_VIEW, params); } else //else -> use Filtercondition { @@ -16,6 +16,6 @@ else //else -> use Filtercondition params = { "selectedData_param" : JSON.stringify(sysFilter), "comingFrom_param" : vars.get("$sys.currentcontextname")} - neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_NEW, params); + neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_VIEW, params); } diff --git a/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js b/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js index fdbb29bfe3953fb655929382d1c4f393330c2d0a..27d043515ab626d29f0d3453c64ed6c053c8b2a9 100644 --- a/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js +++ b/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js @@ -1,6 +1,5 @@ import("system.project"); import("system.indexsearch"); -import("system.logging"); import("system.vars"); import("DuplicateScanner_lib"); import("system.result"); @@ -8,11 +7,11 @@ import("system.result"); var scannerName = "OrganisationDuplicates"; var targetEntity = "Organisation_entity"; var valuesToCheck = {}; -var entityFieldsToLoad = DuplicateScannerUtils.GetEntityFieldsFromConfig(scannerName, targetEntity); +var entityFieldsToLoad = DuplicateScannerUtils.getEntityFieldObjectFromConfig(scannerName, targetEntity); var idsForEmptyResult = JSON.stringify(["nodata"]); -if (entityFieldsToLoad == null || entityFieldsToLoad.length == 0) +if (entityFieldsToLoad == null) result.string(idsForEmptyResult); else { @@ -23,17 +22,22 @@ else vars.get("$field.STANDARD_CITY"); vars.get("$field.STANDARD_ZIP"); vars.get("$field.STANDARD_ADDRESS"); - - for (let fieldname in entityFieldsToLoad) - { - var field = entityFieldsToLoad[fieldname]; + + var allFieldsToLoad = entityFieldsToLoad.entityFields.concat(entityFieldsToLoad.entityIdField); + allFieldsToLoad.forEach(function (field) + { var fieldValue = vars.get("$field." + field); - if (fieldValue) - valuesToCheck[field] = fieldValue; - } - - var scanResults = DuplicateScannerUtils.ScanForDuplicates(scannerName, targetEntity, valuesToCheck, null) || []; + valuesToCheck[field] = fieldValue; + }); + + var scanResults = []; + + //don't search if only the id field has a value + var fieldsToCheck = Object.keys(valuesToCheck); + if (!(fieldsToCheck.length === 0 || (fieldsToCheck.length === 1 && entityFieldsToLoad.entityIdField in valuesToCheck))) + scanResults = DuplicateScannerUtils.ScanForDuplicates(scannerName, targetEntity, valuesToCheck, null) || []; + var duplicateIds = scanResults.map(function (scanResult) { return scanResult[indexsearch.FIELD_ID]; diff --git a/entity/Organisation_entity/recordcontainers/index/affectedIds.js b/entity/Organisation_entity/recordcontainers/index/affectedIds.js index a8b02566f9728cbe5a6c53033c884d780b6a71b8..ee11b9a9e9cf1d5ef4297d4b25d2da7fd27210a7 100644 --- a/entity/Organisation_entity/recordcontainers/index/affectedIds.js +++ b/entity/Organisation_entity/recordcontainers/index/affectedIds.js @@ -4,11 +4,13 @@ import("system.vars"); import("IndexSearch_lib"); import("Sql_lib"); -var infoContainer, onUpdFn, tableName, res; +var infoContainer, onUpdFn, tableName, res, action; tableName = vars.get("$local.table"); idValue = vars.get("$local.idvalue"); -infoContainer = IndexsearchUtils.createAffectedInfoContainer(idValue, null, vars.get("$local.action") +action = vars.get("$local.action"); + +infoContainer = IndexsearchUtils.createAffectedInfoContainer(idValue, null, action ,function (){return vars.get("$local.columns")} ,function (){return vars.get("$local.oldvalues")} ,function (){return vars.get("$local.values")}); @@ -19,13 +21,21 @@ switch (tableName) res = [idValue]; break; case "ORGANISATION": - res = newSelect("CONTACT.CONTACTID") + //if an organisation is created or deleted there is no need to do this for the ORGANISATION and CONTACT-table twice, since everytime a + //entry in ORGANISATION is done´, it is also done in CONTACT which is handled in the switch case above => skip then the ORGANISATION-part + //(also on delete the record does not exist anymore) + if (action == "U") + { + res = newSelect("CONTACT.CONTACTID") .from("CONTACT") .where("CONTACT.PERSON_ID is null") .and("CONTACT.ORGANISATION_ID", idValue) .arrayColumn(); + } break; case "ADDRESS": + //do not skip here if it's a delete action since it could be that only an address is removed and not a whole record-set of + //organisation, address, communication, etc. res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){ return newSelect("ADDRESS.CONTACT_ID") .from("ADDRESS") @@ -34,6 +44,8 @@ switch (tableName) }); break; case "COMMUNICATION": + //do not skip here if it's a delete action since it could be that only a communication-entry is removed and not a whole record-set of + //organisation, address, communication, etc. res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){ return newSelect("COMMUNICATION.CONTACT_ID") .from("COMMUNICATION") @@ -41,10 +53,10 @@ switch (tableName) .arrayColumn(); }); break; - default: - res = []; //needed, because the Index is being rebuilt if nothing gets returned } +//needed, because the complete index (fullIndexer) is being rebuilt if nothing gets returned here +if (res) result.object(res); - - +else + result.object([]); diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index d8bfbd275ac29413e596bd0b43dc2348f0b01f1a..446f310d7bc96179cfbcae4721156500e1110b61 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -60,6 +60,7 @@ <name>SALUTATION</name> <title>Salutation</title> <consumer>Salutations</consumer> + <mandatory v="true" /> </entityField> <entityField> <name>TITLE</name> @@ -288,6 +289,7 @@ <name>LANGUAGE</name> <title>Language</title> <consumer>Languages</consumer> + <groupable v="true" /> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/language/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/language/displayValueProcess.js</displayValueProcess> @@ -438,6 +440,7 @@ <name>ADDRESS_ID</name> <title>Address</title> <consumer>ContactAndOrganisationAddresses</consumer> + <groupable v="true" /> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/address_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/address_id/displayValueProcess.js</displayValueProcess> </entityField> @@ -578,6 +581,7 @@ <name>STATUS</name> <title>Status</title> <consumer>KeywordContactStates</consumer> + <groupable v="true" /> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/status/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/status/displayValueProcess.js</displayValueProcess> </entityField> @@ -616,6 +620,7 @@ <entityField> <name>DEPARTMENT</name> <title>Department</title> + <groupable v="true" /> <dropDownProcess>%aditoprj%/entity/Person_entity/entityfields/department/dropDownProcess.js</dropDownProcess> <textInputAllowed v="true" /> </entityField> @@ -894,6 +899,7 @@ <entityField> <name>STANDARD_COUNTRY</name> <title>Country</title> + <groupable v="true" /> </entityField> <entityConsumer> <name>SelfDuplicatesUncached</name> @@ -928,19 +934,23 @@ <name>COMMRESTRICTIONS_ACTIVE</name> <title>Commrestrictions</title> <color>$priority-high-color</color> + <groupable v="true" /> <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/commrestrictions_active/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>STANDARD_ZIP</name> <title>ZIP</title> + <groupable v="true" /> </entityField> <entityField> <name>STANDARD_ADDRESS</name> <title>Address</title> + <groupable v="true" /> </entityField> <entityField> <name>STANDARD_CITY</name> <title>City</title> + <groupable v="true" /> </entityField> <entityProvider> <name>QuickEntryContacts</name> @@ -1184,12 +1194,15 @@ </entityField> <entityField> <name>IndexCountry</name> + <groupable v="false" /> </entityField> <entityField> <name>IndexZIP</name> + <groupable v="false" /> </entityField> <entityField> <name>IndexCity</name> + <groupable v="false" /> </entityField> <entityParameter> <name>OnlyOwnSupervised_param</name> diff --git a/entity/Person_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js b/entity/Person_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js index 7b5bf332a2c00f4b6bf433aa9309a3c6034bbc7b..2ad35007ff37100b2d33ffa1443d026442cb976e 100644 --- a/entity/Person_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js +++ b/entity/Person_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js @@ -8,7 +8,7 @@ if(sysSelection.length > 0) //if data selected -> use selected data params = { "selectedData_param" : JSON.stringify(sysSelection), "comingFrom_param" : vars.get("$sys.currentcontextname")} - neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_NEW, params); + neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_VIEW, params); } else //else -> use Filtercondition { @@ -16,5 +16,5 @@ else //else -> use Filtercondition params = { "selectedData_param" : JSON.stringify(sysFilter), "comingFrom_param" : vars.get("$sys.currentcontextname")} - neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_NEW, params); + neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_VIEW, params); } \ No newline at end of file diff --git a/entity/Person_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js b/entity/Person_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js index 495e2c4503d7e5d36426e013ac66bf55a049a2d4..ce8253a306e0c1bc08dbca4b7e344a68518bf2a0 100644 --- a/entity/Person_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js +++ b/entity/Person_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js @@ -5,65 +5,56 @@ import("system.vars"); import("DuplicateScanner_lib"); import("system.result"); -let scannerName = "PersonDuplicates"; -let targetEntity = "Person_entity"; -let valuesToCheck = {}; -var entityFieldsToLoad = DuplicateScannerUtils.GetEntityFieldsFromConfig(scannerName, targetEntity); +var scannerName = "PersonDuplicates"; +var targetEntity = "Person_entity"; +var valuesToCheck = {}; +var entityFieldsToLoad = DuplicateScannerUtils.getEntityFieldObjectFromConfig(scannerName, targetEntity); -if(entityFieldsToLoad == null || entityFieldsToLoad.length == 0) - result.string(JSON.stringify(["nodata"])); +var idsForEmptyResult = JSON.stringify(["nodata"]); + +if (entityFieldsToLoad == null) + result.string(idsForEmptyResult); else { //Read the values of all available entity fields and write the fieldname7value combination //as key/value pairs into an object. This is used to trigger the scan for duplicates - vars.get("$field.STANDARD_CITY"); - vars.get("$field.STANDARD_ZIP"); - vars.get("$field.STANDARD_ADDRESS"); - vars.get("$field.FIRSTNAME"); - vars.get("$field.LASTNAME"); - vars.get("$field.PersAddresses.insertedRows") - vars.get("$field.PersAddresses.changedRows") - vars.get("$field.PersAddresses.deletedRows") - - - let field = ''; - let fieldValue = ''; - for (fieldname in entityFieldsToLoad) - { - field = entityFieldsToLoad[fieldname]; - fieldValue = vars.get("$field." + field); - - if(fieldValue != null && fieldValue != "") - { - valuesToCheck[field] = fieldValue; - } - } - - let scanResults = DuplicateScannerUtils.ScanForDuplicates(scannerName, targetEntity, - valuesToCheck, null); - - let duplicateIds = []; - - if(scanResults != undefined && scanResults != null) - { - //Run thru every duplicate result and read out the id. - //Do it now to have a simple array on all usages lateron. - for (let i = 0; i < scanResults.length; i++) - { - let duplicateContactId = scanResults[i][indexsearch.FIELD_ID]; - duplicateIds.push(duplicateContactId); - } - } - - /* - * To achieve that if there are no duplicates, no contacts should be shown and therefore returned by the - * recordcontainer, an invalid id gets returned. It then is used in the conditionProcess to load the duplicates. - * Because of its invalidity, no records are shown. - */ - if(duplicateIds.length == 0) - result.string(JSON.stringify(["nodata"])); - else - result.string(JSON.stringify(duplicateIds)); -} - + vars.get("$field.STANDARD_CITY"); + vars.get("$field.STANDARD_ZIP"); + vars.get("$field.STANDARD_ADDRESS"); + vars.get("$field.FIRSTNAME"); + vars.get("$field.LASTNAME"); + vars.get("$field.PersAddresses.insertedRows") + vars.get("$field.PersAddresses.changedRows") + vars.get("$field.PersAddresses.deletedRows") + + var allFieldsToLoad = entityFieldsToLoad.entityFields.concat(entityFieldsToLoad.entityIdField); + allFieldsToLoad.forEach(function (field) + { + var fieldValue = vars.get("$field." + field); + if (fieldValue) + valuesToCheck[field] = fieldValue; + }); + + var scanResults = []; + + //don't search if only the id field has a value + var fieldsToCheck = Object.keys(valuesToCheck); + if (!(fieldsToCheck.length === 0 || (fieldsToCheck.length === 1 && entityFieldsToLoad.entityIdField in valuesToCheck))) + scanResults = DuplicateScannerUtils.ScanForDuplicates(scannerName, targetEntity, valuesToCheck, null) || []; + + var duplicateIds = scanResults.map(function (duplicate) + { + return duplicate[indexsearch.FIELD_ID]; + }); + + /* + * To achieve that if there are no duplicates, no contacts should be shown and therefore returned by the + * recordcontainer, an invalid id gets returned. It then is used in the conditionProcess to load the duplicates. + * Because of its invalidity, no records are shown. + */ + if (duplicateIds.length == 0) + result.string(idsForEmptyResult); + else + result.string(JSON.stringify(duplicateIds)); +} \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/index/affectedIds.js b/entity/Person_entity/recordcontainers/index/affectedIds.js index 1cbcfeeb6850a41a4d13165adc198e5e10eb94c8..6a5716e6cc8f003f680f186b5bc46a13033e808b 100644 --- a/entity/Person_entity/recordcontainers/index/affectedIds.js +++ b/entity/Person_entity/recordcontainers/index/affectedIds.js @@ -4,11 +4,13 @@ import("system.vars"); import("IndexSearch_lib"); import("Sql_lib"); -var infoContainer, onUpdFn, tableName, res; +var infoContainer, onUpdFn, tableName, res, action; tableName = vars.get("$local.table"); idValue = vars.get("$local.idvalue"); -infoContainer = IndexsearchUtils.createAffectedInfoContainer(idValue, null, vars.get("$local.action") +action = vars.get("$local.action"); + +infoContainer = IndexsearchUtils.createAffectedInfoContainer(idValue, null, action ,function (){return vars.get("$local.columns")} ,function (){return vars.get("$local.oldvalues")} ,function (){return vars.get("$local.values")}); @@ -19,19 +21,32 @@ switch (tableName) res = [idValue]; break; case "PERSON": - res = newSelect("CONTACT.CONTACTID") - .from("CONTACT") - .where("CONTACT.PERSON_ID", idValue) - .arrayColumn(); + //if a contact person is created or deleted there is no need to determine the index-uid for the PERSON and CONTACT-table, since everytime a + //entry in PERSON is done, there is also one mande in the CONTACT table which is handled in the switch case above + //=> skip then the PERSON-part (also on delete the record does not exist anymore) + if (action == "U") + { + res = newSelect("CONTACT.CONTACTID") + .from("CONTACT") + .where("CONTACT.PERSON_ID", idValue) + .arrayColumn(); + } break; case "ORGANISATION": - res = newSelect("CONTACT.CONTACTID") - .from("CONTACT") - .where("CONTACT.ORGANISATION_ID", idValue) - .and("CONTACT.PERSON_ID is not null") - .arrayColumn(); + //an organisation can only be deleted if there are no persons left and if an organisation is created there is no entry for person that has + //to be indexed => only in the update-case necessary + if (action == "U") + { + res = newSelect("CONTACT.CONTACTID") + .from("CONTACT") + .where("CONTACT.ORGANISATION_ID", idValue) + .and("CONTACT.PERSON_ID is not null") + .arrayColumn(); + } break; case "ADDRESS": + //do not skip here if it's a delete action since it could be that only an address is removed and not a whole record-set of organisation, + //person, address, communication, etc. res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){ return newSelect("ADDRESS.CONTACT_ID") .from("ADDRESS") @@ -40,6 +55,8 @@ switch (tableName) }); break; case "COMMUNICATION": + //do not skip here if it's a delete action since it could be that only a communication-entry is removed and not a whole record-set of + //organisation, person, address, communication, etc. res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){ return newSelect("COMMUNICATION.CONTACT_ID") .from("COMMUNICATION") @@ -47,9 +64,10 @@ switch (tableName) .arrayColumn(); }); break; - default: - res = []; //needed, because the Index is being rebuilt if nothing gets returned - break; } - result.object(res); \ No newline at end of file +//needed, because the complete index (fullIndexer) is being rebuilt if nothing gets returned here +if (res) + result.object(res); +else + result.object([]); diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod index 87871e04a0b855f31100bc83b883457f13f11d72..6b97e94cfbe88f96d63d68a50c202c814691ebfa 100644 --- a/entity/Product_entity/Product_entity.aod +++ b/entity/Product_entity/Product_entity.aod @@ -26,6 +26,7 @@ <name>GROUPCODEID</name> <title>Product Group</title> <consumer>KeywordProductGroupcodes</consumer> + <groupable v="true" /> <mandatory v="true" /> <displayValueProcess>%aditoprj%/entity/Product_entity/entityfields/groupcodeid/displayValueProcess.js</displayValueProcess> </entityField> @@ -57,6 +58,7 @@ <name>STATUS</name> <title>Active</title> <contentType>BOOLEAN</contentType> + <groupable v="true" /> <dropDownProcess>%aditoprj%/entity/Product_entity/entityfields/status/dropDownProcess.js</dropDownProcess> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/status/valueProcess.js</valueProcess> </entityField> @@ -64,6 +66,7 @@ <name>UNIT</name> <title>Unit</title> <consumer>KeywordQuantityUnits</consumer> + <groupable v="true" /> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/unit/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Product_entity/entityfields/unit/displayValueProcess.js</displayValueProcess> @@ -194,6 +197,7 @@ <name>CONTACT_ID</name> <title>Developer</title> <consumer>Organisations</consumer> + <groupable v="true" /> <linkedContext>Organisation</linkedContext> <displayValueProcess>%aditoprj%/entity/Product_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess> <onValueChangeTypes> diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod index 6d1292a40239e42a8ef9289f48e981d54275b310..a6d245878b3cac5cd80f3ed42f8d1888cb3000ee 100644 --- a/entity/Productprice_entity/Productprice_entity.aod +++ b/entity/Productprice_entity/Productprice_entity.aod @@ -30,13 +30,15 @@ </entityField> <entityField> <name>FROMQUANTITY</name> - <title>From no. of units</title> + <title>Valid from</title> <contentType>NUMBER</contentType> <outputFormat>#,##0</outputFormat> <inputFormat>#,##0</inputFormat> <mandatory v="true" /> <state>AUTO</state> + <titleProcess>%aditoprj%/entity/Productprice_entity/entityfields/fromquantity/titleProcess.js</titleProcess> <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/fromquantity/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/Productprice_entity/entityfields/fromquantity/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>PRICE</name> @@ -317,6 +319,10 @@ <name>PRODUCT_ID.displayValue</name> <expression>%aditoprj%/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js</expression> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>FROMQUANTITY.displayValue</name> + <expression>%aditoprj%/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Productprice_entity/entityfields/fromquantity/displayValueProcess.js b/entity/Productprice_entity/entityfields/fromquantity/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7b30f11d5ecb07a98f5c68666a73f3ee7e786086 --- /dev/null +++ b/entity/Productprice_entity/entityfields/fromquantity/displayValueProcess.js @@ -0,0 +1,16 @@ +import("KeywordRegistry_basic"); +import("Keyword_lib"); +import("Sql_lib"); +import("system.result"); +import("system.vars"); + + +var value = vars.get("$field.FROMQUANTITY") +var productid = vars.get("$field.PRODUCT_ID") +var unit = newSelect("UNIT") + .from("PRODUCT") + .where("PRODUCT.PRODUCTID", productid) + .cell(); + +if(value) + result.string(value + " " + KeywordUtils.getViewValue($KeywordRegistry.quantityUnit(), unit)); diff --git a/entity/Productprice_entity/entityfields/fromquantity/titleProcess.js b/entity/Productprice_entity/entityfields/fromquantity/titleProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c1ace705cdc0454a56b3e9b628023c5d593b93d0 --- /dev/null +++ b/entity/Productprice_entity/entityfields/fromquantity/titleProcess.js @@ -0,0 +1,21 @@ +import("system.translate"); +import("KeywordRegistry_basic"); +import("Keyword_lib"); +import("Sql_lib"); +import("system.result"); +import("system.vars"); +import("system.neon") + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && + vars.get("$field.PRODUCT_ID") != null && vars.get("$field.PRODUCT_ID") != undefined && vars.get("$field.PRODUCT_ID") != "") +{ + var productid = vars.get("$field.PRODUCT_ID") + var unit = newSelect("UNIT") + .from("PRODUCT") + .where("PRODUCT.PRODUCTID", productid) + .cell(); + + result.string(translate.text("Valid from (as ") + KeywordUtils.getViewValue($KeywordRegistry.quantityUnit(), unit) + ")"); +} +else + result.string(translate.text("Valid from")); \ No newline at end of file diff --git a/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js b/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..9d2ad815005cb83931979b4390e103fbdb198533 --- /dev/null +++ b/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js @@ -0,0 +1,14 @@ +import("system.result"); +import("KeywordRegistry_basic"); +import("Keyword_lib"); +import("system.SQLTYPES"); +import("Sql_lib"); + + +var helper = new SqlMaskingUtils(); + +var res = newSelect(helper.concat([helper.cast("PRODUCTPRICE.FROMQUANTITY", SQLTYPES.CHAR, 36), "' '", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.quantityUnit(), "PRODUCT.UNIT")], "|")) + .from("PRODUCT") + .where("PRODUCT.PRODUCTID = PRODUCTPRICE.PRODUCT_ID") + .toString() +result.string(res) \ No newline at end of file diff --git a/entity/QuickEntry_entity/QuickEntry_entity.aod b/entity/QuickEntry_entity/QuickEntry_entity.aod index 3a754cdb58b33ee3c98c2e2e277719f675006c28..ac7e1e7e1bcc4d93f1c0e8270c9386530dfeae40 100644 --- a/entity/QuickEntry_entity/QuickEntry_entity.aod +++ b/entity/QuickEntry_entity/QuickEntry_entity.aod @@ -67,10 +67,13 @@ <entityField> <name>FIRSTNAME</name> <title>Firstname</title> + <mandatoryProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/firstname/mandatoryProcess.js</mandatoryProcess> </entityField> <entityField> <name>LASTNAME</name> <title>Lastname</title> + <mandatoryProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/lastname/mandatoryProcess.js</mandatoryProcess> + <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/lastname/valueProcess.js</valueProcess> </entityField> <entityField> <name>PERSON_TITLE</name> @@ -81,6 +84,7 @@ <name>PERSON_SALUTATION</name> <title>Salutation</title> <consumer>Salutations</consumer> + <mandatoryProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/person_salutation/mandatoryProcess.js</mandatoryProcess> </entityField> <entityField> <name>PERSON_CONTACT_ID</name> @@ -224,6 +228,24 @@ <stateProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/leadquickacquisition/stateProcess.js</stateProcess> <onValueChange>%aditoprj%/entity/QuickEntry_entity/entityfields/leadquickacquisition/onValueChange.js</onValueChange> </entityField> + <entityConsumer> + <name>OrgAndPersDuplicates</name> + <dependency> + <name>dependency</name> + <entityName>AnyContact_entity</entityName> + <fieldName>ContactsByIds</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContactIds_param</name> + <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/contactids_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>WithPrivatePersons_param</name> + <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/QuickEntry_entity/entityfields/lastname/mandatoryProcess.js b/entity/QuickEntry_entity/entityfields/lastname/mandatoryProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c5a419766d570f6091355c47f0362d476d2a4c71 --- /dev/null +++ b/entity/QuickEntry_entity/entityfields/lastname/mandatoryProcess.js @@ -0,0 +1,10 @@ +import("system.logging"); +import("system.result"); +import("system.vars"); + +var insertedRows = vars.get("$field.Adresses.insertedRows"); +var isInserted = insertedRows.some(function (row){ + return row["ZIP"] || row["CITY"] || row["ADDRESS"]; +}) + +result.string(isInserted); \ No newline at end of file diff --git a/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/contactids_param/valueProcess.js b/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/contactids_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..206a4b979fde0a202db52865656708e74b5f2d3f --- /dev/null +++ b/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/contactids_param/valueProcess.js @@ -0,0 +1,87 @@ +import("system.indexsearch"); +import("system.vars"); +import("DuplicateScanner_lib"); +import("system.result"); + +//trigger refresh +vars.get("$field.FIRSTNAME"); +vars.get("$field.LASTNAME"); + +var uid = vars.get("$field.UID"); +var idsForEmptyResult = JSON.stringify(["nodata"]); +var duplicateScans = []; + +duplicateScans.push(["PersonDuplicates", "Person_entity", {"CONTACTID" : uid}]); + +vars.get("$field.Contacts.insertedRows").forEach(function (contact) +{ + duplicateScans.push(["PersonDuplicates", "Person_entity", contact]); +}); + +var organisationName = vars.get("$field.ORGANISATION_NAME"); +//although the standard address is not set at this point, it can be assumed that it will be the first one +var firstOrganisationAddress = vars.get("$field.OrgAddresses.insertedRows")[0]; +if (organisationName || firstOrganisationAddress) +{ + var city = null; + var zipCode = null; + var address = null; + + if (firstOrganisationAddress) + { + city = firstOrganisationAddress["CITY"]; + zipCode = firstOrganisationAddress["ZIP"]; + address = firstOrganisationAddress["ADDRESS"]; + } + + duplicateScans.push(["OrganisationDuplicates", "Organisation_entity", { + "CONTACTID" : uid, + "NAME" : organisationName, + "STANDARD_CITY" : city, + "STANDARD_ZIP" : zipCode, + "STANDARD_ADDRESS" : address + }]); +} + +var duplicates = duplicateScans.reduce(function (duplicateArr, [scannerName, entity, fieldValues]) +{ + return duplicateArr.concat(_getDuplicates(scannerName, entity, fieldValues)); +}, []); + +if (duplicates.length === 0) + result.string(idsForEmptyResult); +else + result.string(JSON.stringify(duplicates)); + + +function _getDuplicates (pScannerName, pEntity, pEntityFieldValues) +{ + var fieldsToLoad = DuplicateScannerUtils.getEntityFieldObjectFromConfig(pScannerName, pEntity); + if (fieldsToLoad == null) + return []; + + var valuesToCheck = {}; + + var allFieldsToLoad = fieldsToLoad.entityFields.concat(fieldsToLoad.entityIdField); + allFieldsToLoad.forEach(function (field) + { + var fieldValue = field in pEntityFieldValues + ? pEntityFieldValues[field] + : vars.get("$field." + field); + if (fieldValue) + valuesToCheck[field] = fieldValue; + }); + + //don't search if only the id field has a value + var fieldsToCheck = Object.keys(valuesToCheck); + if (fieldsToCheck.length === 0 || (fieldsToCheck.length === 1 && fieldsToLoad.entityIdField in valuesToCheck)) + return []; + + var scanResults = DuplicateScannerUtils.ScanForDuplicates(pScannerName, pEntity, valuesToCheck, null) || []; + var duplicateIds = scanResults.map(function (duplicate) + { + return duplicate[indexsearch.FIELD_ID]; + }); + + return duplicateIds; +} diff --git a/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js b/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..40effa0178464da0c7850912345f19c7fa95975a --- /dev/null +++ b/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string(true); \ No newline at end of file diff --git a/entity/QuickEntry_entity/entityfields/person_salutation/mandatoryProcess.js b/entity/QuickEntry_entity/entityfields/person_salutation/mandatoryProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..612c7e81d16e51455c5f693c1f4a58579a2b0548 --- /dev/null +++ b/entity/QuickEntry_entity/entityfields/person_salutation/mandatoryProcess.js @@ -0,0 +1,15 @@ +import("system.logging"); +import("system.result"); +import("system.vars"); + +var isMandatory = false; +if (vars.get("$field.LASTNAME") != "") + isMandatory = true; +else { + var insertedRows = vars.get("$field.Adresses.insertedRows");//this is the list of person contact addresses + isMandatory = insertedRows.some(function (row){ + return row["ZIP"] || row["CITY"] || row["ADDRESS"]; + }); +} + +result.string(isMandatory); \ No newline at end of file diff --git a/entity/Role_entity/recordcontainers/jdito/contentProcess.js b/entity/Role_entity/recordcontainers/jdito/contentProcess.js index 0f67d474c580225d5785b8ebfdde880267506a75..25ef04f7b115f5000691f3747eb8d9d4d0b269d0 100644 --- a/entity/Role_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Role_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,4 @@ +import("JditoFilter_lib"); import("Util_lib"); import("system.translate"); import("system.vars"); @@ -39,6 +40,31 @@ if (selectedRole != null) { }); } +var filter = vars.get("$local.filter"); + +//TODO: this is a workaround that filters the records manually, it should be possible to filter the users with a tools.* method +var filterFields = ["UID", "ROLENAME", "ROLETITLE", "ROLETYPE", "ROLEDESCRIPTION", "USERCOUNT", "IS_ASSIGNABLE"]; +var filterFns = { + "$$$LOOKUPFIELD$$$" : function (pRecordValue, pFilterValue, pOperator, pRow) + { + if (pOperator == "CONTAINS") + { + pRow = [pRow[1], pRow[3], pRow[4], pRow[5]]; + var filterValues = pFilterValue.split(" ").filter(function (val) {return val.trim();}); + return filterValues.every(function (filterValue) + { + return pRow.some(function (fieldValue) + { + return (new RegExp(filterValue, "i")).test(fieldValue); + }); + }); + } + return false; + } +}; +res = JditoFilterUtils.filterRecords(filterFields, res, filter.filter, filterFns); + + var order = vars.get("$local.order"); var columnOrder = { "ROLENAME.value" : 1, diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 44bc9ab626639e8b99a9f08b176e85a2b8b8d61b..33c8be5fa863f20bd086cdaae53dddae0f233b54 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -40,6 +40,7 @@ <resolution>DAY</resolution> <outputFormat>dd.MM.yyyy</outputFormat> <inputFormat>dd.MM.yyyy</inputFormat> + <groupable v="true" /> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/enddate/valueProcess.js</valueProcess> </entityField> <entityField> @@ -51,6 +52,7 @@ <name>PHASE</name> <title>Phase</title> <consumer>SalesprojectPhaseStepper</consumer> + <groupable v="true" /> <mandatory v="true" /> <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/phase/valueProcess.js</valueProcess> @@ -77,6 +79,7 @@ <name>CONTACT_ID</name> <title>Company</title> <consumer>Organisations</consumer> + <groupable v="true" /> <linkedContext>Organisation</linkedContext> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/contact_id/valueProcess.js</valueProcess> @@ -94,6 +97,7 @@ <resolution>DAY</resolution> <outputFormat>dd.MM.yyyy</outputFormat> <inputFormat>dd.MM.yyyy</inputFormat> + <groupable v="true" /> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/startdate/valueProcess.js</valueProcess> </entityField> @@ -101,6 +105,7 @@ <name>STATUS</name> <title>Status</title> <consumer>KeywordStates</consumer> + <groupable v="true" /> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/status/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/status/displayValueProcess.js</displayValueProcess> @@ -117,6 +122,7 @@ <description></description> <contentType>NUMBER</contentType> <inputFormat>#0</inputFormat> + <groupable v="true" /> <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js</displayValueProcess> </entityField> <entityConsumer> @@ -131,6 +137,7 @@ <name>PROBABILITY</name> <title>Probability</title> <consumer>KeywordProbabilties</consumer> + <groupable v="true" /> <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/probability/displayValueProcess.js</displayValueProcess> </entityField> <entityConsumer> @@ -620,6 +627,7 @@ <entityField> <name>ClassificationResult</name> <title>Classification</title> + <groupable v="true" /> <state>READONLY</state> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/classificationresult/valueProcess.js</valueProcess> </entityField> @@ -703,6 +711,7 @@ <title>Project type</title> <description>own field for setting the project type attribute in the new mode, required for creating Salesprojects in QuickEntry</description> <consumer>ProjectTypeAttribute</consumer> + <groupable v="true" /> </entityField> <entityConsumer> <name>ProjectTypeAttribute</name> diff --git a/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod b/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod index 64e53ac644c696c3d9585c619eb3d35afc8133ea..cfcb2ee7353ee49d7cbc5062a8dc4411a4fa8d61 100644 --- a/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod +++ b/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod @@ -3,7 +3,7 @@ <name>SerialLetterAddRecipients_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/SerialLetterAddRecipients_entity/documentation.adoc</documentation> - <recordContainer>jdito</recordContainer> + <recordContainer>datalessRecordContainer</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> @@ -13,17 +13,21 @@ <title>Serial letter</title> <consumer>SerialLetters</consumer> <mandatory v="true" /> + <state>EDITABLE</state> <displayValueProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/serialletter_id/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>UID</name> + <state>EDITABLE</state> </entityField> <entityField> <name>recipientContactIds</name> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js</valueProcess> </entityField> <entityField> <name>recipientCountMessage</name> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js</valueProcess> </entityField> <entityParameter> @@ -38,18 +42,23 @@ <fieldName>#PROVIDER</fieldName> </dependency> </entityConsumer> + <entityActionField> + <name>addParticipants</name> + <title>Add Recipients</title> + <onActionProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/onActionProcess.js</onActionProcess> + <iconId>VAADIN:ENVELOPES</iconId> + <stateProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/stateProcess.js</stateProcess> + </entityActionField> + <entityField> + <name>recipientcount</name> + <state>EDITABLE</state> + <valueProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/recipientcount/valueProcess.js</valueProcess> + </entityField> </entityFields> <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <onInsert>%aditoprj%/entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/onInsert.js</onInsert> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> + <datalessRecordContainer> + <name>datalessRecordContainer</name> + <alias>Data_alias</alias> + </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/onInsert.js b/entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/onActionProcess.js similarity index 100% rename from entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/onInsert.js rename to entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/onActionProcess.js diff --git a/entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/stateProcess.js b/entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..84710cec86a7041bf5a0287825fede7f4fc4b4fe --- /dev/null +++ b/entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/stateProcess.js @@ -0,0 +1,9 @@ +import("system.neon"); +import("system.result"); +import("system.vars"); +var count = vars.getString("$field.recipientcount"); + +if (count == "0" || !count || vars.get("$sys.validationerrors")) + result.string(neon.COMPONENTSTATE_DISABLED); +else + result.string(neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/SerialLetterAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js b/entity/SerialLetterAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js index 724fccc6b1b9cd1c8f4c02a78293e71794e3362e..8a46791dce81c87d35e2c6cf4e985156068e211b 100644 --- a/entity/SerialLetterAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js +++ b/entity/SerialLetterAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js @@ -8,15 +8,13 @@ import("Sql_lib"); import("system.vars"); var contactIds = JSON.parse(vars.getString("$param.ContactIds_param")); +var serialLetterId = vars.get("$field.SERIALLETTER_ID") -contactIds = newSelect("CONTACTID") - .from("CONTACT") - .where("CONTACT.CONTACTID", contactIds, SqlBuilder.IN()) - .and(null, newSelect("LETTERRECIPIENTID") - .from("LETTERRECIPIENT") - .where("LETTERRECIPIENT.CONTACT_ID = CONTACT.CONTACTID") - .and("LETTERRECIPIENT.SERIALLETTER_ID", "$field.SERIALLETTER_ID"), SqlBuilder.NOT_EXISTS()) //only add contacts that aren't already recipients - .and(ContactUtils.getCommRestrictionCondition($KeywordRegistry.communicationMediumCampaign$letter(), true)) //check if there's a commrestriction - .array(db.COLUMN) +var res; +if (serialLetterId) + res = JSON.stringify(BulkMailUtils.filterNewRecipients(serialLetterId, contactIds)); +else + res = null; + +result.string(res); -result.string(JSON.stringify(contactIds)); diff --git a/entity/SerialLetterAddRecipients_entity/entityfields/recipientcount/valueProcess.js b/entity/SerialLetterAddRecipients_entity/entityfields/recipientcount/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..fe08abf37cc4e9d273b350803d1fe86320bb0cc9 --- /dev/null +++ b/entity/SerialLetterAddRecipients_entity/entityfields/recipientcount/valueProcess.js @@ -0,0 +1,10 @@ +import("system.result"); +import("system.vars"); + +var res = ""; +if (vars.get("$field.recipientContactIds")) +{ + res = JSON.parse(vars.getString("$field.recipientContactIds")).length; +} + +result.string(res); diff --git a/entity/SerialLetterAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js b/entity/SerialLetterAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js index 498e4d8494c31a112e65d92ac7412856a822b8a8..2b4640522a0c4e9846c48c703bfb48d31a71490f 100644 --- a/entity/SerialLetterAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js +++ b/entity/SerialLetterAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js @@ -2,8 +2,13 @@ import("system.translate"); import("system.result"); import("system.vars"); -if (vars.get("$field.SERIALLETTER_ID")) +var count = vars.getString("$field.recipientcount") +var res = ""; +if (count && !vars.get("$sys.validationerrors")) { - var count = JSON.parse(vars.getString("$field.recipientContactIds")).length; - result.string(translate.withArguments("%0 new recipients will be added to the serial letter.", [String(count)])); -} \ No newline at end of file + if (count == "0") + res = translate.text("No new recipients found that can be added to the serial letter."); + else + res = translate.withArguments("%0 new recipients will be added to the serial letter.", [count]); +} +result.string(res); \ No newline at end of file diff --git a/entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/contentProcess.js b/entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/contentProcess.js deleted file mode 100644 index e197aca8b7760073849e21fb581b065c47215654..0000000000000000000000000000000000000000 --- a/entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/contentProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.result"); -import("system.vars"); - -//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003 -var rows = []; -if (vars.get("$local.idvalues")) - rows = vars.get("$local.idvalues").map(function (id) {return [id];}); - -result.object(rows); \ No newline at end of file diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod index 0be99b99ff62a5d371fa7c3147fcf23fa13fc07c..aa736a459ee93a5fe679f9fcf01cc8c1a86545a4 100644 --- a/entity/Task_entity/Task_entity.aod +++ b/entity/Task_entity/Task_entity.aod @@ -52,6 +52,7 @@ <name>REQUESTOR_CONTACT_ID</name> <title>{$TASK_REQUESTOR}</title> <consumer>ContactRequestors</consumer> + <groupable v="true" /> <linkedContext>Person</linkedContext> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/requestor_contact_id/valueProcess.js</valueProcess> @@ -61,6 +62,7 @@ <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> @@ -83,6 +85,7 @@ <resolution>MINUTE</resolution> <outputFormat>dd.MM.yyyy HH:mm</outputFormat> <inputFormat>dd.MM.yyyy HH:mm</inputFormat> + <groupable v="true" /> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/maturity_date/valueProcess.js</valueProcess> </entityField> <entityField> diff --git a/entity/Usersettings_entity/Usersettings_entity.aod b/entity/Usersettings_entity/Usersettings_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..eb65941d79ad231c6a6aef600ca4c232f0b5e8fb --- /dev/null +++ b/entity/Usersettings_entity/Usersettings_entity.aod @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14"> + <name>Usersettings_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <title>Settings</title> + <titlePlural>Settings</titlePlural> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>UID</name> + </entityField> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>_____SYSTEMALIAS</jDitoRecordAlias> + <onInsert>%aditoprj%/entity/Usersettings_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/Usersettings_entity/recordcontainers/jdito/onInsert.js b/entity/Usersettings_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..0ffdd02fcbce683e436c0030ffe0517135c6ceda --- /dev/null +++ b/entity/Usersettings_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1 @@ +// TODO \ No newline at end of file diff --git a/entity/VisitPlanEntry_entity/recordcontainers/jdito/onUpdate.js b/entity/VisitPlanEntry_entity/recordcontainers/jdito/onUpdate.js index b689b3021904eba4df607ccb40bdb16b72cf746d..412b3644103fb32f8c640a802d03e2c8ef5782da 100644 --- a/entity/VisitPlanEntry_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/VisitPlanEntry_entity/recordcontainers/jdito/onUpdate.js @@ -6,7 +6,7 @@ import("system.vars"); var rowData = vars.get("$local.rowdata"); -var valuesEntry = [ +var values = [ rowData["ENTRYDATE.value"], rowData["BEGIN_TIME.value"], rowData["END_TIME.value"], @@ -24,6 +24,6 @@ var columns = [ var columnTypes = db.getColumnTypes("VISITPLANENTRY", columns, db.getCurrentAlias()); -var cond = newWhere("VISITPLANENTRY.VISITPLANENTRYID", vars.get("$field.UID")); +var cond = newWhere("VISITPLANENTRY.VISITPLANENTRYID", vars.get("$field.UID")).toString(); db.updateData("VISITPLANENTRY", columns, columnTypes, values, cond); diff --git a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js index f40acbba7672272556e64ce01b90ed8fd93e5b6b..26a88f95717ce53ce1723ca71443089d0e3a1540 100644 --- a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,4 @@ +import("system.eMath"); import("system.tools"); import("PostalAddress_lib"); import("system.translate"); @@ -17,15 +18,14 @@ import("Util_lib"); import("Address_lib"); var recommendationData = []; - +var tmpData = []; var activitySubQuery = ""; -activitySubQuery = newSelect("ENTRYDATE") +activitySubQuery = newSelect("max(ENTRYDATE)") .from("ACTIVITY") .join("ACTIVITYLINK", "ACTIVITYID = ACTIVITY_ID") - .where("ACTIVITYLINK.OBJECT_ROWID", "CONTACTID") + .where("ACTIVITYLINK.OBJECT_ROWID = org.ORGANISATIONID") .and("ACTIVITY.CATEGORY", "VISIT") - .orderBy("ENTRYDATE desc").cell() var idValues = false; if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) @@ -34,6 +34,8 @@ if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) //dynamic Recommendations //recommended Organisations containing the attribute Visit Frequency +if(idValues == false) +{ var visitFrequencyData = newSelect(["org.ORGANISATIONID", "NAME", newSelect("CONTACT.CONTACTID") .from("CONTACT") @@ -64,6 +66,7 @@ if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) .join("AB_ATTRIBUTERELATION", "visitPlanFrequency.OBJECT_ROWID = CONTACT.CONTACTID", "visitPlanFrequency") .where(["AB_ATTRIBUTERELATION", "AB_ATTRIBUTE_ID", "visitPlanFrequency"], $AttributeRegistry.visitPlanFrequency()) .table(); + } var recommendationSQLData = newSelect(["VISITRECOMMENDATIONID", "VISITRECOMMENDATION.CONTACT_ID", "PRIORITY", "DUE_DATE", "SOURCE", "INFO", AddressUtils.formatOnelineSql(), newSelect("CONTACT.CONTACTID") @@ -106,7 +109,7 @@ recommendationSQLData = recommendationSQLData.table(); for( let i = 0; i < recommendationSQLData.length; i++) { - var tmpData = []; + tmpData = []; var organisationName = ContactUtils.getFullTitleByContactId(recommendationSQLData[i][1]) if(recommendationSQLData[i][2]) @@ -139,74 +142,78 @@ for( let i = 0; i < recommendationSQLData.length; i++) recommendationData.push(tmpData); } -var monthly = datetime.ONE_DAY * 31; -var semiannually = datetime.ONE_DAY * 183; -var quarterly = datetime.ONE_DAY * 93; -var yearly = datetime.ONE_DAY * 365; +var monthly = parseInt(datetime.ONE_DAY * 31); +var semiannually = parseInt(datetime.ONE_DAY * 183); +var quarterly = parseInt(datetime.ONE_DAY * 93); +var yearly = parseInt(datetime.ONE_DAY * 365); -for (let i = 0; i < visitFrequencyData.length; i++) +if(idValues == false) { - let tmpData = []; - - let title = ""; - - if(visitFrequencyData[i][9]) + for (var i = 0; i < visitFrequencyData.length; i++) { - let user = tools.getUserByAttribute(tools.CONTACTID, visitFrequencyData[i][9]); - title = user[tools.TITLE] - } + tmpData = []; - tmpData[0] = visitFrequencyData[i][0]; //UID - tmpData[1] = visitFrequencyData[i][1]; //Organisation Name - tmpData[3] = visitFrequencyData[i][2]; //Address - tmpData[5] = visitFrequencyData[i][4]; //Source of Priority - tmpData[8] = ""; - tmpData[9] = visitFrequencyData[i][5]; //CONTACT_ID - tmpData[2] = visitFrequencyData[i][6]; //Date_Planned - var dueDate = ""; - var lastVisitDate = ""; - - if((visitFrequencyData[i][6]).length == 0) - { - dueDate = datetime.date(); - } - else - { - lastVisitDate = parseInt(visitFrequencyData[i][6]); - switch(visitFrequencyData[i][4]) + let title = ""; + + if(visitFrequencyData[i][9]) { - case $AttributeRegistry.visitPlanFrequency$monthly(): - { - dueDate = lastVisitDate + monthly; - break; - } - case $AttributeRegistry.visitPlanFrequency$quarterly(): - { - dueDate = lastVisitDate + quarterly; - break; - } - case $AttributeRegistry.visitPlanFrequency$semiannually(): - { - dueDate = lastVisitDate + semiannually; - break; - } - case $AttributeRegistry.visitPlanFrequency$yearly(): - { - dueDate = lastVisitDate + yearly; - break; - } - default: + let user = tools.getUserByAttribute(tools.CONTACTID, visitFrequencyData[i][9]); + title = user[tools.TITLE] + } + + tmpData[0] = visitFrequencyData[i][0]; //UID + tmpData[1] = visitFrequencyData[i][1]; //Organisation Name + tmpData[3] = visitFrequencyData[i][2]; //Address + tmpData[5] = visitFrequencyData[i][4]; //Source of Priority + tmpData[8] = ""; + tmpData[9] = visitFrequencyData[i][5]; //last visit + tmpData[2] = visitFrequencyData[i][6]; //CONTACT_ID + var dueDate = ""; + var lastVisitDate = ""; + + if((visitFrequencyData[i][5]).length == 0) + { + dueDate = datetime.date(); + } + else + { + lastVisitDate = visitFrequencyData[i][5]; + switch(visitFrequencyData[i][3]) { - break; + case $AttributeRegistry.visitPlanFrequency$monthly(): + { + dueDate = eMath.addInt(lastVisitDate, monthly); + break; + } + case $AttributeRegistry.visitPlanFrequency$quarterly(): + { + dueDate = eMath.addInt(lastVisitDate, quarterly); + break; + } + case $AttributeRegistry.visitPlanFrequency$semiannually(): + { + dueDate = eMath.addInt(lastVisitDate, semiannually); + break; + } + case $AttributeRegistry.visitPlanFrequency$yearly(): + { + dueDate = eMath.addInt(lastVisitDate, yearly); + break; + } + default: + { + break; + } + } } - } - - tmpData[7] = dueDate; //Due Date - tmpData[4] = getPrioByDueDate(dueDate); //Priority - recommendationData.push(tmpData); + tmpData[7] = dueDate; //Due Date + tmpData[4] = getPrioByDueDate(dueDate); //Priority + + recommendationData.push(tmpData); + } } diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index cfa2e9c9be05a7b4c7e20b7047026e1a4116ece4..f32d5f97f0963a35286bac0842e7f823d580201a 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -6773,9 +6773,6 @@ <entry> <key>Offer No.</key> </entry> - <entry> - <key>Version %0</key> - </entry> <entry> <key>of other on this employee's calendar</key> </entry> @@ -6786,7 +6783,55 @@ <key>Offerrequest</key> </entry> <entry> - <key>data</key> + <key>Full Permissions</key> + </entry> + <entry> + <key>Full permissions already assigned</key> + </entry> + <entry> + <key>Import Daten</key> + </entry> + <entry> + <key>Import Logs</key> + </entry> + <entry> + <key>Transferdaten</key> + </entry> + <entry> + <key>Valid from (as </key> + </entry> + <entry> + <key>${SQL_LIB_FIELD_WRONG_FORMAT}</key> + </entry> + <entry> + <key>Settings</key> + </entry> + <entry> + <key>No new recipients found that can be added to the bulk mail.</key> + </entry> + <entry> + <key>Add Recipients</key> + </entry> + <entry> + <key>Add Participants</key> + </entry> + <entry> + <key>Download letter and create Activity</key> + </entry> + <entry> + <key>and open Report</key> + </entry> + <entry> + <key>export</key> + </entry> + <entry> + <key>export using the selected template</key> + </entry> + <entry> + <key>No new recipients found that can be added to the serial letter.</key> + </entry> + <entry> + <key>send mail</key> </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 297c496a68433d8c9e84ce33f27866a9b03c0b3f..ad03b6522afbd48721fe07d03882c99076bef351 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -6,6 +6,10 @@ <country></country> <variant></variant> <keyValueMap> + <entry> + <key>Settings</key> + <value>Einstellungen</value> + </entry> <entry> <key>{SEARCH_INDEX_TITLE}</key> <value>Suche</value> @@ -305,7 +309,7 @@ </entry> <entry> <key>${SQL_LIB_FIELD_WRONG_FORMAT} field: %0</key> - <value>Das Feld %0 hat ein falsches Format. Das Datenbankfeld muss wie "tablename.columnname" ("ORGANISATION.NAME") oder als Array mit Column-alias formatiert sein: ["ORGANISATION", "NAME", "myorgAlias"]</value> + <value>" ("%0") hat ein falsches Format. Das Datenbankfeld muss wie "tablename.columnname" ("ORGANISATION.NAME") oder als Array mit Column-alias formatiert sein: ["ORGANISATION", "NAME", "myorgAlias"]</value> </entry> <entry> <key>Attribute \"%0\" can't be used more than %1.</key> @@ -7770,6 +7774,7 @@ Bitte Datumseingabe prüfen</value> </entry> <entry> <key>Quick Entry</key> + <value>Schnelleingabe</value> </entry> <entry> <key>Additional Contacts</key> @@ -8170,6 +8175,7 @@ Bitte Datumseingabe prüfen</value> </entry> <entry> <key>Send email</key> + <value>E-Mail losschicken</value> </entry> <entry> <key>Activites</key> @@ -8667,6 +8673,10 @@ Bitte Datumseingabe prüfen</value> <key>set New</key> <value>Neu setzen</value> </entry> + <entry> + <key>${SQL_LIB_FIELD_WRONG_FORMAT}</key> + <value>Das Feld "</value> + </entry> <entry> <key>Product Group</key> <value>Produktgruppe</value> @@ -8681,9 +8691,6 @@ Bitte Datumseingabe prüfen</value> <key>Offer No.</key> <value>Angebots Nr.</value> </entry> - <entry> - <key>Version %0</key> - </entry> <entry> <key>of other on this employee's calendar</key> <value>von den Anderen auf den Kalender dieses Mitarbeiters</value> @@ -8697,7 +8704,58 @@ Bitte Datumseingabe prüfen</value> <value>Angebotsanfrage</value> </entry> <entry> - <key>data</key> + <key>Full Permissions</key> + </entry> + <entry> + <key>Full permissions already assigned</key> + </entry> + <entry> + <key>Import Daten</key> + </entry> + <entry> + <key>Import Logs</key> + </entry> + <entry> + <key>Transferdaten</key> + </entry> + <entry> + <key>Valid from (as </key> + <value>gültig ab (in </value> + </entry> + <entry> + <key>No new recipients found that can be added to the bulk mail.</key> + <value>Keine neuen Empfänger, die zur Serienmail hinzugefügt werden können, gefunden.</value> + </entry> + <entry> + <key>Add Recipients</key> + <value>Empfänger hinzufügen</value> + </entry> + <entry> + <key>Add Participants</key> + <value>Teilnehmer hinzufügen</value> + </entry> + <entry> + <key>Download letter and create Activity</key> + <value>Brief herunterladen und Aktivität erstellen</value> + </entry> + <entry> + <key>and open Report</key> + <value>und Report öffnen</value> + </entry> + <entry> + <key>export</key> + </entry> + <entry> + <key>export using the selected template</key> + <value>Mit der ausgewählten Vorlage Exportieren</value> + </entry> + <entry> + <key>No new recipients found that can be added to the serial letter.</key> + <value>Keine neuen Empfänger, die zum Serienbrief werden können, gefunden.</value> + </entry> + <entry> + <key>send mail</key> + <value>E-Mail losschicken</value> </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 6b3c84ea6235206e04b715f9df49d1d37fa61386..40c367a50dbcf0c18340e45272f77ed124779931 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -3397,7 +3397,7 @@ </entry> <entry> <key>${SQL_LIB_FIELD_WRONG_FORMAT} field: %0</key> - <value>Field %0 is in an incorrect format. The database field has to be like "tablename.columnname" ("ORGANISATION.NAME") or as array with column-alias: ["ORGANISATION", "NAME", "myorgAlias"]</value> + <value> "%0" is in an incorrect format. The database field has to be like "tablename.columnname" ("ORGANISATION.NAME") or as array with column-alias: ["ORGANISATION", "NAME", "myorgAlias"]</value> </entry> <entry> <key>New Support ticket</key> @@ -6826,6 +6826,10 @@ <entry> <key>set New</key> </entry> + <entry> + <key>${SQL_LIB_FIELD_WRONG_FORMAT}</key> + <value>The Field</value> + </entry> <entry> <key>Product Group</key> </entry> @@ -6838,9 +6842,6 @@ <entry> <key>Offer No.</key> </entry> - <entry> - <key>Version %0</key> - </entry> <entry> <key>of other on this employee's calendar</key> </entry> @@ -6851,7 +6852,52 @@ <key>Offerrequest</key> </entry> <entry> - <key>data</key> + <key>Full Permissions</key> + </entry> + <entry> + <key>Full permissions already assigned</key> + </entry> + <entry> + <key>Import Daten</key> + </entry> + <entry> + <key>Import Logs</key> + </entry> + <entry> + <key>Transferdaten</key> + </entry> + <entry> + <key>Valid from (as </key> + </entry> + <entry> + <key>Settings</key> + </entry> + <entry> + <key>No new recipients found that can be added to the bulk mail.</key> + </entry> + <entry> + <key>Add Recipients</key> + </entry> + <entry> + <key>Add Participants</key> + </entry> + <entry> + <key>Download letter and create Activity</key> + </entry> + <entry> + <key>and open Report</key> + </entry> + <entry> + <key>export</key> + </entry> + <entry> + <key>export using the selected template</key> + </entry> + <entry> + <key>No new recipients found that can be added to the serial letter.</key> + </entry> + <entry> + <key>send mail</key> </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> diff --git a/neonContext/AnyContact/AnyContact.aod b/neonContext/AnyContact/AnyContact.aod index b3ce579fd4d5518679329ca568db58c58b837450..60b312b57241794a478599dee7f52f3385a205d0 100644 --- a/neonContext/AnyContact/AnyContact.aod +++ b/neonContext/AnyContact/AnyContact.aod @@ -9,5 +9,9 @@ <name>1ea0b1ed-c2b5-4b8c-b359-27ffdef6e5ea</name> <view>AnyContactLookup_view</view> </neonViewReference> + <neonViewReference> + <name>45efa66c-b525-447c-8e16-014942843299</name> + <view>AnyContactDuplicates_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonContext/EmployeeRole/EmployeeRole.aod b/neonContext/EmployeeRole/EmployeeRole.aod index 526799067a53b3978a49f37d6acd482e5eba591c..0d7f026ed0920a637c045aa8e7df99af27ffc888 100644 --- a/neonContext/EmployeeRole/EmployeeRole.aod +++ b/neonContext/EmployeeRole/EmployeeRole.aod @@ -2,6 +2,8 @@ <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>EmployeeRole</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <filterView>EmployeeRoleFilter_view</filterView> + <editView>EmployeeRoleGenericEdit_view</editView> <entity>EmployeeRole_entity</entity> <references> <neonViewReference> @@ -12,5 +14,9 @@ <name>6ec0af90-47aa-4f94-8e05-7c535bd4c965</name> <view>EmployeeRoleEdit_view</view> </neonViewReference> + <neonViewReference> + <name>7edde309-9804-4d46-8ac0-d7642f66b584</name> + <view>EmployeeRoleGenericEdit_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonContext/Usersettings/Usersettings.aod b/neonContext/Usersettings/Usersettings.aod new file mode 100644 index 0000000000000000000000000000000000000000..e5ed3a702a70624c78dab49b48452718f2f5a41b --- /dev/null +++ b/neonContext/Usersettings/Usersettings.aod @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>Usersettings</name> + <title>Settings</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>UsersettingsEdit_view</editView> + <entity>Usersettings_entity</entity> + <references> + <neonViewReference> + <name>40cbd631-043c-44d9-b79b-e7675b69bf7f</name> + <view>UsersettingsEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod index ba2044f00ffade1ed9180f61e4edd1f39519959d..b5fff0f4acee7b41242f8fa1e6a29f92e971fb03 100644 --- a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod +++ b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod @@ -4,9 +4,9 @@ <title>Connections</title> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -24,5 +24,19 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>1391397e-d956-4231-915e-b7de718c1172</name> + <entityField>OBJECT_TYPE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>299356e8-a97f-40ae-b8ca-cebbf4e3edb3</name> + <entityField>OBJECT_ROWID</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod b/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..ff719ed37110b4efdcbba745efc705ea856e2e85 --- /dev/null +++ b/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>AnyContactDuplicates_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <tableViewTemplate> + <name>Table</name> + <hideActions v="true" /> + <entityField>#ENTITY</entityField> + <hideHeader v="true" /> + <title>Duplicates</title> + <columns> + <neonTableColumn> + <name>c37eef9d-3e62-4353-8499-fae685376761</name> + <entityField>#IMAGE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>39645840-a9ca-4d72-a1a1-0355810243de</name> + <entityField>ORGANISATION_NAME</entityField> + </neonTableColumn> + <neonTableColumn> + <name>556ac9f2-c0ce-4401-83d1-f17ead6e14f4</name> + <entityField>PERSON_FULL_NAME</entityField> + </neonTableColumn> + <neonTableColumn> + <name>aa4ce6ed-7f7d-477c-accd-81a2f02a72e6</name> + <entityField>STANDARD_PHONE_COMMUNICATION</entityField> + </neonTableColumn> + <neonTableColumn> + <name>3f5d8420-f3f2-4845-b4a9-14d31905bd9f</name> + <entityField>STANDARD_EMAIL_COMMUNICATION</entityField> + </neonTableColumn> + <neonTableColumn> + <name>c90379c3-f74b-4344-bc56-8e7863bb8f65</name> + <entityField>ADDRESS_ID</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/AttributeEdit_view/AttributeEdit_view.aod b/neonView/AttributeEdit_view/AttributeEdit_view.aod index 0fc737d7a9419e4ddd808f45f0396afe416ffd2d..5668d586c04c0e91bed27a582690be7b0cdab2dd 100644 --- a/neonView/AttributeEdit_view/AttributeEdit_view.aod +++ b/neonView/AttributeEdit_view/AttributeEdit_view.aod @@ -3,6 +3,7 @@ <name>AttributeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> <name>layout</name> diff --git a/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod b/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod index ba8aacfcce8bcbaeb347f0fed98403252e7bb948..bcc1303d8a36c78c9f778bd192efafa8e184bf9a 100644 --- a/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod +++ b/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod @@ -3,6 +3,7 @@ <name>AttributeRelationTreeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod index 020e26cb6eca65dc71f4bf0780524495d66f7e11..b51a66ffd812ac5f4afbec1d20584fe3be8998b9 100644 --- a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod +++ b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod @@ -3,16 +3,19 @@ <name>BulkMailAddRecipientsEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <isOverlay v="false" /> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> - <noneLayout> + <boxLayout> <name>layout</name> - </noneLayout> + </boxLayout> </layout> <children> <genericViewTemplate> <name>Generic</name> <editMode v="true" /> <entityField>#ENTITY</entityField> + <informationField>recipientCountMessage</informationField> <fields> <entityFieldLink> <name>96932894-43f2-471f-b511-3b38bd5f93cb</name> @@ -20,16 +23,12 @@ </entityFieldLink> </fields> </genericViewTemplate> - <genericViewTemplate> - <name>Message</name> - <hideLabels v="true" /> + <actionsViewTemplate> + <name>ContinueActions</name> + <actions> + <element>addRecipients</element> + </actions> <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>e29ba637-3638-4c72-bdb7-65034636a882</name> - <entityField>recipientCountMessage</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> + </actionsViewTemplate> </children> </neonView> diff --git a/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod b/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod index 9c73eeba5854f7ba404cae292ee24e74db0bfefd..1ad8a7d50ee24f76d4d1f2a0c43c82e2841a28c2 100644 --- a/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod +++ b/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod @@ -3,6 +3,7 @@ <name>BulkMailRecipientEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod b/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod index a8afe33edbc0e7ae0bc894ca7ea5e21900185dd3..5f4bc454fb6344b87ddf7931df64a3643da870ea 100644 --- a/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod +++ b/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -38,5 +38,32 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup1>recipientActions</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>b2b619e2-3626-4ce4-8840-37a87af0657f</name> + <entityField>ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>36aa4057-22ba-4a9e-b055-d272c366c23e</name> + <entityField>CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>8b75c1fc-71ce-4b38-aa51-81ee8a42564b</name> + <entityField>EMAIL_ADDRESS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>c904c6c0-b2e8-4192-a952-d4f1f6612dee</name> + <entityField>STATUS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>d50f00d4-2f29-4eb3-8475-aa359deec572</name> + <entityField>SENTDATE</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/BulkMailTesting_view/BulkMailTesting_view.aod b/neonView/BulkMailTesting_view/BulkMailTesting_view.aod index d6a28b0e5a90472e501dc46ddbe7049f2c5ec0e8..d3a8fa5c4e91d33df9a3b0e52819cd55bb5810de 100644 --- a/neonView/BulkMailTesting_view/BulkMailTesting_view.aod +++ b/neonView/BulkMailTesting_view/BulkMailTesting_view.aod @@ -3,6 +3,7 @@ <name>BulkMailTesting_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> @@ -12,6 +13,7 @@ <genericViewTemplate> <name>Generic</name> <editMode v="true" /> + <hideEmptyFields v="false" /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> @@ -28,5 +30,12 @@ </entityFieldLink> </fields> </genericViewTemplate> + <actionsViewTemplate> + <name>ContinueActions</name> + <actions> + <element>testMail</element> + </actions> + <entityField>#ENTITY</entityField> + </actionsViewTemplate> </children> </neonView> diff --git a/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod b/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod index 4464e7f51ed6b6d0d944e9240bec79ae895e4f5c..51e47fdf6319fc525098bfd9ec85a8432ed0503a 100644 --- a/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod +++ b/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod @@ -3,6 +3,8 @@ <name>CampaignAddParticipantsEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <isOverlay v="false" /> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <headerFooterLayout> <name>layout</name> @@ -44,5 +46,12 @@ <entityField>#ENTITY</entityField> <view>campaignParticipantMessage_view</view> </neonViewReference> + <actionsViewTemplate> + <name>ContinueActions</name> + <actions> + <element>AddParticipants</element> + </actions> + <entityField>#ENTITY</entityField> + </actionsViewTemplate> </children> </neonView> diff --git a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod index 02fbf1f73cfb036a2f9110da99ae6a7bd4538ed3..cb1f3d2f26abe217b3d0c4d8aec538aacee07795 100644 --- a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod +++ b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod @@ -3,6 +3,7 @@ <name>CampaignCostEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod index 1c6ff6c48019fbf402ea7d092e0adeda01c5fbb2..1cfa11b98bd196b97633c48a548cfd3c00abf4a4 100644 --- a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod +++ b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod @@ -4,11 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> <layout> - <drawerLayout> + <groupLayout> <name>layout</name> - <layoutCaption>Fix costs</layoutCaption> - <fixedDrawer v="true" /> - </drawerLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -25,5 +23,19 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>9d36a33f-b619-4922-9811-acd73bf67b22</name> + <entityField>CATEGORY</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>7b4972ee-1433-4318-bcf4-5298dc4c8cc6</name> + <entityField>NET</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/CampaignEdit_view/CampaignEdit_view.aod b/neonView/CampaignEdit_view/CampaignEdit_view.aod index e3575ea7ca61091a386613eef4c5ca54e1b975d9..e16693943d7e5b050d64c854e6e3a0208cef9dfc 100644 --- a/neonView/CampaignEdit_view/CampaignEdit_view.aod +++ b/neonView/CampaignEdit_view/CampaignEdit_view.aod @@ -5,6 +5,7 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:GROUP</icon> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> <name>layout</name> diff --git a/neonView/CampaignFilter_view/CampaignFilter_view.aod b/neonView/CampaignFilter_view/CampaignFilter_view.aod index dbecc7344fc4102df3ab2d193d4e0c5e7568efaa..a30c1ab9f1f355ef861347d260fd2e120700499d 100644 --- a/neonView/CampaignFilter_view/CampaignFilter_view.aod +++ b/neonView/CampaignFilter_view/CampaignFilter_view.aod @@ -48,9 +48,9 @@ </neonDashletConfiguration> </dashletConfigurations> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -91,5 +91,42 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>NAME</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>64423d78-0f0c-42d8-ad41-5ae5ae46b98b</name> + <entityField>#IMAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>70375a55-2195-4d6a-85c2-885105c52a95</name> + <entityField>NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>e017184f-a7ea-4190-a9ad-5b07a5936dc8</name> + <entityField>EMPLOYEE_CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>0d875d4e-087d-47d2-aa1d-c24476751516</name> + <entityField>DATE_START</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>f8ca8c65-24ec-462b-9fe0-b3cf0b35e6b1</name> + <entityField>DATE_END</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>f4dfaed8-7d1b-4503-9c11-af090c11adf2</name> + <entityField>STATUS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>57fbf1e1-cdc3-4315-a0c4-f1cdeb193993</name> + <entityField>DESCRIPTION</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod index 29f449231ecba1c58ac62bb81b290c0745475ba7..6539d7a4d36249efc9252b43feb7ab58483090cf 100644 --- a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod +++ b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod @@ -4,6 +4,7 @@ <title>Add participant to Campaign</title> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <headerFooterLayout> <name>layout</name> diff --git a/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod b/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod index 73545bc020da031f116bb1abd417abec0b138820..7d4a4e5d2a84ef5c9f155fc6f2d4b9bd223fc1e8 100644 --- a/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod +++ b/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod @@ -6,9 +6,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -40,5 +40,36 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup1>FilterViewActionGroup</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>9ded1920-58ef-4fc1-ac92-07522c7c06d4</name> + <entityField>ADVERTISINGBAN_ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>f406134b-b1c3-4fae-9f6d-771827d0fb01</name> + <entityField>CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>c7831772-15e4-49bb-ba84-647136c3002e</name> + <entityField>CAMPAIGNSTEP_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>664cb6d0-48f9-48bf-9934-2fdb40501771</name> + <entityField>STANDARD_EMAIL_COMMUNICATION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>b5cf0352-2bb7-4219-afab-49ffd8c46fcc</name> + <entityField>STANDARD_PHONE_COMMUNICATION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>88e47cfc-d8cd-4192-aa70-3afb8588f75a</name> + <entityField>#TITLE</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod b/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod index 798bf2f4820caaf0ca4b74da33ab518269632094..65f90217df30f11791d438ff19ea290ba522e654 100644 --- a/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod +++ b/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod @@ -4,6 +4,7 @@ <title>Neuer Kampagnenschritt</title> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod index 4d1b88d108ceacc6d45bd7aa14dd00050e2a8eb2..df00821f423a60a11108767bd997bea3198c8710 100644 --- a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod +++ b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod @@ -6,9 +6,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -56,5 +56,39 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>2246fe5a-d4ed-454a-9007-6c1716ad2a1e</name> + <entityField>#IMAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>890e5593-1283-443d-b3d3-400de594048e</name> + <entityField>SORTING</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>2fcf7f79-84fa-482f-b076-d174c51a4f78</name> + <entityField>NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>68d15b2a-ca00-43dd-b8ad-9be188f6817c</name> + <entityField>EMPLOYEE_CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>a2d623c5-1b79-4991-9659-b9c75995a3b9</name> + <entityField>DATE_START</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>8a430953-7fd3-4937-8e21-86eab88fd0f7</name> + <entityField>DATE_END</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>cf22f88f-186f-4df5-bafb-d0ea9e2035de</name> + <entityField>CurrentMaxParticipantsInfo</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod b/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod index ce0367ee27c098499cd335ea1ec6e28c5ed2cb23..fde3568e952b0346a17a8a4fe005d46bc41cd490 100644 --- a/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod +++ b/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod @@ -3,6 +3,7 @@ <name>ClassificationAdminEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> <name>layout</name> diff --git a/neonView/ClassificatonAdminPreview_view/ClassificatonAdminPreview_view.aod b/neonView/ClassificatonAdminPreview_view/ClassificatonAdminPreview_view.aod index 16b271ef5d9c46746da39d5da9c35fac8c76a587..2d8fc5a44b010ad8e28036dd1685784eb75a20b9 100644 --- a/neonView/ClassificatonAdminPreview_view/ClassificatonAdminPreview_view.aod +++ b/neonView/ClassificatonAdminPreview_view/ClassificatonAdminPreview_view.aod @@ -2,7 +2,8 @@ <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> <name>ClassificatonAdminPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <size>SMALL</size> + <isOverlay v="false" /> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/ClassificatonPreview_view/ClassificatonPreview_view.aod b/neonView/ClassificatonPreview_view/ClassificatonPreview_view.aod index ad2dac1349fa9676520cde6e07ebb80c0197bb83..29ebb148c72534308c92c4a75a65077122bd422e 100644 --- a/neonView/ClassificatonPreview_view/ClassificatonPreview_view.aod +++ b/neonView/ClassificatonPreview_view/ClassificatonPreview_view.aod @@ -2,7 +2,8 @@ <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> <name>ClassificatonPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <size>SMALL</size> + <isOverlay v="false" /> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod b/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod index b256776422908f7740636b7217d2d1987485062a..8a4ff768fa40e083af9a83ea9d76df586d9e6df3 100644 --- a/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod +++ b/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod @@ -6,9 +6,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -38,5 +38,16 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>ICON</element> + <element>MEDIUM</element> + <element>STARTDATE</element> + <element>EMPLOYEE_INVOLVED</element> + <element>REASON</element> + </linkedColumns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod b/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod index c871dc4a95c79c79418a28de5c53d5f46d955ea9..fc757ef341327759a27d89928ef0fd23ffbd64a3 100644 --- a/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod +++ b/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod @@ -3,6 +3,7 @@ <name>CommRestrictionSmallEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/CommunicationFilter_view/CommunicationFilter_view.aod b/neonView/CommunicationFilter_view/CommunicationFilter_view.aod index f8d3684ea4e4b9c29fba807492008c988bbf65fc..18c53dad65ec9f0029c712c2fd48522d8c07db53 100644 --- a/neonView/CommunicationFilter_view/CommunicationFilter_view.aod +++ b/neonView/CommunicationFilter_view/CommunicationFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -23,5 +23,19 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>6abb2c5b-9213-43a8-b8b2-760707d02197</name> + <entityField>MEDIUM_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>90a3f44f-590f-4995-8abf-3e70ff0a2a49</name> + <entityField>ADDR</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/CompetitionEdit_view/CompetitionEdit_view.aod b/neonView/CompetitionEdit_view/CompetitionEdit_view.aod index d84ce0cc352439fccab4c721d43604171cb1c7e9..ae4b045d5f0371d9e6a027219786e043b7d9a5b1 100644 --- a/neonView/CompetitionEdit_view/CompetitionEdit_view.aod +++ b/neonView/CompetitionEdit_view/CompetitionEdit_view.aod @@ -3,6 +3,7 @@ <name>CompetitionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/CompetitionFilter_view/CompetitionFilter_view.aod b/neonView/CompetitionFilter_view/CompetitionFilter_view.aod index a3b6deb3bc7201f36b52b77355e7645959a34bea..cc9122ea36d33e6cc79642c9fa3fd7ae08a91eae 100644 --- a/neonView/CompetitionFilter_view/CompetitionFilter_view.aod +++ b/neonView/CompetitionFilter_view/CompetitionFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -48,5 +48,39 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>dac103a0-9f98-4220-a138-0744ab99a8ce</name> + <entityField>IMAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>9dd8ef4a-1dee-4bbf-94cf-0fbbf6409cf6</name> + <entityField>CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>02e3e380-523e-4639-98c7-14d48fa1d1af</name> + <entityField>PHASE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>ad904fb2-9b96-47b7-981e-5198e6bda1f5</name> + <entityField>STATUS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>78bf17da-18bd-409e-9567-5b90d5de8e10</name> + <entityField>DATE_CANCELLED</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>a839c353-9434-4077-8fe7-63c073450989</name> + <entityField>REASON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>868ab0cc-cf9f-40c9-8f29-552c6c4e4fbb</name> + <entityField>INFO</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/ContractFilter_view/ContractFilter_view.aod b/neonView/ContractFilter_view/ContractFilter_view.aod index 419a745a93e9f6f4f2082350b88f3f9f91981522..f92d2bd17a33c1a20b623fd4e43c14114962124e 100644 --- a/neonView/ContractFilter_view/ContractFilter_view.aod +++ b/neonView/ContractFilter_view/ContractFilter_view.aod @@ -25,9 +25,9 @@ </neonDashletConfiguration> </dashletConfigurations> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -75,5 +75,46 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>CONTRACTCODE</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>74328115-44f3-4d7c-8933-faa63f1471b4</name> + <entityField>IMAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>2b19050c-2369-4c7c-8fae-78c1fbbe5d45</name> + <entityField>CONTRACTCODE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>3e56a229-3185-40d8-ace7-ea6e27b9270c</name> + <entityField>CONTRACTTYPE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>eae37ce9-1977-4ba3-88be-e7407fb0c810</name> + <entityField>CONTACT_ORG_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>377ce8a8-ebb6-4d1c-a800-70645203a3c2</name> + <entityField>CONTACT_PERSON_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>b262598f-4730-4963-8c77-aeb83a4a0b70</name> + <entityField>CONTRACTSTATUS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>e82273bb-a870-44c1-bd7c-408145f500b9</name> + <entityField>CONTRACTSTART</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>642dfddc-ec90-4833-8454-f15564073989</name> + <entityField>CONTRACTEND</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/DSGVOEdit_view/DSGVOEdit_view.aod b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod index a1412b7df96c63bd08f055d0a4e52402d40ddc28..b10ce1465adaebeadf62b7a025c6c08c50e0961c 100644 --- a/neonView/DSGVOEdit_view/DSGVOEdit_view.aod +++ b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod @@ -3,6 +3,7 @@ <name>DSGVOEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/DSGVOFilter_view/DSGVOFilter_view.aod b/neonView/DSGVOFilter_view/DSGVOFilter_view.aod index 62ad6edfd374b75d8892b2f0fcb25cd2773fcbd0..0be528e00a0be5d48a8357a58e729bad5f6475db 100644 --- a/neonView/DSGVOFilter_view/DSGVOFilter_view.aod +++ b/neonView/DSGVOFilter_view/DSGVOFilter_view.aod @@ -5,9 +5,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -42,5 +42,33 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup1>DSGVOActions</favoriteActionGroup1> + <favoriteActionGroup2>Reports</favoriteActionGroup2> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>0a3d452a-842b-429f-a05d-4a7ee0fb3b15</name> + <entityField>DSGVOTYPE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6702080b-d609-492f-b7b5-206296783776</name> + <entityField>VALUE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>4048ac56-74e5-4a1a-86e0-6f638ed1f5f0</name> + <entityField>STATUORITYSOURCE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>4a9ce64b-b554-4fb6-9fa3-48e389df8289</name> + <entityField>PURPOSE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>29b57663-dce8-4644-ab0d-71a19c18c5ec</name> + <entityField>VALID_TO</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod b/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod index e360f16cba2eae6a1271ff9cd031590d16a9ede3..322834185a83b93efde46f10ee93dcc1f9c66f96 100644 --- a/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod +++ b/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod @@ -3,6 +3,8 @@ <name>DSGVOInfoEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <isOverlay v="false" /> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod b/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod index 102967f03d35268ff603ef13ca694a3961fb676b..16b162e36e1f40868b649f8033af7cd7ef25bf23 100644 --- a/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod +++ b/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod @@ -3,6 +3,7 @@ <name>DSGVOPreviewAnonym_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod index 5ecc817a4fdd94323c0df32bd3c914f8a7e2661b..dbd985c9477eb4df3b09527182866eddc41f9fb9 100644 --- a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod +++ b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod @@ -3,6 +3,7 @@ <name>DefaultAdminView_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> <name>layout</name> diff --git a/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod b/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod index 0d61c3068bb3143c4845617c8fd8762c90e87af6..88a2787707419ee251f0cca03aaf2c71c4e68e11 100644 --- a/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod +++ b/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod @@ -3,6 +3,7 @@ <name>DescriptionTranslationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod b/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod index 96d8531f12d8b4e07a0f3d7fb8c67bfa5ed25679..4d86b266dc54aa4f1a2a8439b5740339593201e3 100644 --- a/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod +++ b/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod @@ -3,9 +3,9 @@ <name>DescriptionTranslationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -22,5 +22,19 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>a9046b9c-0324-4e19-a22b-ae39c6a1c8c4</name> + <entityField>LANG</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>d99b1676-04e7-4edb-9db5-4574c02675c9</name> + <entityField>DESCRIPTION</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/DocumentEdit_view/DocumentEdit_view.aod b/neonView/DocumentEdit_view/DocumentEdit_view.aod index fa065f847d10b1b1d5624143f26ce0594e56e875..987ec495b6dacc5a0a19666e7985ebcdee26acee 100644 --- a/neonView/DocumentEdit_view/DocumentEdit_view.aod +++ b/neonView/DocumentEdit_view/DocumentEdit_view.aod @@ -3,6 +3,7 @@ <name>DocumentEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/DocumentFilter_view/DocumentFilter_view.aod b/neonView/DocumentFilter_view/DocumentFilter_view.aod index af7ec71ce1e45d87b66a8a8468f031f6def3bbaf..3da41e270af4f4f9a4ff44d1d784f1254bad35bb 100644 --- a/neonView/DocumentFilter_view/DocumentFilter_view.aod +++ b/neonView/DocumentFilter_view/DocumentFilter_view.aod @@ -4,11 +4,23 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> + <tilesViewTemplate> + <name>Tiles</name> + <iconField>ICON</iconField> + <titleField>NAME</titleField> + <subtitleField>TYPE</subtitleField> + <descriptionField>SIZE</descriptionField> + <infoTopField>IS_MAIN_DOCUMENT</infoTopField> + <infoBottomField>DATE_EDIT</infoBottomField> + <favoriteActionGroup1>Document_actions</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <isCreatable v="true" /> + </tilesViewTemplate> <tableViewTemplate> <name>Documents</name> <favoriteActionGroup1>Document_actions</favoriteActionGroup1> @@ -40,5 +52,32 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup1>Document_actions</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>e9438bff-d061-4fff-bcf8-2995cdb636bd</name> + <entityField>NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>2db45402-1cc7-49bd-b083-7baa8a5a97fc</name> + <entityField>TYPE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>5a80b191-9a93-4225-b768-875b7e055760</name> + <entityField>SIZE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>b5500348-5e58-4977-a89f-c4f802aef939</name> + <entityField>DATE_EDIT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>66e4c1e2-30c9-4dc6-a450-090484c195d5</name> + <entityField>IS_MAIN_DOCUMENT</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod b/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod index e47b7daf74cc9c0787e0a6693b187b14d0cd67ce..fae9c9be8a773334223fe011c34141db1c3700cc 100644 --- a/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod +++ b/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod @@ -5,6 +5,7 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod b/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod index 1dfb98e23b35322327f34099b0869cab957a5a1f..c09f4a9cc317e29c243f81d13878e6d83475a093 100644 --- a/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod +++ b/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod @@ -6,11 +6,19 @@ <icon>VAADIN:FILE_FONT</icon> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> + <tilesViewTemplate> + <name>Tiles</name> + <titleField>NAME</titleField> + <subtitleField>KIND</subtitleField> + <descriptionField>ISOLANGUAGE</descriptionField> + <entityField>#ENTITY</entityField> + <isCreatable v="true" /> + </tilesViewTemplate> <treeTableViewTemplate> <name>SearchTree</name> <parentField>KIND</parentField> diff --git a/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod b/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod index ecb3846d023d75e63c2584c74aa98728d7a3526f..1ffb18b8f7876404e349e3e985579cc9a6f342df 100644 --- a/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod +++ b/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod @@ -3,9 +3,9 @@ <name>DuplicateScannerFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -13,7 +13,7 @@ <favoriteActionGroup2></favoriteActionGroup2> <favoriteActionGroup3>RunActionGroup</favoriteActionGroup3> <entityField>#ENTITY</entityField> - <isCreatable v="false" /> + <isCreatable v="true" /> <isDeletable v="false" /> <isEditable v="true" /> <columns> @@ -27,5 +27,20 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup3>RunActionGroup</favoriteActionGroup3> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>2ce9962e-4e3e-4cd6-b391-0f61505459f4</name> + <entityField>FILTER_NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6730d89f-4190-4767-b3a0-a63231477ed4</name> + <entityField>ENTITY_TO_SCAN_NAME</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/EmailEdit_view/EmailEdit_view.aod b/neonView/EmailEdit_view/EmailEdit_view.aod index 2e045348b8c9b47c1a7950cc340c4ef62ca1894b..0606c5788a5daf17f8e709d6cf7311fc0628a307 100644 --- a/neonView/EmailEdit_view/EmailEdit_view.aod +++ b/neonView/EmailEdit_view/EmailEdit_view.aod @@ -3,6 +3,8 @@ <name>EmailEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <isOverlay v="false" /> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> <name>layout</name> @@ -12,6 +14,7 @@ <genericViewTemplate> <name>Generic</name> <editMode v="true" /> + <hideEmptyFields v="false" /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> @@ -38,6 +41,7 @@ <genericViewTemplate> <name>Generic2</name> <editMode v="true" /> + <hideEmptyFields v="false" /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> @@ -46,5 +50,12 @@ </entityFieldLink> </fields> </genericViewTemplate> + <actionsViewTemplate> + <name>ContinueActions</name> + <actions> + <element>sendMail</element> + </actions> + <entityField>#ENTITY</entityField> + </actionsViewTemplate> </children> </neonView> diff --git a/neonView/EmployeePassword_view/EmployeePassword_view.aod b/neonView/EmployeePassword_view/EmployeePassword_view.aod index 5636958a54174ad4fe54577f116a17a3a1c973dd..9309f0b748f33a80f026f36212d45d6dfadcb3fe 100644 --- a/neonView/EmployeePassword_view/EmployeePassword_view.aod +++ b/neonView/EmployeePassword_view/EmployeePassword_view.aod @@ -3,6 +3,7 @@ <name>EmployeePassword_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod index 7465778ee33495ccf4933262214c5e5bf7981002..92618fbb9cb53540380f007f2f59a5cc92903a57 100644 --- a/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod +++ b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod @@ -3,14 +3,13 @@ <name>EmployeeRoleFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> <name>Table</name> - <inlineEdit v="true" /> <entityField>#ENTITY</entityField> <autoNewRow v="true" /> <columns> @@ -24,5 +23,19 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>72537ee6-32e9-4ec3-b809-287b538a0bff</name> + <entityField>ROLE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>836cd20f-32bd-411d-9282-e197f0b6534c</name> + <entityField>UID</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod b/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..28e2345dee0299e75b7ad8b9a69c7625554c7edb --- /dev/null +++ b/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>EmployeeRoleGenericEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>generic</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>d7333f5e-1ec2-4169-b135-e0fa31bc5f3d</name> + <entityField>ROLE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>4ff47cc3-15e9-4e91-9f16-919c226009b4</name> + <entityField>UID</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod b/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod index 8e8d27dc5890b899fecd433e15342f0b30e2c546..8291821119db91fcd12efa43e385320d1f3f7cc1 100644 --- a/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod +++ b/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -40,5 +40,35 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>bf2f11c2-8cf0-40da-9692-d09bf8391679</name> + <entityField>TITLE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>53869967-de33-4f9e-aa36-a11475892322</name> + <entityField>ISOLANGUAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6c25b35a-c655-4840-a9a7-37a7ac309e1b</name> + <entityField>DESCRIPTION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>d8b6fb15-fd7a-4489-9547-f49070861e16</name> + <entityField>SENTENCESEPARATOR</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>67a5f45e-8a45-4d23-8de3-00a9c7da87ac</name> + <entityField>FIELDSEPARATOR</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>ea7f9ff5-a168-4f57-92c8-036c262bc147</name> + <entityField>FIELDDELIMITER</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod index 8f4438e929b58e38b9a8a6ae8dff7649bdf20e92..7a9b755b2040d6f09825ca7133ccaf29750c34c5 100644 --- a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod +++ b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod @@ -3,6 +3,7 @@ <name>ExportTemplateSelectionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> @@ -12,6 +13,7 @@ <genericViewTemplate> <name>generic</name> <editMode v="true" /> + <hideEmptyFields v="false" /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> @@ -24,5 +26,12 @@ </entityFieldLink> </fields> </genericViewTemplate> + <actionsViewTemplate> + <name>ContinueActions</name> + <actions> + <element>safeandexport</element> + </actions> + <entityField>#ENTITY</entityField> + </actionsViewTemplate> </children> </neonView> diff --git a/neonView/ForecastEdit_view/ForecastEdit_view.aod b/neonView/ForecastEdit_view/ForecastEdit_view.aod index 2447c90ed89c21873af66426bd60c98f3a788082..fe71618badc57d0394b5b8bf28484c9eddc2dc73 100644 --- a/neonView/ForecastEdit_view/ForecastEdit_view.aod +++ b/neonView/ForecastEdit_view/ForecastEdit_view.aod @@ -3,6 +3,7 @@ <name>ForecastEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/ForecastFilter_view/ForecastFilter_view.aod b/neonView/ForecastFilter_view/ForecastFilter_view.aod index 0f145394a3a6929b3550e45c47b412bad58327d3..400bfb57ed5d2ddfb4f425fe3d4279b6dfc084d0 100644 --- a/neonView/ForecastFilter_view/ForecastFilter_view.aod +++ b/neonView/ForecastFilter_view/ForecastFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -35,5 +35,27 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>9bdb1cf9-5348-464d-84fb-747d509b0eef</name> + <entityField>GROUPCODE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>93475c8e-b916-4d4f-986d-7f7aa5963b7f</name> + <entityField>DATE_START</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>270e0ea4-89e4-41bf-a822-66bfe4f9e37d</name> + <entityField>VOLUME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>fa491370-9243-4531-b496-750c45ba69fa</name> + <entityField>INFO</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod b/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod index fe2226b31e69ec9a4fc14f22ba0e6eccaac4e94c..4bcc0eda9db13670681a509f2a80c3314cf743b9 100644 --- a/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod +++ b/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod @@ -3,6 +3,7 @@ <name>ImportFieldEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod b/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod index cd613e10494ceeffc817c90cdf28f758582df87c..ee18157579207f465825d5d80ba93a4958f77494 100644 --- a/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod +++ b/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> diff --git a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod index 9731a5c1ed23490b2066ba77c2b093c5df21c57a..1e906c4ad4030738fcf891530a0ac48e06760f73 100644 --- a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod +++ b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod @@ -3,6 +3,7 @@ <name>KeywordAttributeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> <name>layout</name> diff --git a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod index 29ad4b2f81fd6c8f054a396900c81d912cafd855..9072b6df51f606f4caae6ec016e30d5ad94ab6be 100644 --- a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod +++ b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -36,5 +36,27 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>5b5dbd07-4965-4038-a692-8c4992820da4</name> + <entityField>#ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>f1e9f968-4b54-4923-a5e4-876097d9e340</name> + <entityField>CONTAINER</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>5054102d-62aa-43c4-9a38-5ed7d31eecb9</name> + <entityField>NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>e3976bf7-4d2b-4831-a62d-023dd9dd1a9f</name> + <entityField>TYPE</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod index 1e7e0083e0a75b2ed5c8c3ea53c100b7601578d3..d759384a7067f6e2324dd206641fda2bf2ace168 100644 --- a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod +++ b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod @@ -3,6 +3,7 @@ <name>KeywordEntryEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> <name>layout</name> diff --git a/neonView/LeadFilter_view/LeadFilter_view.aod b/neonView/LeadFilter_view/LeadFilter_view.aod index 2bef6bfa82c215f71039f375d5740376a0a46446..75dc1286e761b80a2542f345752bc68373da2343 100644 --- a/neonView/LeadFilter_view/LeadFilter_view.aod +++ b/neonView/LeadFilter_view/LeadFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -64,5 +64,55 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>caa4f4c2-d5a9-42e0-b4fa-79cbd4d78055</name> + <entityField>LEADDUP_STATUS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>a5a1696a-7c8d-47db-9711-20f18964ad7a</name> + <entityField>LEAD_SALUTATION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>f4f2c24d-7a1e-4e5e-92d1-8601c26c64f9</name> + <entityField>LEAD_TITLE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>75eb31aa-3134-4c36-8c88-f6831929e012</name> + <entityField>LEAD_FIRSTNAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>c3d93da2-c10c-4bbc-85af-3f4a1a96d1dd</name> + <entityField>LEAD_LASTNAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>c2e27500-3238-4f4d-b2d8-2fc37fbde7ef</name> + <entityField>LEAD_NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>68bd6f39-4e93-4e0a-8925-25cd24b151c1</name> + <entityField>LEAD_COUNTRY</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>758439b3-4792-48d9-a495-b02de7adf18f</name> + <entityField>LEAD_ZIP</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>a30d40b3-a8e2-4299-b609-5c90b380d92a</name> + <entityField>LEAD_CITY</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>1d664e68-639e-47b2-bae6-ad41e57fadcd</name> + <entityField>LEAD_ADDRESS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>1b3ed325-773c-4c73-accb-8f4c7224fa04</name> + <entityField>LEAD_SOURCE</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/LeadLogFilter_view/LeadLogFilter_view.aod b/neonView/LeadLogFilter_view/LeadLogFilter_view.aod index 87f73eba1b43176f3996f340fcd2978bf1c5e671..7faeebe7aacecb268bf2574b6a5cb577026418dc 100644 --- a/neonView/LeadLogFilter_view/LeadLogFilter_view.aod +++ b/neonView/LeadLogFilter_view/LeadLogFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -35,5 +35,31 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>08e7aa5e-2343-4127-b3f3-226e27b96074</name> + <entityField>DATE_NEW</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>f9fa0186-7226-4210-b160-2d237b221d93</name> + <entityField>USER_NEW</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>80b5562d-e1b7-4460-aa83-6ca144548003</name> + <entityField>IMPORTSOURCE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>035d105c-e3d1-4e5a-8301-f6bed9852fe4</name> + <entityField>IMPORTERRORS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>94877e7b-fc5d-4767-95c7-139cc354664d</name> + <entityField>IMPORTROWS</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/LeadPreview_view/LeadPreview_view.aod b/neonView/LeadPreview_view/LeadPreview_view.aod index a2f3ac9c161bc8e3a4a3ece5289c7347eb6af2be..dcd3b2353828fb0da8b71e3b42b3bcd4658be49a 100644 --- a/neonView/LeadPreview_view/LeadPreview_view.aod +++ b/neonView/LeadPreview_view/LeadPreview_view.aod @@ -4,6 +4,7 @@ <title>Lead preview</title> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/LeadTempFilter_view/LeadTempFilter_view.aod b/neonView/LeadTempFilter_view/LeadTempFilter_view.aod index a41fe2fc89d35046ea6ef9d85f691b8af04f0934..8b51e246b49096fc00023045ca8855480f10c4c9 100644 --- a/neonView/LeadTempFilter_view/LeadTempFilter_view.aod +++ b/neonView/LeadTempFilter_view/LeadTempFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -140,5 +140,131 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>375665e1-5a04-460d-a601-7f008c86fc58</name> + <entityField>COLUMN01</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>e50a33aa-a4e2-43f9-9fe8-c2fdb43b7c86</name> + <entityField>COLUMN02</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>a465c86d-ac7f-4c7b-a82e-1eb8a9ff3676</name> + <entityField>COLUMN03</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>77660cd8-af4d-40da-8675-07e41f06aedc</name> + <entityField>COLUMN04</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>916e36d0-730a-42f6-ac39-2b0ba2c8ae99</name> + <entityField>COLUMN05</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>bbfa424e-8926-45cf-b19a-4e6dba4eb626</name> + <entityField>COLUMN06</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>8c70bce0-a4cb-43bf-b51c-52561b9cdc44</name> + <entityField>COLUMN07</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>0426ae0c-de13-4cc6-ab3d-7788eb8a4a1c</name> + <entityField>COLUMN08</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>7dc69993-74cf-4e30-9d48-606e06d59b57</name> + <entityField>COLUMN09</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6624735f-e07f-4e0b-872d-303090be196c</name> + <entityField>COLUMN10</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>4aae3eb9-4ed5-4dae-ba15-fcae4a9ca869</name> + <entityField>COLUMN11</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>4c61a04a-a78e-45bc-ba83-a06a0470f75b</name> + <entityField>COLUMN12</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>60b0fd18-ba97-46e5-b107-72686e54017d</name> + <entityField>COLUMN13</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>05e367fd-73e9-4fdc-94ae-a293f9c986ae</name> + <entityField>COLUMN14</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>7869a522-1365-4b20-b9d9-ad6945a2a3d1</name> + <entityField>COLUMN15</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>c0ed0e3c-5611-4016-8f31-fd8728b7df49</name> + <entityField>COLUMN16</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>620d9f9b-4320-405a-a7e0-606631dad06a</name> + <entityField>COLUMN17</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>254fc5a8-6da0-42dd-9d00-a11ca3630897</name> + <entityField>COLUMN18</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>a0452691-427c-4460-b514-c85dfb1e5e1d</name> + <entityField>COLUMN19</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>42714091-0c89-4ddd-90ce-f3a3f86f86ac</name> + <entityField>COLUMN20</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>ffb38c25-f12a-40e3-96e3-aaeb779e40e6</name> + <entityField>COLUMN21</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>1d619397-b6c4-44ba-a5b2-646ca4a5c512</name> + <entityField>COLUMN22</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>8d2a46c2-df70-47cf-95a8-2b1152c5f884</name> + <entityField>COLUMN23</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>99bacf20-0c59-4817-bc78-4cf358a6d946</name> + <entityField>COLUMN24</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>e2e5779a-6efc-45bf-99ca-56d7eb2bb237</name> + <entityField>COLUMN25</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>20943194-d6b3-4e48-ad73-f20ea83425cb</name> + <entityField>COLUMN26</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>55190e5b-99f9-479c-b371-d2ece0058e17</name> + <entityField>COLUMN27</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>e4499761-04e5-4a5b-9469-d256fa90336f</name> + <entityField>COLUMN28</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>668f83de-e9ef-4df2-bba3-e69bf4f5aa68</name> + <entityField>COLUMN29</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>d6bc67b2-3b09-4d31-bc30-32bbdd4c3523</name> + <entityField>COLUMN30</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod b/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod index 411a8ae00c68f6b2bb9cba766995468f335cd682..32007efecfefdc5c8a42ac23ccfa18e73b30d8c9 100644 --- a/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod +++ b/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod @@ -3,6 +3,7 @@ <name>LeadimportDocEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/LeadimportFilter_view/LeadimportFilter_view.aod b/neonView/LeadimportFilter_view/LeadimportFilter_view.aod index 1122e15a3df7a430c31d7acd05e718342c90bfb9..111d9ee2c1cdce3a3c7b90663c78d668a22e4538 100644 --- a/neonView/LeadimportFilter_view/LeadimportFilter_view.aod +++ b/neonView/LeadimportFilter_view/LeadimportFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -35,5 +35,31 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>5b550d07-b92f-4429-a9f7-e18013aa3280</name> + <entityField>#IMAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>e25d671d-50c8-4c77-9a2b-8214b0b87814</name> + <entityField>NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>3ffd6131-6064-4ca2-958b-50f7eef0b3e1</name> + <entityField>IMPORTSOURCE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>5fe0eed1-ed45-478d-b84e-ad65e1e5fd0a</name> + <entityField>LEADIMPORT_DATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>9563e615-fc93-406f-8cbb-2eceafc5bcc4</name> + <entityField>STATUS</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/LetterEdit_view/LetterEdit_view.aod b/neonView/LetterEdit_view/LetterEdit_view.aod index 12d5de308579ed419403fff7904916ccde24d3c8..5f77590bb269118a0a01ecfdee2b6b0f8f969432 100644 --- a/neonView/LetterEdit_view/LetterEdit_view.aod +++ b/neonView/LetterEdit_view/LetterEdit_view.aod @@ -3,6 +3,8 @@ <name>LetterEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <isOverlay v="false" /> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> <name>layout</name> @@ -38,5 +40,12 @@ </entityFieldLink> </fields> </genericViewTemplate> + <actionsViewTemplate> + <name>ContinueActions</name> + <actions> + <element>downloadLetterAndCreateActivity</element> + </actions> + <entityField>#ENTITY</entityField> + </actionsViewTemplate> </children> </neonView> diff --git a/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod b/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod index c6323009dbfc0a4788867c0ba0c351c1cb92f5ac..6bb0a1766a827bc1c3aca1b73ee207cc58d96acf 100644 --- a/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod +++ b/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod @@ -3,6 +3,7 @@ <name>LetterRecipientEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod b/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod index d4697ca34132c13da3a33dedf50860997733cb6f..2527705649e2aacea831bb62b2f8c4f1d4618b92 100644 --- a/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod +++ b/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -30,5 +30,24 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup1>recipientActions</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>f338176b-7bc3-4d4c-94cb-304e7e2bd6ed</name> + <entityField>ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>ed4a9f8a-6a15-4fcd-b9ac-72cfbe64560c</name> + <entityField>CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>1d6e8494-e022-47e9-a690-6cdeafd87004</name> + <entityField>ADDRESS_ID</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod b/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod index fad28a618b1f1e86b397f291a859d8c90841b345..046d2f8787fa44504542c665a131526969cb6c25 100644 --- a/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod +++ b/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod @@ -44,5 +44,24 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup1>Reloading_actionGroup</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>dd9a98c1-3f6e-4bc5-b0bf-272b37112214</name> + <entityField>DATE_NEW</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>16aaf8c1-a573-4246-ac74-221a7b978862</name> + <entityField>USER_NEW</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>cdcca5f4-eb23-477c-9618-54f4e1fe6dbb</name> + <entityField>DESCRIPTION</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/MemberEdit_view/MemberEdit_view.aod b/neonView/MemberEdit_view/MemberEdit_view.aod index 386180b112ec3d210335743eb4e4eb8ed7ea369c..d87d067090a65f8cfca284782ffe693ce7d5de51 100644 --- a/neonView/MemberEdit_view/MemberEdit_view.aod +++ b/neonView/MemberEdit_view/MemberEdit_view.aod @@ -3,6 +3,7 @@ <name>MemberEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/MemberFilter_view/MemberFilter_view.aod b/neonView/MemberFilter_view/MemberFilter_view.aod index 6aa71af982f6de040309303f5d02767cb4deda42..c432d26441eea86fa088802e5af8e6e2d738ce86 100644 --- a/neonView/MemberFilter_view/MemberFilter_view.aod +++ b/neonView/MemberFilter_view/MemberFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -47,5 +47,39 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>88973b9d-09af-4d67-8b25-ea6b456314a2</name> + <entityField>IMAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>d84b10a1-593a-4c2f-ba35-4fb80c362850</name> + <entityField>PERSON_FULL_NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>22eb0efc-61b3-48fe-989d-2dd4e70ea780</name> + <entityField>ORGANISATION_NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>7d5b671c-af93-416c-b774-bd2bc671f048</name> + <entityField>DEPARTMENT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>06451ab6-4d94-40eb-8ac1-466259ad35fb</name> + <entityField>CONTACTROLE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>87770e60-967b-4411-9eb3-0397fda4663e</name> + <entityField>POSITION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>2dc17972-2e5a-424a-b069-2b8f04b35f6c</name> + <entityField>MEMBERROLE</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod index d2db8c528fe3376a1762f878308f8b02050bc6d7..e354b3573f2c0e6a617136a1983c8b456b77cfa6 100644 --- a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod +++ b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod @@ -3,6 +3,7 @@ <name>ObjectRelationTypeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod b/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod index 05517f80a374d9004e504925ae6ff0eaff0564e9..9e6fa80dafd8382e7d758b5a939012c86d664edd 100644 --- a/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod +++ b/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod @@ -3,9 +3,9 @@ <name>ObjectRelationTypeFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -41,5 +41,36 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup1>removeActionGroup</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>7a7dda46-ba05-4ec8-a95f-8de362f9b5dc</name> + <entityField>ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>fe395ac9-8780-4324-8464-c7ebc1524498</name> + <entityField>SOURCE_RELATION_TITLE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>0946f000-6341-4294-ab4c-4d84ab7afa76</name> + <entityField>SOURCE_OBJECT_TYPE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>9915014e-2e5f-4257-9197-b21e5ec09321</name> + <entityField>DEST_RELATION_TITLE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>0e8d7695-1c47-44e2-9fcb-078c7b85e78e</name> + <entityField>DEST_OBJECT_TYPE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>75bfacac-b0a8-4766-af46-f7d51221dcc7</name> + <entityField>HIERARCHY</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod index 2c5be168944512a063b753a4087148d970cfc958..922ada4bc69f3589ee407b648469eb3d281f7fb2 100644 --- a/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod +++ b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod @@ -3,6 +3,7 @@ <name>ObjectTreeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod b/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod index ae9b992177b09f09a5ec0812f55720f1e749ae59..3497cce9b4d21634068d93c6e65c3f3135056f3c 100644 --- a/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod +++ b/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <treeViewTemplate> diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod index c1a048989f55375d660ca83cf9d853b3d64e79b0..28fb45b5ae0dc0f8a90f1205e21d0d28f7c25652 100644 --- a/neonView/OfferFilter_view/OfferFilter_view.aod +++ b/neonView/OfferFilter_view/OfferFilter_view.aod @@ -44,9 +44,9 @@ </neonDashletConfiguration> </dashletConfigurations> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -94,5 +94,47 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>TreeTable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>FullOfferCode</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>d5482be9-bc51-4b23-b33d-3e50819d5a64</name> + <entityField>IMAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>8efb48cb-ebbf-43c7-b227-592db20fd738</name> + <entityField>FullOfferCode</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>d60e10fd-6e77-45e7-98d8-8a4abf457a89</name> + <entityField>CONTACT_ORG_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>083a59f6-3db9-41ea-8bba-3077239fd84a</name> + <entityField>CONTACT_PERSON_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>cfae46a9-1fce-4c63-b92f-4253b47fd5b3</name> + <entityField>STATUS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>bc5c1349-aabe-4d99-a614-06315895aa6a</name> + <entityField>OFFERDATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>9f552c79-b5e1-405b-aafa-c2504ca84c34</name> + <entityField>NET</entityField> + <aggregateEntityField>NET_aggregate</aggregateEntityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>53adfe2e-1eb3-4b0e-9ffd-61d040cbba5c</name> + <entityField>PROBABILITY</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/OfferPreview_view/OfferPreview_view.aod b/neonView/OfferPreview_view/OfferPreview_view.aod index 72e0b0fb1525cdea0428598d31a5e0a90bd01d2e..83392a97061b4c5719cbade740c5d64d5cd1f09a 100644 --- a/neonView/OfferPreview_view/OfferPreview_view.aod +++ b/neonView/OfferPreview_view/OfferPreview_view.aod @@ -24,6 +24,10 @@ <drawerCaption>Details</drawerCaption> <entityField>#ENTITY</entityField> <fields> + <entityFieldLink> + <name>44e6dc8e-4f90-454b-9be5-f96c66ce36ec</name> + <entityField>CURRENCY</entityField> + </entityFieldLink> <entityFieldLink> <name>8d780ff6-9ca0-4067-b2b1-6e092c62253e</name> <entityField>STATUS</entityField> diff --git a/neonView/OfferitemEdit_view/OfferitemEdit_view.aod b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod index eed722c82a4a869a648fd30c45c295ce74b90988..b249c4127083a8fe0539db54d714c517a64e5081 100644 --- a/neonView/OfferitemEdit_view/OfferitemEdit_view.aod +++ b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod @@ -3,6 +3,7 @@ <name>OfferitemEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/OrderDunning_view/OrderDunning_view.aod b/neonView/OrderDunning_view/OrderDunning_view.aod index 6ef528dfeec851868f23594811da0d684135d943..0a20b0fdb87726636ef6602445cb916027492bb3 100644 --- a/neonView/OrderDunning_view/OrderDunning_view.aod +++ b/neonView/OrderDunning_view/OrderDunning_view.aod @@ -3,6 +3,7 @@ <name>OrderDunning_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/OrderFilter_view/OrderFilter_view.aod b/neonView/OrderFilter_view/OrderFilter_view.aod index a2e78f0e5b2026ff927a575f00db07f0df555d7c..6c1a61083eee585b71fe7f577ebac63b47d25263 100644 --- a/neonView/OrderFilter_view/OrderFilter_view.aod +++ b/neonView/OrderFilter_view/OrderFilter_view.aod @@ -44,9 +44,9 @@ </neonDashletConfiguration> </dashletConfigurations> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -99,5 +99,26 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>IMAGE</element> + <element>FullOrderCode</element> + <element>ORDERTYPE</element> + <element>CONTACT_ORG_ID</element> + <element>CONTACT_PERSON_ID</element> + <element>ORDERSTATUS</element> + <element>SALESORDERDATE</element> + <element>CANCELLATION</element> + <element>NET</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>02e3c101-e4c4-4389-b372-8186b7f1e942</name> + <entityField>FullOrderCode</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/OrderPaid_view/OrderPaid_view.aod b/neonView/OrderPaid_view/OrderPaid_view.aod index 542d3cea94c66a40b1468e849272d3994b82d377..67d17a1b948fe34f88e3f50b5fdab14d543d8b4a 100644 --- a/neonView/OrderPaid_view/OrderPaid_view.aod +++ b/neonView/OrderPaid_view/OrderPaid_view.aod @@ -3,6 +3,7 @@ <name>OrderPaid_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod index f8d657ccffe3e815a7efbb0077952e91eb37e571..bcc6e174805d9a3f9f6d9289302c4141db0d380d 100644 --- a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod +++ b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod @@ -3,6 +3,7 @@ <name>OrderitemEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod index 0e3ad8432133524192cd495cf611c6c0e06572cb..e6eaeeb9f9ee7a2ca057202848bb3b97657f9382 100644 --- a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod +++ b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -57,5 +57,51 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>d07130dd-7727-45cc-8f8c-ae5d2972d21d</name> + <entityField>ITEMPOSITION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>ff782187-b2b7-4470-bc38-6b08c4772eec</name> + <entityField>PRODUCT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>38b5a413-9f07-44ec-86b0-a4fe45c9b0c8</name> + <entityField>QUANTITY</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>4998fc65-67b7-465d-9891-808dcf0fe080</name> + <entityField>UNIT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>b4470ca6-89e8-421b-bb91-7d32f9c48aa2</name> + <entityField>PRICE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>0c533079-4b39-4412-8de5-086bf7a08706</name> + <entityField>DISCOUNT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>e545cb87-e4a5-4154-89b1-1f88a6d59fde</name> + <entityField>VAT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>9ac44050-ea77-43d2-b0fe-f7ca411b91e7</name> + <entityField>OPTIONAL</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>4d4f204a-1c2b-4587-93b9-df03f31da38e</name> + <entityField>INFO</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>c44b5bc2-4283-4dca-bd20-bd048e05fe45</name> + <entityField>TotalPrice</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod index f686c4105cecaa42daad5a20520394dac92415ed..70cc47cbd63e649e23277ff71e0c73332b0493fc 100644 --- a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod +++ b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod @@ -3,6 +3,7 @@ <name>OrganisationEditDefaults_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/OrganisationEdit_view/OrganisationEdit_view.aod b/neonView/OrganisationEdit_view/OrganisationEdit_view.aod index bf0627608ee7b8dc96295b24265ec8512dd3ca1c..81ab662529757a2607ec8dc7421c97a730400b11 100644 --- a/neonView/OrganisationEdit_view/OrganisationEdit_view.aod +++ b/neonView/OrganisationEdit_view/OrganisationEdit_view.aod @@ -11,6 +11,11 @@ </boxLayout> </layout> <children> + <neonViewReference> + <name>f2fa0351-15af-4d1c-b7dd-0e42d9c7889f</name> + <entityField>SelfDuplicatesUncached</entityField> + <view>OrganisationDuplicateEditview_view</view> + </neonViewReference> <genericViewTemplate> <name>Edit</name> <editMode v="true" /> diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod index f8c447378a26d517bb9521f3913d82b9ac037d79..960c454e103af41d7e9cf5740ae51aec1b1047f5 100644 --- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod +++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod @@ -42,16 +42,15 @@ </neonDashletConfiguration> </dashletConfigurations> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> <name>Organisations</name> <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1> <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2> - <favoriteActionGroup3>exportTemplateActionGroup</favoriteActionGroup3> <subtitleField>CUSTOMERCODE_DISPLAY_fieldGroup</subtitleField> <entityField>#ENTITY</entityField> <linkedColumns> @@ -92,5 +91,48 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1> + <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>NAME</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>222c9da2-928c-4a93-a7a5-074e1c61a25c</name> + <entityField>PICTURE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>1be5029e-f49a-4922-ad38-e5b23082e3a1</name> + <entityField>NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>d25437c6-059c-456d-b5a1-1fe3f016305b</name> + <entityField>CUSTOMERCODE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>83b4c558-1c18-43f3-bf63-562b004092e8</name> + <entityField>LANGUAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>2c8450d2-a8a5-49d3-92c5-bf08d32a46db</name> + <entityField>STATUS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>d134034c-e391-4df3-9205-465d8a390996</name> + <entityField>STANDARD_EMAIL_COMMUNICATION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>8095afda-d4dc-4b63-badd-4c3b0977d975</name> + <entityField>STANDARD_PHONE_COMMUNICATION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>22edc290-b170-4a70-a997-9f168a876158</name> + <entityField>ADDRESS_ID</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod b/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod index f69ce1fd0b79ed5b8c6e4c7021cfc8aebbbc9f64..38481861ae2a8cc4905adeae38f659cf0c1084a2 100644 --- a/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod +++ b/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod @@ -3,9 +3,9 @@ <name>PermissionActionFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <noneLayout> + <groupLayout> <name>layout</name> - </noneLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -18,5 +18,15 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>f94b90bd-4684-476a-9765-d7e468116c88</name> + <entityField>ACTION</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod index a4db8ae43595e7da54ef9d297a606963b19cfa28..9e557d4f2eed1a851d46cd2b4d2525f38304ecb2 100644 --- a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod +++ b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod @@ -3,6 +3,7 @@ <name>PermissionCalendarEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod b/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod index 5ecedcd546cbab3ed67131c473e4889eee8b94d3..8671d21b95c8bc5d16f7bdcc597f4d6a0924cfb7 100644 --- a/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod +++ b/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod @@ -3,6 +3,7 @@ <name>PermissionCalendarPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <headerFooterLayout> <name>layout</name> diff --git a/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod b/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod index dcc9351f309a7beb179453cf183aa62d8b0a3e35..b38046275b1de3d27e9720088053b6cac8503ca9 100644 --- a/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod +++ b/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod @@ -3,6 +3,7 @@ <name>PermissionDetailEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> <name>layout</name> diff --git a/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod b/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod index e3be84842a72340e3668d7d70374b25e5fff20ed..2d45766d2389e16518347c649ea2d2576d91ddc2 100644 --- a/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod +++ b/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -34,5 +34,30 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>TITLE</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>d1b2e22a-d498-4210-98af-e23af4373a0c</name> + <entityField>#ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>55d733cc-e7dc-411b-abf6-7fdd25ee1985</name> + <entityField>UID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>00ed2afa-028d-4342-9398-66264b566521</name> + <entityField>TITLE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>dd5ed711-0ed0-4d2a-9569-0b97cb2cb731</name> + <entityField>DESCRIPTION</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod b/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod index 3aff085559a51361708f7d927c514986aa47dff1..6dd2bd1678311ebb3eb3fa9e640485aeb5dad868 100644 --- a/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod +++ b/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod @@ -5,9 +5,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -46,5 +46,39 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>703cc584-ce6a-4c8c-8978-82c9860224ae</name> + <entityField>#ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>bc7559c2-e9d5-42e9-8b61-a09046acf440</name> + <entityField>ENTITY</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>28a0ec9d-25b2-4fac-864d-e7938ccf6786</name> + <entityField>ACTION_VIEW</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>0d03d52c-2771-4f9c-a1a9-f6de6b36b810</name> + <entityField>ACTION_CREATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>981ff8df-b75c-49cd-b3f4-62bba6e5965b</name> + <entityField>ACTION_READ</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>3e9dfbd8-db73-480d-8a50-12cd18638d4f</name> + <entityField>ACTION_UPDATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>f0f6aace-aeae-42bd-be95-8b05f2ff087a</name> + <entityField>ACTION_DELETE</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod index d9eced958be10729f65d710bc9ecb20df41d8900..94e88b257d1b94e481ef9fc6350931d736155286 100644 --- a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod +++ b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod @@ -3,9 +3,9 @@ <name>PersonDuplicatesFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -29,5 +29,20 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup1>PersonOpenClusterDetailActionGroup</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>060c69aa-242a-4141-acd1-b82a76d99521</name> + <entityField>CLUSTER_DESCRIPTION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>67458881-0d45-406e-a362-852711b09bd1</name> + <entityField>COUNT_DUPLICATES_IN_CLUSTER</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod index 54c9e8ef1f349e67040751faa140fbd966c029dc..4be76fd469771d104f909dba2d23f4379c4e8218 100644 --- a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod +++ b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod @@ -3,6 +3,7 @@ <name>PersonEditDefaults_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/PersonFilter_view/PersonFilter_view.aod b/neonView/PersonFilter_view/PersonFilter_view.aod index 92c24c81f17e75d96a3a82386bf3e27a778b0020..3de6433f11f0721a7a9d21644f7201c33dd0c364 100644 --- a/neonView/PersonFilter_view/PersonFilter_view.aod +++ b/neonView/PersonFilter_view/PersonFilter_view.aod @@ -42,16 +42,15 @@ </neonDashletConfiguration> </dashletConfigurations> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> <name>Persons</name> <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1> <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2> - <favoriteActionGroup3>exportTemplateActionGroup</favoriteActionGroup3> <hideActions v="false" /> <iconField>PICTURE</iconField> <titleField>NAME_fieldGroup</titleField> @@ -101,5 +100,53 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1> + <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>FIRSTNAME</element> + <element>LASTNAME</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>ae9f20e2-8c64-43a7-b3ce-00c3af4974f7</name> + <entityField>PICTURE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6281826b-4828-4b81-aef8-faba542f615f</name> + <entityField>SALUTATION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>00f4c0d2-5ca1-42c1-a33f-870bba3cf4d1</name> + <entityField>TITLE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>5f145bd4-f9ce-4528-9299-3f5b69247e23</name> + <entityField>FIRSTNAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>28e9fee0-d274-4579-b6a6-27063bcf5631</name> + <entityField>LASTNAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>f5c45f34-bd67-481f-af42-fb42637f45f9</name> + <entityField>ORGANISATION_CONTACTID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>69d95f18-5e7e-4f0f-ab37-86392537ccec</name> + <entityField>STANDARD_EMAIL_COMMUNICATION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>bb6ed3fc-4221-4c13-98e2-05d51f5adc43</name> + <entityField>STANDARD_PHONE_COMMUNICATION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>23230997-0da6-43b2-a665-b4c96c29c61d</name> + <entityField>ADDRESS_ID</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod b/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod index 4234df3eedcf68a5af98c10d7339a564e34ecf21..3e106ebb254d6d7ae3657a443f0d6ca9241484f3 100644 --- a/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod +++ b/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod @@ -3,9 +3,9 @@ <name>PrivatePersonFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -22,5 +22,19 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>8ef2af01-9e23-4d54-a814-f1941ec1e422</name> + <entityField>FIRSTNAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>60074b46-841e-406f-a2ef-4a08724b7d69</name> + <entityField>LASTNAME</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod index 387d74f3285e1eb59e30495f882b8a95ab122621..6048f3f0bdfefff3c4b9228280e9fbd8580946eb 100644 --- a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod +++ b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod @@ -3,6 +3,7 @@ <name>Prod2ProdEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/ProductFilter_view/ProductFilter_view.aod b/neonView/ProductFilter_view/ProductFilter_view.aod index 862edca87f4d9ee84da3383de365141f2f9e3c58..3f86ddd7ed38a5909124edfb0004546921b8305e 100644 --- a/neonView/ProductFilter_view/ProductFilter_view.aod +++ b/neonView/ProductFilter_view/ProductFilter_view.aod @@ -3,6 +3,7 @@ <name>ProductFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> + <isOverlay v="false" /> <dashletConfigurations> <neonDashletConfiguration> <name>AllProductsDashlet</name> @@ -25,11 +26,21 @@ </neonDashletConfiguration> </dashletConfigurations> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> + <tilesViewTemplate> + <name>Tiles</name> + <iconField>#IMAGE</iconField> + <titleField>PRODUCTNAME</titleField> + <subtitleField>GROUPCODEID</subtitleField> + <descriptionField>STATUS</descriptionField> + <tilePresentation>PORTRAIT</tilePresentation> + <entityField>#ENTITY</entityField> + <isCreatable v="true" /> + </tilesViewTemplate> <tableViewTemplate> <name>Products</name> <titleField>PRODUCTNAME</titleField> @@ -69,5 +80,42 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>PRODUCTNAME</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>3b2cd2ab-4540-4b74-a154-932963400b98</name> + <entityField>#IMAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>a56f5566-0dbc-4d7c-bbe6-e089c8bb7528</name> + <entityField>PRODUCTCODE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>ae82c6c0-6c34-4adf-b6ea-e8a1bdc7dce0</name> + <entityField>PRODUCTNAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>52784020-0df7-4059-b732-13451e2378d9</name> + <entityField>GROUPCODEID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>967979d0-859b-40c1-921d-3ca243cb2509</name> + <entityField>STATUS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>e49eaac4-e86d-4134-9abd-f261dbf3ff97</name> + <entityField>CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>311331ce-d63c-4f4b-be9c-342f7ca69990</name> + <entityField>UNIT</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod index 7f6a3df722fe978f510467df7e1740db369ca8d9..f2c6e8dac43e719b5612feb930cdb341f50861df 100644 --- a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod +++ b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod @@ -4,6 +4,7 @@ <title>Price list</title> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod index 10cc59f7fe3da242256e6e224acc5916d2c4a82b..f19f9c4d30be0d8b0db3961e302d3af219e437cb 100644 --- a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod +++ b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -55,5 +55,51 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>ff01f68a-48e0-4c80-8055-b7fef22e7f8d</name> + <entityField>IMAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>1a6070c7-b66b-4835-a90d-3c5b2057f2ad</name> + <entityField>PRODUCT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>838afd20-a737-47c5-8caf-0ff7ea81d8d2</name> + <entityField>PRICELIST</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>d726c669-878d-488e-9323-426ee8e16deb</name> + <entityField>VALID_FROM</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>27fb5553-c75e-417b-a965-7506cb1da0f8</name> + <entityField>VALID_TO</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>cd3d8e9c-9c12-4406-83e8-07100f49486b</name> + <entityField>PRICE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>0ca0e585-c5c8-4b3e-9024-7d38770a768a</name> + <entityField>CURRENCY</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>9f4ebc5e-41e3-4a0a-af28-8bfc08a597b7</name> + <entityField>BUYSELL</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>069323a2-d8b4-4046-99d3-747aeb86f729</name> + <entityField>FROMQUANTITY</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>272f1c87-e5d1-44c4-81df-4e4c5d455d24</name> + <entityField>VAT</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod b/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod index 125b8e68227eb55b31d980298602ea778117f519..9598c3420b1a7b9b9a6128c50848a370f9f61a62 100644 --- a/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod +++ b/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod @@ -11,6 +11,11 @@ </boxLayout> </layout> <children> + <neonViewReference> + <name>adf71384-2c12-401b-a3aa-89ed23e757c2</name> + <entityField>OrgAndPersDuplicates</entityField> + <view>AnyContactDuplicates_view</view> + </neonViewReference> <genericViewTemplate> <name>GeneralData</name> <editMode v="true" /> diff --git a/neonView/RoleFilter_view/RoleFilter_view.aod b/neonView/RoleFilter_view/RoleFilter_view.aod index 40fcb8fe3ca4b97ddbfdf27d1993da61872d525c..724b573a3a35ae1ab216c5d1f6a6a525fd3808a1 100644 --- a/neonView/RoleFilter_view/RoleFilter_view.aod +++ b/neonView/RoleFilter_view/RoleFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -46,5 +46,38 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>ROLETITLE</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>d6624366-6f57-4c81-b2ef-4776297b94a7</name> + <entityField>#ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>27d8023d-2867-4e3b-8586-33e2e91086b9</name> + <entityField>ROLENAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>9698900e-d897-4bdd-a3ef-5eb5857b5052</name> + <entityField>ROLETITLE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>9dd955e3-e4dd-4d3b-aedd-1261ab77f947</name> + <entityField>ROLETYPE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>9f64b198-dc4a-46ba-80fa-9e8e6f15298b</name> + <entityField>USERCOUNT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>46a68706-86d0-43c4-8d66-2f1d8ccf94b6</name> + <entityField>ROLEDESCRIPTION</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod index fabe25804f2c65f094e89b445c6d10e8f458bd2a..920128f5ff6cb8f4bb2f8378f524c6b4528e3240 100644 --- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod +++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod @@ -44,9 +44,9 @@ </neonDashletConfiguration> </dashletConfigurations> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -95,5 +95,46 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>PROJECTTITLE</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>c3c8cd94-5bb4-46bb-a61b-fec67fcc4841</name> + <entityField>IMAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>90e4ddd7-1e1c-48da-a347-adadf075d9f0</name> + <entityField>PROJECTCODE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>9b7b8a15-4a8d-41cb-bb46-3b1ed573dc6e</name> + <entityField>CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>392b25fe-e7ce-463e-ae92-af426d523c2a</name> + <entityField>PROJECTTITLE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>745d6192-4817-49e6-8cb2-8470c9c25f4d</name> + <entityField>STARTDATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>a30a05a8-cb36-46a7-8e03-d5d186fa2498</name> + <entityField>ENDDATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>d1967168-bbec-4124-a526-e544388b4904</name> + <entityField>PHASE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>e1fb4cd5-8b56-4564-a1ad-24c3b95a3335</name> + <entityField>STATUS</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod index bde1614e741833117ed53d0829ce50e526c80cfa..056fcc4af211527fda469af4fa6ae96e8a8abdd9 100644 --- a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod +++ b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod @@ -3,6 +3,7 @@ <name>SalesprojectSourceEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod index 4bf0e5707146e11537345675169638a223bfc9d5..6bac5280054d1d3eb7fc0bd1da08593013fc6f23 100644 --- a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod +++ b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -36,5 +36,27 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>d5894f2f-9068-4228-9b2e-1928d9348c49</name> + <entityField>ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>d761beb9-f626-422f-906a-cd06470c9162</name> + <entityField>ENTRYDATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>0107bb1a-a372-4212-8170-1b5670d910d3</name> + <entityField>TOUCHPOINT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>c0a07fac-6265-4fb8-acc3-90571930ced2</name> + <entityField>INFO</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/SalutationEdit_view/SalutationEdit_view.aod b/neonView/SalutationEdit_view/SalutationEdit_view.aod index ebbb601e04d5e06c43c046a6eddce6deb667c789..3179d62093fcc07b1f389b13d5cb250ba2706d28 100644 --- a/neonView/SalutationEdit_view/SalutationEdit_view.aod +++ b/neonView/SalutationEdit_view/SalutationEdit_view.aod @@ -3,6 +3,7 @@ <name>SalutationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> <name>layout</name> diff --git a/neonView/SalutationFilter_view/SalutationFilter_view.aod b/neonView/SalutationFilter_view/SalutationFilter_view.aod index 9c60dce1f71f932d1fc696e1b470e6b01f70caac..d424e3369026a46a995b7a418cbf838ac36568c2 100644 --- a/neonView/SalutationFilter_view/SalutationFilter_view.aod +++ b/neonView/SalutationFilter_view/SalutationFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -46,5 +46,39 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>359d3b3e-9a07-43ca-8eaa-53f8d6b77f68</name> + <entityField>ISOLANGUAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>0f146186-2fc1-4031-a85b-e50e75d06e6d</name> + <entityField>SALUTATION_TEXT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>1b878c19-86d6-45e3-9b96-b7afe6f2697d</name> + <entityField>TITLE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>378fbe99-2a87-4db2-a973-fa4c1513d611</name> + <entityField>HEADLINE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>5860e6bb-d8d0-43b6-bbc6-d04703cdad4c</name> + <entityField>LETTERSALUTATION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>e123d84b-31fe-4a87-b16e-acda3e86a450</name> + <entityField>SEX</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>08857e02-fae9-4603-9c22-c2033dacb5bc</name> + <entityField>SORT</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod b/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod index 893f8b29c5171616eb0a3cf698dcc096f7602291..b3b8d67e1ba188142d23e3795d039485844f397b 100644 --- a/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod +++ b/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod @@ -3,6 +3,8 @@ <name>SerialLetterAddRecipientsEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <isOverlay v="false" /> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> <name>layout</name> @@ -12,7 +14,9 @@ <genericViewTemplate> <name>Generic</name> <editMode v="true" /> + <hideEmptyFields v="false" /> <entityField>#ENTITY</entityField> + <informationField>recipientCountMessage</informationField> <fields> <entityFieldLink> <name>c289afee-ed44-48d7-8f2a-50c1bffb886e</name> @@ -31,5 +35,12 @@ </entityFieldLink> </fields> </genericViewTemplate> + <actionsViewTemplate> + <name>ContinueActions</name> + <actions> + <element>addParticipants</element> + </actions> + <entityField>#ENTITY</entityField> + </actionsViewTemplate> </children> </neonView> diff --git a/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod b/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod index 99ae318ad39b5c4eab650f9c2ce798c56531e5bc..b95fda0d5aa82fbe89860b1c2df7197bdfa39a30 100644 --- a/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod +++ b/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -38,5 +38,34 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>TITLE</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>cae0d686-5109-4106-9b35-421e79e265db</name> + <entityField>ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>a5a9f4f1-14ad-4997-94c7-f76de7c5f8da</name> + <entityField>TITLE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>dc1a061a-95fa-499e-aee4-9b49aed28cfc</name> + <entityField>STATUS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>ec667f9a-65e3-482c-a459-87545b22af2a</name> + <entityField>DOCUMENTTEMPLATE_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>88b074e6-587a-477f-97d6-fde128cae267</name> + <entityField>DESCRIPTION</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/StockFilter_view/StockFilter_view.aod b/neonView/StockFilter_view/StockFilter_view.aod index 8d3f13f1ae79f0d6259f88f95ed8fb85566b5380..cad57413e4d53e58c0299304425d869b393aaa75 100644 --- a/neonView/StockFilter_view/StockFilter_view.aod +++ b/neonView/StockFilter_view/StockFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -40,5 +40,35 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>de16c7a3-4b19-4c5d-8461-bad53e443349</name> + <entityField>IMAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>0fc3771b-7c0f-47fe-bde3-f906bf5a6dcf</name> + <entityField>WAREHOUSE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6299bef1-3e71-4b9a-86b2-a158b29f5e26</name> + <entityField>ENTRYDATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>5671f232-2e76-48da-9ba2-9ee6ed76db3e</name> + <entityField>IN_OUT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>c7a6d186-fa87-4a20-bbe1-106add5e86eb</name> + <entityField>QUANTITY</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>5ae998fc-1353-4f66-a455-34bcc34aa5df</name> + <entityField>REFNUMBER</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod index 97a66920520249d66cfd7f70dc3c81494be07e3a..ed3af83d74e6237cd4298704707bde0e2f485502 100644 --- a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod +++ b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod @@ -46,7 +46,6 @@ </timelineViewTemplate> <tableViewTemplate> <name>TicketsTable</name> - <favoriteActionGroup1>tableActions</favoriteActionGroup1> <iconField>TASK_PRIORITY_ICON</iconField> <titleField>TASK_SUBJECT</titleField> <subtitleField>TASK_STATUS</subtitleField> @@ -95,5 +94,50 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>TASK_SUBJECT</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>32792588-0db9-4a67-a9e8-e1ba0c78f109</name> + <entityField>TASK_PRIORITY_ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>25e8c98f-1cd9-49a8-9925-f0e9e8557b74</name> + <entityField>TASK_STATUS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>771e21d6-52c8-41a5-8076-dbb4968a6b75</name> + <entityField>TASK_SUBJECT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>69f1d750-e60d-449c-a106-d5a5fc2dab3a</name> + <entityField>TASK_REQUESTOR_CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>76ee953d-6dc8-491e-8fab-9cc51a3c331e</name> + <entityField>TASK_EDITOR_CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>366e79da-a889-4394-b2e1-34907001dd77</name> + <entityField>TASK_PRIORITY</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6ff5f84a-295c-484b-8178-5110a907db05</name> + <entityField>TASK_MATURITY_DATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>7ec4261e-b1de-4a99-bc5b-424171cd1fc7</name> + <entityField>TASK_PROGRESS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>87f10c70-f1cd-4733-ad35-fba053450b0f</name> + <entityField>TASK_DESCRIPTION</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/TaskFilter_view/TaskFilter_view.aod b/neonView/TaskFilter_view/TaskFilter_view.aod index d0b539575566ffe660c133db915bbcdba2e3a8f3..83268457a49e851f0329c787d3b4e498adb9a620 100644 --- a/neonView/TaskFilter_view/TaskFilter_view.aod +++ b/neonView/TaskFilter_view/TaskFilter_view.aod @@ -90,5 +90,50 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>SUBJECT</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>5f7f1277-f658-4322-afac-f8e22810db68</name> + <entityField>PRIORITY_ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>e27c8c20-a61b-4d86-91f1-7f2a45c6368c</name> + <entityField>STATUS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>51d3032a-af2a-42c0-a467-4cf31446f537</name> + <entityField>SUBJECT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>8cbcf70f-f108-417a-8cbd-7ed681cca45b</name> + <entityField>REQUESTOR_CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>b6f0a3f3-5ea8-427a-a02a-4d999e344e07</name> + <entityField>EDITOR_CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>834c9424-3ad3-474d-90b2-7eb879e3ee86</name> + <entityField>PRIORITY</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>38aa316c-21ba-4ea6-9e6b-43b63fa24382</name> + <entityField>MATURITY_DATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>8c3b89a3-93ea-4d55-ac8d-4a2525ae938e</name> + <entityField>PROGRESS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>dc66b99a-1387-425a-ad2b-3ab44ee5234a</name> + <entityField>DESCRIPTION</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod b/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod index 4589f7054e06a30aea9734e2202a9109e48547e1..f9e1e3aa8a206dd68d46341407e4d7091065f3e3 100644 --- a/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod +++ b/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod @@ -3,9 +3,9 @@ <name>TaskLinkFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -23,5 +23,19 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>e11fec33-a836-484a-b2ae-4cad3d7a2dcd</name> + <entityField>OBJECT_TYPE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>203fb87c-34c3-41dc-a33a-f023f91bc025</name> + <entityField>OBJECT_ROWID</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod index 9fd5eb0d8ee263ac5948e8be89a376c1e80d1e9e..231020b4962ac1c21622fe25641624037f7c1caa 100644 --- a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod +++ b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod @@ -3,6 +3,7 @@ <name>TimetrackingEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod index c07ce5696483d9c9b284f80d52fadaf3842f4e6d..d56fbc0ca0b5edfc59b07f8a84cb7ee26af64943 100644 --- a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod +++ b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod @@ -5,9 +5,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -36,5 +36,27 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>314436db-0a9e-4113-ab70-7922a7a03ab5</name> + <entityField>TRACKINGDATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>b1551ffe-f551-461f-9475-804da440507c</name> + <entityField>CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>9c11f5e2-3e7a-4383-8fa7-c816ca61067b</name> + <entityField>TRACKINGMINUTES</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>eabe811c-4349-4974-bd18-9679d01836f0</name> + <entityField>INFO</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod b/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod index db6c8958cc8ef6b07b0eef1bfc2f956ea3e4d0d7..6b4b8b73154e60819b752b795acd9e93de7f23b5 100644 --- a/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod +++ b/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod @@ -18,15 +18,14 @@ </neonDashletConfiguration> </dashletConfigurations> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> <name>mailsTable</name> <favoriteActionGroup1>ToActivity_ActionGroup</favoriteActionGroup1> - <favoriteActionGroup2>DownloadMail_ActionGroup</favoriteActionGroup2> <entityField>#ENTITY</entityField> <columns> <neonTableColumn> @@ -51,5 +50,32 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup1>ToActivity_ActionGroup</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>1d197952-0732-4af2-a41e-7d490c679762</name> + <entityField>#IMAGE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>9c4aced8-9013-4164-95f5-84dcd40d6659</name> + <entityField>SUBJECT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>57036eee-6bd4-411d-a751-c1b04c11e0f0</name> + <entityField>SENTDATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>80a3a730-d446-4755-9d25-e57f71ddb157</name> + <entityField>SENDER</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>294022d8-e47b-4190-9149-f4343d746975</name> + <entityField>RECIPIENTS</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod index 480dac8ed6d457278c9be62a1945aee8bcbc7711..dec9ecc2091d723dd1c8cc91780346fe776c9b53 100644 --- a/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod +++ b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod @@ -4,6 +4,7 @@ <title>Link e-mail addresses to contacts</title> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <headerFooterLayout> <name>layout</name> diff --git a/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod b/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..2625a04f4de17ef81b06ad3d372dc755085180ce --- /dev/null +++ b/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>UsersettingsEdit_view</name> + <title>Settings</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Edit</name> + <editMode v="true" /> + <hideEmptyFields v="false" /> + <entityField>#ENTITY</entityField> + <isEditable v="true" /> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod b/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod index 36b89a250e33f257ffba7003cb5a65c36524f87a..d11ac479a593f7dea6bd16945f2c04f469f68113 100644 --- a/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod +++ b/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod @@ -3,6 +3,7 @@ <name>VisitPlanEmployeeWeekEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod b/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod index 84584b718e513b36cea457f6e6fd19a00751b40d..4eab72067414457b5e31a3b9ce0358d9b3d43a48 100644 --- a/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod +++ b/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -51,5 +51,47 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>555cdb41-0bad-40e8-afad-f389ff0a9910</name> + <entityField>icon</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>adc127e2-1093-40ef-a3ec-efdc416c062d</name> + <entityField>WEEK</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6a11aa05-3879-46f2-9944-2006d9caf928</name> + <entityField>YEAR</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>bb232878-5316-4b8f-9c0e-02833e588544</name> + <entityField>PERSON_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>8db139d9-7dd7-4ea2-9c73-1c0accec2ef5</name> + <entityField>entriescount</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>58679095-36c2-4330-80cc-541a05e8b3cb</name> + <entityField>entriesplannedcount</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>80dcac4b-1104-4399-bd43-9874f3060d7b</name> + <entityField>entries_appoint_count</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>e34666e8-c1d7-431c-912e-f9bfaa2e94f8</name> + <entityField>entries_activity_count</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>08fb15e6-6b79-45b2-8133-d2ab0f7ddea6</name> + <entityField>INFO</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod b/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod index 3e4bee135d241994a1210b5afbef05d6bf67a818..7c1d4abf3b4166c10b31c6b3caed3362dff0bba5 100644 --- a/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod +++ b/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod @@ -3,6 +3,8 @@ <name>VisitPlanEmployeeWeekPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <isOverlay v="false" /> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <headerFooterLayout> <name>layout</name> diff --git a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod index 69433069c2a760ea96f1919145fc9ac450b2ea29..950d8706d14ac77e9e0f45694cd50f8b4abb9fc1 100644 --- a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod +++ b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod @@ -3,6 +3,7 @@ <name>VisitPlanEntryEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod b/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod index 3f6a787f4a8bf4bc1faad535b28ccce8aef50778..d58550498e10e16ee96233d559788ae0c579063b 100644 --- a/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod +++ b/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod @@ -3,6 +3,7 @@ <name>VisitRecommendationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod b/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod index fd33a5b5de963a569ebacd15c97033f1dd756857..c841039215a5b2ef2c4b23d68650e385f56a3bcf 100644 --- a/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod +++ b/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -47,5 +47,40 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup1>newEntryGroup</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>297bae8e-4d8c-4fbf-90fb-240369d48ff9</name> + <entityField>PRIORITY_ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>621b2bf8-280a-4bd8-9a09-9cad5bdcda0e</name> + <entityField>ORGANISATION_NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6a98ae55-a30e-48d4-8d45-1c63a359af5e</name> + <entityField>ORGANISATION_ADDRESS</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>8f02f53e-8e60-4c71-9fb3-5a4b32ff0776</name> + <entityField>PRIORITY</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>df091097-bd7a-413f-8737-b065ac9398c3</name> + <entityField>PRIORITY_SOURCE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>c2ca0e43-a94f-460b-8a42-4bc3a3755213</name> + <entityField>DUE_DATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>2fa2eb56-28ec-4bdc-a1ff-1ca0e26ab407</name> + <entityField>INFO</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod b/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod index d121c250b33e093a8eac9491bdb3fe90e6ec8758..59a9e0f0bd08a03da9afa0b0d6ec613276279bce 100644 --- a/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod +++ b/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod @@ -3,6 +3,7 @@ <name>WorkflowDefinitionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod index 595adfca1ccb73785d2dd9a9f66da399de710608..a4e33a131b80ffae09321355f1d9a5f6e4d9f621 100644 --- a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod +++ b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod @@ -46,5 +46,31 @@ <entityField>#ENTITY</entityField> <isCreatable v="true" /> </tilesViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <favoriteActionGroup1>tableActions</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>NAME</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>755d3865-3c89-472e-8e2b-20c4daac5062</name> + <entityField>NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>cfce2402-216d-4368-8b25-d8c7193bb0ad</name> + <entityField>CATEGORY</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>c6adcb39-3456-4dfc-b8a6-833598a7a63f</name> + <entityField>VERSION</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>7bdd8cca-92fa-4bd8-8ad8-92d0d7d0d159</name> + <entityField>ISACTIVE</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod index fa2aa1afdf42ed3a758511132e6d0ff66324c5a3..ac1fc2fe5b40ed6fae98393f22b27d7f48a5a679 100644 --- a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod +++ b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod @@ -3,6 +3,7 @@ <name>WorkflowInstanceEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod b/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod index 4ec2fb81fea717b9d06bcf4ba327efe295cae15c..4a851422779112622824df0992f1cea32e752166 100644 --- a/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod +++ b/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod @@ -45,5 +45,34 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>NAME</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>ad732392-8a70-43e9-8f2f-f155788aed7f</name> + <entityField>ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>60130614-a984-49e8-9cad-5b303e9eb7a4</name> + <entityField>NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>9acc2a53-4d57-47c5-b455-0a1057113367</name> + <entityField>START_TIME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>8ebbf540-663f-44a4-9442-d5cb670ecb25</name> + <entityField>ISACTIVE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>3ab45851-129f-419c-9580-cc0a0badba03</name> + <entityField>PROCESSDEFINITION_VERSION</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod b/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod index fef72a84bd140b51bc7a321ae61f8a5ec3b7b085..ff969c13fd5106db0abe14c18565a1da7b8d87d6 100644 --- a/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod +++ b/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod @@ -44,5 +44,31 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>44acbe41-b06c-45e9-894e-a5690eb2b3f6</name> + <entityField>ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>301b6f7e-e54a-4d67-a3e0-02af753c2dca</name> + <entityField>ACTIVITY_NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>15a20f1b-d940-4390-859c-32a1bed53037</name> + <entityField>ACTIVITY_TYPE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>913383c1-2f71-4846-bfad-44e29cc31788</name> + <entityField>START_TIME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>bd3d9f6d-7733-43c2-be69-5fa4620c32f3</name> + <entityField>END_TIME</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod b/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod index 145d17fe5d0dd84aff2592f565cb03f042c831fd..43ae59380522779a39c44e344ba411241ee7fe88 100644 --- a/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod +++ b/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod @@ -3,6 +3,7 @@ <name>WorkflowSignalEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> <name>layout</name> diff --git a/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod b/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod index 15874fe38d83022e49d356df3f2474b6061bf7a7..3bfbce1fac88a64f8fb7643d021bd282331e970a 100644 --- a/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod +++ b/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -27,5 +27,23 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>d15db403-5322-4eff-88f4-9e2dede2cf8c</name> + <entityField>SIGNAL_NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>3d860219-151f-45d4-833a-bfbdb2f6c4d8</name> + <entityField>TRIGGER_EVENT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>3b822cbd-18c6-4e07-8973-6303b75613d2</name> + <entityField>OBJECT_TYPE</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod b/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod index cdac1faccf7f16acf27044fd57f434dea9502e3c..9c98d1fe51548d2c24a3f1e415cf83a1de05e69d 100644 --- a/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod +++ b/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod @@ -3,9 +3,9 @@ <name>WorkflowStartConfigFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -24,5 +24,19 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>4874074f-80af-4e99-8449-2a4dc4428360</name> + <entityField>OBJECT_TYPE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>d479a082-ea95-40c6-81a2-9318fcf9ce98</name> + <entityField>TRIGGER_EVENT</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod b/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod index e9ea47e30645195dbcd33fab0fe84b5f8559be1e..e767b57ecab4a5860104fa431687defd3a610220 100644 --- a/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod +++ b/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod @@ -47,5 +47,34 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>NAME</element> + </linkedColumns> + <columns> + <neonTreeTableColumn> + <name>ecebb948-037e-4fc2-a9f9-13a4a9e5cf0d</name> + <entityField>ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>df5789cd-7513-4612-a1d9-bee5a298ad41</name> + <entityField>NAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>378bee17-fb36-4e45-a965-170990ab16f0</name> + <entityField>CREATE_TIME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>911011cd-af7a-42d3-be9a-94ccdcba2fc9</name> + <entityField>DUEDATE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>5831ff31-f49e-45c5-85ee-5bda027e3eb7</name> + <entityField>ASSIGNEE</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod b/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod index f78e19032c0ae565ce7efb8fbe2aa292e4e98c2c..e25ada40292a5745c12a15e959f0f61700355c2b 100644 --- a/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod +++ b/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod @@ -3,6 +3,7 @@ <name>WorkflowTaskForm_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod b/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod index 494564da2ddbaf8fd7c527db312dc1640550ea1f..bf61df8ebf51aed671e004a5ee13daa2663b5512 100644 --- a/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod +++ b/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod @@ -3,6 +3,7 @@ <name>WorkflowTaskPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> + <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <headerFooterLayout> <name>layout</name> diff --git a/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod b/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod index 6e6b3fe111c6c9e1414c8cafa00bc452c083800c..6de8d6e623ef5a4ee8afe8d150bf74c01b486bcd 100644 --- a/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod +++ b/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod @@ -3,9 +3,9 @@ <name>WorkflowVariableValueFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> @@ -25,5 +25,19 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treeTableViewTemplate> + <name>Treetable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTreeTableColumn> + <name>3f579cbb-c0d9-4b3f-8b62-3a77bae3d239</name> + <entityField>VARIABLENAME</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>f34bf572-66e2-4269-a75d-4bbcf678208c</name> + <entityField>VARIABLEVALUE</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> </children> </neonView> diff --git a/neonView/campaignParticipantMessage_view/campaignParticipantMessage_view.aod b/neonView/campaignParticipantMessage_view/campaignParticipantMessage_view.aod index fd667347c2afdca12346e7f189980fdf17c1f22e..f11aa26b7622597f92bbebfaa15af9b47767ff8e 100644 --- a/neonView/campaignParticipantMessage_view/campaignParticipantMessage_view.aod +++ b/neonView/campaignParticipantMessage_view/campaignParticipantMessage_view.aod @@ -11,6 +11,7 @@ <genericViewTemplate> <name>Message_view</name> <hideLabels v="true" /> + <hideEmptyFields v="true" /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> diff --git a/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js index 9c667f3770c0aeab7853b9d8ad6bfae02981b5b1..fba1180f3e320d66a2c09961d1eba5cfc49380bd 100644 --- a/process/AttributeFilter_lib/process.js +++ b/process/AttributeFilter_lib/process.js @@ -222,7 +222,7 @@ AttributeFilterExtensionMaker.getFilterCondition = function(pObjectType, pFilter condition = newWhere(["AB_ATTRIBUTERELATION", dbField], SqlUtils.escapeVars(pRawValue), pOperatorName == "=" ? SqlBuilder.EQUAL() : SqlBuilder.NOT_EQUAL()); else { - condition = pCondition.replace(pColumnPlaceholder, dbField, "g"); + condition = pCondition.replace(new RegExp(pColumnPlaceholder, "g"), dbField); } //a SqlBuilder.IN() in a newWhere is not used here since the subselect can contain a placeholder diff --git a/process/Bulkmail_lib/process.js b/process/Bulkmail_lib/process.js index 81a3986c28047db9fa60e6ba408283818ee67146..ede9be7097f894fb89139076e79f0c1305f4b015 100644 --- a/process/Bulkmail_lib/process.js +++ b/process/Bulkmail_lib/process.js @@ -162,7 +162,7 @@ BulkMailUtils.openAddRecipientView = function (pContactIds) var params = { "ContactIds_param" : pContactIds }; - neon.openContext("BulkMailAddRecipients", "BulkMailAddRecipientsEdit_view", null, neon.OPERATINGSTATE_NEW, params); + neon.openContext("BulkMailAddRecipients", "BulkMailAddRecipientsEdit_view", null, neon.OPERATINGSTATE_VIEW, params); } /** @@ -431,7 +431,7 @@ SerialLetterUtils.openAddRecipientView = function (pContactIds) var params = { "ContactIds_param" : pContactIds }; - neon.openContext("SerialLetterAddRecipients", "SerialLetterAddRecipientsEdit_view", null, neon.OPERATINGSTATE_NEW, params); + neon.openContext("SerialLetterAddRecipients", "SerialLetterAddRecipientsEdit_view", null, neon.OPERATINGSTATE_VIEW, params); } /** diff --git a/process/Campaign_lib/process.js b/process/Campaign_lib/process.js index 76a6c808995051fdfa248ab0177b7b3e8fb4a7bd..b38ab24f96c87d6895583dcb9f2b787ea503fd34 100644 --- a/process/Campaign_lib/process.js +++ b/process/Campaign_lib/process.js @@ -693,5 +693,5 @@ _CampaignUtils._openAddParticipantContext = function(pContext, pTargetDataExpres params["isUpdate_param"] = false; params["dataSourceTableName_param"] = pSourceTableName; - neon.openContext(pContext, null, null, neon.OPERATINGSTATE_NEW, params); + neon.openContext(pContext, "CampaignAddParticipantsEdit_view", null, neon.OPERATINGSTATE_VIEW, params); } \ No newline at end of file diff --git a/process/DocumentTemplate_lib/process.js b/process/DocumentTemplate_lib/process.js index 3c5b6496b4e3f1cef3bea17b27c212dc43761af4..486e493fefb492ead224c144e88f270af6d84634 100644 --- a/process/DocumentTemplate_lib/process.js +++ b/process/DocumentTemplate_lib/process.js @@ -106,7 +106,7 @@ DocumentTemplate.prototype._resolveEmbeddedTemplate = function () // Note: some embedded templates in embedded templates may be replaced, but this is NOT SUPPORTED, as it only works if the second template is not already replaced at that time. placeholders.forEach(function(pPlaceholder) { - replacedContent = replacedContent.replace(PlaceholderUtils.formatPlaceholder(pPlaceholder[0]), pPlaceholder[1], "g") + replacedContent = replacedContent.replace(new RegExp(PlaceholderUtils.formatPlaceholder(pPlaceholder[0]), "g"), pPlaceholder[1]) }, this); this._subtemplatedContent = util.encodeBase64String(replacedContent); @@ -522,7 +522,7 @@ TemplateHelper._replaceText = function (pText, pReplacements, pSpecialCharFilter pText = pText.replace(new RegExp(PlaceholderUtils.getRegexpMatchAll(pSpecialCharFilterRegexpPart), "gi"), function(pFound) { let foundFiltered = pFound.replace(new RegExp(pSpecialCharFilterRegexpPart, "gi"),""); return pReplacements[foundFiltered] ? pReplacements[foundFiltered] : pFound; - }, "gi") + }); return pText; } @@ -669,8 +669,8 @@ TemplateHelper._getReplacedODT = function (pTemplate, pReplacements, pTableData) */ for (let placeholder in replacements) { - currentBody = currentBody.replace(placeholder, - replacements[placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&"), "ig"); + currentBody = currentBody.replace(new RegExp(placeholder, "ig"), + replacements[placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&")); } @@ -709,8 +709,8 @@ TemplateHelper._getReplacedODT = function (pTemplate, pReplacements, pTableData) var styles = util.decodeBase64String(pack.getFromZip(pODTFileName, "styles.xml")); for (let placeholder in pReplacements[0]) { - styles = styles.replace(placeholder, - pReplacements[0][placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&"), "ig"); + styles = styles.replace(new RegExp(placeholder, "ig"), + pReplacements[0][placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&")); } pack.addToZip(pODTFileName, "styles.xml", util.encodeBase64String(styles)); return true; @@ -772,7 +772,7 @@ LetterUtils.openNewLetter = function (pContactId, pComingFrom) "ContactId_param" : pContactId, "ComingFrom_param" : pComingFrom }; - neon.openContext("Letter", "LetterEdit_view", null, neon.OPERATINGSTATE_NEW, params); + neon.openContext("Letter", "LetterEdit_view", null, neon.OPERATINGSTATE_VIEW, params); } /** diff --git a/process/DuplicateScanner_lib/process.js b/process/DuplicateScanner_lib/process.js index 3576d4dcf361c9a5a42faf46d65d33f7d2157a89..ed3ef2cce6bc01136003468b6c39ac2781c38cd4 100644 --- a/process/DuplicateScanner_lib/process.js +++ b/process/DuplicateScanner_lib/process.js @@ -801,6 +801,32 @@ DuplicateScannerUtils.GetEntityFieldsFromConfig = function(pFilterName, pTargetE return entityFields; } +/** + * Loads the configured entity fields required for the given duplicate scanner. + * + * @param {String} pFilterName the name of the scanner + * @param {String} pTargetEntity the target entity + * @return {Object} an object with two properties: + * <ul> + * <li>entityFields: array of entity fields</li> + * <li>entityIdField: the id field name as string</li> + * </ul> + */ +DuplicateScannerUtils.getEntityFieldObjectFromConfig = function (pFilterName, pTargetEntity) +{ + var indexPattern = _DuplicateScannerUtils._loadIndexPattern(pFilterName, pTargetEntity); + if (!indexPattern) + return null; + var fieldConfigs = _DuplicateScannerUtils._loadEntityFieldConfigsFromPattern(indexPattern); + if (fieldConfigs == null || fieldConfigs.length === 0) + return null; + + return { + entityFields : _DuplicateScannerUtils._loadEntityFieldsFromFieldConfigs(fieldConfigs), + entityIdField : _DuplicateScannerUtils._loadEntityIdField(pFilterName, pTargetEntity) + }; +} + DuplicateScannerUtils.GetUnrelatedRelationsForDuplicate = function(pDuplicateId) { let unrelatedIds = []; @@ -910,9 +936,8 @@ pResultFields, pRecordIdValueToIgnore, pFormatValuesConsumeWebserviceCallback, p let ignoreSourceRecordPattern = _DuplicateScannerUtils._getIgnoreSourceRecordPattern(pRecordIdValueToIgnore); let indexPatternWithValues = _DuplicateScannerUtils._replacePlaceholderForValuesInPattern(pIndexPattern, pEntityFieldConfigValuesRay); - indexPatternWithValues = ignoreSourceRecordPattern + indexPatternWithValues + ")"; - possibleDuplicates = _DuplicateScannerUtils._callIndexSearch(pTargetEntity, indexPatternWithValues, pResultFields, 100); + possibleDuplicates = _DuplicateScannerUtils._callIndexSearch(pTargetEntity, indexPatternWithValues, ignoreSourceRecordPattern, pResultFields, 100); if(possibleDuplicates == null) return null; @@ -948,11 +973,12 @@ _DuplicateScannerUtils._isUseExternalWebservice = function(pFilterName, pTargetE * * @param {String} pTargetEntity Entity which has been configured * @param {String} pIndexPatternWithValues The pattern used to search. Has to contain the values already. + * @param {String} pIdFilter The filter pattern used to exclude the current record from the result. * @param {String} pResultFields The result field config. Use "DuplicateScannerUtils.LoadResultFields" * @param {String} pResultSetRows todo * @returns {[["key", "value"]] || null} Array of Key-Value-Pairs based on the configured pResultFields, if no pattern exists null */ -_DuplicateScannerUtils._callIndexSearch = function(pTargetEntity, pIndexPatternWithValues, pResultFields, pResultSetRows) +_DuplicateScannerUtils._callIndexSearch = function(pTargetEntity, pIndexPatternWithValues, pIdFilter, pResultFields, pResultSetRows) { logging.log(pIndexPatternWithValues) //The indexPattern can't be null because it is required to run the search. @@ -961,9 +987,13 @@ _DuplicateScannerUtils._callIndexSearch = function(pTargetEntity, pIndexPatternW let indexQuery = indexsearch.createIndexQuery() .setPattern(pIndexPatternWithValues) .setEntities([pTargetEntity]) +// .addFilter(pIdFilter); // .setDefaultOperator(indexsearch.OPERATOR_AND) //.addSearchFields("Person_entity.FIRSTNAME", "Person_entity.LASTNAME", "Person_entity.CONTACTID") //.setRows(pResultSetRows); + if(pIdFilter && pIdFilter.length > 0) + indexQuery.addFilter(pIdFilter); + indexQuery = _DuplicateScannerUtils._setResultFields(indexQuery, pResultFields); return indexsearch.searchIndex(indexQuery); } @@ -1102,14 +1132,20 @@ _DuplicateScannerUtils._buildDeleteCachedUnrelatedDuplicateQuery = function(pSou } /* - * Creates a pattern which excludes the field and it's value + * Creates a filter pattern which excludes results with the provided id from the search. * - * @param {String} pRecordIdValueToIgnore The fields value - * @returns {String} Pattern which excludes the gived field in combination with the value + * @param {String} pRecordIdValueToIgnore The id value to exclude from the result. + * @returns {String} Filter pattern which excludes hits with the given id (index) from the result. */ _DuplicateScannerUtils._getIgnoreSourceRecordPattern = function(pRecordIdValueToIgnore) { - return "( +( -" + indexsearch.FIELD_ID + ":(" + pRecordIdValueToIgnore + ") ) "; + // creates -_local_id_:"<pRecordIdValueToIgnore>" + if(pRecordIdValueToIgnore && pRecordIdValueToIgnore.length > 0) + return indexsearch.buildPattern(indexsearch.createPatternConfig().minus( + indexsearch.createPhraseTerm(pRecordIdValueToIgnore) + .setIndexField(indexsearch.FIELD_ID) + )); + return null; } _DuplicateScannerUtils._buildUpdateContactIdStatements = function(pTableInfos, pSourceContactId, pTargetContactId, pAlias) diff --git a/process/Email_lib/process.js b/process/Email_lib/process.js index 2393fee4b38cea9c67566988bf561a3c8a119949..d14798db16fadb33871b64b0a2dd879987fec383 100644 --- a/process/Email_lib/process.js +++ b/process/Email_lib/process.js @@ -90,7 +90,7 @@ EmailWritingUtils.openNewMail = function (pToContactId, pToEmailAddress, pComing if (pToEmailAddress) params.Recipient_param = pToEmailAddress; - neon.openContext("Email", "EmailEdit_view", null, neon.OPERATINGSTATE_NEW, params); + neon.openContext("Email", "EmailEdit_view", null, neon.OPERATINGSTATE_VIEW, params); } EmailWritingUtils.getMailbridgeAddress = function () diff --git a/process/Importer_lib/process.js b/process/Importer_lib/process.js index 430c8e0aa7734b65247a12799a2181d0610594a8..bf55280364bd354a92e30fc2471468d76dcfcd49 100644 --- a/process/Importer_lib/process.js +++ b/process/Importer_lib/process.js @@ -1322,7 +1322,7 @@ function Importer(pConfig) //- document in the comment why it should not be used and when it will cause other problems //- find another solution to prevent the unterminated string errors if(pEvalScript) - return res.replace("'", "\\\\u0027", "g").replace("\"", "\\\\u0022", "g").replace("\r", "\\\\u000D", "g").replace("\n", "\\\\u000A", "g"); + return res.replace(/'/g, "\\\\u0027").replace(/"/, "\\\\u0022").replace(/\r/g, "\\\\u000D").replace(/\n/g, "\\\\u000A"); else return res; } @@ -1336,7 +1336,7 @@ function Importer(pConfig) //- document in the comment why it should not be used and when it will cause other problems //- find another solution to prevent the unterminated string errors if(pEvalScript) - return inp[Number(pNumber)].replace("'", "\\\\u0027", "g").replace("\"", "\\\\u0022", "g").replace("\r", "\\\\u000D", "g").replace("\n", "\\\\u000A", "g"); + return inp[Number(pNumber)].replace(/'/g, "\\\\u0027").replace(/"/, "\\\\u0022").replace(/\r/g, "\\\\u000D").replace(/\n/g, "\\\\u000A"); else return inp[Number(pNumber)]; } diff --git a/process/IndexSearch_lib/process.js b/process/IndexSearch_lib/process.js index 532ec972fe333d7fb1e89cf731d3127c8bd20a1b..be35ad2cc8c0a24fabe76bd57ba2a64d9ce9b310 100644 --- a/process/IndexSearch_lib/process.js +++ b/process/IndexSearch_lib/process.js @@ -5,20 +5,66 @@ import("system.text"); * provides static methods for special handling of entities in JDito-Processes * do not create an instance of this * - * TODO: lib has to be updated with new Indexsearch when it is available - * * @class */ function IndexsearchUtils() {} /** - * TODO: Comment everything! + * Searches within an affectedInfoContainer for an id value <br/> + * This id value can be used in the affectedIds-process of an index-recordContainer for example <br/> + * + * Depending on the provided action the given ID-field is searched in: <br/> + * <ul> + * <li>the newValues (action: I), no other values are yet present</li> + * <li>the oldValues (action: D), other values are not anymore present</li> + * <li>another source by calling a function (action: U), in the update case only values are provided that acutally changed so + * another source (usually the dattabase) is needed to perform the lookup</li> + * <li>Otherwise an empty array is given (action X for example)</li> + * </ul> + * + * @param {String} fieldname <p> Name of the field that shall be searched within the infocontainer + * @param {Object} affectedInfoContainer <p> affectedInfoContainer like it is provided by the IndexsearchUtils.createAffectedInfoContainer-function + * + * @param {Function} updateFn <p> a callback function that is called when an update-action is provided in the affectedInfoContianer + * (which means there are no [useful] newvalues/oldvalues) + * + * @return {Array} <p> 1D-array of Strings with all affectedIds that where found depeding on the information in the + * affectedInfoContainer + * @example + * //example for an affectedIds-procces for a indexer that is built on top of the database table OFFER + * //explanations of the example are written as code-comments + * ...imports, variables and more code here... + * //this is always the uid of the record that has been changed, so if an OFFER-entry has been changed the OFFERID is returned, if an OFFERITEM-entry + * //has been changed the OFFERITEMID is returned and so on + * var idValue = vars.get("$local.idvalue"); + * var infoContainer = ...code for creating a infoContainer... * - * @param {} fieldname - * @param {} affectedInfoContainer - * @param {} updateFn + * switch (tableName)//the tableName is always the name of the DB table that has been changed (changed = inserted, updated or deleted) + * { + * //if the OFFER itself has been changed it's very easy because it's possible to return the OFFERID directly + * case "OFFER": + * res = [idValue]; + * break; + * //for other items (like the OFFERITEM in this exmaple) however it is not that easy, because the index-UID is needed as result in the + * //affectedIdsProcess, so we have find the correct OFFERID for the OFFERITEM that has been changed + * // therefore we have to define the columnname of the index-UID we are searching within our table (here: OFFER_ID) and we have to define a + * //callback function that returns the index-UID with for the given ID of the record that has been changed [to see why we need a function see the + * //descriptiontext of this function] + * case "OFFERITEM": + * res = IndexsearchUtils.getAffectedIdValues("OFFER_ID", infoContainer, function (offerItemId){ + * return newSelect("OFFERITEM.OFFER_ID") + * .from("OFFERITEM") + * .where("OFFERITEM.OFFERITEMID", offerItemId) + * .arrayColumn(); + * }); + * break; + * } * - * @return {} + * //this needed as a savegate, because the Index is being rebuilt by the indexer if nothing gets returned => do a final check here! + * if (res) + * result.object(res); + * else + * result.object([]); */ IndexsearchUtils.getAffectedIdValues = function(fieldname, affectedInfoContainer, updateFn) { var affectedIds; @@ -26,30 +72,51 @@ IndexsearchUtils.getAffectedIdValues = function(fieldname, affectedInfoContainer { case "I": affectedIds = affectedInfoContainer.newValues[affectedInfoContainer.columns.indexOf(fieldname)]; - affectedIds = affectedIds ? [affectedIds] : [] + affectedIds = affectedIds ? [affectedIds] : [];//check if affectedIds are present because otherwise we may would return [null] break; case "U": affectedIds = updateFn.call(null, affectedInfoContainer.id); break; case "D": affectedIds = affectedInfoContainer.oldValues[affectedInfoContainer.columns.indexOf(fieldname)]; - affectedIds = affectedIds ? [affectedIds] : [] + affectedIds = affectedIds ? [affectedIds] : [];//check if affectedIds are present because otherwise we may would return [null] break; } - return affectedIds || []; + if(affectedIds) + return affectedIds; + else + return []; } /** - * TODO: Comment everything! + * Builds an object with various properties and returns the newly created object. + * The object that is retruned is so called affectedInfoContainer, but the type and prototype is still object.<br/> + * <br/> + * Each object represents one audited change in a db table with a sepcific type (insert, update, delete, etc.) for one row. + * The object is basically a unified blueprint for such a change.<br/> + * <br/> + * Main purpose of the object is to make the handling of given values within a affectedIdProcess in an entity-indexRecordContainer easier. + * However it could be used in other cases too, for example in the auditProcess. * - * @param {} changedIdValue - * @param {} changedTable - * @param {} action - * @param {} columnsFn - * @param {} oldValueFn - * @param {} newValueFn + * @param {String} changedIdValue <p> UID of the row where the change has been audited + * @param {String} changedTable <p> name of the db table where the change has been audited + * @param {String} action <p> action type of the audited change in short form, for exmaple: I, U, D, ... + * @param {Function} columnsFn <p> callbackFunction that has to return an array with the column names of the audited table + * @param {Function} oldValueFn <p> callbackFunction that has to return an array with the new values that exist after the audited change + * @param {Function} newValueFn <p> callbackFunction that has to return an array with the old values that have existed before the audited change * - * @return {} + * @return {Object} object with the following properties (values depend on the parameters): + * <ul> + * <li>id: uid of the changed record</li> + * <li>table: name of the database table of the changed record</li> + * <li>action: type of the change, this is usually "I" for insert, "U" for update, "D" for delete and "X" for unknown</li> + * <li>columns: array of column names of the table that have been audited (if present)</li> + * <li>oldValues: detemined values before the change (if present)</li> + * <li>newValues: detemined values after the change (if present)</li> + * </ul> + * <br/> + * Note that this only what the object SHOULD contain, the actual values depend on the input parameters. + * */ IndexsearchUtils.createAffectedInfoContainer = function(changedIdValue, changedTable, action, columnsFn, oldValueFn, newValueFn) { var res, internalStorage; diff --git a/process/Leadimport_lib/process.js b/process/Leadimport_lib/process.js index 12ee0883e8b9d49b2556cbf740a459580afaf2b3..bfc4a50283b447f3395af80a3ad50b0d4eaabd5f 100644 --- a/process/Leadimport_lib/process.js +++ b/process/Leadimport_lib/process.js @@ -167,7 +167,7 @@ LeadImportUtils.importData = function(pDataFields, pDataTypes, pFieldDef, pField var persRet; //------create organisation - if (LeadValues["NAME"] != "")//only if Organame is filled + if (LeadValues["NAME"].trim() != "")//only if Organame is filled { orgObjID = "Organisation";//for attribute orgRet = LeadImportUtils.insertOrg(pDataFields, pDataTypes, pFieldDef, pFieldValues, pUser, pDate); @@ -183,7 +183,7 @@ LeadImportUtils.importData = function(pDataFields, pDataTypes, pFieldDef, pField } } //------create person - if (LeadValues[ "LASTNAME" ] != "")//only if lastname is filled + if (LeadValues["LASTNAME"].trim() != "")//only if lastname is filled { persObjID = "Person";//for attribute persRet = LeadImportUtils.insertPers(pDataFields, pDataTypes, pFieldDef, pFieldValues, orgid, LeadValues, pUser, pDate); diff --git a/process/Liquibase_lib/process.js b/process/Liquibase_lib/process.js index f9c9cd59c90eeaa0390c58964c39957977bc59e8..09973aa50b9da66a5ffe9810f76762c3bdf9cf97 100644 --- a/process/Liquibase_lib/process.js +++ b/process/Liquibase_lib/process.js @@ -61,7 +61,7 @@ LiquiUtils.exportAllTablesAsLiquibaseFiles = function(pOutFolderPath, pAuthor, p * * @param {String} pPath file-path where the files and folders will be created; the folder must be on the server * @param {String} pTableName name of the DB-table that will be exported; this is also the name of the file that is stored -* @param {Array} pColumns db-columns within the table that will be exported +* @param {Array} [pColumns=all columns within the table] db-columns within the table that will be exported * @param {String} [pCondition=none] db-condition to limit the data that will be exported; if nothing given the whole content will be exported * @param {String} [pAuthor="autogenerated"] author that will be written into the liquibase-changeset * @param {Boolean} [pIncludeClearTableDirective=false] if true, a delete element is added at the beginning of the changeset for the table diff --git a/process/Loghistory_lib/process.js b/process/Loghistory_lib/process.js index fa07e912c734554fe0e1955b5e3f926f889630fc..0f88ed09dad643c6204a9fd30a67d2caff2e07fb 100644 --- a/process/Loghistory_lib/process.js +++ b/process/Loghistory_lib/process.js @@ -109,12 +109,13 @@ LogHistoryExecutor.prototype.execute = function () IDs: ["OBJECT_ROWID", "AB_ATTRIBUTE_ID"], Description: translate.text("Attribute", this.translationLanguage) }; + + var oldvalues = {}; + var newvalues = {}; if (extra[this.affectedTable]) { var conf = extra[this.affectedTable]; - var oldvalues = {}; - var newvalues = {}; for(i = 0; i < this.columns.length; i++ ) { @@ -179,27 +180,27 @@ LogHistoryExecutor.prototype.execute = function () if (logfield && logfield.log) { if (this.sqlAction != 'I' && this.oldValues[i] != "") - this.oldValues[i] = this._getFormattedValue(this.columns[i], logfield, this.oldValues[i]); + oldvalues[i] = this._getFormattedValue(this.columns[i], logfield, this.oldValues[i]); if (this.sqlAction != 'D' && this.newValues[i] != "") - this.newValues[i] = this._getFormattedValue(this.columns[i], logfield, this.newValues[i]); + newvalues[i] = this._getFormattedValue(this.columns[i], logfield, this.newValues[i]); var logfieldTitle = (logfield.title ? translate.text(logfield.title, this.translationLanguage) : translate.text("Value", this.translationLanguage)); - if (this.sqlAction == 'U' && this.oldValues[i] != this.newValues[i]) + if (this.sqlAction == 'U' && oldvalues[i] != newvalues[i]) { //TODO: CLOB-check should be done by viewing the structure column type //use .trim() for "[CLOB]" check because in some case the value "[CLOB]\n" my be given - if (this.oldValues[i] != null && (this.oldValues[i].trim() == "[CLOB]" || this.oldValues[i].trim() == "")) - description.push(translate.withArguments("%0 \"%1\"", [logfieldTitle + ":", this.newValues[i]], this.translationLanguage)); + if (oldvalues[i] != null && (oldvalues[i].trim() == "[CLOB]" || oldvalues[i].trim() == "")) + description.push(translate.withArguments("%0 \"%1\"", [logfieldTitle + ":", newvalues[i]], this.translationLanguage)); else - description.push(translate.withArguments("%0 from \"%1\" to \"%2\"", [logfieldTitle + ":", this.oldValues[i], this.newValues[i]], this.translationLanguage)); + description.push(translate.withArguments("%0 from \"%1\" to \"%2\"", [logfieldTitle + ":", oldvalues[i], newvalues[i]], this.translationLanguage)); } //use .trim() for "[CLOB]" check because in some case the value "[CLOB]\n" my be given - if (this.sqlAction == 'I' && this.newValues[i] != "" && this.newValues[i] != null && this.newValues[i].trim() != "[CLOB]") - description.push(logfieldTitle + ": \"" + this.newValues[i] + "\""); + if (this.sqlAction == 'I' && newvalues[i] != "" && newvalues[i] != null && newvalues[i].trim() != "[CLOB]") + description.push(logfieldTitle + ": \"" + newvalues[i] + "\""); //use .trim() for "[CLOB]" check because in some case the value "[CLOB]\n" my be given - if (this.sqlAction == 'D' && this.oldValues[i] != "" && this.oldValues[i] != null && this.oldValues[i].trim() != "[CLOB]") - description.push(logfieldTitle + ": \"" + this.oldValues[i] + "\""); + if (this.sqlAction == 'D' && oldvalues[i] != "" && oldvalues[i] != null && oldvalues[i].trim() != "[CLOB]") + description.push(logfieldTitle + ": \"" + oldvalues[i] + "\""); } } if (this.sqlAction == "U") diff --git a/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod b/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod new file mode 100644 index 0000000000000000000000000000000000000000..fe86c4d1f97ec9f9611d761f65c14d51c27e3f02 --- /dev/null +++ b/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>ObjectRelationTypeRegistry_basic</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/ObjectRelationTypeRegistry_basic/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/ObjectRelationTypeRegistry_basic/process.js b/process/ObjectRelationTypeRegistry_basic/process.js new file mode 100644 index 0000000000000000000000000000000000000000..75f299aac41c10ce61de109fae2cb07930a5fad6 --- /dev/null +++ b/process/ObjectRelationTypeRegistry_basic/process.js @@ -0,0 +1,15 @@ +/** + * Provides static functionality for a registry of objectrelation-type ids. <br/> + * <br/> + * The reason for this is a convenient usage within jdito-code and autocomplete functionality within the designer. <br/> + * Addtional benefits of using the "constants" (in fact they are functions that return always the same value) are better readability of the code and + * more stable code regarding to changes. + * + * @class + * + */ +function $ObjectRelationTypeRegistry(){} + +//currently it's empty here but this library may be used in the future to provide ObjectRelationTypes within jdito code +//add semi-constants for different objectRelationTypes to use them in the jdito code instead of IDs +//$ObjectRelationTypeRegistry.myObjectRelationType = function(){return "<<uid of the type>>";}; diff --git a/process/Organisation_lib/process.js b/process/Organisation_lib/process.js index 622b86c386ba03047f92019a9860f8c133f4c628..5532a6817dbac7d0f8a0e0a70dd26c7237f9725d 100644 --- a/process/Organisation_lib/process.js +++ b/process/Organisation_lib/process.js @@ -123,7 +123,7 @@ OrgUtils.buildOrgReport = function(pOrgId, pContactId) //select people from the organization var persData = newSelect("SALUTATION, TITLE, FIRSTNAME, LASTNAME " - + ",CONTACTROLE as PERSFUNCITON, DEPARTMENT as PERSDEPARTMENT " + + ",CONTACTPOSITION as PERSFUNCITON, DEPARTMENT as PERSDEPARTMENT " + ",(" + CommUtil.getStandardSubSqlMail() + ")" + ",(" + CommUtil.getStandardSubSqlPhone() + ")" + ",ORGANISATION_ID, CONTACTID") diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index fb933d980b271bc431bdd4715c15d07243981ade..3039c1cf1cbd1468351cd93493862d3d91fbd47c 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -535,7 +535,7 @@ SqlCondition.prototype._prepare = function(field, value, cond, fieldType) { } else { - throw new Error(translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [field])); + throw new Error(translate.text("${SQL_LIB_FIELD_WRONG_FORMAT}") + field + translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [field])); } } else @@ -547,7 +547,7 @@ SqlCondition.prototype._prepare = function(field, value, cond, fieldType) { } else { - throw new Error(translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [field.toSource()])); + throw new Error(translate.text("${SQL_LIB_FIELD_WRONG_FORMAT}") + field.toSource() + translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [field.toSource()])); } } @@ -4012,7 +4012,7 @@ SqlUtils.parseField = function(pField) if (pointPos > 0 && pointPos < pField.length-1) alias = pField; else - throw new Error(translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [pField])); + throw new Error(translate.text("${SQL_LIB_FIELD_WRONG_FORMAT}") + pField + translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [pField])); } else { @@ -4025,7 +4025,7 @@ SqlUtils.parseField = function(pField) pField = pField[0] + "." + pField[1]; } else - throw new Error(translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [field.toSource()])); + throw new Error(translate.text("${SQL_LIB_FIELD_WRONG_FORMAT}") + field.toSource() + translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [field.toSource()])); } return [alias, pField] }