diff --git a/.liquibase/Data_alias/basic/2020.1.1/AlterTablesToDatetime.xml b/.liquibase/Data_alias/basic/2020.1.1/AlterTablesToDatetime.xml index fd7b4c34897c0014a93213511af9a34c19572d93..92147dd087bcae4ce573c2d5b6ee55a4673ae914 100644 --- a/.liquibase/Data_alias/basic/2020.1.1/AlterTablesToDatetime.xml +++ b/.liquibase/Data_alias/basic/2020.1.1/AlterTablesToDatetime.xml @@ -1,11 +1,111 @@ <?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"/> - +<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 dbms="derby" author="s.pongratz" id="3ce820fb-e29e-47cd-9083-fc2c2e1c8358"> + <sql> + ALTER TABLE CAMPAIGN ADD COLUMN DATE_NEW_NEW TIMESTAMP; + UPDATE CAMPAIGN SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP); + ALTER TABLE CAMPAIGN DROP COLUMN DATE_NEW; + RENAME COLUMN CAMPAIGN.DATE_NEW_NEW TO DATE_NEW; + </sql> + + <sql> + ALTER TABLE CAMPAIGN ADD COLUMN DATE_EDIT_NEW TIMESTAMP; + UPDATE CAMPAIGN SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP); + ALTER TABLE CAMPAIGN DROP COLUMN DATE_EDIT; + RENAME COLUMN CAMPAIGN.DATE_EDIT_NEW TO DATE_EDIT; + </sql> + + <sql> + ALTER TABLE CAMPAIGNCOST ADD COLUMN DATE_NEW_NEW TIMESTAMP; + UPDATE CAMPAIGNCOST SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP); + ALTER TABLE CAMPAIGNCOST DROP COLUMN DATE_NEW; + RENAME COLUMN CAMPAIGNCOST.DATE_NEW_NEW TO DATE_NEW; + </sql> + + <sql> + ALTER TABLE CAMPAIGNCOST ADD COLUMN DATE_EDIT_NEW TIMESTAMP; + UPDATE CAMPAIGNCOST SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP); + ALTER TABLE CAMPAIGNCOST DROP COLUMN DATE_EDIT; + RENAME COLUMN CAMPAIGNCOST.DATE_EDIT_NEW TO DATE_EDIT; + </sql> + + <sql> + ALTER TABLE CAMPAIGNPARTICIPANT ADD COLUMN DATE_NEW_NEW TIMESTAMP; + UPDATE CAMPAIGNPARTICIPANT SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP); + ALTER TABLE CAMPAIGNPARTICIPANT DROP COLUMN DATE_NEW; + RENAME COLUMN CAMPAIGNPARTICIPANT.DATE_NEW_NEW TO DATE_NEW; + </sql> + + <sql> + ALTER TABLE CAMPAIGNPARTICIPANT ADD COLUMN DATE_EDIT_NEW TIMESTAMP; + UPDATE CAMPAIGNPARTICIPANT SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP); + ALTER TABLE CAMPAIGNPARTICIPANT DROP COLUMN DATE_EDIT; + RENAME COLUMN CAMPAIGNPARTICIPANT.DATE_EDIT_NEW TO DATE_EDIT; + </sql> + + <sql> + ALTER TABLE CAMPAIGNSTEP ADD COLUMN DATE_NEW_NEW TIMESTAMP; + UPDATE CAMPAIGNSTEP SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP); + ALTER TABLE CAMPAIGNSTEP DROP COLUMN DATE_NEW; + RENAME COLUMN CAMPAIGNSTEP.DATE_NEW_NEW TO DATE_NEW; + </sql> + + <sql> + ALTER TABLE CAMPAIGNSTEP ADD COLUMN DATE_EDIT_NEW TIMESTAMP; + UPDATE CAMPAIGNSTEP SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP); + ALTER TABLE CAMPAIGNSTEP DROP COLUMN DATE_EDIT; + RENAME COLUMN CAMPAIGNSTEP.DATE_EDIT_NEW TO DATE_EDIT; + </sql> + + <sql> + ALTER TABLE DOCUMENTTEMPLATELINK ADD COLUMN DATE_NEW_NEW TIMESTAMP; + UPDATE DOCUMENTTEMPLATELINK SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP); + ALTER TABLE DOCUMENTTEMPLATELINK DROP COLUMN DATE_NEW; + RENAME COLUMN DOCUMENTTEMPLATELINK.DATE_NEW_NEW TO DATE_NEW; + </sql> + + <sql> + ALTER TABLE DOCUMENTTEMPLATELINK ADD COLUMN DATE_EDIT_NEW TIMESTAMP; + UPDATE DOCUMENTTEMPLATELINK SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP); + ALTER TABLE DOCUMENTTEMPLATELINK DROP COLUMN DATE_EDIT; + RENAME COLUMN DOCUMENTTEMPLATELINK.DATE_EDIT_NEW TO DATE_EDIT; + </sql> + + <sql> + ALTER TABLE DUPLICATESCANNER ADD COLUMN DATE_NEW_NEW TIMESTAMP; + UPDATE DUPLICATESCANNER SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP); + ALTER TABLE DUPLICATESCANNER DROP COLUMN DATE_NEW; + RENAME COLUMN DUPLICATESCANNER.DATE_NEW_NEW TO DATE_NEW; + </sql> + + <sql> + ALTER TABLE DUPLICATESCANNER ADD COLUMN DATE_EDIT_NEW TIMESTAMP; + UPDATE DUPLICATESCANNER SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP); + ALTER TABLE DUPLICATESCANNER DROP COLUMN DATE_EDIT; + RENAME COLUMN DUPLICATESCANNER.DATE_EDIT_NEW TO DATE_EDIT; + </sql> + + <sql> + ALTER TABLE DUPLICATESCANNERRESULTFIELDCONFIG ADD COLUMN DATE_NEW_NEW TIMESTAMP; + UPDATE DUPLICATESCANNERRESULTFIELDCONFIG SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP); + ALTER TABLE DUPLICATESCANNERRESULTFIELDCONFIG DROP COLUMN DATE_NEW; + RENAME COLUMN DUPLICATESCANNERRESULTFIELDCONFIG.DATE_NEW_NEW TO DATE_NEW; + </sql> + + <sql> + ALTER TABLE DUPLICATESCANNERRESULTFIELDCONFIG ADD COLUMN DATE_EDIT_NEW TIMESTAMP; + UPDATE DUPLICATESCANNERRESULTFIELDCONFIG SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP); + ALTER TABLE DUPLICATESCANNERRESULTFIELDCONFIG DROP COLUMN DATE_EDIT; + RENAME COLUMN DUPLICATESCANNERRESULTFIELDCONFIG.DATE_EDIT_NEW TO DATE_EDIT; + </sql> + </changeSet> + + <changeSet author="s.pongratz" id="4e15c97b-5de8-40ac-945b-b5267d71896f"> + <preConditions onFail="CONTINUE"> + <not> + <dbms type="derby" /> + </not> + </preConditions> <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="CAMPAIGN"/> <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="CAMPAIGN"/> @@ -17,8 +117,6 @@ <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"/> @@ -28,9 +126,5 @@ <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> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.1.2/AddNullableToDateNew.xml b/.liquibase/Data_alias/basic/2020.1.2/AddNullableToDateNew.xml new file mode 100644 index 0000000000000000000000000000000000000000..86989600807b32fba76fc6b052f08f007cb4f390 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.1.2/AddNullableToDateNew.xml @@ -0,0 +1,13 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet id="0aa81d84-7456-4240-91e0-a915f38abbd7" author="s.pongratz" > + <addNotNullConstraint columnName="DATE_NEW" tableName="CAMPAIGNCOST" columnDataType="DATETIME" validate="true"/> + <addNotNullConstraint columnName="DATE_NEW" tableName="CAMPAIGNPARTICIPANT" columnDataType="DATETIME" validate="true"/> + <addNotNullConstraint columnName="DATE_NEW" tableName="CAMPAIGNSTEP" columnDataType="DATETIME" validate="true"/> + <addNotNullConstraint columnName="DATE_NEW" tableName="DOCUMENTTEMPLATELINK" columnDataType="DATETIME" validate="true"/> + <addNotNullConstraint columnName="DATE_NEW" tableName="DUPLICATESCANNER" columnDataType="DATETIME" validate="true"/> + <addNotNullConstraint columnName="DATE_NEW" tableName="DUPLICATESCANNERRESULTFIELDCONFIG" columnDataType="DATETIME" validate="true"/> + <addNotNullConstraint columnName="DATE_NEW" tableName="CAMPAIGN" columnDataType="DATETIME" validate="true"/> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ComunicationMedium_IdDatatype.xml b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ComunicationMedium_IdDatatype.xml new file mode 100644 index 0000000000000000000000000000000000000000..3e4f1fbd5b8f119ecc58649bab722422cfdf571b --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ComunicationMedium_IdDatatype.xml @@ -0,0 +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="b.ulrich" id="a9f53bcd-b541-4a46-bd40-a21f7fae7aba"> + <modifyDataType columnName="MEDIUM_ID" newDataType="CHAR(36)" tableName="COMMUNICATION"/> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml new file mode 100644 index 0000000000000000000000000000000000000000..14c64bfefe06b69e868de85bdf8ab9fcd6a093c1 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml @@ -0,0 +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="b.ulrich" id="5a0d5d3f-e849-4584-8082-481b1411d1fc"> + <modifyDataType columnName="DOCUMENTTEMPLATE_ID" newDataType="CHAR(36)" tableName="DOCUMENTTEMPLATE"/> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ExportTemplateDatatype.xml b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ExportTemplateDatatype.xml new file mode 100644 index 0000000000000000000000000000000000000000..7de92277180d51eb97a2cb562328e8e46751b43d --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ExportTemplateDatatype.xml @@ -0,0 +1,10 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="b.ulrich" id="77ee7dcd-cf5b-47ea-a59a-2b1230fad818"> + <modifyDataType columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)" tableName="EXPORTTEMPLATEPLACEOFUSE"/> + <modifyDataType columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)" tableName="EXPORTTEMPLATEFIELD"/> + <modifyDataType columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)" tableName="EXPORTTEMPLATESELECTION"/> + + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/changelog.xml b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..571beb0ce88383160aafd6aa92cbaa3eac91172f --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/changelog.xml @@ -0,0 +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"> + <include relativeToChangelogFile="true" file="alter_DocumentTemplatePlaceOfUseDatatype.xml"/> + <include relativeToChangelogFile="true" file="alter_ExportTemplateDatatype.xml"/> + <include relativeToChangelogFile="true" file="alter_ComunicationMedium_IdDatatype.xml"/> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.1.2/changelog.xml b/.liquibase/Data_alias/basic/2020.1.2/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..98f643b71426d12718ef4175e9569864d3f0574b --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.1.2/changelog.xml @@ -0,0 +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"> + <include file="AlterDocumentTemplatePlaceOfUseDatatype/changelog.xml" relativeToChangelogFile="true"/> + <include file="AddNullableToDateNew.xml" relativeToChangelogFile="true" /> + <include file="insert_workflowCategory_keyword.xml" relativeToChangelogFile="true"/> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/campaign.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/campaign.xml index 23e5ec6d78c1bb8205a5ac24c2788323d28f3e22..4325860e610d648af7e2cd15dccb125aa4093043 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/campaign.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/campaign.xml @@ -5,8 +5,8 @@ <insert tableName="campaign"> <column name="CAMPAIGNID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CURRENCY" value="EUR"/> - <column name="DATE_EDIT" valueDate="2019-09-04"/> - <column name="DATE_NEW" valueDate="2019-09-02"/> + <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DESCRIPTION" value="Prüfung unserer Software durch Teilnehmer"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="NAME" value="CRM-Scan"/> @@ -17,7 +17,7 @@ <insert tableName="campaign"> <column name="CAMPAIGNID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/> <column name="CURRENCY" value="EUR"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DESCRIPTION" value="Messe um neue Kontakte zu akquirieren."/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="NAME" value="Vertriebsmesse"/> @@ -27,7 +27,7 @@ <insert tableName="campaign"> <column name="CAMPAIGNID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="CURRENCY" value="EUR"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DESCRIPTION" value="Zweijährige Messe."/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="NAME" value="Hannovermesse"/> @@ -37,7 +37,7 @@ <insert tableName="campaign"> <column name="CAMPAIGNID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CURRENCY" value="EUR"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DESCRIPTION" value="An unsererem Kundentag können sich bestehende Kunden und Interessenten austauschen."/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="NAME" value="Interner Kundentag"/> diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/campaigncost.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/campaigncost.xml index 975282c6face3e55ba4230041b8a95756dbcae2d..e69675be11c23b35cd6b055ace9e0aa7dd08fb4d 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/campaigncost.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/campaigncost.xml @@ -6,7 +6,7 @@ <column name="CAMPAIGNCOSTID" value="09e7f86f-983d-4e68-bf19-54018fa9b230"/> <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/> <column name="CATEGORY" value="SHIPCOST"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="NET" valueNumeric="250.00"/> <column name="USER_NEW" value="Admin"/> </insert> @@ -15,7 +15,7 @@ <column name="CAMPAIGNSTEP_ID" value="fd5d676b-94a3-441e-9b55-eceffc2a0b49"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="CATEGORY" value="LAYOUTCOST"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="NET" valueNumeric="250.00"/> <column name="USER_NEW" value="Admin"/> </insert> @@ -23,7 +23,7 @@ <column name="CAMPAIGNCOSTID" value="293f7a24-191a-4ccd-83c2-4adf976d8dcd"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="CATEGORY" value="LAYOUTCOST"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="NET" valueNumeric="1000.00"/> <column name="USER_NEW" value="Admin"/> </insert> @@ -32,7 +32,7 @@ <column name="CAMPAIGNSTEP_ID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CATEGORY" value="LAYOUTCOST"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="NET" valueNumeric="500.00"/> <column name="USER_NEW" value="Admin"/> </insert> @@ -40,7 +40,7 @@ <column name="CAMPAIGNCOSTID" value="7b8fd98d-f947-46d8-ad6b-271378aca137"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CATEGORY" value="PRINTCOST"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="NET" valueNumeric="250.00"/> <column name="USER_NEW" value="Admin"/> </insert> @@ -48,7 +48,7 @@ <column name="CAMPAIGNCOSTID" value="bb77c632-a0a1-4bfb-89de-8a80dc00d8ff"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CATEGORY" value="LAYOUTCOST"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="NET" valueNumeric="1000.00"/> <column name="USER_NEW" value="Admin"/> </insert> @@ -56,7 +56,7 @@ <column name="CAMPAIGNCOSTID" value="c2a145a2-3e12-4a1c-825a-d5555256062a"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="CATEGORY" value="PRINTCOST"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="NET" valueNumeric="500.00"/> <column name="USER_NEW" value="Admin"/> </insert> @@ -65,7 +65,7 @@ <column name="CAMPAIGNSTEP_ID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/> <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/> <column name="CATEGORY" value="PRINTCOST"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="NET" valueNumeric="100.00"/> <column name="USER_NEW" value="Admin"/> </insert> @@ -74,7 +74,7 @@ <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CATEGORY" value="SHIPCOST"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="NET" valueNumeric="150.00"/> <column name="USER_NEW" value="Admin"/> </insert> diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/campaignparticipant.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/campaignparticipant.xml index ebd41aced6c555daaadb61f81e73326210665b76..0fff301b1de269c2f2f3153faa780f3378343fd8 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/campaignparticipant.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/campaignparticipant.xml @@ -7,7 +7,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="6c612f91-0160-4f09-9103-dccee7f7a6b7"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -15,7 +15,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -23,8 +23,8 @@ <column name="CAMPAIGNSTEP_ID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="29271db0-4253-46c9-b7c2-5e25376b9d19"/> - <column name="DATE_EDIT" valueDate="2019-09-04"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_EDIT" value="Admin"/> <column name="USER_NEW" value="Admin"/> </insert> @@ -33,7 +33,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="7a34d9d0-04c7-478c-a8e2-f584fe625c45"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -41,7 +41,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -49,8 +49,8 @@ <column name="CAMPAIGNSTEP_ID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="7a34d9d0-04c7-478c-a8e2-f584fe625c45"/> - <column name="DATE_EDIT" valueDate="2019-09-04"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_EDIT" value="Admin"/> <column name="USER_NEW" value="Admin"/> </insert> @@ -59,8 +59,8 @@ <column name="CAMPAIGNSTEP_ID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="57d524f6-ad66-4550-be83-fee6e31b7a52"/> - <column name="DATE_EDIT" valueDate="2019-09-04"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_EDIT" value="Admin"/> <column name="USER_NEW" value="Admin"/> </insert> @@ -69,8 +69,8 @@ <column name="CAMPAIGNSTEP_ID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="DATE_EDIT" valueDate="2019-09-04"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_EDIT" value="Admin"/> <column name="USER_NEW" value="Admin"/> </insert> @@ -79,7 +79,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="d8c1e4c9-35b4-45c8-bf4c-eb55137cd25c"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -87,8 +87,8 @@ <column name="CAMPAIGNSTEP_ID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="4cc98357-25f3-462b-898c-440f9faf4b97"/> - <column name="DATE_EDIT" valueDate="2019-09-04"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_EDIT" value="Admin"/> <column name="USER_NEW" value="Admin"/> </insert> @@ -97,7 +97,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="1868bd3a-05af-4b7f-a633-e3aec50ac45c"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -105,7 +105,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="73d731a2-e7f5-11e8-9f32-f2801f1b9fd1"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -113,7 +113,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="19c6bf30-cd8b-40df-980c-ce71c92c194c"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -121,7 +121,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="45635aca-7971-43df-a683-c80c86cb58cc"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -129,7 +129,7 @@ <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -137,7 +137,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -145,7 +145,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="6e667085-bb97-4039-8dfe-2230002985e0"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -153,7 +153,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="d4c1bec3-656f-45ec-ae03-1c4d729d99fe"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -161,7 +161,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -169,7 +169,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="d4c1bec3-656f-45ec-ae03-1c4d729d99fe"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -177,7 +177,7 @@ <column name="CAMPAIGNSTEP_ID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/> <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/> <column name="CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -185,7 +185,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="a8a5f214-8165-4627-bee2-bceb3578147e"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -193,7 +193,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="6e667085-bb97-4039-8dfe-2230002985e0"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -201,7 +201,7 @@ <column name="CAMPAIGNSTEP_ID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/> <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/> <column name="CONTACT_ID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/> - <column name="DATE_NEW" valueDate="2019-11-15"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -209,7 +209,7 @@ <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="CONTACT_ID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -217,7 +217,7 @@ <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -225,7 +225,7 @@ <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -233,7 +233,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="3ac53b27-450d-4a2a-9160-bb223b8deef8"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -241,7 +241,7 @@ <column name="CAMPAIGNSTEP_ID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/> <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/> <column name="CONTACT_ID" value="57d524f6-ad66-4550-be83-fee6e31b7a52"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -249,7 +249,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="a8a5f214-8165-4627-bee2-bceb3578147e"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -257,7 +257,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -265,7 +265,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="d3ec3869-b710-44d9-b20f-50f0724631ac"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -273,7 +273,7 @@ <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="3ac53b27-450d-4a2a-9160-bb223b8deef8"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -281,7 +281,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="1868bd3a-05af-4b7f-a633-e3aec50ac45c"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -289,7 +289,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="73d731a2-e7f5-11e8-9f32-f2801f1b9fd1"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -297,7 +297,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="29271db0-4253-46c9-b7c2-5e25376b9d19"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -305,7 +305,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="d8c1e4c9-35b4-45c8-bf4c-eb55137cd25c"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -313,7 +313,7 @@ <column name="CAMPAIGNSTEP_ID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/> <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/> <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -321,7 +321,7 @@ <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="2c427e51-0434-40b3-ad00-3a9076067e03"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -329,7 +329,7 @@ <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -337,7 +337,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -345,7 +345,7 @@ <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -353,7 +353,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="73d73404-e7f5-11e8-9f32-f2801f1b9fd1"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -361,7 +361,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -369,7 +369,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -377,7 +377,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="2c427e51-0434-40b3-ad00-3a9076067e03"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -385,7 +385,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="57d524f6-ad66-4550-be83-fee6e31b7a52"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -393,7 +393,7 @@ <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -401,7 +401,7 @@ <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="CONTACT_ID" value="73d73404-e7f5-11e8-9f32-f2801f1b9fd1"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -409,7 +409,7 @@ <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="4cc98357-25f3-462b-898c-440f9faf4b97"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -417,7 +417,7 @@ <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="CONTACT_ID" value="57d524f6-ad66-4550-be83-fee6e31b7a52"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -425,7 +425,7 @@ <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="CONTACT_ID" value="73d731a2-e7f5-11e8-9f32-f2801f1b9fd1"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -433,7 +433,7 @@ <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="45635aca-7971-43df-a683-c80c86cb58cc"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -441,7 +441,7 @@ <column name="CAMPAIGNSTEP_ID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/> <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/> <column name="CONTACT_ID" value="73d73404-e7f5-11e8-9f32-f2801f1b9fd1"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -449,7 +449,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -457,7 +457,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="d3ec3869-b710-44d9-b20f-50f0724631ac"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -465,7 +465,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -473,7 +473,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="73d73404-e7f5-11e8-9f32-f2801f1b9fd1"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -481,7 +481,7 @@ <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="CONTACT_ID" value="6c612f91-0160-4f09-9103-dccee7f7a6b7"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -489,7 +489,7 @@ <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="CONTACT_ID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="campaignparticipant"> @@ -497,7 +497,7 @@ <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="CONTACT_ID" value="19c6bf30-cd8b-40df-980c-ce71c92c194c"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="USER_NEW" value="Admin"/> </insert> </changeSet> diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/campaignstep.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/campaignstep.xml index 079375cbb2fdc1d0fa6036dc1bb28ad4e40561ad..ae0ae1dbbb10d980700280ac9c16ee2b18ff4beb 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/campaignstep.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/campaignstep.xml @@ -6,7 +6,7 @@ <column name="CAMPAIGNSTEPID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="DATE_END" valueDate="2019-09-30"/> - <column name="DATE_NEW" valueDate="2019-09-03"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DATE_START" valueDate="2019-09-23"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="MAXPARTICIPANTS" valueNumeric="100"/> @@ -21,7 +21,7 @@ <column name="CAMPAIGNSTEPID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/> <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/> <column name="DATE_END" valueDate="2019-09-25"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DATE_START" valueDate="2019-09-04"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="MAXPARTICIPANTS" valueNumeric="100"/> @@ -34,7 +34,7 @@ <column name="CAMPAIGNSTEPID" value="2d89fd53-76e4-4dfa-8941-d0a80b040849"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="DATE_END" valueDate="2019-10-17"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DATE_START" valueDate="2019-10-03"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="MAXPARTICIPANTS" valueNumeric="35"/> @@ -49,7 +49,7 @@ <column name="CAMPAIGNSTEPID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="DATE_END" valueDate="2019-10-02"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DATE_START" valueDate="2019-09-26"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="MAXPARTICIPANTS" valueNumeric="50"/> @@ -64,7 +64,7 @@ <column name="CAMPAIGNSTEPID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="DATE_END" valueDate="2019-09-25"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DATE_START" valueDate="2019-09-04"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="MAXPARTICIPANTS" valueNumeric="100"/> @@ -77,7 +77,7 @@ <column name="CAMPAIGNSTEPID" value="72ea7e64-d5bf-44eb-a523-3f2da411fe6d"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="DATE_END" valueDate="2019-10-28"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DATE_START" valueDate="2019-10-18"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="MAXPARTICIPANTS" valueNumeric="35"/> @@ -92,7 +92,7 @@ <column name="CAMPAIGNSTEPID" value="76295722-96f0-4992-a2d4-8defe962bf9a"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="DATE_END" valueDate="2019-10-16"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DATE_START" valueDate="2019-10-10"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="MAXPARTICIPANTS" valueNumeric="50"/> @@ -107,7 +107,7 @@ <column name="CAMPAIGNSTEPID" value="963dc8b8-55e4-4e22-8162-a706dbeefa94"/> <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/> <column name="DATE_END" valueDate="2019-10-09"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DATE_START" valueDate="2019-09-25"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="MAXPARTICIPANTS" valueNumeric="100"/> @@ -122,7 +122,7 @@ <column name="CAMPAIGNSTEPID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/> <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/> <column name="DATE_END" valueDate="2019-09-23"/> - <column name="DATE_NEW" valueDate="2019-09-02"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DATE_START" valueDate="2019-09-02"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="MAXPARTICIPANTS" valueNumeric="100"/> @@ -135,7 +135,7 @@ <column name="CAMPAIGNSTEPID" value="a91a8a7c-1547-4707-a7aa-cc0ce7056ebe"/> <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/> <column name="DATE_END" valueDate="2019-10-17"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DATE_START" valueDate="2019-10-10"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="MAXPARTICIPANTS" valueNumeric="15"/> @@ -150,7 +150,7 @@ <column name="CAMPAIGNSTEPID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="DATE_END" valueDate="2019-09-25"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DATE_START" valueDate="2019-09-04"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="MAXPARTICIPANTS" valueNumeric="100"/> @@ -163,7 +163,7 @@ <column name="CAMPAIGNSTEPID" value="fbfcf9a2-66b3-404f-a5e6-beef285ceb83"/> <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/> <column name="DATE_END" valueDate="2019-10-22"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DATE_START" valueDate="2019-10-20"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="MAXPARTICIPANTS" valueNumeric="50"/> @@ -178,7 +178,7 @@ <column name="CAMPAIGNSTEPID" value="fd5d676b-94a3-441e-9b55-eceffc2a0b49"/> <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/> <column name="DATE_END" valueDate="2019-10-02"/> - <column name="DATE_NEW" valueDate="2019-09-04"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DATE_START" valueDate="2019-09-25"/> <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> <column name="MAXPARTICIPANTS" valueNumeric="50"/> diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplatelink.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplatelink.xml index 4bdd168b843605d649eddbb8583590c077089106..bc4b2e4b8359d11154d4e9cb2240d9daab7c3f67 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplatelink.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplatelink.xml @@ -3,14 +3,14 @@ <changeSet author="autogenerated" id="17856652-ace7-45c3-9f9f-640e8ed24fe3"> <delete tableName="documenttemplatelink"/> <insert tableName="documenttemplatelink"> - <column name="DATE_NEW" valueDate="2019-10-17"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DOCUMENTTEMPLATELINKID" value="b6704427-602c-4e5b-8e57-5207136e0413"/> <column name="DOCUMENTTEMPLATE_ID_CHILD" value="e70b9ef1-f0a3-4cd2-b3cd-fa7b4229ee73"/> <column name="DOCUMENTTEMPLATE_ID_PARENT" value="1cabdde7-870e-4094-a0f7-a335ded3536a"/> <column name="USER_NEW" value="Admin"/> </insert> <insert tableName="documenttemplatelink"> - <column name="DATE_NEW" valueDate="2019-10-17"/> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/> <column name="DOCUMENTTEMPLATELINKID" value="f55b35f4-c915-455a-9e18-70f1709ea72b"/> <column name="DOCUMENTTEMPLATE_ID_CHILD" value="e70b9ef1-f0a3-4cd2-b3cd-fa7b4229ee73"/> <column name="DOCUMENTTEMPLATE_ID_PARENT" value="12da39a8-6fc9-4220-b09d-179cd611a814"/> diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/duplicates/duplicatescanner.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/duplicates/duplicatescanner.xml index f45f6f3a0807e07f62c1f665e3e1ee51f129906a..e1c57fcd49efdb883e3bf6bf15b5ccf4f4b58877 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/duplicates/duplicatescanner.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/duplicates/duplicatescanner.xml @@ -10,9 +10,9 @@ <column name="ID_FIELD_NAME" value="CONTACTID" /> <column name="SCAN_PATTERN" value="firstname:({"entityfield": "FIRSTNAME"}) AND lastname:({"entityfield": "LASTNAME"})" /> <column name="USER_NEW" value="Admin" /> - <column name="DATE_NEW" valueDate="2019-07-19" /> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00" /> <column name="USER_EDIT" value="Admin" /> - <column name="DATE_EDIT" valueDate="2019-07-19" /> + <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00" /> </insert> <insert tableName="duplicatescanner"> <column name="ID" value="8fa3ab66-cc01-45b6-88f3-a9e76bad7db0" /> @@ -22,9 +22,9 @@ <column name="ID_FIELD_NAME" value="CONTACTID" /> <column name="SCAN_PATTERN" value="name:({"entityfield": "NAME", "exclude": ["gmbh", "co", "kg", "ag", "bank", "deutsche", "van", "software", "medien", "print"] }) AND city:({"entityfield": "STANDARD_CITY"})" /> <column name="USER_NEW" value="Admin" /> - <column name="DATE_NEW" valueDate="2019-07-19" /> + <column name="DATE_NEW" valueDate="2020-06-26T00:00:00" /> <column name="USER_EDIT" value="Admin" /> - <column name="DATE_EDIT" valueDate="2019-07-19" /> + <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00" /> </insert> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index 50c63b65a63025ae582f679ca7b2051471c3fd9e..a8cc53b406959a8797b32a02af71dd93e1576384 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -13,6 +13,7 @@ <include relativeToChangelogFile="true" file="basic/2020.0.3/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.1.0/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.1.1/changelog.xml"/> + <include relativeToChangelogFile="true" file="basic/2020.1.2/changelog.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>--> diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 06901c17a5ee9fae60cfaf16c684d29b93499f6b..80c4686210790a754e8528e02b583a833eebcfb3 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -8237,9 +8237,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -8272,10 +8272,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -8529,9 +8529,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -8557,10 +8557,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -8647,9 +8647,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -8696,10 +8696,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -8835,9 +8835,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -8954,10 +8954,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -9267,9 +9267,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -9309,10 +9309,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -11573,9 +11573,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -11601,10 +11601,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -11885,9 +11885,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -11920,10 +11920,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> diff --git a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod index 5203479895dfe3fc038912256877e49c31669aa3..000cdc7705df39624244bcc953f2c1dd51448d86 100644 --- a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod +++ b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod @@ -1712,7 +1712,7 @@ <entityDb> <name>ASYS_PERMISSIONSET</name> <dbName></dbName> - <idColumn>PERMISSIONSETID</idColumn> + <idColumn>ASYS_PERMISSIONSETID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> <documentation></documentation> @@ -1816,7 +1816,7 @@ <entityDb> <name>ASYS_PERMISSIONACTION</name> <dbName></dbName> - <idColumn>PERMISSIONACTIONID</idColumn> + <idColumn>ASYS_PERMISSIONACTIONID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> <documentation></documentation> diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index 0d0a112f0c5bf19ba9ee893659b494b388606b3b..c9558baefe3e2cfb98c86980090279cc36383154 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -488,11 +488,6 @@ <entityName>Appointment_entity</entityName> <fieldName>LinkedAppointments</fieldName> </dependency> - <children> - <entityParameter> - <name>LinkedObjectId_param</name> - </entityParameter> - </children> </entityConsumer> <entityActionField> <name>newSupportticket</name> @@ -616,6 +611,16 @@ <title> number of connections</title> <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/countlinks/valueProcess.js</valueProcess> </entityField> + <entityField> + <name>COUNT</name> + <title>Count</title> + <contentType>NUMBER</contentType> + </entityField> + <entityAggregateField> + <name>COUNT_aggregate</name> + <parentField>COUNT</parentField> + <title>Count</title> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -717,6 +722,15 @@ <name>entryDateDateFormat.value</name> <expression>%aditoprj%/entity/Activity_entity/recordcontainers/db/recordfieldmappings/entrydatedateformat.value/expression.js</expression> </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>COUNT_aggregate.value</name> + <recordfield>ACTIVITY.ACTIVITYID</recordfield> + <aggregateType>COUNT</aggregateType> + </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>COUNT.value</name> + <expression>%aditoprj%/entity/Activity_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/Activity_entity/entityfields/attributes/children/objectrowid_param/code.js b/entity/Activity_entity/entityfields/attributes/children/objectrowid_param/code.js deleted file mode 100644 index a8267b62060b4bd30cedaba4713f4421a6e6f9ff..0000000000000000000000000000000000000000 --- a/entity/Activity_entity/entityfields/attributes/children/objectrowid_param/code.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.ACTIVITYID")); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/attributes/children/objecttype_param/code.js b/entity/Activity_entity/entityfields/attributes/children/objecttype_param/code.js deleted file mode 100644 index 008915f61deac19ccdd40fff81701de63eb3b6a2..0000000000000000000000000000000000000000 --- a/entity/Activity_entity/entityfields/attributes/children/objecttype_param/code.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("Context_lib"); - -result.string(ContextUtils.getCurrentContextId()); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/keywordcategory/children/containername_param/valueProcess.js b/entity/Activity_entity/entityfields/keywordcategory/children/containername_param/valueProcess.js deleted file mode 100644 index 7b43ff2f6bef70bf04cd150c46dd7d9f921cf5d0..0000000000000000000000000000000000000000 --- a/entity/Activity_entity/entityfields/keywordcategory/children/containername_param/valueProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string($KeywordRegistry.activityCategory()); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/link/children/activityid_param/valueProcess.js b/entity/Activity_entity/entityfields/link/children/activityid_param/valueProcess.js deleted file mode 100644 index a8267b62060b4bd30cedaba4713f4421a6e6f9ff..0000000000000000000000000000000000000000 --- a/entity/Activity_entity/entityfields/link/children/activityid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.ACTIVITYID")); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/moduletrees/children/contextname/valueProcess.js b/entity/Activity_entity/entityfields/moduletrees/children/contextname/valueProcess.js deleted file mode 100644 index 109d9bf5c8ea2825f9da796529721deab9a96d9f..0000000000000000000000000000000000000000 --- a/entity/Activity_entity/entityfields/moduletrees/children/contextname/valueProcess.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string("Activity"); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/newmail/onActionProcess.js b/entity/Activity_entity/entityfields/newmail/onActionProcess.js deleted file mode 100644 index 097887a005788a6f5cc554e228879456082c4f21..0000000000000000000000000000000000000000 --- a/entity/Activity_entity/entityfields/newmail/onActionProcess.js +++ /dev/null @@ -1,14 +0,0 @@ -import("system.db"); -import("system.vars"); -import("system.neon"); -import("KeywordRegistry_basic"); - - -var params = { - "DocumentTemplateType_param" : $KeywordRegistry.documentTemplateType$mail() -} - -//neon.openContext("DocumentTemplate", "DocumentTemplateFilterSmall_view", null, neon.OPERATINGSTATE_SEARCH, params); -//neon.openContext("DocumentTemplate", "DocumentTemplateFilterSmall_view", null, null, null, params); -neon.openContext("DocumentTemplate", null, null, neon.OPERATINGSTATE_SEARCH, params); - diff --git a/entity/AddressValidation_entity/entityfields/cityvalidatior/children/type_param/valueProcess.js b/entity/AddressValidation_entity/entityfields/cityvalidatior/children/type_param/valueProcess.js deleted file mode 100644 index 07a8e649c2c8a47b00f727a51543e5e695d7a7f5..0000000000000000000000000000000000000000 --- a/entity/AddressValidation_entity/entityfields/cityvalidatior/children/type_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("WsValidation_lib"); -import("system.result"); - -result.string(AddressValidationType.get().TYPE_CITY_NOMINATIM.key); \ No newline at end of file diff --git a/entity/AddressValidation_entity/entityfields/zipvalidator/children/type_param/valueProcess.js b/entity/AddressValidation_entity/entityfields/zipvalidator/children/type_param/valueProcess.js deleted file mode 100644 index fda16aa510156d5a9e059f1cb3a19ea1e72ef61e..0000000000000000000000000000000000000000 --- a/entity/AddressValidation_entity/entityfields/zipvalidator/children/type_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("WsValidation_lib"); -import("system.result"); - -result.string(AddressValidationType.get().TYPE_ZIP_NOMINATIM.key); \ No newline at end of file diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod index 5e6122b2767b55c3ccc21429bfe61a9fe01d84d7..a8fab2595e8795a739e854e715f1669bbd0477ac 100644 --- a/entity/Address_entity/Address_entity.aod +++ b/entity/Address_entity/Address_entity.aod @@ -451,6 +451,7 @@ </entityField> <entityProvider> <name>QuickEntryAdresses</name> + <documentation>%aditoprj%/entity/Address_entity/entityfields/quickentryadresses/documentation.adoc</documentation> <dependencies> <entityDependency> <name>d677a301-2038-4ccd-baa1-5f986e290564</name> diff --git a/entity/Address_entity/conditionProcess.js b/entity/Address_entity/conditionProcess.js deleted file mode 100644 index 2a2a40bad76b7c7bf6a7845b81df92b5cfa85ee2..0000000000000000000000000000000000000000 --- a/entity/Address_entity/conditionProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("Sql_lib"); -import("system.db"); -import("system.result"); - -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 -result.string(newWhereIfSet("ADDRESS.CONTACT_ID", "$param.ContactId_param").toString()); diff --git a/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/valueProcess.js b/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/valueProcess.js deleted file mode 100644 index 167d3dc35f38110620b4eb5e6004b4c4454578f2..0000000000000000000000000000000000000000 --- a/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/valueProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string($KeywordRegistry.addressType()); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/orgaddresses/children/contacttype_param/code.js b/entity/Address_entity/entityfields/orgaddresses/children/contacttype_param/code.js deleted file mode 100644 index 85a095aeb8aaaff00b627db260104e8790cb3a03..0000000000000000000000000000000000000000 --- a/entity/Address_entity/entityfields/orgaddresses/children/contacttype_param/code.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.object(1); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/persaddresses/children/contacttype_param/code.js b/entity/Address_entity/entityfields/persaddresses/children/contacttype_param/code.js deleted file mode 100644 index ee2a3d7dfb188a0e175b68c1cf815af5842aa34f..0000000000000000000000000000000000000000 --- a/entity/Address_entity/entityfields/persaddresses/children/contacttype_param/code.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.object(2); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/quickentryadresses/documentation.adoc b/entity/Address_entity/entityfields/quickentryadresses/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..02f8ddcf3a0a317172962c6c7eafaaa7f7a86c12 --- /dev/null +++ b/entity/Address_entity/entityfields/quickentryadresses/documentation.adoc @@ -0,0 +1,3 @@ += QuickEntry_entity - Addresses + +Provides all addresses for QuickEntry \ No newline at end of file diff --git a/entity/Address_entity/recordcontainers/childgroup/affectedIds.js b/entity/Address_entity/recordcontainers/childgroup/affectedIds.js deleted file mode 100644 index cd9ce4eca596f562519fd3e40d69d57afad64c62..0000000000000000000000000000000000000000 --- a/entity/Address_entity/recordcontainers/childgroup/affectedIds.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.object([vars.getString("$local.idvalue")]); \ No newline at end of file diff --git a/entity/Address_entity/recordcontainers/childgroup/query.js b/entity/Address_entity/recordcontainers/childgroup/query.js deleted file mode 100644 index c0ba9e3c53936a0e77923eb3d126c5ac144cea1d..0000000000000000000000000000000000000000 --- a/entity/Address_entity/recordcontainers/childgroup/query.js +++ /dev/null @@ -1,22 +0,0 @@ -import("Sql_lib"); -import("system.db"); -import("system.result"); -import("system.vars"); - -var affectedIds; -if (vars.exists("$local.idvalue")) { - affectedIds = vars.get("$local.idvalue"); -} - -var addressSelect = newSelect("ADDRESS.ADDRESSID as \"_uid_\", \n\ - ADDRESS.ADDRESSID, \n\ - ADDRESS.ZIP as ZIP, \n\ - ADDRESS.CITY as CITY, \n\ - ADDRESS.COUNTRY, \n\ - ADDRESS.ADDRESS, \n\ - ADDRESS.BUILDINGNO") - .from("ADDRESS") - .whereIfSet("ADDRESS.ADDRESSID", affectedIds, SqlBuilder.IN()) - .orderBy("ADDRESS.ADDRESSID") - -result.string(addressSelect.toString("1=2")); \ No newline at end of file diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod index 4b02be4aeaa7e327d8db14baf69a496d96b8ae22..b9e852b3b2ae077b24a41200d051dad37e408a9a 100644 --- a/entity/AnyContact_entity/AnyContact_entity.aod +++ b/entity/AnyContact_entity/AnyContact_entity.aod @@ -4,7 +4,7 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/AnyContact_entity/documentation.adoc</documentation> <contentTitleProcess>%aditoprj%/entity/AnyContact_entity/contentTitleProcess.js</contentTitleProcess> - <afterUiInit>%aditoprj%/entity/AnyContact_entity/afterUiInit.js</afterUiInit> + <onInit>%aditoprj%/entity/AnyContact_entity/onInit.js</onInit> <imageProcess>%aditoprj%/entity/AnyContact_entity/imageProcess.js</imageProcess> <recordContainer>db</recordContainer> <entityFields> @@ -107,7 +107,6 @@ <description>Relation type. Value is based on the existance or non-existance of ORGANISATION_ID and PERSON_ID. See ContactUtils.getRelationTypeByPersOrg for possible values</description> <contentType>NUMBER</contentType> - <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/contactType/valueProcess.js</valueProcess> </entityField> <entityField> <name>ORGANISATION_NAME</name> @@ -180,6 +179,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/entityfields/contacttype/valueProcess.js b/entity/AnyContact_entity/entityfields/contacttype/valueProcess.js deleted file mode 100644 index 1974bb4d5a7c88145de2d44d53a22c00ece7aab3..0000000000000000000000000000000000000000 --- a/entity/AnyContact_entity/entityfields/contacttype/valueProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Contact_lib") - -result.object(ContactUtils.getContactType(vars.get("$field.CONTACTID"), vars.get("$field.PERSON_ID"), vars.get("$field.ORGANISATION_ID"))); \ No newline at end of file diff --git a/entity/AnyContact_entity/entityfields/date_edit/valueProcess.js b/entity/AnyContact_entity/entityfields/date_edit/valueProcess.js deleted file mode 100644 index 710ac8a06a9911f82ff222c7d9d231846ca93fb2..0000000000000000000000000000000000000000 --- a/entity/AnyContact_entity/entityfields/date_edit/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) - result.string(vars.getString("$sys.date")); \ No newline at end of file diff --git a/entity/AnyContact_entity/entityfields/date_new/valueProcess.js b/entity/AnyContact_entity/entityfields/date_new/valueProcess.js deleted file mode 100644 index 3a0d59096cd2de39b6098f1ed95af580dcebfce0..0000000000000000000000000000000000000000 --- a/entity/AnyContact_entity/entityfields/date_new/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.getString("$sys.date")); \ No newline at end of file diff --git a/entity/AnyContact_entity/entityfields/user_edit/valueProcess.js b/entity/AnyContact_entity/entityfields/user_edit/valueProcess.js deleted file mode 100644 index 1581e18d9763043ae602b98658f87cb0a3b0c967..0000000000000000000000000000000000000000 --- a/entity/AnyContact_entity/entityfields/user_edit/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) - result.string(vars.getString("$sys.user")); \ No newline at end of file diff --git a/entity/AnyContact_entity/entityfields/user_new/valueProcess.js b/entity/AnyContact_entity/entityfields/user_new/valueProcess.js deleted file mode 100644 index 7c566863b493d778b72dea7d8822f6a59333e77d..0000000000000000000000000000000000000000 --- a/entity/AnyContact_entity/entityfields/user_new/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.getString("$sys.user")); \ No newline at end of file diff --git a/entity/Contact_entity/afterUiInit.js b/entity/AnyContact_entity/onInit.js similarity index 89% rename from entity/Contact_entity/afterUiInit.js rename to entity/AnyContact_entity/onInit.js index ad4324c7682881b8e9ca470e334269ae822ec522..a75a8d405e273b1b3e026251a305676c2ccbd9ad 100644 --- a/entity/Contact_entity/afterUiInit.js +++ b/entity/AnyContact_entity/onInit.js @@ -8,7 +8,7 @@ var statusFilterElement = { "name":"STATUS", "operator":"NOT_EQUAL", "key":$KeywordRegistry.contactStatus$inactive(), - "contenttype": vars.get("$property.STATUS.contentType") + "contenttype": "TEXT" }; statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusFilterElement.key); 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/Appointment_entity/Appointment_entity.aod b/entity/Appointment_entity/Appointment_entity.aod index a88c2b6e6d636b7e7c8b39c6815377002469eb4f..28c70af66100db91d5c2b61eea6d9ff584fb5832 100644 --- a/entity/Appointment_entity/Appointment_entity.aod +++ b/entity/Appointment_entity/Appointment_entity.aod @@ -288,9 +288,6 @@ <jDitoRecordFieldMapping> <name>STATUS.value</name> </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>LINKS.value</name> - </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>DESCRIPTION.value</name> </jDitoRecordFieldMapping> diff --git a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js index 1537137ac8ec8fb412f232a80567dcafa4a93a5e..7e8972a145953d11163f3fccc1879487dea6e31b 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js @@ -107,8 +107,7 @@ function buildEntry(pEntry, pMasterentry) organizer, owner, attendees, - status, - links, + status, description, location, '', 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/content/displayValueProcess.js b/entity/BulkMail_entity/entityfields/content/displayValueProcess.js index 9f3bd46ac569f4ba80d5da76c4f455d8976e1f69..9081043c5eb4d74ae63d2f2f6f947ec6abd4e4b5 100644 --- a/entity/BulkMail_entity/entityfields/content/displayValueProcess.js +++ b/entity/BulkMail_entity/entityfields/content/displayValueProcess.js @@ -13,7 +13,7 @@ if (vars.get("$sys.viewmode") == neon.FRAME_VIEWMODE_DATASET && vars.get("$field var template = new DocumentTemplate(util.encodeBase64String(vars.get("$field.content")), vars.get("$field.templateType"), undefined, true) var contactId = EmployeeUtils.getCurrentContactId(); - var preview = template.getReplacedContentByContactId(contactId, false, true); + var preview = template.setOptions({onlyBody : true}).getReplacedContentByContactId(contactId); result.string(preview); } \ 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/CampaignParticipant_entity/entityfields/campaign_id/onValueChange.js b/entity/CampaignParticipant_entity/entityfields/campaign_id/onValueChange.js index f5f6c5c6594a1a57fb3aaa41b59dfd0768bfc430..07c57c1e196e3db902ee7f56434ab85cdcda55af 100644 --- a/entity/CampaignParticipant_entity/entityfields/campaign_id/onValueChange.js +++ b/entity/CampaignParticipant_entity/entityfields/campaign_id/onValueChange.js @@ -2,7 +2,7 @@ import("system.neon"); import("Campaign_lib"); import("system.vars"); -if(vasr.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW) +if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW) { var stepId = CampaignUtils.getDefaultCampaignStep(vars.get("local.value")); neon.setFieldValue("$field.CAMPAIGNSTEP_ID", stepId); diff --git a/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod b/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod index 5686a654510804c5582ec45ca999421ad7cea021..051deb0ceea090c270fb0b24b3896c9ec9959094 100644 --- a/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod +++ b/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod @@ -120,12 +120,6 @@ <name>CAMPAIGN_ID.value</name> <recordfield>CAMPAIGN.CAMPAIGNID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CAMPAIGN_NAME.value</name> - <recordfield>CAMPAIGN.NAME</recordfield> - <isFilterable v="true" /> - <isLookupFilter v="true" /> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>DATE_END.value</name> <recordfield>CAMPAIGNSTEP.DATE_END</recordfield> @@ -150,10 +144,6 @@ <name>STEP_ID.value</name> <recordfield>CAMPAIGNSTEP.CAMPAIGNSTEPID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>STEP_NAME.value</name> - <recordfield>CAMPAIGNSTEP.NAME</recordfield> - </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> <jDitoRecordContainer> diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod index d67763b95c47c81e4bffb571fdd45f8744f237fd..a9420fd4fbb060bb56b80f2efa888981a719029e 100644 --- a/entity/Campaign_entity/Campaign_entity.aod +++ b/entity/Campaign_entity/Campaign_entity.aod @@ -517,6 +517,16 @@ </entityParameter> </children> </entityConsumer> + <entityField> + <name>COUNT</name> + <title>Count</title> + <contentType>NUMBER</contentType> + </entityField> + <entityAggregateField> + <name>COUNT_aggregate</name> + <parentField>COUNT</parentField> + <title>Count</title> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -614,6 +624,15 @@ <name>CURRENCY.displayValue</name> <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/currency.displayvalue/expression.js</expression> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>COUNT.value</name> + <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression> + </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>COUNT_aggregate.value</name> + <recordfield>CAMPAIGN.CAMPAIGNID</recordfield> + <aggregateType>COUNT</aggregateType> + </aggregateFieldDbMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod index 5c0c8448cd84839a753fd36b32d653fcbfc16827..82c35b3c618ecc933e74b694daa96ad9f97cbfa4 100644 --- a/entity/Contact_entity/Contact_entity.aod +++ b/entity/Contact_entity/Contact_entity.aod @@ -8,7 +8,7 @@ <grantUpdateProcess>%aditoprj%/entity/Contact_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/Contact_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Contact_entity/contentTitleProcess.js</contentTitleProcess> - <afterUiInit>%aditoprj%/entity/Contact_entity/afterUiInit.js</afterUiInit> + <onInit>%aditoprj%/entity/Contact_entity/onInit.js</onInit> <onValidation>%aditoprj%/entity/Contact_entity/onValidation.js</onValidation> <iconId>VAADIN:USERS</iconId> <titlePlural>Contacts</titlePlural> diff --git a/entity/AnyContact_entity/afterUiInit.js b/entity/Contact_entity/onInit.js similarity index 100% rename from entity/AnyContact_entity/afterUiInit.js rename to entity/Contact_entity/onInit.js diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod index 6bb015cb39a37b2b6a4ebc1fb28fbb225534cf58..867da2214346c3543ad2601ffebd9fbfe42936f8 100644 --- a/entity/Contract_entity/Contract_entity.aod +++ b/entity/Contract_entity/Contract_entity.aod @@ -383,6 +383,15 @@ <iconId>VAADIN:CURLY_BRACKETS</iconId> <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/openadminview/stateProcess.js</stateProcess> </entityActionField> + <entityField> + <name>COUNT</name> + <title>Count</title> + </entityField> + <entityAggregateField> + <name>COUNT_aggregate</name> + <parentField>COUNT</parentField> + <title>Count</title> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -490,14 +499,6 @@ <name>CONTACT_PERSON_ID.value</name> <recordfield>CONTACT.PERSON_ID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>PERSON_FIRSTNAME.value</name> - <recordfield>PERSON.FIRSTNAME</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>PERSON_LASTNAME.value</name> - <recordfield>PERSON.LASTNAME</recordfield> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>PAYMENT.displayValue</name> <expression>%aditoprj%/entity/Contract_entity/recordcontainers/db/recordfieldmappings/payment.displayvalue/expression.js</expression> @@ -528,6 +529,15 @@ <isFilterable v="true" /> <filtertype>EXTENDED</filtertype> </consumerMapping> + <dbRecordFieldMapping> + <name>COUNT.value</name> + <expression>%aditoprj%/entity/Contract_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression> + </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>COUNT_aggregate.value</name> + <recordfield>CONTRACT.CONTRACTID</recordfield> + <aggregateType>COUNT</aggregateType> + </aggregateFieldDbMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> @@ -553,10 +563,6 @@ <name>CONTRACTCODE</name> <indexFieldType>TEXT_PLAIN</indexFieldType> </indexRecordFieldMapping> - <indexRecordFieldMapping> - <name>CUSTOMERCODE</name> - <indexFieldType>TEXT_PLAIN</indexFieldType> - </indexRecordFieldMapping> <indexRecordFieldMapping> <name>CONTACT_ORG_ID.value</name> <indexFieldType>STRING</indexFieldType> diff --git a/entity/Contract_entity/recordcontainers/index/query.js b/entity/Contract_entity/recordcontainers/index/query.js index b0797ceb1fba98977f0b70822229f384ba7eeed6..0b7612604a0518ed4437906473ea5f0caf38e248 100644 --- a/entity/Contract_entity/recordcontainers/index/query.js +++ b/entity/Contract_entity/recordcontainers/index/query.js @@ -13,7 +13,6 @@ var querySelect = newSelect("CONTRACTID " //as "_uid_" + ", " + sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Type of contract") + ":'", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractType(), "CONTRACTTYPE")]) //as "_description_" + ", CONTRACTCODE " - + ", CUSTOMERCODE " + ", CONTACT.ORGANISATION_ID" //as CONTACT_ORG_ID + ", ORGANISATION.NAME" //as "CONTACT_ORG_ID.displayValue" + ", CONTRACT.CONTACT_ID") 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/DocumentTemplate_entity/entityfields/content/displayValueProcess.js b/entity/DocumentTemplate_entity/entityfields/content/displayValueProcess.js index 56246f908f33ecb844a4444ac3b6e740a69f5bad..d7715c0880e88f57908a1d752d6e4f03e98d69c9 100644 --- a/entity/DocumentTemplate_entity/entityfields/content/displayValueProcess.js +++ b/entity/DocumentTemplate_entity/entityfields/content/displayValueProcess.js @@ -17,7 +17,7 @@ if (vars.exists("$context.currentTemplateType")) var template = new DocumentTemplate(util.encodeBase64String(vars.get("$field.Content")), type, "unknown", true) var contactId = EmployeeUtils.getCurrentContactId(); - var preview = template.getReplacedContentByContactId(contactId, false, true); + var preview = template.setOptions({onlyBody : true}).getReplacedContentByContactId(contactId); if (type == DocumentTemplate.types.TXT) result.string(text.text2html(preview, false)); 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..fc65d44a8a9fde47fccacef66a19b03e60160dfc 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,28 @@ <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> + <entityParameter> + <name>AdditionalPlaceholders_param</name> + <expose v="true" /> + </entityParameter> </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 65% rename from entity/Email_entity/recordcontainers/jdito/onInsert.js rename to entity/Email_entity/entityfields/sendmail/onActionProcess.js index b266465e5e7d8102995d9f786ab61d9c84080438..a7bdf5af9030a2f9352c7f5ccd597d334995fd35 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")); @@ -17,6 +16,16 @@ var notificationMsg = vars.get("$param.NotificationMsg_param"); var notificationTitle = translate.text("Offer status changed"); var subject = vars.get("$field.subject"); +var additionalPlaceholders = null; +if (vars.exists("$param.AdditionalPlaceholders_param") && vars.get("$param.AdditionalPlaceholders_param")) +{ + additionalPlaceholders = JSON.parse(vars.get("$param.AdditionalPlaceholders_param")).map(function (placeholder) + { + //assign the values from the JSON to a new Placeholder, so that the resulting object is an actual instance of Placeholder + return Object.assign(new Placeholder(), placeholder); + }); +} + var eml = EmailWritingUtils.openMailTemplate( vars.get("$field.RECIPIENT"), EmployeeUtils.getCurrentContactId(), @@ -25,8 +34,9 @@ var eml = EmailWritingUtils.openMailTemplate( bindata, attachments, subject, - emailFilename - ); + emailFilename, + additionalPlaceholders +); if (notificationMsg) 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/ExportTemplateField_entity/entityfields/field/dropDownProcess.js b/entity/ExportTemplateField_entity/entityfields/field/dropDownProcess.js index f5b8c998801e7aafdb45582d7a566614367a30a2..3c830477d519292b231f502d1caa9cffc392f984 100644 --- a/entity/ExportTemplateField_entity/entityfields/field/dropDownProcess.js +++ b/entity/ExportTemplateField_entity/entityfields/field/dropDownProcess.js @@ -9,7 +9,7 @@ import("system.text") var placeholders = PlaceholderUtils.getPlaceholders(null, true).map(function (placeholder){ - return [placeholder.placeholderName, placeholder.title || placeholder.placeholderName]; + return [placeholder.getFormattedName(), placeholder.title || placeholder.getFormattedName()]; }) result.object(placeholders); \ 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/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index 1d23aa80c139ba8f466111374bda9a644bdef202..2d0edd64d5ba7e6d9b3e6463f32144b574509094 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -577,6 +577,12 @@ <fieldName>KeywordVisitRecommendationPriority</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>54410e7f-e5e6-4dd1-8f60-7864ed907aed</name> + <entityName>WorkflowDefinition_entity</entityName> + <fieldName>CategoryKeyword</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> <children> <entityParameter> diff --git a/entity/Letter_entity/Letter_entity.aod b/entity/Letter_entity/Letter_entity.aod index ee8ee1576e79872ea9f0366716643c7afd04106a..42b787aba50fed27e48bcf4adacbb4875786be2a 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,30 @@ </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> + <entityParameter> + <name>AdditionalPlaceholders_param</name> + <expose v="true" /> + </entityParameter> </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 53% rename from entity/Letter_entity/recordcontainers/jdito/onInsert.js rename to entity/Letter_entity/entityfields/downloadletterandcreateactivity/onActionProcess.js index f82590e6fcb0df7f693a219f05579bddae213eda..0c453f91c3e8e31847be4c6cca575257597a7650 100644 --- a/entity/Letter_entity/recordcontainers/jdito/onInsert.js +++ b/entity/Letter_entity/entityfields/downloadletterandcreateactivity/onActionProcess.js @@ -6,12 +6,22 @@ import("system.vars"); import("system.text"); import("DocumentTemplate_lib"); import("KeywordRegistry_basic"); +import("Placeholder_lib"); var template = DocumentTemplate.getSelectedTemplate(vars.get("$field.DOCUMENT_TEMPLATE"), new FileUpload(vars.get("$field.bindata"))); if (template) { var contactId = vars.get("$param.ContactId_param"); - var content = template.getReplacedContentByContactId(contactId, true); + var additionalPlaceholders = null; + if (vars.exists("$param.AdditionalPlaceholders_param") && vars.get("$param.AdditionalPlaceholders_param")) + { + additionalPlaceholders = JSON.parse(vars.get("$param.AdditionalPlaceholders_param")).map(function (placeholder) + { + //assign the values from the JSON to a new Placeholder, so that the resulting object is an actual instance of Placeholder + return Object.assign(new Placeholder(), placeholder); + }); + } + var content = template.setOptions({base64 : true}).getReplacedContentByContactId(contactId, additionalPlaceholders); if (template.type) neon.download(content, template.filename); @@ -24,3 +34,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/Notification_entity/Notification_entity.aod b/entity/Notification_entity/Notification_entity.aod index 32689181066c4c089b9cb02d88ba84063f371310..a3dad29fd35c166e1bed11548b79bff253145df2 100644 --- a/entity/Notification_entity/Notification_entity.aod +++ b/entity/Notification_entity/Notification_entity.aod @@ -253,12 +253,6 @@ <name>ICON.value</name> <recordfield>ASYS_NOTIFICATIONCONTENTS.ICON_INFO</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CALCULATEDPRIORITY.value</name> - <recordfield>ASYS_NOTIFICATIONCONTENTS.FORCEDPRIORITY</recordfield> - <isFilterable v="true" /> - <isLookupFilter v="true" /> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>RESOLVEDPRIORITY.value</name> <recordfield>ASYS_NOTIFICATIONS.RESOLVEDPRIORITY</recordfield> diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod index 0968837cb500a102196278911944e12c5390f590..0b3a54a7db2a33381db46e8d4d83547f52c16d7d 100644 --- a/entity/Offer_entity/Offer_entity.aod +++ b/entity/Offer_entity/Offer_entity.aod @@ -1023,6 +1023,16 @@ <name>NET_aggregate</name> <parentField>NET</parentField> </entityAggregateField> + <entityField> + <name>COUNT</name> + <title>Count</title> + <contentType>NUMBER</contentType> + </entityField> + <entityAggregateField> + <name>COUNT_aggregate</name> + <parentField>COUNT</parentField> + <title>Count</title> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -1261,6 +1271,15 @@ <recordfield>OFFER.NET</recordfield> <aggregateType>SUM</aggregateType> </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>COUNT.value</name> + <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression> + </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>COUNT_aggregate.value</name> + <recordfield>OFFER.OFFER_ID</recordfield> + <aggregateType>COUNT</aggregateType> + </aggregateFieldDbMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> @@ -1286,10 +1305,6 @@ <name>OFFERCODE.value</name> <indexFieldType>STRING</indexFieldType> </indexRecordFieldMapping> - <indexRecordFieldMapping> - <name>CUSTOMERCODE.value</name> - <indexFieldType>STRING</indexFieldType> - </indexRecordFieldMapping> <indexRecordFieldMapping> <name>CONTACT_ID.value</name> <indexFieldType>STRING</indexFieldType> diff --git a/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js b/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js index fbd11f7034742ee93fa02bf571013cf7cfcafe3a..a5b761ab29d8a43dfb5e9f3aa4a2b19a79bf057c 100644 --- a/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js +++ b/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js @@ -6,9 +6,11 @@ import("system.translate"); import("Offer_lib"); import("Email_lib"); import("Sql_lib"); +import("MimeType_lib"); +import("Placeholder_lib"); -var offerReport = new Object(); -var attachmentArray = new Array(); +var offerReport = {}; +var attachmentArray = []; var notificationMsg = translate.text("The status of the offer was changed to \"Sent\"."); var contactId = vars.get("$field.CONTACT_ID"); var arrayReport = OfferUtils.buildOfferReport(vars.get("$field.OFFERID")); @@ -17,12 +19,16 @@ var emailFilename = translate.text("Offerrequest"); if (vars.get("$field.CONTACT_ID") == null || "") contactId = vars.get("$field.CONTACT_ORG_ID"); offerReport.content = arrayReport[1]; -offerReport.contentType = "application/pdf"; +offerReport.contentType = MimeTypes.PDF(); offerReport.filename = translate.text("Offer No.") + vars.get("$field.#CONTENTTITLE") + ".pdf"; attachmentArray[0] = offerReport; -EmailWritingUtils.sendReportAsMail(contactId, attachmentArray, "Offer", notificationMsg, emailFilename); +var additionalPlaceholders = [ + new Placeholder("offerCode", Placeholder.types.FIXEDVALUE, vars.get("$field.FullOfferCode")) +]; + +EmailWritingUtils.sendReportAsMail(contactId, attachmentArray, "Offer", notificationMsg, emailFilename, additionalPlaceholders); newWhere("OFFER.OFFERID", "$field.OFFERID") .updateData(true, "OFFER", ["STATUS"], null, [$KeywordRegistry.offerStatus$sent()]); diff --git a/entity/Offer_entity/recordcontainers/index/query.js b/entity/Offer_entity/recordcontainers/index/query.js index 608db62da009bb4eb785ecbd14c9f10f8dbb351d..6026dd62b0e7e82195b1597e9907f011545ce07f 100644 --- a/entity/Offer_entity/recordcontainers/index/query.js +++ b/entity/Offer_entity/recordcontainers/index/query.js @@ -13,7 +13,6 @@ var querySelect = newSelect("OFFER.OFFERID " // as "_uid_", + ", " + sqlHelper.concat([sqlHelper.cast("OFFER.OFFERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.offerStatus(), "OFFER.STATUS")], " | ") //as "_title_" + ", " + sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Description") + ":'", sqlHelper.castLob("OFFER.INFO", 250)]) // as "_description_" + ", OFFER.OFFERCODE" - + ", ORGANISATION.CUSTOMERCODE " + ", OFFER.CONTACT_ID " + ", CONTACT.ORGANISATION_ID " // as CONTACT_ORG_ID + ", ORGANISATION.NAME") // as "CONTACT_ORG_ID.displayValue" diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod index 07f75f65a7b909e6402c34e450b7ec01ca13b491..dab543deb07ef650b7e12fe02ddbcaffb527c076 100644 --- a/entity/Order_entity/Order_entity.aod +++ b/entity/Order_entity/Order_entity.aod @@ -1,1128 +1,1143 @@ -<?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>Order_entity</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <documentation>%aditoprj%/entity/Order_entity/documentation.adoc</documentation> - <title>Receipt</title> - <grantDeleteProcess>%aditoprj%/entity/Order_entity/grantDeleteProcess.js</grantDeleteProcess> - <contentTitleProcess>%aditoprj%/entity/Order_entity/contentTitleProcess.js</contentTitleProcess> - <afterUiInit>%aditoprj%/entity/Order_entity/afterUiInit.js</afterUiInit> - <iconId>VAADIN:DOLLAR</iconId> - <titlePlural>Receipts</titlePlural> - <recordContainer>db</recordContainer> - <entityFields> - <entityProvider> - <name>#PROVIDER</name> - <dependencies> - <entityDependency> - <name>95e7ab85-0af9-46ea-a50a-7719833acd2a</name> - <entityName>Object_entity</entityName> - <fieldName>Orders</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>683107cc-2908-4930-8581-d3636f9ec196</name> - <entityName>ObjectProxy_entity</entityName> - <fieldName>Orders</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> - </entityProvider> - <entityField> - <name>CURRENCY</name> - <title>Currency</title> - <consumer>KeywordCurrencies</consumer> - <groupable v="true" /> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/currency/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/currency/displayValueProcess.js</displayValueProcess> - </entityField> - <entityField> - <name>SALESORDERCODE</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/salesordercode/documentation.adoc</documentation> - <title>Receipt number</title> - <state>READONLY</state> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesordercode/valueProcess.js</valueProcess> - <onValidation>%aditoprj%/entity/Order_entity/entityfields/salesordercode/onValidation.js</onValidation> - </entityField> - <entityField> - <name>SALESORDERDATE</name> - <title>Order date</title> - <contentType>DATE</contentType> - <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> - <entityField> - <name>SALESORDERID</name> - <title>SALESORDERID (UID)</title> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesorderid/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>CONTACT_ID</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/contact_id/documentation.adoc</documentation> - <title>Connection</title> - <consumer>AnyContacts</consumer> - <linkedContextProcess>%aditoprj%/entity/Order_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess> - <mandatory v="true" /> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess> - <onValueChangeTypes> - <element>MASK</element> - </onValueChangeTypes> - </entityField> - <entityField> - <name>VAT</name> - <title>Total VAT</title> - <contentType>NUMBER</contentType> - <state>READONLY</state> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/vat/displayValueProcess.js</displayValueProcess> - </entityField> - <entityField> - <name>IMAGE</name> - <contentType>IMAGE</contentType> - <state>READONLY</state> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/image/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>HEADER</name> - <title>Header text</title> - <contentType>LONG_TEXT</contentType> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/header/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>FOOTER</name> - <title>Footer text</title> - <contentType>LONG_TEXT</contentType> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/footer/valueProcess.js</valueProcess> - </entityField> - <entityConsumer> - <name>Orderitems</name> - <description></description> - <dependency> - <name>dependency</name> - <entityName>Orderitem_entity</entityName> - <fieldName>Orderitems</fieldName> - </dependency> - <children> - <entityParameter> - <name>OrderId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/orderitems/children/orderid_param/valueProcess.js</valueProcess> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - <entityParameter> - <name>Currency_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/orderitems/children/currency_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ContactId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/orderitems/children/ContactId_param/valueProcess.js</valueProcess> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - <entityParameter> - <name>OrderStatus_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/orderitems/children/orderstatus_param/valueProcess.js</valueProcess> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - </children> - </entityConsumer> - <entityField> - <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> - </entityField> - <entityField> - <name>TotalGross</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/totalgross/documentation.adoc</documentation> - <title>Total gross</title> - <contentType>NUMBER</contentType> - <state>READONLY</state> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/totalgross/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/totalgross/displayValueProcess.js</displayValueProcess> - </entityField> - <entityField> - <name>ISOLANGUAGE</name> - <title>Language</title> - <consumer>Languages</consumer> - <groupable v="true" /> - <mandatory v="true" /> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/isolanguage/displayValueProcess.js</displayValueProcess> - </entityField> - <entityField> - <name>SALESORDER_ID</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/salesorder_id/documentation.adoc</documentation> - <title>SALESORDER_ID</title> - </entityField> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - <mandatory v="true" /> - <documentation>%aditoprj%/entity/Order_entity/entityfields/contactid_param/documentation.adoc</documentation> - <description>PARAMETER</description> - </entityParameter> - <entityField> - <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> - <dependency> - <name>dependency</name> - <entityName>AnyContact_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> - </entityConsumer> - <entityConsumer> - <name>Documents</name> - <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> - <children> - <entityParameter> - <name>AssignmentRowId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>AssignmentTable_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> - </dependency> - <children> - <entityParameter> - <name>AssignmentName_param</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc</documentation> - </entityParameter> - <entityParameter> - <name>AssignmentRowId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmentrowid_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>AssignmentTable_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>Salesprojects</name> - <dependency> - <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Salesprojects</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContactId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>KeywordCurrencies</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordcurrencies/children/containername_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordstates/children/containername_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>Languages</name> - <dependency> - <name>dependency</name> - <entityName>Language_entity</entityName> - <fieldName>ISO3Name</fieldName> - </dependency> - </entityConsumer> - <entityParameter> - <name>OfferId_param</name> - <expose v="true" /> - <mandatory v="false" /> - <documentation>%aditoprj%/entity/Order_entity/entityfields/offerid_param/documentation.adoc</documentation> - <description>PARAMETER</description> - </entityParameter> - <entityConsumer> - <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> - <children> - <entityParameter> - <name>RowId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>ObjectId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>PresetLinks_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityField> - <name>OFFER_ID</name> - <title>Offer</title> - <consumer>Offers</consumer> - <groupable v="true" /> - <linkedContext>Offer</linkedContext> - <state>AUTO</state> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/offer_id/displayValueProcess.js</displayValueProcess> - </entityField> - <entityConsumer> - <name>Tasks</name> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> - <children> - <entityParameter> - <name>RowId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>ObjectId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>PresetLinks_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>Attributes</name> - <onValidation>%aditoprj%/entity/Order_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> - <children> - <entityParameter> - <name>ObjectRowId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>ObjectType_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> - <children> - <entityParameter> - <name>ObjectType_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>ObjectRowId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> - <children> - <entityParameter> - <name>tablenames_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityField> - <name>ORDERTYPE</name> - <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> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/ordertype/displayValueProcess.js</displayValueProcess> - </entityField> - <entityField> - <name>ORDERSTATUS</name> - <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> - <entityField> - <name>PAID</name> - <title>Paid</title> - <contentType>NUMBER</contentType> - <outputFormat>#,##0.00</outputFormat> - <inputFormat>#,##0.00</inputFormat> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/paid/stateProcess.js</stateProcess> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/paid/displayValueProcess.js</displayValueProcess> - </entityField> - <entityField> - <name>CANCELLATION</name> - <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> - <entityField> - <name>DUNNINGDATE</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/dunningdate/documentation.adoc</documentation> - <title>Dunning date</title> - <contentType>DATE</contentType> - <resolution>DAY</resolution> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/dunningdate/stateProcess.js</stateProcess> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/dunningdate/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>DUNNINGLEVEL</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/dunninglevel/documentation.adoc</documentation> - <title>Dunning level</title> - <consumer>KeywordDunningLevels</consumer> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/dunninglevel/stateProcess.js</stateProcess> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/dunninglevel/displayValueProcess.js</displayValueProcess> - </entityField> - <entityField> - <name>PAYDATE</name> - <title>Pay date</title> - <contentType>DATE</contentType> - <resolution>DAY</resolution> - <groupable v="true" /> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/paydate/stateProcess.js</stateProcess> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/paydate/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>PAYDUEDATE</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/payduedate/documentation.adoc</documentation> - <title>Pay due date</title> - <contentType>DATE</contentType> - <resolution>DAY</resolution> - <mandatory v="true" /> - <state>READONLY</state> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/payduedate/valueProcess.js</valueProcess> - </entityField> - <entityConsumer> - <name>KeywordOrderTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordordertypes/children/containername_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDunningLevels</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddunninglevels/children/containername_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityField> - <name>OBJECT_ROWID</name> - <title>Link</title> - <consumer>Objects</consumer> - <linkedContextProcess>%aditoprj%/entity/Order_entity/entityfields/object_rowid/linkedContextProcess.js</linkedContextProcess> - <mandatory v="true" /> - <mandatoryProcess>%aditoprj%/entity/Order_entity/entityfields/object_rowid/mandatoryProcess.js</mandatoryProcess> - <titleProcess>%aditoprj%/entity/Order_entity/entityfields/object_rowid/titleProcess.js</titleProcess> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js</displayValueProcess> - <onValueChangeTypes> - <element>MASK</element> - <element>PROCESS</element> - <element>PROCESS_SETVALUE</element> - </onValueChangeTypes> - </entityField> - <entityField> - <name>OBJECT_TYPE</name> - <title>Connection Type</title> - <consumer>Contexts</consumer> - <mandatoryProcess>%aditoprj%/entity/Order_entity/entityfields/object_type/mandatoryProcess.js</mandatoryProcess> - <state>INVISIBLE</state> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/object_type/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess> - </entityField> - <entityConsumer> - <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContactId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/objects/children/contactid_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>ObjectType_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>Contexts</name> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> - </dependency> - <children> - <entityParameter> - <name>Blacklist_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/contexts/children/blacklist_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>InvertBlacklist_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityParameter> - <name>PossibleConnectionTypes</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/possibleconnectiontypes/valueProcess.js</valueProcess> - <expose v="true" /> - <description>PARAMETER</description> - </entityParameter> - <entityParameter> - <name>ObjectRowId_param</name> - <expose v="true" /> - <documentation>%aditoprj%/entity/Order_entity/entityfields/objectrowid_param/documentation.adoc</documentation> - <description>PARAMETER</description> - </entityParameter> - <entityParameter> - <name>ObjectType_param</name> - <expose v="true" /> - <documentation>%aditoprj%/entity/Order_entity/entityfields/objecttype_param/documentation.adoc</documentation> - <description>PARAMETER</description> - </entityParameter> - <entityField> - <name>PAYMENTTERMS</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/paymentterms/documentation.adoc</documentation> - <title>Payment term</title> - <consumer>KeywordPaymentTerms</consumer> - <mandatory v="true" /> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/paymentterms/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/paymentterms/displayValueProcess.js</displayValueProcess> - </entityField> - <entityField> - <name>DELIVERYTERMS</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/deliveryterms/documentation.adoc</documentation> - <title>Delivery specification</title> - <consumer>KeywordDeliveryTerms</consumer> - <mandatory v="true" /> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/deliveryterms/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/deliveryterms/displayValueProcess.js</displayValueProcess> - </entityField> - <entityField> - <name>DELIVERYADDRESS</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/deliveryaddress/documentation.adoc</documentation> - <title>Delivery address</title> - <contentType>LONG_TEXT</contentType> - <mandatory v="true" /> - </entityField> - <entityField> - <name>PAYMENTADDRESS</name> - <title>Payment address</title> - <contentType>LONG_TEXT</contentType> - <mandatory v="true" /> - </entityField> - <entityConsumer> - <name>KeywordPaymentTerms</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordpaymentterms/children/containername_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDeliveryTerms</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddeliveryterms/children/containername_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>PossibleAddresses</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/documentation.adoc</documentation> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAndContactAddresses</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContactId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityField> - <name>NOTICE</name> - <title>Notice</title> - <contentType>LONG_TEXT</contentType> - </entityField> - <entityField> - <name>DUNNINGTEXT</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/dunningtext/documentation.adoc</documentation> - <title>Dunning text</title> - <contentType>LONG_TEXT</contentType> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/dunningtext/stateProcess.js</stateProcess> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/dunningtext/valueProcess.js</valueProcess> - </entityField> - <entityConsumer> - <name>Offers</name> - <dependency> - <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContactId_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>DocumentTemplateTexHeader</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> - <children> - <entityParameter> - <name>DocumentTemplateType_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexheader/children/documenttemplatetype_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>DocumentTemplateTypeClassification_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexheader/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>DocumentTemplateTexFooter</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> - <children> - <entityParameter> - <name>DocumentTemplateType_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexfooter/children/documenttemplatetype_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>DocumentTemplateTypeClassification_param</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexfooter/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityField> - <name>ChosenTexHeader</name> - <title>Choose Header</title> - <consumer>DocumentTemplateTexHeader</consumer> - </entityField> - <entityField> - <name>ChosenTexFooter</name> - <title>Choose Footer</title> - <consumer>DocumentTemplateTexFooter</consumer> - </entityField> - <entityField> - <name>ChosenPaymentAddress</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/chosenpaymentaddress/documentation.adoc</documentation> - <title>Choose payment address</title> - <consumer>PossibleAddresses</consumer> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/chosenpaymentaddress/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/chosenpaymentaddress/displayValueProcess.js</displayValueProcess> - <onValueChange>%aditoprj%/entity/Order_entity/entityfields/chosenpaymentaddress/onValueChange.js</onValueChange> - <onValueChangeTypes> - <element>MASK</element> - <element>PROCESS</element> - <element>PROCESS_SETVALUE</element> - </onValueChangeTypes> - </entityField> - <entityField> - <name>ChosenDeliveryAddress</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/chosendeliveryaddress/documentation.adoc</documentation> - <title>Choose delivery address</title> - <consumer>PossibleAddresses</consumer> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/chosendeliveryaddress/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/chosendeliveryaddress/displayValueProcess.js</displayValueProcess> - <onValueChange>%aditoprj%/entity/Order_entity/entityfields/chosendeliveryaddress/onValueChange.js</onValueChange> - <onValueChangeTypes> - <element>MASK</element> - <element>PROCESS</element> - <element>PROCESS_SETVALUE</element> - </onValueChangeTypes> - </entityField> - <entityActionField> - <name>newOrder</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/neworder/documentation.adoc</documentation> - <title>Copy receipt</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/neworder/onActionProcess.js</onActionProcess> - <iconId>VAADIN:COPY</iconId> - </entityActionField> - <entityActionField> - <name>newActivity</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/newactivity/documentation.adoc</documentation> - <title>New activity</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/newactivity/onActionProcess.js</onActionProcess> - <iconId>VAADIN:HOURGLASS_END</iconId> - <tooltip>New activity</tooltip> - <tooltipProcess>%aditoprj%/entity/Order_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess> - </entityActionField> - <entityActionField> - <name>newTask</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/newtask/documentation.adoc</documentation> - <title>New task</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/newtask/onActionProcess.js</onActionProcess> - <iconId>VAADIN:TASKS</iconId> - </entityActionField> - <entityActionField> - <name>TransferDeliveryNote</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/transferdeliverynote/documentation.adoc</documentation> - <title>Transfer to delivery note</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/transferdeliverynote/onActionProcess.js</onActionProcess> - <iconId>VAADIN:NOTEBOOK</iconId> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/transferdeliverynote/stateProcess.js</stateProcess> - </entityActionField> - <entityActionField> - <name>TransferInvoice</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/transferinvoice/documentation.adoc</documentation> - <title>Transfer to Invoice</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/transferinvoice/onActionProcess.js</onActionProcess> - <iconId>VAADIN:BOOK_DOLLAR</iconId> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/transferinvoice/stateProcess.js</stateProcess> - </entityActionField> - <entityActionField> - <name>setSent</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/setsent/documentation.adoc</documentation> - <title>Set to sent</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/setsent/onActionProcess.js</onActionProcess> - <iconId>VAADIN:ARROW_BACKWARD</iconId> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/setsent/stateProcess.js</stateProcess> - </entityActionField> - <entityActionField> - <name>cancel</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/cancel/documentation.adoc</documentation> - <title>Cancel</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/cancel/onActionProcess.js</onActionProcess> - <iconId>VAADIN:CLOSE</iconId> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/cancel/stateProcess.js</stateProcess> - </entityActionField> - <entityActionField> - <name>setDunning</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/setdunning/documentation.adoc</documentation> - <title>Set dunning</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/setdunning/onActionProcess.js</onActionProcess> - <iconId>VAADIN:WARNING</iconId> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/setdunning/stateProcess.js</stateProcess> - </entityActionField> - <entityActionField> - <name>setPaid</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/setpaid/documentation.adoc</documentation> - <title>Set paid amount</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/setpaid/onActionProcess.js</onActionProcess> - <iconId>VAADIN:DOLLAR</iconId> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/setpaid/stateProcess.js</stateProcess> - </entityActionField> - <entityActionField> - <name>printOrder</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/printorder/documentation.adoc</documentation> - <title>Print order</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/printorder/onActionProcess.js</onActionProcess> - <iconId>VAADIN:FILE</iconId> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/printorder/stateProcess.js</stateProcess> - </entityActionField> - <entityActionField> - <name>printReminder</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/printreminder/documentation.adoc</documentation> - <title>Print reminder</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/printreminder/onActionProcess.js</onActionProcess> - <iconId>VAADIN:FILE</iconId> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/printreminder/stateProcess.js</stateProcess> - </entityActionField> - <entityActionField> - <name>openAdminView</name> - <title>Open admin view</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/openadminview/onActionProcess.js</onActionProcess> - <iconId>VAADIN:CURLY_BRACKETS</iconId> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/openadminview/stateProcess.js</stateProcess> - </entityActionField> - <entityField> - <name>REMINDER_REPORT_DATA</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/reminder_report_data/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>ORDER_REPORT_DATA</name> - <valueProcess>%aditoprj%/entity/Order_entity/entityfields/order_report_data/valueProcess.js</valueProcess> - </entityField> - <entityConsumer> - <name>Organisations</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>Organisations</fieldName> - </dependency> - </entityConsumer> - <entityConsumer> - <name>Persons</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>Contacts</fieldName> - </dependency> - </entityConsumer> - <entityParameter> - <name>Copy_param</name> - <expose v="true" /> - </entityParameter> - </entityFields> - <recordContainers> - <dbRecordContainer> - <name>db</name> - <alias>Data_alias</alias> - <maximumDbRows v="0" /> - <fromClauseProcess>%aditoprj%/entity/Order_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> - <conditionProcess>%aditoprj%/entity/Order_entity/recordcontainers/db/conditionProcess.js</conditionProcess> - <orderClauseProcess>%aditoprj%/entity/Order_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> - <onDBInsert>%aditoprj%/entity/Order_entity/recordcontainers/db/onDBInsert.js</onDBInsert> - <onDBUpdate>%aditoprj%/entity/Order_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> - <onDBDelete>%aditoprj%/entity/Order_entity/recordcontainers/db/onDBDelete.js</onDBDelete> - <linkInformation> - <linkInformation> - <name>43290f18-46fb-4d1f-b653-60f39f1fe3fb</name> - <tableName>SALESORDER</tableName> - <primaryKey>SALESORDERID</primaryKey> - <isUIDTable v="true" /> - <readonly v="false" /> - </linkInformation> - <linkInformation> - <name>3f8c21b4-a81e-4405-8b4f-346ff724b8a5</name> - <tableName>CONTACT</tableName> - <primaryKey>CONTACTID</primaryKey> - <isUIDTable v="false" /> - <readonly v="true" /> - </linkInformation> - <linkInformation> - <name>0131be90-6232-4dda-9036-bbde951eded5</name> - <tableName>PERSON</tableName> - <primaryKey>PERSONID</primaryKey> - <isUIDTable v="false" /> - <readonly v="true" /> - </linkInformation> - <linkInformation> - <name>0efeab02-efaf-4155-9312-0aee1f7f5535</name> - <tableName>ORGANISATION</tableName> - <primaryKey>ORGANISATIONID</primaryKey> - <isUIDTable v="false" /> - <readonly v="true" /> - </linkInformation> - </linkInformation> - <recordFieldMappings> - <dbRecordFieldMapping> - <name>CURRENCY.value</name> - <recordfield>SALESORDER.CURRENCY</recordfield> - <isFilterable v="true" /> - <isLookupFilter v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>FOOTER.value</name> - <recordfield>SALESORDER.FOOTER</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>HEADER.value</name> - <recordfield>SALESORDER.HEADER</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>NET.value</name> - <recordfield>SALESORDER.NET</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>SALESORDERCODE.value</name> - <recordfield>SALESORDER.SALESORDERCODE</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>SALESORDERDATE.value</name> - <recordfield>SALESORDER.SALESORDERDATE</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>SALESORDERID.value</name> - <recordfield>SALESORDER.SALESORDERID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>VAT.value</name> - <recordfield>SALESORDER.VAT</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CONTACT_ID.value</name> - <recordfield>SALESORDER.CONTACT_ID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CONTACT_ORG_ID.value</name> - <recordfield>CONTACT.ORGANISATION_ID</recordfield> - <isFilterable v="true" /> - <isLookupFilter v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CONTACT_PERSON_ID.value</name> - <recordfield>CONTACT.PERSON_ID</recordfield> - <isFilterable v="true" /> - <isLookupFilter v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CURRENCY.displayValue</name> - <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/currency.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OFFER_ID.value</name> - <recordfield>SALESORDER.OFFER_ID</recordfield> - <isFilterable v="true" /> - <isLookupFilter v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CONTACT_ORG_ID.displayValue</name> - <recordfield>ORGANISATION.NAME</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CONTACT_PERSON_ID.displayValue</name> - <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CANCELLATION.value</name> - <recordfield>SALESORDER.CANCELLATION</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DUNNINGDATE.value</name> - <recordfield>SALESORDER.DUNNINGDATE</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DUNNINGLEVEL.value</name> - <recordfield>SALESORDER.DUNNINGLEVEL</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ORDERSTATUS.value</name> - <recordfield>SALESORDER.ORDERSTATUS</recordfield> - <isFilterable v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ORDERTYPE.value</name> - <recordfield>SALESORDER.ORDERTYPE</recordfield> - <isFilterable v="true" /> - <isLookupFilter v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>PAID.value</name> - <recordfield>SALESORDER.PAID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>PAYDATE.value</name> - <recordfield>SALESORDER.PAYDATE</recordfield> - <isFilterable v="true" /> - <isLookupFilter v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>PAYDUEDATE.value</name> - <recordfield>SALESORDER.PAYDUEDATE</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_ROWID.value</name> - <recordfield>SALESORDER.OBJECT_ROWID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_ROWID.displayValue</name> - <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OFFER_ID.displayValue</name> - <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_TYPE.value</name> - <recordfield>SALESORDER.OBJECT_TYPE</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>PAYMENTTERMS.value</name> - <recordfield>SALESORDER.PAYMENTTERMS</recordfield> - <isFilterable v="true" /> - <isLookupFilter v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DELIVERYTERMS.value</name> - <recordfield>SALESORDER.DELIVERYTERMS</recordfield> - <isFilterable v="true" /> - <isLookupFilter v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DELIVERYADDRESS.value</name> - <recordfield>SALESORDER.DELIVERYADDRESS</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>PAYMENTADDRESS.value</name> - <recordfield>SALESORDER.PAYMENTADDRESS</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>NOTICE.value</name> - <recordfield>SALESORDER.NOTICE</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DUNNINGTEXT.value</name> - <recordfield>SALESORDER.DUNNINGTEXT</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DELIVERYTERMS.displayValue</name> - <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/deliveryterms.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CONTACT_ID.displayValue</name> - <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ISOLANGUAGE.value</name> - <recordfield>SALESORDER.ISOLANGUAGE</recordfield> - <isFilterable v="true" /> - <isLookupFilter v="false" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ISOLANGUAGE.displayValue</name> - <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/isolanguage.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ORDERTYPE.displayValue</name> - <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/ordertype.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - </recordFieldMappings> - </dbRecordContainer> - <indexRecordContainer> - <name>index</name> - <configMode>INDEXGROUP_DEFINITION</configMode> - <indexRecordAlias>Data_alias</indexRecordAlias> - <query>%aditoprj%/entity/Order_entity/recordcontainers/index/query.js</query> - <affectedTables> - <element>SALESORDER</element> - </affectedTables> - <affectedIds>%aditoprj%/entity/Order_entity/recordcontainers/index/affectedIds.js</affectedIds> - <indexFieldMappings> - <indexRecordFieldMapping> - <name>SALESORDERCODE.value</name> - <indexFieldType>STRING</indexFieldType> - </indexRecordFieldMapping> - <indexRecordFieldMapping> - <name>CUSTOMERCODE.value</name> - <indexFieldType>STRING</indexFieldType> - </indexRecordFieldMapping> - <indexRecordFieldMapping> - <name>CONTACT_ID.value</name> - <indexFieldType>STRING</indexFieldType> - </indexRecordFieldMapping> - <indexRecordFieldMapping> - <name>CONTACT_ORG_ID.value</name> - <indexFieldType>STRING</indexFieldType> - </indexRecordFieldMapping> - <indexRecordFieldMapping> - <name>CONTACT_ORG_ID.displayValue</name> - <indexFieldType>PROPER_NAME</indexFieldType> - <additionalFieldNameAliases> - <element>name</element> - </additionalFieldNameAliases> - </indexRecordFieldMapping> - </indexFieldMappings> - </indexRecordContainer> - </recordContainers> -</entity> +<?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>Order_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/Order_entity/documentation.adoc</documentation> + <title>Receipt</title> + <grantDeleteProcess>%aditoprj%/entity/Order_entity/grantDeleteProcess.js</grantDeleteProcess> + <contentTitleProcess>%aditoprj%/entity/Order_entity/contentTitleProcess.js</contentTitleProcess> + <afterUiInit>%aditoprj%/entity/Order_entity/afterUiInit.js</afterUiInit> + <iconId>VAADIN:DOLLAR</iconId> + <titlePlural>Receipts</titlePlural> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + <dependencies> + <entityDependency> + <name>95e7ab85-0af9-46ea-a50a-7719833acd2a</name> + <entityName>Object_entity</entityName> + <fieldName>Orders</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>683107cc-2908-4930-8581-d3636f9ec196</name> + <entityName>ObjectProxy_entity</entityName> + <fieldName>Orders</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityField> + <name>CURRENCY</name> + <title>Currency</title> + <consumer>KeywordCurrencies</consumer> + <groupable v="true" /> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/currency/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/currency/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>SALESORDERCODE</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/salesordercode/documentation.adoc</documentation> + <title>Receipt number</title> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesordercode/valueProcess.js</valueProcess> + <onValidation>%aditoprj%/entity/Order_entity/entityfields/salesordercode/onValidation.js</onValidation> + </entityField> + <entityField> + <name>SALESORDERDATE</name> + <title>Order date</title> + <contentType>DATE</contentType> + <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> + <entityField> + <name>SALESORDERID</name> + <title>SALESORDERID (UID)</title> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesorderid/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>CONTACT_ID</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/contact_id/documentation.adoc</documentation> + <title>Connection</title> + <consumer>AnyContacts</consumer> + <linkedContextProcess>%aditoprj%/entity/Order_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess> + <mandatory v="true" /> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess> + <onValueChangeTypes> + <element>MASK</element> + </onValueChangeTypes> + </entityField> + <entityField> + <name>VAT</name> + <title>Total VAT</title> + <contentType>NUMBER</contentType> + <state>READONLY</state> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/vat/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>IMAGE</name> + <contentType>IMAGE</contentType> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/image/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>HEADER</name> + <title>Header text</title> + <contentType>LONG_TEXT</contentType> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/header/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>FOOTER</name> + <title>Footer text</title> + <contentType>LONG_TEXT</contentType> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/footer/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>Orderitems</name> + <description></description> + <dependency> + <name>dependency</name> + <entityName>Orderitem_entity</entityName> + <fieldName>Orderitems</fieldName> + </dependency> + <children> + <entityParameter> + <name>OrderId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/orderitems/children/orderid_param/valueProcess.js</valueProcess> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityParameter> + <name>Currency_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/orderitems/children/currency_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ContactId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/orderitems/children/ContactId_param/valueProcess.js</valueProcess> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityParameter> + <name>OrderStatus_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/orderitems/children/orderstatus_param/valueProcess.js</valueProcess> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <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> + </entityField> + <entityField> + <name>TotalGross</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/totalgross/documentation.adoc</documentation> + <title>Total gross</title> + <contentType>NUMBER</contentType> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/totalgross/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/totalgross/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>ISOLANGUAGE</name> + <title>Language</title> + <consumer>Languages</consumer> + <groupable v="true" /> + <mandatory v="true" /> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/isolanguage/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>SALESORDER_ID</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/salesorder_id/documentation.adoc</documentation> + <title>SALESORDER_ID</title> + </entityField> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + <mandatory v="true" /> + <documentation>%aditoprj%/entity/Order_entity/entityfields/contactid_param/documentation.adoc</documentation> + <description>PARAMETER</description> + </entityParameter> + <entityField> + <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> + <dependency> + <name>dependency</name> + <entityName>AnyContact_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>Documents</name> + <selectionMode>MULTI</selectionMode> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> + <children> + <entityParameter> + <name>AssignmentRowId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>AssignmentTable_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> + </dependency> + <children> + <entityParameter> + <name>AssignmentName_param</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc</documentation> + </entityParameter> + <entityParameter> + <name>AssignmentRowId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmentrowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>AssignmentTable_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>Salesprojects</name> + <dependency> + <name>dependency</name> + <entityName>Salesproject_entity</entityName> + <fieldName>Salesprojects</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContactId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>KeywordCurrencies</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordcurrencies/children/containername_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordstates/children/containername_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>Languages</name> + <dependency> + <name>dependency</name> + <entityName>Language_entity</entityName> + <fieldName>ISO3Name</fieldName> + </dependency> + </entityConsumer> + <entityParameter> + <name>OfferId_param</name> + <expose v="true" /> + <mandatory v="false" /> + <documentation>%aditoprj%/entity/Order_entity/entityfields/offerid_param/documentation.adoc</documentation> + <description>PARAMETER</description> + </entityParameter> + <entityConsumer> + <name>Activities</name> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> + <children> + <entityParameter> + <name>RowId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>PresetLinks_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>OFFER_ID</name> + <title>Offer</title> + <consumer>Offers</consumer> + <groupable v="true" /> + <linkedContext>Offer</linkedContext> + <state>AUTO</state> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/offer_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityConsumer> + <name>Tasks</name> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> + <children> + <entityParameter> + <name>RowId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>PresetLinks_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>Attributes</name> + <onValidation>%aditoprj%/entity/Order_entity/entityfields/attributes/onValidation.js</onValidation> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> + <children> + <entityParameter> + <name>ObjectRowId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> + <children> + <entityParameter> + <name>ObjectType_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectRowId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> + <children> + <entityParameter> + <name>tablenames_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>ORDERTYPE</name> + <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> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/ordertype/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>ORDERSTATUS</name> + <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> + <entityField> + <name>PAID</name> + <title>Paid</title> + <contentType>NUMBER</contentType> + <outputFormat>#,##0.00</outputFormat> + <inputFormat>#,##0.00</inputFormat> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/paid/stateProcess.js</stateProcess> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/paid/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>CANCELLATION</name> + <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> + <entityField> + <name>DUNNINGDATE</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/dunningdate/documentation.adoc</documentation> + <title>Dunning date</title> + <contentType>DATE</contentType> + <resolution>DAY</resolution> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/dunningdate/stateProcess.js</stateProcess> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/dunningdate/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>DUNNINGLEVEL</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/dunninglevel/documentation.adoc</documentation> + <title>Dunning level</title> + <consumer>KeywordDunningLevels</consumer> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/dunninglevel/stateProcess.js</stateProcess> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/dunninglevel/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>PAYDATE</name> + <title>Pay date</title> + <contentType>DATE</contentType> + <resolution>DAY</resolution> + <groupable v="true" /> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/paydate/stateProcess.js</stateProcess> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/paydate/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>PAYDUEDATE</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/payduedate/documentation.adoc</documentation> + <title>Pay due date</title> + <contentType>DATE</contentType> + <resolution>DAY</resolution> + <mandatory v="true" /> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/payduedate/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>KeywordOrderTypes</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordordertypes/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>KeywordDunningLevels</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddunninglevels/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>OBJECT_ROWID</name> + <title>Link</title> + <consumer>Objects</consumer> + <linkedContextProcess>%aditoprj%/entity/Order_entity/entityfields/object_rowid/linkedContextProcess.js</linkedContextProcess> + <mandatory v="true" /> + <mandatoryProcess>%aditoprj%/entity/Order_entity/entityfields/object_rowid/mandatoryProcess.js</mandatoryProcess> + <titleProcess>%aditoprj%/entity/Order_entity/entityfields/object_rowid/titleProcess.js</titleProcess> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js</displayValueProcess> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> + </entityField> + <entityField> + <name>OBJECT_TYPE</name> + <title>Connection Type</title> + <consumer>Contexts</consumer> + <mandatoryProcess>%aditoprj%/entity/Order_entity/entityfields/object_type/mandatoryProcess.js</mandatoryProcess> + <state>INVISIBLE</state> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/object_type/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess> + </entityField> + <entityConsumer> + <name>Objects</name> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContactId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/objects/children/contactid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>Contexts</name> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> + </dependency> + <children> + <entityParameter> + <name>Blacklist_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/contexts/children/blacklist_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>InvertBlacklist_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityParameter> + <name>PossibleConnectionTypes</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/possibleconnectiontypes/valueProcess.js</valueProcess> + <expose v="true" /> + <description>PARAMETER</description> + </entityParameter> + <entityParameter> + <name>ObjectRowId_param</name> + <expose v="true" /> + <documentation>%aditoprj%/entity/Order_entity/entityfields/objectrowid_param/documentation.adoc</documentation> + <description>PARAMETER</description> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + <documentation>%aditoprj%/entity/Order_entity/entityfields/objecttype_param/documentation.adoc</documentation> + <description>PARAMETER</description> + </entityParameter> + <entityField> + <name>PAYMENTTERMS</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/paymentterms/documentation.adoc</documentation> + <title>Payment term</title> + <consumer>KeywordPaymentTerms</consumer> + <mandatory v="true" /> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/paymentterms/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/paymentterms/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>DELIVERYTERMS</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/deliveryterms/documentation.adoc</documentation> + <title>Delivery specification</title> + <consumer>KeywordDeliveryTerms</consumer> + <mandatory v="true" /> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/deliveryterms/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/deliveryterms/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>DELIVERYADDRESS</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/deliveryaddress/documentation.adoc</documentation> + <title>Delivery address</title> + <contentType>LONG_TEXT</contentType> + <mandatory v="true" /> + </entityField> + <entityField> + <name>PAYMENTADDRESS</name> + <title>Payment address</title> + <contentType>LONG_TEXT</contentType> + <mandatory v="true" /> + </entityField> + <entityConsumer> + <name>KeywordPaymentTerms</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordpaymentterms/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>KeywordDeliveryTerms</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddeliveryterms/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>PossibleAddresses</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/documentation.adoc</documentation> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAndContactAddresses</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContactId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>NOTICE</name> + <title>Notice</title> + <contentType>LONG_TEXT</contentType> + </entityField> + <entityField> + <name>DUNNINGTEXT</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/dunningtext/documentation.adoc</documentation> + <title>Dunning text</title> + <contentType>LONG_TEXT</contentType> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/dunningtext/stateProcess.js</stateProcess> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/dunningtext/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>Offers</name> + <dependency> + <name>dependency</name> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContactId_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>DocumentTemplateTexHeader</name> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> + <children> + <entityParameter> + <name>DocumentTemplateType_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexheader/children/documenttemplatetype_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>DocumentTemplateTypeClassification_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexheader/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>DocumentTemplateTexFooter</name> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> + <children> + <entityParameter> + <name>DocumentTemplateType_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexfooter/children/documenttemplatetype_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>DocumentTemplateTypeClassification_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexfooter/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>ChosenTexHeader</name> + <title>Choose Header</title> + <consumer>DocumentTemplateTexHeader</consumer> + </entityField> + <entityField> + <name>ChosenTexFooter</name> + <title>Choose Footer</title> + <consumer>DocumentTemplateTexFooter</consumer> + </entityField> + <entityField> + <name>ChosenPaymentAddress</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/chosenpaymentaddress/documentation.adoc</documentation> + <title>Choose payment address</title> + <consumer>PossibleAddresses</consumer> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/chosenpaymentaddress/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/chosenpaymentaddress/displayValueProcess.js</displayValueProcess> + <onValueChange>%aditoprj%/entity/Order_entity/entityfields/chosenpaymentaddress/onValueChange.js</onValueChange> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> + </entityField> + <entityField> + <name>ChosenDeliveryAddress</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/chosendeliveryaddress/documentation.adoc</documentation> + <title>Choose delivery address</title> + <consumer>PossibleAddresses</consumer> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/chosendeliveryaddress/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/chosendeliveryaddress/displayValueProcess.js</displayValueProcess> + <onValueChange>%aditoprj%/entity/Order_entity/entityfields/chosendeliveryaddress/onValueChange.js</onValueChange> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> + </entityField> + <entityActionField> + <name>newOrder</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/neworder/documentation.adoc</documentation> + <title>Copy receipt</title> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/neworder/onActionProcess.js</onActionProcess> + <iconId>VAADIN:COPY</iconId> + </entityActionField> + <entityActionField> + <name>newActivity</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/newactivity/documentation.adoc</documentation> + <title>New activity</title> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/newactivity/onActionProcess.js</onActionProcess> + <iconId>VAADIN:HOURGLASS_END</iconId> + <tooltip>New activity</tooltip> + <tooltipProcess>%aditoprj%/entity/Order_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess> + </entityActionField> + <entityActionField> + <name>newTask</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/newtask/documentation.adoc</documentation> + <title>New task</title> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/newtask/onActionProcess.js</onActionProcess> + <iconId>VAADIN:TASKS</iconId> + </entityActionField> + <entityActionField> + <name>TransferDeliveryNote</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/transferdeliverynote/documentation.adoc</documentation> + <title>Transfer to delivery note</title> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/transferdeliverynote/onActionProcess.js</onActionProcess> + <iconId>VAADIN:NOTEBOOK</iconId> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/transferdeliverynote/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>TransferInvoice</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/transferinvoice/documentation.adoc</documentation> + <title>Transfer to Invoice</title> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/transferinvoice/onActionProcess.js</onActionProcess> + <iconId>VAADIN:BOOK_DOLLAR</iconId> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/transferinvoice/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>setSent</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/setsent/documentation.adoc</documentation> + <title>Set to sent</title> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/setsent/onActionProcess.js</onActionProcess> + <iconId>VAADIN:ARROW_BACKWARD</iconId> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/setsent/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>cancel</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/cancel/documentation.adoc</documentation> + <title>Cancel</title> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/cancel/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CLOSE</iconId> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/cancel/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>setDunning</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/setdunning/documentation.adoc</documentation> + <title>Set dunning</title> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/setdunning/onActionProcess.js</onActionProcess> + <iconId>VAADIN:WARNING</iconId> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/setdunning/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>setPaid</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/setpaid/documentation.adoc</documentation> + <title>Set paid amount</title> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/setpaid/onActionProcess.js</onActionProcess> + <iconId>VAADIN:DOLLAR</iconId> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/setpaid/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>printOrder</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/printorder/documentation.adoc</documentation> + <title>Print order</title> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/printorder/onActionProcess.js</onActionProcess> + <iconId>VAADIN:FILE</iconId> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/printorder/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>printReminder</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/printreminder/documentation.adoc</documentation> + <title>Print reminder</title> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/printreminder/onActionProcess.js</onActionProcess> + <iconId>VAADIN:FILE</iconId> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/printreminder/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>openAdminView</name> + <title>Open admin view</title> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/openadminview/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CURLY_BRACKETS</iconId> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/openadminview/stateProcess.js</stateProcess> + </entityActionField> + <entityField> + <name>REMINDER_REPORT_DATA</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/reminder_report_data/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>ORDER_REPORT_DATA</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/order_report_data/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>Organisations</name> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>Organisations</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>Persons</name> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>Contacts</fieldName> + </dependency> + </entityConsumer> + <entityParameter> + <name>Copy_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>COUNT</name> + <title>Count</title> + <contentType>NUMBER</contentType> + </entityField> + <entityAggregateField> + <name>COUNT_aggregate</name> + <parentField>COUNT</parentField> + <title>Count</title> + </entityAggregateField> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <maximumDbRows v="0" /> + <fromClauseProcess>%aditoprj%/entity/Order_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> + <conditionProcess>%aditoprj%/entity/Order_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <orderClauseProcess>%aditoprj%/entity/Order_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> + <onDBInsert>%aditoprj%/entity/Order_entity/recordcontainers/db/onDBInsert.js</onDBInsert> + <onDBUpdate>%aditoprj%/entity/Order_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> + <onDBDelete>%aditoprj%/entity/Order_entity/recordcontainers/db/onDBDelete.js</onDBDelete> + <linkInformation> + <linkInformation> + <name>43290f18-46fb-4d1f-b653-60f39f1fe3fb</name> + <tableName>SALESORDER</tableName> + <primaryKey>SALESORDERID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + <linkInformation> + <name>3f8c21b4-a81e-4405-8b4f-346ff724b8a5</name> + <tableName>CONTACT</tableName> + <primaryKey>CONTACTID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + <linkInformation> + <name>0131be90-6232-4dda-9036-bbde951eded5</name> + <tableName>PERSON</tableName> + <primaryKey>PERSONID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + <linkInformation> + <name>0efeab02-efaf-4155-9312-0aee1f7f5535</name> + <tableName>ORGANISATION</tableName> + <primaryKey>ORGANISATIONID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>CURRENCY.value</name> + <recordfield>SALESORDER.CURRENCY</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>FOOTER.value</name> + <recordfield>SALESORDER.FOOTER</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>HEADER.value</name> + <recordfield>SALESORDER.HEADER</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>NET.value</name> + <recordfield>SALESORDER.NET</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SALESORDERCODE.value</name> + <recordfield>SALESORDER.SALESORDERCODE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SALESORDERDATE.value</name> + <recordfield>SALESORDER.SALESORDERDATE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SALESORDERID.value</name> + <recordfield>SALESORDER.SALESORDERID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>VAT.value</name> + <recordfield>SALESORDER.VAT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ID.value</name> + <recordfield>SALESORDER.CONTACT_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ORG_ID.value</name> + <recordfield>CONTACT.ORGANISATION_ID</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_PERSON_ID.value</name> + <recordfield>CONTACT.PERSON_ID</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CURRENCY.displayValue</name> + <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/currency.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OFFER_ID.value</name> + <recordfield>SALESORDER.OFFER_ID</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ORG_ID.displayValue</name> + <recordfield>ORGANISATION.NAME</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_PERSON_ID.displayValue</name> + <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CANCELLATION.value</name> + <recordfield>SALESORDER.CANCELLATION</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DUNNINGDATE.value</name> + <recordfield>SALESORDER.DUNNINGDATE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DUNNINGLEVEL.value</name> + <recordfield>SALESORDER.DUNNINGLEVEL</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ORDERSTATUS.value</name> + <recordfield>SALESORDER.ORDERSTATUS</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ORDERTYPE.value</name> + <recordfield>SALESORDER.ORDERTYPE</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PAID.value</name> + <recordfield>SALESORDER.PAID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PAYDATE.value</name> + <recordfield>SALESORDER.PAYDATE</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PAYDUEDATE.value</name> + <recordfield>SALESORDER.PAYDUEDATE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OBJECT_ROWID.value</name> + <recordfield>SALESORDER.OBJECT_ROWID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OBJECT_ROWID.displayValue</name> + <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OFFER_ID.displayValue</name> + <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OBJECT_TYPE.value</name> + <recordfield>SALESORDER.OBJECT_TYPE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PAYMENTTERMS.value</name> + <recordfield>SALESORDER.PAYMENTTERMS</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DELIVERYTERMS.value</name> + <recordfield>SALESORDER.DELIVERYTERMS</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DELIVERYADDRESS.value</name> + <recordfield>SALESORDER.DELIVERYADDRESS</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PAYMENTADDRESS.value</name> + <recordfield>SALESORDER.PAYMENTADDRESS</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>NOTICE.value</name> + <recordfield>SALESORDER.NOTICE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DUNNINGTEXT.value</name> + <recordfield>SALESORDER.DUNNINGTEXT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DELIVERYTERMS.displayValue</name> + <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/deliveryterms.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ISOLANGUAGE.value</name> + <recordfield>SALESORDER.ISOLANGUAGE</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="false" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ISOLANGUAGE.displayValue</name> + <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/isolanguage.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ORDERTYPE.displayValue</name> + <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/ordertype.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>COUNT.value</name> + <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression> + </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>COUNT_aggregate.value</name> + <recordfield>SALESORDER.SALESORDERID</recordfield> + <aggregateType>COUNT</aggregateType> + </aggregateFieldDbMapping> + </recordFieldMappings> + </dbRecordContainer> + <indexRecordContainer> + <name>index</name> + <configMode>INDEXGROUP_DEFINITION</configMode> + <indexRecordAlias>Data_alias</indexRecordAlias> + <query>%aditoprj%/entity/Order_entity/recordcontainers/index/query.js</query> + <affectedTables> + <element>SALESORDER</element> + </affectedTables> + <affectedIds>%aditoprj%/entity/Order_entity/recordcontainers/index/affectedIds.js</affectedIds> + <indexFieldMappings> + <indexRecordFieldMapping> + <name>SALESORDERCODE.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACT_ID.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACT_ORG_ID.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACT_ORG_ID.displayValue</name> + <indexFieldType>PROPER_NAME</indexFieldType> + <additionalFieldNameAliases> + <element>name</element> + </additionalFieldNameAliases> + </indexRecordFieldMapping> + </indexFieldMappings> + </indexRecordContainer> + </recordContainers> +</entity> \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/index/query.js b/entity/Order_entity/recordcontainers/index/query.js index 63f49bc6ea56f4a5754372cdd2184319f5a2c519..f0f600b464a18cfbe610b23dbd3889337d28dc15 100644 --- a/entity/Order_entity/recordcontainers/index/query.js +++ b/entity/Order_entity/recordcontainers/index/query.js @@ -12,7 +12,6 @@ var querySelect = newSelect("SALESORDERID " // as "_uid_" + ", " + sqlHelper.concat([sqlHelper.cast("SALESORDERCODE", SQLTYPES.CHAR, 10)], " | ") // as "_title_" + ", " + sqlHelper.concat(["ORGANISATION.NAME"], " | ") // as "_description_" + ", SALESORDERCODE" - + ", CUSTOMERCODE" + ", SALESORDER.CONTACT_ID" + ", CONTACT.ORGANISATION_ID " //as CONTACT_ORG_ID + ", ORGANISATION.NAME ") //as "CONTACT_ORG_ID.displayValue" diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index 875ad026d6d26f22daffee578b7e83c580b1639e..26fe1fdb3d81b895c3116377537320ae54a77d70 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -7,7 +7,7 @@ <title>Company</title> <grantDeleteProcess>%aditoprj%/entity/Organisation_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Organisation_entity/contentTitleProcess.js</contentTitleProcess> - <afterUiInit>%aditoprj%/entity/Organisation_entity/afterUiInit.js</afterUiInit> + <onInit>%aditoprj%/entity/Organisation_entity/onInit.js</onInit> <afterOperatingState>%aditoprj%/entity/Organisation_entity/afterOperatingState.js</afterOperatingState> <iconId>VAADIN:BUILDING</iconId> <imageProcess>%aditoprj%/entity/Organisation_entity/imageProcess.js</imageProcess> @@ -788,7 +788,7 @@ <title>Turnover Current Year</title> <contentType>NUMBER</contentType> <outputFormat>#,##0.00€</outputFormat> - <groupable v="true" /> + <groupable v="false" /> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnovercurrentyear/valueProcess.js</valueProcess> </entityField> <entityField> @@ -796,7 +796,7 @@ <title>Turnover Last Year</title> <contentType>NUMBER</contentType> <outputFormat>#,##0.00€</outputFormat> - <groupable v="true" /> + <groupable v="false" /> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnoverlastyear/valueProcess.js</valueProcess> </entityField> <entityField> @@ -804,6 +804,7 @@ <title>Turnover change</title> <colorProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnoverpercentdiff/colorProcess.js</colorProcess> <contentType>TEXT</contentType> + <groupable v="false" /> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnoverpercentdiff/valueProcess.js</valueProcess> </entityField> <entityField> @@ -1102,6 +1103,16 @@ <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/openlocation/onActionProcess.js</onActionProcess> <iconId>NEON:TACKED</iconId> </entityActionField> + <entityField> + <name>COUNT</name> + <title>Count</title> + <contentType>NUMBER</contentType> + </entityField> + <entityAggregateField> + <name>COUNT_aggregate</name> + <parentField>COUNT</parentField> + <title>Count</title> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -1308,6 +1319,15 @@ <name>STANDARD_ZIP.value</name> <recordfield>ADDRESS.ZIP</recordfield> </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>COUNT_aggregate.value</name> + <recordfield>ORGANISATION.ORGANISATIONID</recordfield> + <aggregateType>COUNT</aggregateType> + </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>COUNT.value</name> + <expression>%aditoprj%/entity/Organisation_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> 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 dc76aa3c55e06cac19bd958cb8ddadc9bf8cb66f..27d043515ab626d29f0d3453c64ed6c053c8b2a9 100644 --- a/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js +++ b/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js @@ -7,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 { @@ -22,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/afterUiInit.js b/entity/Organisation_entity/onInit.js similarity index 89% rename from entity/Organisation_entity/afterUiInit.js rename to entity/Organisation_entity/onInit.js index 669f54dbb747c656a7723b9795e3e10875eade5c..b9717583554415c62b48c4ad8304aceb87245938 100644 --- a/entity/Organisation_entity/afterUiInit.js +++ b/entity/Organisation_entity/onInit.js @@ -1,30 +1,30 @@ -import("Keyword_lib"); -import("KeywordRegistry_basic"); -import("system.neon"); -import("system.vars"); -import("Context_lib"); -import("Attribute_lib"); - -var statusFilterElement = { - "type":"row", - "name":"STATUS", - "operator":"NOT_EQUAL", - "key":$KeywordRegistry.contactStatus$inactive(), - "contenttype": vars.get("$property.STATUS.contentType") -}; - -statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusFilterElement.key); - -var filter = { - "type":"group", - "operator":"AND", - "childs": [statusFilterElement] -}; - -filter = JSON.stringify(filter); -neon.setFilter("#ENTITY", filter); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) -{ - AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes"); -} +import("Keyword_lib"); +import("KeywordRegistry_basic"); +import("system.neon"); +import("system.vars"); +import("Context_lib"); +import("Attribute_lib"); + +var statusFilterElement = { + "type":"row", + "name":"STATUS", + "operator":"NOT_EQUAL", + "key":$KeywordRegistry.contactStatus$inactive(), + "contenttype": "TEXT" +}; + +statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusFilterElement.key); + +var filter = { + "type":"group", + "operator":"AND", + "childs": [statusFilterElement] +}; + +filter = JSON.stringify(filter); +neon.setFilter("#ENTITY", filter); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes"); +} diff --git a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod index 8bd374fd3485951d6ff0cef39ff55d465a66f135..a238832f1d236913854ff9ffa634281c3081d5ec 100644 --- a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod +++ b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod @@ -90,9 +90,9 @@ <description></description> <children> <entityActionField> - <name>addNewUserPermissionDealerAction</name> - <title>Add new User Permission</title> - <onActionProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/addactions/children/addnewuserpermissiondealeraction/onActionProcess.js</onActionProcess> + <name>receiveNewUserPermissionDealerAction</name> + <title>Receive new User Permission</title> + <onActionProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/addactions/children/receivenewuserpermissiondealeraction/onActionProcess.js</onActionProcess> <isMenuAction v="true" /> <isObjectAction v="false" /> <isSelectionAction v="false" /> @@ -100,9 +100,9 @@ <tooltip></tooltip> </entityActionField> <entityActionField> - <name>addNewDepartmentPermissionDealterAction</name> - <title>Add new Department Permission</title> - <onActionProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/addactions/children/addnewdepartmentpermissiondealteraction/onActionProcess.js</onActionProcess> + <name>receiveNewDepartmentPermissionDealterAction</name> + <title>Receive new Department Permission</title> + <onActionProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/addactions/children/receivenewdepartmentpermissiondealteraction/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> <state>AUTO</state> </entityActionField> diff --git a/entity/PermissionCalendar_entity/entityfields/addactions/children/addnewdepartmentpermissiondealteraction/onActionProcess.js b/entity/PermissionCalendar_entity/entityfields/addactions/children/receivenewdepartmentpermissiondealteraction/onActionProcess.js similarity index 100% rename from entity/PermissionCalendar_entity/entityfields/addactions/children/addnewdepartmentpermissiondealteraction/onActionProcess.js rename to entity/PermissionCalendar_entity/entityfields/addactions/children/receivenewdepartmentpermissiondealteraction/onActionProcess.js diff --git a/entity/PermissionCalendar_entity/entityfields/addactions/children/addnewuserpermissiondealeraction/onActionProcess.js b/entity/PermissionCalendar_entity/entityfields/addactions/children/receivenewuserpermissiondealeraction/onActionProcess.js similarity index 100% rename from entity/PermissionCalendar_entity/entityfields/addactions/children/addnewuserpermissiondealeraction/onActionProcess.js rename to entity/PermissionCalendar_entity/entityfields/addactions/children/receivenewuserpermissiondealeraction/onActionProcess.js diff --git a/entity/PermissionDetail_entity/PermissionDetail_entity.aod b/entity/PermissionDetail_entity/PermissionDetail_entity.aod index 6746dfb9da55635d8b67b594885eb04d61a923ec..8b2a82d1248e5a526244505511c3a5150ea748fe 100644 --- a/entity/PermissionDetail_entity/PermissionDetail_entity.aod +++ b/entity/PermissionDetail_entity/PermissionDetail_entity.aod @@ -205,6 +205,7 @@ <name>FULLPERMISSIONS</name> <title>Full Permissions</title> <contentType>BOOLEAN</contentType> + <stateProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/fullpermissions/stateProcess.js</stateProcess> </entityField> </entityFields> <recordContainers> diff --git a/entity/PermissionDetail_entity/entityfields/fullpermissions/stateProcess.js b/entity/PermissionDetail_entity/entityfields/fullpermissions/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..52866af7edce3c73cc8645e1c1c35a677db802d1 --- /dev/null +++ b/entity/PermissionDetail_entity/entityfields/fullpermissions/stateProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +if (vars.get("$field.ACCESSTYPE") == "E") { + result.string(neon.COMPONENTSTATE_EDITABLE); +} else { + result.string(neon.COMPONENTSTATE_INVISIBLE); +} \ No newline at end of file diff --git a/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js b/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js index f89d3520f1571cbc1459227f2b645a043755569b..13867052def94e3b1bf143b3829ca589152043f3 100644 --- a/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js +++ b/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js @@ -8,8 +8,7 @@ import("Permission_lib"); var alias = SqlUtils.getSystemAlias(); var rootPermId = ""; var entity = vars.get("$field.ENTITY"); -var roleTitle = vars.get("$field.ROLE"); -var roleName = PermissionUtil.resolveRoleTitle(roleTitle); +var roleName = vars.get("$field.ROLE"); var cond = vars.get("$field.CONDITION"); var field = vars.get("$field.FIELD"); var accesstype = vars.get("$field.ACCESSTYPE"); diff --git a/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js b/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js index 98e5767b30c59a1788fcdd6c57a66f21abf28742..d6e0383c0faed9c6e730fd388d1065305b4511e5 100644 --- a/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js +++ b/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js @@ -21,6 +21,7 @@ var actionsInDb = PermissionUtil.getActions([permId]); var actionsAsStringArray = vars.get("$field.ACTION").split(","); // only useful while working with already existing permissions var emptyCond = PermissionUtil.getEmptyCondString(entityName); var isDefaultPermission = (permCondInput != emptyCond && permCondInput != "") ? false : true; +var hasCondChanged = PermissionUtil.isDiff(permId, permCondInput, "COND", "ASYS_PERMISSION"); var deletedRows = vars.get("$field.PermissionActions.deletedRows"); var changedRows = vars.get("$field.PermissionActions.changedRows"); @@ -35,8 +36,8 @@ if (fullPermissions == 0 || fullPermissions == "") { } if ( - (deletedRows.length == actionsAsStringArray.length && changedRows.length == 0 && insertedRows.length == 0) - || (deletedRows.length == 0 && changedRows.length == 0 && insertedRows.length == 0) + ((deletedRows.length == actionsAsStringArray.length && changedRows.length == 0 && insertedRows.length == 0) + || (deletedRows.length == 0 && changedRows.length == 0 && insertedRows.length == 0)) && !hasCondChanged ) { result.string(translate.text("Permissions without actions are invalid!")); } diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js b/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js index 17630943af16e67b664032d937be8e2f63bcd1cb..a52bffff51140a626a5e5560c0410e05bf6f9d33 100644 --- a/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js +++ b/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js @@ -34,13 +34,13 @@ if (fullPermissions == 1) { // === ENTITY === // var entitySetId = PermissionUtil.insertSet("", entityName, roleName, "", ACCESSLEVEL_ENTITY); // entity level set - var entityPermId = PermissionUtil.insertPermission(entitySetId, "", "1", null); // entity level permission + var entityPermId = PermissionUtil.insertPermission(entitySetId, null, "1", null); // entity level permission PermissionUtil.insertAction(entityPermId, ACTION_VIEW, null); // action view PermissionUtil.insertAction(entityPermId, ACTION_CREATE, null); // action create // === RECORD === // var recordSetId = PermissionUtil.insertSet(entitySetId, entityName, roleName, "", ACCESSLEVEL_RECORD); // record level set - var recordPermId = PermissionUtil.insertPermission(recordSetId, "", "1", null); // record level permission + var recordPermId = PermissionUtil.insertPermission(recordSetId, null, "1", null); // record level permission PermissionUtil.insertAction(recordPermId, ACTION_READ, null); // read PermissionUtil.insertAction(recordPermId, ACTION_UPDATE, null); // update PermissionUtil.insertAction(recordPermId, ACTION_DELETE, null); // delete diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index a4a627f938fcc725b882048305852824282789ad..cbabea32766c97f2a7d1faa4fcc2ede5fd2a3048 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -10,7 +10,7 @@ </siblings> <grantDeleteProcess>%aditoprj%/entity/Person_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Person_entity/contentTitleProcess.js</contentTitleProcess> - <afterUiInit>%aditoprj%/entity/Person_entity/afterUiInit.js</afterUiInit> + <onInit>%aditoprj%/entity/Person_entity/onInit.js</onInit> <onValidation>%aditoprj%/entity/Person_entity/onValidation.js</onValidation> <afterOperatingState>%aditoprj%/entity/Person_entity/afterOperatingState.js</afterOperatingState> <iconId>VAADIN:USERS</iconId> @@ -60,6 +60,7 @@ <name>SALUTATION</name> <title>Salutation</title> <consumer>Salutations</consumer> + <mandatory v="true" /> </entityField> <entityField> <name>TITLE</name> @@ -191,7 +192,7 @@ <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/communications/children/contactid_param/valueProcess.js</valueProcess> <expose v="false" /> - <description>This parameter is used for specifing a related &quot;CONTACTID&quot; to a COMMUNICATION-entry. + <description>This parameter is used for specifing a related &quot;CONTACTID&quot; to a COMMUNICATION-entry. Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> </entityParameter> <entityParameter> @@ -412,7 +413,7 @@ <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/phonecommunications/children/contactid_param/valueProcess.js</valueProcess> <expose v="false" /> - <description>This parameter is used for specifing a related &quot;CONTACTID&quot; to a COMMUNICATION-entry. + <description>This parameter is used for specifing a related &quot;CONTACTID&quot; to a COMMUNICATION-entry. Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> </entityParameter> </children> @@ -430,7 +431,7 @@ <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/emailcommunications/children/contactid_param/valueProcess.js</valueProcess> <expose v="false" /> - <description>This parameter is used for specifing a related &quot;CONTACTID&quot; to a COMMUNICATION-entry. + <description>This parameter is used for specifing a related &quot;CONTACTID&quot; to a COMMUNICATION-entry. Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> </entityParameter> </children> @@ -1265,6 +1266,16 @@ </entityParameter> </children> </entityProvider> + <entityField> + <name>COUNT</name> + <title>Count</title> + <contentType>NUMBER</contentType> + </entityField> + <entityAggregateField> + <name>COUNT_aggregate</name> + <parentField>COUNT</parentField> + <title>Count</title> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -1489,10 +1500,6 @@ <isFilterable v="true" /> <filtertype>EXTENDED</filtertype> </consumerMapping> - <dbRecordFieldMapping> - <name>OrganisationContactId.value</name> - <expression>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisationcontactid.value/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>ORGANISATION_CONTACTID.value</name> <expression>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisation_contactid.value/expression.js</expression> @@ -1554,6 +1561,15 @@ <name>CONTACTROLE.displayValue</name> <expression>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/contactrole.displayvalue/expression.js</expression> </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>COUNT_aggregate.value</name> + <recordfield>PERSON.PERSONID</recordfield> + <aggregateType>COUNT</aggregateType> + </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>COUNT.value</name> + <expression>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> 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 298a31152459215443150f749876368fb83b2d09..ce8253a306e0c1bc08dbca4b7e344a68518bf2a0 100644 --- a/entity/Person_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js +++ b/entity/Person_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js @@ -8,11 +8,11 @@ import("system.result"); var scannerName = "PersonDuplicates"; var targetEntity = "Person_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 { @@ -27,16 +27,22 @@ else vars.get("$field.PersAddresses.insertedRows") vars.get("$field.PersAddresses.changedRows") vars.get("$field.PersAddresses.deletedRows") - - 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) || []; + }); + + 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]; diff --git a/entity/Person_entity/afterUiInit.js b/entity/Person_entity/onInit.js similarity index 89% rename from entity/Person_entity/afterUiInit.js rename to entity/Person_entity/onInit.js index e756cf590afbc22dfff0537787df1a139a3d47ff..1958e327f289481afe51088aa62d5d57af3a782f 100644 --- a/entity/Person_entity/afterUiInit.js +++ b/entity/Person_entity/onInit.js @@ -1,30 +1,30 @@ -import("Keyword_lib"); -import("KeywordRegistry_basic"); -import("system.neon"); -import("system.vars"); -import("Context_lib"); -import("Attribute_lib"); - -var statusFilterElement = { - "type":"row", - "name":"STATUS", - "operator":"NOT_EQUAL", - "key":$KeywordRegistry.contactStatus$inactive(), - "contenttype": vars.get("$property.STATUS.contentType") -}; - -statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusFilterElement.key); - -var filter = { - "type":"group", - "operator":"AND", - "childs": [statusFilterElement] -}; - -filter = JSON.stringify(filter); -neon.setFilter("#ENTITY", filter); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) -{ - AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes"); -} +import("Keyword_lib"); +import("KeywordRegistry_basic"); +import("system.neon"); +import("system.vars"); +import("Context_lib"); +import("Attribute_lib"); + +var statusFilterElement = { + "type":"row", + "name":"STATUS", + "operator":"NOT_EQUAL", + "key":$KeywordRegistry.contactStatus$inactive(), + "contenttype": "TEXT" +}; + +statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusFilterElement.key); + +var filter = { + "type":"group", + "operator":"AND", + "childs": [statusFilterElement] +}; + +filter = JSON.stringify(filter); +neon.setFilter("#ENTITY", filter); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes"); +} diff --git a/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisationcontactid.value/expression.js b/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisationcontactid.value/expression.js deleted file mode 100644 index 56d6932fbb4a5a6202133f0da069a1cf3243a4a6..0000000000000000000000000000000000000000 --- a/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisationcontactid.value/expression.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("Sql_lib"); - -result.string("(select CONTACTID from CONTACT orgContact where PERSON_ID is null and ORGANISATION.ORGANISATIONID = orgContact.ORGANISATION_ID)"); \ No newline at end of file diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod index 6b97e94cfbe88f96d63d68a50c202c814691ebfa..aab2dfcb21f200605c77c10973ff927b18217abb 100644 --- a/entity/Product_entity/Product_entity.aod +++ b/entity/Product_entity/Product_entity.aod @@ -457,6 +457,16 @@ <iconId>VAADIN:CURLY_BRACKETS</iconId> <stateProcess>%aditoprj%/entity/Product_entity/entityfields/openadminview/stateProcess.js</stateProcess> </entityActionField> + <entityField> + <name>COUNT</name> + <title>Count</title> + <contentType>NUMBER</contentType> + </entityField> + <entityAggregateField> + <name>COUNT_aggregate</name> + <parentField>COUNT</parentField> + <title>Count</title> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -581,6 +591,15 @@ <isFilterable v="true" /> <filtertype>EXTENDED</filtertype> </consumerMapping> + <dbRecordFieldMapping> + <name>COUNT.value</name> + <expression>%aditoprj%/entity/Product_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression> + </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>COUNT_aggregate.value</name> + <recordfield>PRODUCT.PRODUCTID</recordfield> + <aggregateType>COUNT</aggregateType> + </aggregateFieldDbMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/QuickEntry_entity/QuickEntry_entity.aod b/entity/QuickEntry_entity/QuickEntry_entity.aod index 953caf69508224680bf2a3bdffb4979a672d95aa..ac7e1e7e1bcc4d93f1c0e8270c9386530dfeae40 100644 --- a/entity/QuickEntry_entity/QuickEntry_entity.aod +++ b/entity/QuickEntry_entity/QuickEntry_entity.aod @@ -228,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/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/AnyContact_entity/entityfields/withprivat_param/valueProcess.js b/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js similarity index 56% rename from entity/AnyContact_entity/entityfields/withprivat_param/valueProcess.js rename to entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js index 755662df1632264e94e6a4d766bb65ead50a553d..40effa0178464da0c7850912345f19c7fa95975a 100644 --- a/entity/AnyContact_entity/entityfields/withprivat_param/valueProcess.js +++ b/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js @@ -1,3 +1,3 @@ import("system.result"); -result.string("0") \ No newline at end of file +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 index c5a419766d570f6091355c47f0362d476d2a4c71..612c7e81d16e51455c5f693c1f4a58579a2b0548 100644 --- a/entity/QuickEntry_entity/entityfields/person_salutation/mandatoryProcess.js +++ b/entity/QuickEntry_entity/entityfields/person_salutation/mandatoryProcess.js @@ -2,9 +2,14 @@ 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"]; -}) +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(isInserted); \ No newline at end of file +result.string(isMandatory); \ No newline at end of file diff --git a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod index e1b1ae86aa099b9a04db9c5c87bdac18327e69e5..7480acbbffe1ba2eab7426d9778cf3aa20b5ae3a 100644 --- a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod +++ b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod @@ -110,10 +110,6 @@ <name>SALESPROJECT_ID.value</name> <recordfield>SALESPROJECT_TOUCHPOINT.SALESPROJECT_ID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>SOURCE.displayValue</name> - <expression>%aditoprj%/entity/SalesprojectSource_entity/recordcontainers/db/recordfieldmappings/source.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>INFO.value</name> <recordfield>SALESPROJECT_TOUCHPOINT.INFO</recordfield> diff --git a/entity/SalesprojectSource_entity/recordcontainers/db/recordfieldmappings/source.displayvalue/expression.js b/entity/SalesprojectSource_entity/recordcontainers/db/recordfieldmappings/source.displayvalue/expression.js deleted file mode 100644 index 9c2c59e5d23fee5e9c0318ba05d33739a47af82e..0000000000000000000000000000000000000000 --- a/entity/SalesprojectSource_entity/recordcontainers/db/recordfieldmappings/source.displayvalue/expression.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectSource(), "SALESPROJECT_TOUCHPOINT.TOUCHPOINT"); -result.string(sql); diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 33c8be5fa863f20bd086cdaae53dddae0f233b54..0338b89079f6041156a8a5b1e76bc32a4bb9d143 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -627,7 +627,7 @@ <entityField> <name>ClassificationResult</name> <title>Classification</title> - <groupable v="true" /> + <groupable v="false" /> <state>READONLY</state> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/classificationresult/valueProcess.js</valueProcess> </entityField> @@ -749,6 +749,16 @@ <iconId>VAADIN:PLAY</iconId> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/startworkflow/stateProcess.js</stateProcess> </entityActionField> + <entityField> + <name>COUNT</name> + <title>Count</title> + <contentType>NUMBER</contentType> + </entityField> + <entityAggregateField> + <name>COUNT_aggregate</name> + <parentField>COUNT</parentField> + <title>Count</title> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -876,6 +886,15 @@ <isFilterable v="true" /> <isLookupFilter v="true" /> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>COUNT.value</name> + <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression> + </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>COUNT_aggregate.value</name> + <recordfield>SALESPROJECT.SALESPROJECTID</recordfield> + <aggregateType>COUNT</aggregateType> + </aggregateFieldDbMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> 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/SupportTicket_entity/SupportTicket_entity.aod b/entity/SupportTicket_entity/SupportTicket_entity.aod index db8daa732b8e6ba8ac26517fd2f225314c6575a3..69f29f9e7f9cd60dbc419f66159e5423d41e0096 100644 --- a/entity/SupportTicket_entity/SupportTicket_entity.aod +++ b/entity/SupportTicket_entity/SupportTicket_entity.aod @@ -395,6 +395,16 @@ <name>RowId_param</name> <expose v="true" /> </entityParameter> + <entityField> + <name>COUNT</name> + <title>Count</title> + <contentType>NUMBER</contentType> + </entityField> + <entityAggregateField> + <name>COUNT_aggregate</name> + <parentField>COUNT</parentField> + <title>Count</title> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -483,9 +493,6 @@ <name>TASK_REQUESTOR_CONTACT_ID.displayValue</name> <expression>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/task_requestor_contact_id.displayvalue/expression.js</expression> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>TASK_PRIORITY.displayValue</name> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>TASK_PROGRESS.value</name> <recordfield>TASK.PROGRESS</recordfield> @@ -530,6 +537,15 @@ <name>TASK_PARENT_CONTEXT.value</name> <recordfield>TASK.PARENT_CONTEXT</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>COUNT.value</name> + <expression>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression> + </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>COUNT_aggregate.value</name> + <recordfield>TICKET.TICKETID</recordfield> + <aggregateType>COUNT</aggregateType> + </aggregateFieldDbMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod index aa736a459ee93a5fe679f9fcf01cc8c1a86545a4..14cdb18785867088dbb7220fa1bb33afc7b479a3 100644 --- a/entity/Task_entity/Task_entity.aod +++ b/entity/Task_entity/Task_entity.aod @@ -6,7 +6,7 @@ <title>Task</title> <grantDeleteProcess>%aditoprj%/entity/Task_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Task_entity/contentTitleProcess.js</contentTitleProcess> - <afterUiInit>%aditoprj%/entity/Task_entity/afterUiInit.js</afterUiInit> + <onInit>%aditoprj%/entity/Task_entity/onInit.js</onInit> <onValidation>%aditoprj%/entity/Task_entity/onValidation.js</onValidation> <iconId>VAADIN:TASKS</iconId> <iconIdProcess>%aditoprj%/entity/Task_entity/iconIdProcess.js</iconIdProcess> @@ -453,6 +453,16 @@ <iconId>VAADIN:CURLY_BRACKETS</iconId> <stateProcess>%aditoprj%/entity/Task_entity/entityfields/openadminview/stateProcess.js</stateProcess> </entityActionField> + <entityField> + <name>COUNT</name> + <title>Count</title> + <contentType>NUMBER</contentType> + </entityField> + <entityAggregateField> + <name>COUNT_aggregate</name> + <parentField>COUNT</parentField> + <title>Count</title> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -570,6 +580,15 @@ <name>TYPE.value</name> <recordfield>TASK.KIND</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>COUNT.value</name> + <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression> + </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>COUNT_aggregate.value</name> + <recordfield>TASK.TASKID</recordfield> + <aggregateType>COUNT</aggregateType> + </aggregateFieldDbMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Task_entity/afterUiInit.js b/entity/Task_entity/onInit.js similarity index 93% rename from entity/Task_entity/afterUiInit.js rename to entity/Task_entity/onInit.js index 566c37e5652d388bc77fea8c23183811a2da9f3c..0a610862cbb9ecae7e44e15eabbc31b0b20eceda 100644 --- a/entity/Task_entity/afterUiInit.js +++ b/entity/Task_entity/onInit.js @@ -17,7 +17,7 @@ else if (recordState != neon.OPERATINGSTATE_SEARCH) "name":"STATUS", "operator":"NOT_EQUAL", "key":$KeywordRegistry.taskStatus$ended(), - "contenttype": vars.get("$property.STATUS.contentType") + "contenttype": "TEXT" }; statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.taskStatus(), statusFilterElement.key); 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/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js index 0019a67ddae179d0a4926b9c819dd273484581a5..26a88f95717ce53ce1723ca71443089d0e3a1540 100644 --- a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js @@ -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") @@ -144,70 +147,73 @@ var semiannually = parseInt(datetime.ONE_DAY * 183); var quarterly = parseInt(datetime.ONE_DAY * 93); var yearly = parseInt(datetime.ONE_DAY * 365); -for (var i = 0; i < visitFrequencyData.length; i++) +if(idValues == false) { - 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]; //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]) + let title = ""; + + if(visitFrequencyData[i][9]) { - 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: + 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/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod index 5719de94c66c1f01c91b39451f9d96deb117f2c6..1cd52f7035f12fffa8d282df67384589bd7c0eb5 100644 --- a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod +++ b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod @@ -7,7 +7,7 @@ <grantCreateProcess>%aditoprj%/entity/WorkflowDefinition_entity/grantCreateProcess.js</grantCreateProcess> <grantDelete v="false" /> <contentTitleProcess>%aditoprj%/entity/WorkflowDefinition_entity/contentTitleProcess.js</contentTitleProcess> - <afterUiInit>%aditoprj%/entity/WorkflowDefinition_entity/afterUiInit.js</afterUiInit> + <onInit>%aditoprj%/entity/WorkflowDefinition_entity/onInit.js</onInit> <iconId>VAADIN:DROP</iconId> <titlePlural>Workflow definitions</titlePlural> <recordContainer>jdito</recordContainer> @@ -35,19 +35,30 @@ <name>openModeler</name> <title>Open modeler</title> <onActionProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/tableactions/children/openmodeler/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> <iconId>VAADIN:EXTERNAL_LINK</iconId> <stateProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/tableactions/children/openmodeler/stateProcess.js</stateProcess> </entityActionField> + <entityActionField> + <name>createModel</name> + <title>Create model</title> + <onActionProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/tableactions/children/createmodel/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <iconId>NEON:PLUS</iconId> + </entityActionField> </children> </entityActionGroup> <entityField> <name>CATEGORY</name> <title>Category</title> + <consumer>CategoryKeyword</consumer> + <groupable v="true" /> </entityField> <entityField> <name>ISACTIVE</name> <title>Active</title> <contentType>BOOLEAN</contentType> + <groupable v="true" /> <dropDownProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/isactive/dropDownProcess.js</dropDownProcess> <stateProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/isactive/stateProcess.js</stateProcess> </entityField> @@ -197,6 +208,31 @@ <entityField> <name>VERSION_TITLE</name> </entityField> + <entityParameter> + <name>IsWorkflowImport_param</name> + <expose v="true" /> + </entityParameter> + <entityActionField> + <name>editWorkflow</name> + <title>Edit workflow</title> + <onActionProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/editworkflow/onActionProcess.js</onActionProcess> + <iconId>VAADIN:EDIT</iconId> + <tooltip>Edit workflow</tooltip> + </entityActionField> + <entityConsumer> + <name>CategoryKeyword</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/categorykeyword/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -207,6 +243,7 @@ <contentProcess>%aditoprj%/entity/WorkflowDefinition_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <onInsert>%aditoprj%/entity/WorkflowDefinition_entity/recordcontainers/jdito/onInsert.js</onInsert> <onUpdate>%aditoprj%/entity/WorkflowDefinition_entity/recordcontainers/jdito/onUpdate.js</onUpdate> + <onDelete>%aditoprj%/entity/WorkflowDefinition_entity/recordcontainers/jdito/onDelete.js</onDelete> <recordFieldMappings> <jDitoRecordFieldMapping> <name>UID.value</name> @@ -221,6 +258,9 @@ <isFilterable v="true" /> <isLookupFilter v="true" /> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CATEGORY.displayValue</name> + </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>KEY.value</name> <isFilterable v="true" /> diff --git a/entity/WorkflowDefinition_entity/entityfields/editworkflow/onActionProcess.js b/entity/WorkflowDefinition_entity/entityfields/editworkflow/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..bc22afc6b2cfb545954d6a8c15c873387b97fde5 --- /dev/null +++ b/entity/WorkflowDefinition_entity/entityfields/editworkflow/onActionProcess.js @@ -0,0 +1,14 @@ +import("system.vars"); +import("Workflow_lib"); +import("system.workflow"); +import("system.util"); +import("system.neon"); + +var processXML = workflow.getProcessXML(vars.get("$field.UID")); +if (processXML) +{ + processXML = util.decodeBase64String(processXML); + var model = new WorkflowModelerApiCall().processXML(processXML).importModel(); + if (model) + neon.openUrl(WorkflowUtils.getModelerUrl(model.id, true), false); +} \ No newline at end of file diff --git a/entity/WorkflowDefinition_entity/entityfields/tableactions/children/createmodel/onActionProcess.js b/entity/WorkflowDefinition_entity/entityfields/tableactions/children/createmodel/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..82689600b7a620743de9485b99a43849e497c01b --- /dev/null +++ b/entity/WorkflowDefinition_entity/entityfields/tableactions/children/createmodel/onActionProcess.js @@ -0,0 +1,3 @@ +import("system.neon"); + +neon.openContext("WorkflowModel", null, null, neon.OPERATINGSTATE_NEW, {}); \ No newline at end of file diff --git a/entity/WorkflowDefinition_entity/entityfields/tableactions/children/openmodeler/onActionProcess.js b/entity/WorkflowDefinition_entity/entityfields/tableactions/children/openmodeler/onActionProcess.js index d9191cac3d1dade9d54d832816f6b93943aac2f2..802a66fb9632b688fbdf95e3a471edcac47c652c 100644 --- a/entity/WorkflowDefinition_entity/entityfields/tableactions/children/openmodeler/onActionProcess.js +++ b/entity/WorkflowDefinition_entity/entityfields/tableactions/children/openmodeler/onActionProcess.js @@ -3,4 +3,4 @@ import("system.neon"); var modelerUrl = WorkflowUtils.getModelerUrl(); if (modelerUrl) - neon.openUrl(modelerUrl, true); \ No newline at end of file + neon.openUrl(modelerUrl + "/#/processes", true); \ No newline at end of file diff --git a/entity/WorkflowDefinition_entity/afterUiInit.js b/entity/WorkflowDefinition_entity/onInit.js similarity index 100% rename from entity/WorkflowDefinition_entity/afterUiInit.js rename to entity/WorkflowDefinition_entity/onInit.js diff --git a/entity/WorkflowDefinition_entity/recordcontainers/jdito/contentProcess.js b/entity/WorkflowDefinition_entity/recordcontainers/jdito/contentProcess.js index aff0261cf5187f58d2b66bafd7d223034036e2a4..bec4b9a0b8c4954217e7d33ed77af5640f95311f 100644 --- a/entity/WorkflowDefinition_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/WorkflowDefinition_entity/recordcontainers/jdito/contentProcess.js @@ -5,6 +5,7 @@ import("system.result"); import("Workflow_lib"); import("system.workflow"); import("JditoFilter_lib"); +import("KeywordData_lib"); //immediately invoked function is used so that a return statement can be utilized to end the function at any point result.object((function () @@ -16,7 +17,9 @@ result.object((function () var excludeVersion = vars.get("$param.CurrentVersion_param"); var context = vars.get("$param.Context_param"); var idvalues = vars.get("$local.idvalues"); - + + var categoryMap = KeywordData.getKeyIdMap($KeywordRegistry.workflowCategory()); + var workflowDefs; if (idvalues) @@ -48,6 +51,7 @@ result.object((function () def.id, def.name, def.category, + categoryMap[def.category] || "", def.key, def.version, def.active, @@ -73,14 +77,14 @@ result.object((function () { filterFn = function (currDef) { - return newestVersions[currDef[3]] == currDef[4] && (possibleKeysMap ? possibleKeysMap[currDef[3]] : true); + return newestVersions[currDef[4]] == currDef[5] && (possibleKeysMap ? possibleKeysMap[currDef[4]] : true); }; } else { filterFn = function (currDef) { - return excludeVersion != currDef[4]; + return excludeVersion != currDef[5]; }; } diff --git a/entity/WorkflowDefinition_entity/recordcontainers/jdito/onInsert.js b/entity/WorkflowDefinition_entity/recordcontainers/jdito/onInsert.js index d4269f1ca146ecab555909a1aa39a34420ea345b..bb8e8692e251f74c6d0813b81ae8d4f18e7347dc 100644 --- a/entity/WorkflowDefinition_entity/recordcontainers/jdito/onInsert.js +++ b/entity/WorkflowDefinition_entity/recordcontainers/jdito/onInsert.js @@ -1,17 +1,24 @@ -import("Employee_lib"); import("system.workflow"); import("system.neon"); import("system.vars"); -import("system.util"); import("system.notification"); import("Document_lib"); +import("Employee_lib"); +import("system.translate") +import("Workflow_lib"); var upload = new FileUpload(vars.get("$field.FILEUPLOAD")); var rowData = vars.get("$local.rowdata"); -var xml = util.decodeBase64String(upload.bindata); - -//the xml could be invalid -try { - workflow.deployProcess(rowData["KEY.value"], xml); -} catch (ex) {} +if (upload.isFilled()) +{ + if (workflow.deployProcess(rowData["KEY.value"], upload.getBase64DecodedData()) === null) + { + var notificationConfig = notification.createConfig() + .addUserWithId(EmployeeUtils.getCurrentUserId()) + .notificationType("WorkflowDeployFailed") + .caption(translate.text("Workflow deploy failed")) + .description(translate.text("The workflow could not be deployed")); + notification.addNotificationWith(notificationConfig); + } +} \ No newline at end of file diff --git a/entity/WorkflowDefinition_entity/recordcontainers/jdito/onUpdate.js b/entity/WorkflowDefinition_entity/recordcontainers/jdito/onUpdate.js index 2afd61402ee0fab203bf051660b1c227da1cdfdd..3dcde8317a8ad1ae4767f4e51f12535bb29d9656 100644 --- a/entity/WorkflowDefinition_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/WorkflowDefinition_entity/recordcontainers/jdito/onUpdate.js @@ -4,11 +4,14 @@ import("system.workflow"); import("Document_lib"); var rowdata = vars.get("$local.rowdata"); +var changedFields = vars.get("$local.changed"); -if (vars.get("$local.changed").indexOf("ISACTIVE.value") !== -1) +if (changedFields.includes("ISACTIVE.value")) workflow.setProcessActive(rowdata["UID.value"], rowdata["ISACTIVE.value"] == "true"); - +if (changedFields.includes("CATEGORY.value")) + workflow.setProcessDefinitionCategory(rowdata["UID.value"], rowdata["CATEGORY.value"]); + var upload = new FileUpload(vars.get("$field.FILEUPLOAD")); if (upload.isFilled()) { diff --git a/entity/WorkflowModel_entity/WorkflowModel_entity.aod b/entity/WorkflowModel_entity/WorkflowModel_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..0829152a67cdfd9ff43a5f9514a755d47cb36b91 --- /dev/null +++ b/entity/WorkflowModel_entity/WorkflowModel_entity.aod @@ -0,0 +1,59 @@ +<?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>WorkflowModel_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/WorkflowModel_entity/documentation.adoc</documentation> + <title>Workflow Model</title> + <contentTitleProcess>%aditoprj%/entity/WorkflowModel_entity/contentTitleProcess.js</contentTitleProcess> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityActionField> + <name>openModelEditor</name> + <title>and open modeler</title> + <onActionProcess>%aditoprj%/entity/WorkflowModel_entity/entityfields/openmodeleditor/onActionProcess.js</onActionProcess> + <isSaveAction v="true" /> + </entityActionField> + <entityField> + <name>KEY</name> + <title>Key</title> + <mandatory v="true" /> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityField> + <name>DESCRIPTION</name> + <title>Description</title> + <contentType>LONG_TEXT</contentType> + </entityField> + <entityField> + <name>NAME</name> + <title>Name</title> + <mandatory v="true" /> + </entityField> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <contentProcess>%aditoprj%/entity/WorkflowModel_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/WorkflowModel_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>KEY.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>NAME.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>DESCRIPTION.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/AnyContact_entity/entityfields/contacts/children/contactid_param/valueProcess.js b/entity/WorkflowModel_entity/contentTitleProcess.js similarity index 52% rename from entity/AnyContact_entity/entityfields/contacts/children/contactid_param/valueProcess.js rename to entity/WorkflowModel_entity/contentTitleProcess.js index 7b6137b4d105e9ba592cf8ef6e796fb838a32b09..28fd67de270b497ba718dd4e91766bd22936f67e 100644 --- a/entity/AnyContact_entity/entityfields/contacts/children/contactid_param/valueProcess.js +++ b/entity/WorkflowModel_entity/contentTitleProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.CONTACTID")); \ No newline at end of file +result.string(vars.get("$field.NAME")); \ No newline at end of file diff --git a/entity/WorkflowModel_entity/documentation.adoc b/entity/WorkflowModel_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..fbcfd36592f56a682d0c2c2e81ec8ffc58580c09 --- /dev/null +++ b/entity/WorkflowModel_entity/documentation.adoc @@ -0,0 +1,4 @@ += WorkflowModel_entity + +This entity is used to represent workflow models inside the workflow modeler. The jdito-recordcontainer uses the modeler's REST api to retrieve the process +models. Because of that, this entity needs the workflow modeler to be running. \ No newline at end of file diff --git a/entity/WorkflowModel_entity/entityfields/openmodeleditor/onActionProcess.js b/entity/WorkflowModel_entity/entityfields/openmodeleditor/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..a7ebffe2899cad5a9213dd85275a7cf4cf147c99 --- /dev/null +++ b/entity/WorkflowModel_entity/entityfields/openmodeleditor/onActionProcess.js @@ -0,0 +1,10 @@ +import("system.vars"); +import("system.neon"); +import("Workflow_lib"); + +var createdModelId = vars.exists("$context.createdModelId") ? vars.get("$context.createdModelId") : null; +if (createdModelId) +{ + vars.set("$context.createdModelId", null); + neon.openUrl(WorkflowUtils.getModelerUrl(createdModelId, true), false); +} \ No newline at end of file diff --git a/entity/WorkflowModel_entity/recordcontainers/jdito/contentProcess.js b/entity/WorkflowModel_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..530ee738d5243e1eec82ae1bf38a43d4daa45d76 --- /dev/null +++ b/entity/WorkflowModel_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,29 @@ +import("system.result"); +import("system.vars"); +import("Workflow_lib"); + +var models; + +if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) +{ + models = vars.get("$local.idvalues").map(function (id) + { + return new WorkflowModelerApiCall().modelId(id).getModel(); + }); +} +else + models = new WorkflowModelerApiCall().getModels(); + +models = models.map( +/** @param {WorkflowModel} model */ +function (model) +{ + return [ + model.id, + model.key, + model.name, + model.description + ]; +}); + +result.object(models); \ No newline at end of file diff --git a/entity/WorkflowModel_entity/recordcontainers/jdito/onInsert.js b/entity/WorkflowModel_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..cc77bbf874e9985fecc1fedc734982713112b86b --- /dev/null +++ b/entity/WorkflowModel_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("Workflow_lib"); + +var rowdata = vars.get("$local.rowdata"); + +var workflowModel = new WorkflowModel(rowdata["UID.value"], rowdata["NAME.value"], rowdata["KEY.value"], rowdata["DESCRIPTION.value"]); +var createdModel = new WorkflowModelerApiCall().model(workflowModel).createModel(); +if (createdModel) + vars.set("$context.createdModelId", createdModel.id); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index fe1fbb9b3559b92efc504c689ca26083c140dc65..ed12fc0f39983f65d9e03fa38e9411b86427147a 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -6803,6 +6803,60 @@ <entry> <key>${SQL_LIB_FIELD_WRONG_FORMAT}</key> </entry> + <entry> + <key>Settings</key> + </entry> + <entry> + <key>workflow notification</key> + </entry> + <entry> + <key>Permission received</key> + </entry> + <entry> + <key>leadimport notification</key> + </entry> + <entry> + <key>granted permission</key> + </entry> + <entry> + <key>bulk mail sent</key> + </entry> + <entry> + <key>download ready</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> + <entry> + <key>Add new Department Permission</key> + </entry> + <entry> + <key>Add new User Permission</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index fa13543e3899d1b06f831c121663eaaeffc0be75..a4c956a47885f4d1a8c17b2e4c016cc676c2df32 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> @@ -77,6 +81,10 @@ <key>Has marketing approved this step?</key> <value>Hat das Marketing diesem Schritt zugestimmt?</value> </entry> + <entry> + <key>Create model</key> + <value>Modell erstellen</value> + </entry> <entry> <key>Task done</key> <value>Aufgabe abgeschlossen</value> @@ -691,6 +699,10 @@ <key>None</key> <value>Keine</value> </entry> + <entry> + <key>Edit workflow</key> + <value>Workflow bearbeiten</value> + </entry> <entry> <key>Date of request</key> <value>Datum der Anforderung</value> @@ -2085,6 +2097,10 @@ <key>{$TASK_STATUS}</key> <value>Status</value> </entry> + <entry> + <key>and open modeler</key> + <value>und Modeler öffnen</value> + </entry> <entry> <key>Task</key> <value>Aufgabe</value> @@ -8717,6 +8733,69 @@ Bitte Datumseingabe prüfen</value> <key>Valid from (as </key> <value>gültig ab (in </value> </entry> + <entry> + <key>workflow notification</key> + </entry> + <entry> + <key>Permission received</key> + <value>erhaltene Berechtigung</value> + </entry> + <entry> + <key>leadimport notification</key> + </entry> + <entry> + <key>granted permission</key> + <value>vergebene Berechtigung</value> + </entry> + <entry> + <key>bulk mail sent</key> + </entry> + <entry> + <key>download ready</key> + </entry> + <entry> + <key>Receive new Department Permission</key> + <value>Neue Abteilungs-Berechtigung erhalten</value> + </entry> + <entry> + <key>Receive new User Permission</key> + <value>Neue Benutzer-Berechtigung erhalten</value> + </entry> + <entry> + <key>export</key> + </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>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>export using the selected template</key> + <value>Mit der ausgewählten Vorlage Exportieren</value> + </entry> + <entry> + <key>send mail</key> + <value>E-Mail losschicken</value> + </entry> + <entry> + <key>Download letter and create Activity</key> + <value>Brief herunterladen und Aktivität erstellen</value> + </entry> + <entry> + <key>Add Participants</key> + <value>Teilnehmer hinzufügen</value> + </entry> + <entry> + <key>and open Report</key> + <value>und Report öffnen</value> + </entry> + <entry> + <key>Add Recipients</key> + <value>Empfänger hinzufügen</value> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 484ad7c3e5a690cf7a0239ffa4507df6ed42682b..f795919fd82d323b6293b5b6ada7effe00920d07 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -6869,6 +6869,60 @@ <entry> <key>Valid from (as </key> </entry> + <entry> + <key>Settings</key> + </entry> + <entry> + <key>workflow notification</key> + </entry> + <entry> + <key>Permission received</key> + </entry> + <entry> + <key>leadimport notification</key> + </entry> + <entry> + <key>granted permission</key> + </entry> + <entry> + <key>bulk mail sent</key> + </entry> + <entry> + <key>download ready</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> + <entry> + <key>Receive new Department Permission</key> + </entry> + <entry> + <key>Receive new User Permission</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> 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/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/neonContext/WorkflowModel/WorkflowModel.aod b/neonContext/WorkflowModel/WorkflowModel.aod new file mode 100644 index 0000000000000000000000000000000000000000..4b31ba4526e5e0890fe3da72d0dfa974bdf39474 --- /dev/null +++ b/neonContext/WorkflowModel/WorkflowModel.aod @@ -0,0 +1,19 @@ +<?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>WorkflowModel</name> + <title>Workflow Model</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>WorkflowModelEdit_view</editView> + <lookupView>WorkflowModelLookup_view</lookupView> + <entity>WorkflowModel_entity</entity> + <references> + <neonViewReference> + <name>4d3b7269-7dc9-4e00-8a09-e337ca0df800</name> + <view>WorkflowModelEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>82156d4a-1db1-48d4-88e7-f098ca1f432a</name> + <view>WorkflowModelLookup_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonNotificationType/WorkflowDeployFailed/WorkflowDeployFailed.aod b/neonNotificationType/WorkflowDeployFailed/WorkflowDeployFailed.aod new file mode 100644 index 0000000000000000000000000000000000000000..0dafa63d64f6b95f97e57c35925e18c59cc9dca3 --- /dev/null +++ b/neonNotificationType/WorkflowDeployFailed/WorkflowDeployFailed.aod @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonNotificationType xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonNotificationType/1.1.0"> + <name>WorkflowDeployFailed</name> + <title>Workflow deploy failed</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:EXCLAMATION_CIRCLE</icon> + <deletePerLogout v="true" /> +</neonNotificationType> diff --git a/neonView/ActivityFilter_view/ActivityFilter_view.aod b/neonView/ActivityFilter_view/ActivityFilter_view.aod index 09f94a720facdac4607c2410d50b3fe9ddcaf64f..0d59f1b7b3c98f9bf630fee21e641c2801b5022b 100644 --- a/neonView/ActivityFilter_view/ActivityFilter_view.aod +++ b/neonView/ActivityFilter_view/ActivityFilter_view.aod @@ -116,5 +116,18 @@ </neonTreeTableColumn> </columns> </treeTableViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>DynamicMultiDataChart</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Count</yAxisLabel> + <entityField>#ENTITY</entityField> + <columns> + <neonDynamicMultiDataChartColumn> + <name>fce2e978-e34d-4c6d-84f0-94d698ae793e</name> + <entityField>COUNT</entityField> + <aggregateEntityField>COUNT_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> </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 1e527fb7d2119491476345663d087fea04e44915..5668d586c04c0e91bed27a582690be7b0cdab2dd 100644 --- a/neonView/AttributeEdit_view/AttributeEdit_view.aod +++ b/neonView/AttributeEdit_view/AttributeEdit_view.aod @@ -3,7 +3,6 @@ <name>AttributeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> diff --git a/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod b/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod index 8e827a0ddcda2db32338a17ae43257ec05c7a39d..bcc1303d8a36c78c9f778bd192efafa8e184bf9a 100644 --- a/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod +++ b/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod @@ -3,7 +3,6 @@ <name>AttributeRelationTreeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod index 354005bab2bbf63709e705b90e3d547324fa118e..b51a66ffd812ac5f4afbec1d20584fe3be8998b9 100644 --- a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod +++ b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod @@ -3,18 +3,19 @@ <name>BulkMailAddRecipientsEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> + <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> @@ -22,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 cd18b460ac3d98c9d6d6d8488d5cdf7fc229ba90..1ad8a7d50ee24f76d4d1f2a0c43c82e2841a28c2 100644 --- a/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod +++ b/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod @@ -3,7 +3,6 @@ <name>BulkMailRecipientEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/BulkMailTesting_view/BulkMailTesting_view.aod b/neonView/BulkMailTesting_view/BulkMailTesting_view.aod index abdeb31f804965f0e7430fb53bac0f966a6e5068..d3a8fa5c4e91d33df9a3b0e52819cd55bb5810de 100644 --- a/neonView/BulkMailTesting_view/BulkMailTesting_view.aod +++ b/neonView/BulkMailTesting_view/BulkMailTesting_view.aod @@ -3,7 +3,6 @@ <name>BulkMailTesting_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> @@ -14,6 +13,7 @@ <genericViewTemplate> <name>Generic</name> <editMode v="true" /> + <hideEmptyFields v="false" /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> @@ -30,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 003bdaaffdf33969c6100a0952c0cd0d522a6473..51e47fdf6319fc525098bfd9ec85a8432ed0503a 100644 --- a/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod +++ b/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod @@ -3,7 +3,7 @@ <name>CampaignAddParticipantsEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> + <isOverlay v="false" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <headerFooterLayout> @@ -46,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 e019156190da7c2501c352d125ff78ea8527ed84..cb1f3d2f26abe217b3d0c4d8aec538aacee07795 100644 --- a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod +++ b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod @@ -3,7 +3,6 @@ <name>CampaignCostEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/CampaignEdit_view/CampaignEdit_view.aod b/neonView/CampaignEdit_view/CampaignEdit_view.aod index ff30c17303f857a06a347921a5437165e81249f1..e16693943d7e5b050d64c854e6e3a0208cef9dfc 100644 --- a/neonView/CampaignEdit_view/CampaignEdit_view.aod +++ b/neonView/CampaignEdit_view/CampaignEdit_view.aod @@ -5,7 +5,6 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:GROUP</icon> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> diff --git a/neonView/CampaignFilter_view/CampaignFilter_view.aod b/neonView/CampaignFilter_view/CampaignFilter_view.aod index a30c1ab9f1f355ef861347d260fd2e120700499d..0dcb198305db9a4021ace200c99df40b0018904d 100644 --- a/neonView/CampaignFilter_view/CampaignFilter_view.aod +++ b/neonView/CampaignFilter_view/CampaignFilter_view.aod @@ -128,5 +128,18 @@ </neonTreeTableColumn> </columns> </treeTableViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>DynamicMultiDataChart</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Count</yAxisLabel> + <entityField>#ENTITY</entityField> + <columns> + <neonDynamicMultiDataChartColumn> + <name>945f1bdd-ae16-4f02-b3ec-d7bdd331adf0</name> + <entityField>COUNT</entityField> + <aggregateEntityField>COUNT_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> </children> </neonView> diff --git a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod index 366439215aaf38db4e0dd269d15bb672128334a6..6539d7a4d36249efc9252b43feb7ab58483090cf 100644 --- a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod +++ b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod @@ -4,7 +4,6 @@ <title>Add participant to Campaign</title> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <headerFooterLayout> diff --git a/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod b/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod index 952848ca859f81e021afb8e9788032903c218df1..65f90217df30f11791d438ff19ea290ba522e654 100644 --- a/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod +++ b/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod @@ -4,7 +4,6 @@ <title>Neuer Kampagnenschritt</title> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod b/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod index 49ae0d21d679a7c357934844ccdec553553c232f..fc757ef341327759a27d89928ef0fd23ffbd64a3 100644 --- a/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod +++ b/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod @@ -3,7 +3,6 @@ <name>CommRestrictionSmallEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/CompetitionEdit_view/CompetitionEdit_view.aod b/neonView/CompetitionEdit_view/CompetitionEdit_view.aod index 691a7349a1cfc4503b558323b1d718a1c9d9b7c5..ae4b045d5f0371d9e6a027219786e043b7d9a5b1 100644 --- a/neonView/CompetitionEdit_view/CompetitionEdit_view.aod +++ b/neonView/CompetitionEdit_view/CompetitionEdit_view.aod @@ -3,7 +3,6 @@ <name>CompetitionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/ContractFilter_view/ContractFilter_view.aod b/neonView/ContractFilter_view/ContractFilter_view.aod index f92d2bd17a33c1a20b623fd4e43c14114962124e..b43c2f7fa56d7f2d30204d9369376914532022b8 100644 --- a/neonView/ContractFilter_view/ContractFilter_view.aod +++ b/neonView/ContractFilter_view/ContractFilter_view.aod @@ -116,5 +116,18 @@ </neonTreeTableColumn> </columns> </treeTableViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>DynamicMultiDataChart</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Count</yAxisLabel> + <entityField>#ENTITY</entityField> + <columns> + <neonDynamicMultiDataChartColumn> + <name>5c0ec615-90ec-460b-b63f-bd4939ac3e09</name> + <entityField>COUNT</entityField> + <aggregateEntityField>COUNT_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> </children> </neonView> diff --git a/neonView/DSGVOEdit_view/DSGVOEdit_view.aod b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod index 0c80c3c31d051bea59afc23518246c10e1faa6f3..b10ce1465adaebeadf62b7a025c6c08c50e0961c 100644 --- a/neonView/DSGVOEdit_view/DSGVOEdit_view.aod +++ b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod @@ -3,7 +3,6 @@ <name>DSGVOEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod b/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod index e931633392dc98046c9ed44666769af02a8d5829..322834185a83b93efde46f10ee93dcc1f9c66f96 100644 --- a/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod +++ b/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod @@ -3,7 +3,7 @@ <name>DSGVOInfoEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> + <isOverlay v="false" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod b/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod index a527df129ff9227550b3a82e60bd52312a884d49..16b162e36e1f40868b649f8033af7cd7ef25bf23 100644 --- a/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod +++ b/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod @@ -3,7 +3,6 @@ <name>DSGVOPreviewAnonym_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod index efae12648f202cc9964a15bcc6bd0a3ae1d11c57..dbd985c9477eb4df3b09527182866eddc41f9fb9 100644 --- a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod +++ b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod @@ -3,7 +3,6 @@ <name>DefaultAdminView_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> diff --git a/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod b/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod index ab72814588ca195c60918dff12f6e99e917e3695..88a2787707419ee251f0cca03aaf2c71c4e68e11 100644 --- a/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod +++ b/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod @@ -3,7 +3,6 @@ <name>DescriptionTranslationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/DocumentEdit_view/DocumentEdit_view.aod b/neonView/DocumentEdit_view/DocumentEdit_view.aod index 44fe2df26db12017971822efc4e04c74c77866a9..987ec495b6dacc5a0a19666e7985ebcdee26acee 100644 --- a/neonView/DocumentEdit_view/DocumentEdit_view.aod +++ b/neonView/DocumentEdit_view/DocumentEdit_view.aod @@ -3,7 +3,6 @@ <name>DocumentEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod b/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod index 5fd2dc456044f71f9903c86b5d88fcb98ca8e543..fae9c9be8a773334223fe011c34141db1c3700cc 100644 --- a/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod +++ b/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod @@ -5,7 +5,6 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod b/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod index aca74dc736401e6583a9fae2d93664c0fa147742..1ffb18b8f7876404e349e3e985579cc9a6f342df 100644 --- a/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod +++ b/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod @@ -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> diff --git a/neonView/EmailEdit_view/EmailEdit_view.aod b/neonView/EmailEdit_view/EmailEdit_view.aod index a6395734988d594f0ee0588e81bb7e96b2a92a81..0606c5788a5daf17f8e709d6cf7311fc0628a307 100644 --- a/neonView/EmailEdit_view/EmailEdit_view.aod +++ b/neonView/EmailEdit_view/EmailEdit_view.aod @@ -3,7 +3,7 @@ <name>EmailEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> + <isOverlay v="false" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> @@ -14,6 +14,7 @@ <genericViewTemplate> <name>Generic</name> <editMode v="true" /> + <hideEmptyFields v="false" /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> @@ -40,6 +41,7 @@ <genericViewTemplate> <name>Generic2</name> <editMode v="true" /> + <hideEmptyFields v="false" /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> @@ -48,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 7a62ef2fb121ebf265433a429c51da17eaae04f5..9309f0b748f33a80f026f36212d45d6dfadcb3fe 100644 --- a/neonView/EmployeePassword_view/EmployeePassword_view.aod +++ b/neonView/EmployeePassword_view/EmployeePassword_view.aod @@ -3,7 +3,6 @@ <name>EmployeePassword_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod b/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod index 4b2ec3308f35f8fff312c6d1423e4dbcc5276398..28e2345dee0299e75b7ad8b9a69c7625554c7edb 100644 --- a/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod +++ b/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod @@ -3,7 +3,6 @@ <name>EmployeeRoleGenericEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod index 658602c58fbfdee7b5a7bd3f47ae6b70cc99d5ff..7a9b755b2040d6f09825ca7133ccaf29750c34c5 100644 --- a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod +++ b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod @@ -3,7 +3,6 @@ <name>ExportTemplateSelectionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> @@ -14,6 +13,7 @@ <genericViewTemplate> <name>generic</name> <editMode v="true" /> + <hideEmptyFields v="false" /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> @@ -26,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 e4db7f27b62875ad50a8cb25ded5f7041113d728..fe71618badc57d0394b5b8bf28484c9eddc2dc73 100644 --- a/neonView/ForecastEdit_view/ForecastEdit_view.aod +++ b/neonView/ForecastEdit_view/ForecastEdit_view.aod @@ -3,7 +3,6 @@ <name>ForecastEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod b/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod index 98e5ccff6972da636c561f41fc23527f94da3062..4bcc0eda9db13670681a509f2a80c3314cf743b9 100644 --- a/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod +++ b/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod @@ -3,7 +3,6 @@ <name>ImportFieldEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod index 552a3762baec727e44f176cc78c0a7d74bab43a3..1e906c4ad4030738fcf891530a0ac48e06760f73 100644 --- a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod +++ b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod @@ -3,7 +3,6 @@ <name>KeywordAttributeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> diff --git a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod index df1e4f26057d3602dd4751d66b03000cd6c8b3e9..d759384a7067f6e2324dd206641fda2bf2ace168 100644 --- a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod +++ b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod @@ -3,7 +3,6 @@ <name>KeywordEntryEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> diff --git a/neonView/LeadPreview_view/LeadPreview_view.aod b/neonView/LeadPreview_view/LeadPreview_view.aod index 1e76a6550614b9d5e0e341f3f9f83e2dc1040154..dcd3b2353828fb0da8b71e3b42b3bcd4658be49a 100644 --- a/neonView/LeadPreview_view/LeadPreview_view.aod +++ b/neonView/LeadPreview_view/LeadPreview_view.aod @@ -4,7 +4,6 @@ <title>Lead preview</title> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod b/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod index 6fad6b03c054155b19129adeb4263684f59acc73..32007efecfefdc5c8a42ac23ccfa18e73b30d8c9 100644 --- a/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod +++ b/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod @@ -3,7 +3,6 @@ <name>LeadimportDocEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/LetterEdit_view/LetterEdit_view.aod b/neonView/LetterEdit_view/LetterEdit_view.aod index 75414b28840228546be585959fe75d65779eead5..5f77590bb269118a0a01ecfdee2b6b0f8f969432 100644 --- a/neonView/LetterEdit_view/LetterEdit_view.aod +++ b/neonView/LetterEdit_view/LetterEdit_view.aod @@ -3,7 +3,7 @@ <name>LetterEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> + <isOverlay v="false" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> @@ -40,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 245582265f783d6f2dc7103bdbb42f05b2e16564..6bb0a1766a827bc1c3aca1b73ee207cc58d96acf 100644 --- a/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod +++ b/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod @@ -3,7 +3,6 @@ <name>LetterRecipientEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/MemberEdit_view/MemberEdit_view.aod b/neonView/MemberEdit_view/MemberEdit_view.aod index e67cb36c123d3402d25d01bcde448318fc4c80cd..d87d067090a65f8cfca284782ffe693ce7d5de51 100644 --- a/neonView/MemberEdit_view/MemberEdit_view.aod +++ b/neonView/MemberEdit_view/MemberEdit_view.aod @@ -3,7 +3,6 @@ <name>MemberEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod index 63983ba3ad8fcac83cbadbcdf70b5babae78fbdc..e354b3573f2c0e6a617136a1983c8b456b77cfa6 100644 --- a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod +++ b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod @@ -3,7 +3,6 @@ <name>ObjectRelationTypeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod index 967050cd67a8983f8c2ef63605d7879498aceae7..922ada4bc69f3589ee407b648469eb3d281f7fb2 100644 --- a/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod +++ b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod @@ -3,7 +3,6 @@ <name>ObjectTreeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod index 28fb45b5ae0dc0f8a90f1205e21d0d28f7c25652..0a1ab5740c5a8ae675bc91f798159175c3fdee75 100644 --- a/neonView/OfferFilter_view/OfferFilter_view.aod +++ b/neonView/OfferFilter_view/OfferFilter_view.aod @@ -136,5 +136,31 @@ </neonTreeTableColumn> </columns> </treeTableViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>DynamicMultiDataChartCount</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Count</yAxisLabel> + <entityField>#ENTITY</entityField> + <columns> + <neonDynamicMultiDataChartColumn> + <name>4bbc9650-47fd-4a59-8e1e-bb60ceb85795</name> + <entityField>COUNT</entityField> + <aggregateEntityField>COUNT_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>DynamicMultiDataChartSum</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Total in euros</yAxisLabel> + <entityField>#ENTITY</entityField> + <columns> + <neonDynamicMultiDataChartColumn> + <name>e5d14506-5205-43d0-89cb-416bf6debd25</name> + <entityField>NET</entityField> + <aggregateEntityField>NET_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> </children> </neonView> diff --git a/neonView/OfferitemEdit_view/OfferitemEdit_view.aod b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod index 13c4524c75a1bb2277b1f7ab0ed39a00a90407d6..b249c4127083a8fe0539db54d714c517a64e5081 100644 --- a/neonView/OfferitemEdit_view/OfferitemEdit_view.aod +++ b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod @@ -3,7 +3,6 @@ <name>OfferitemEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/OrderDunning_view/OrderDunning_view.aod b/neonView/OrderDunning_view/OrderDunning_view.aod index f7f34a72bed74a0f0369425eada172801022cc39..0a20b0fdb87726636ef6602445cb916027492bb3 100644 --- a/neonView/OrderDunning_view/OrderDunning_view.aod +++ b/neonView/OrderDunning_view/OrderDunning_view.aod @@ -3,7 +3,6 @@ <name>OrderDunning_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/OrderFilter_view/OrderFilter_view.aod b/neonView/OrderFilter_view/OrderFilter_view.aod index b383d375bab128ddf5d866e0b487c92d737cc78d..c8277419b6d7b1aba01606957c9f0f983f669e19 100644 --- a/neonView/OrderFilter_view/OrderFilter_view.aod +++ b/neonView/OrderFilter_view/OrderFilter_view.aod @@ -152,5 +152,18 @@ </neonTreeTableColumn> </columns> </treeTableViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>DynamicMultiDataChart</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Count</yAxisLabel> + <entityField>#ENTITY</entityField> + <columns> + <neonDynamicMultiDataChartColumn> + <name>b4aa7cf1-5e25-4042-9430-b54a22dd83cf</name> + <entityField>COUNT</entityField> + <aggregateEntityField>COUNT_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> </children> </neonView> diff --git a/neonView/OrderPaid_view/OrderPaid_view.aod b/neonView/OrderPaid_view/OrderPaid_view.aod index d447eeae5a05f0e6e61bfed5584a23893823f24c..67d17a1b948fe34f88e3f50b5fdab14d543d8b4a 100644 --- a/neonView/OrderPaid_view/OrderPaid_view.aod +++ b/neonView/OrderPaid_view/OrderPaid_view.aod @@ -3,7 +3,6 @@ <name>OrderPaid_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod index 4f4db559d2c5295718573859aee9763d932dcf15..bcc6e174805d9a3f9f6d9289302c4141db0d380d 100644 --- a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod +++ b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod @@ -3,7 +3,6 @@ <name>OrderitemEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod index 846d3c33e7ddaf95fcdaf0b0a92f8cb00a8099c4..70cc47cbd63e649e23277ff71e0c73332b0493fc 100644 --- a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod +++ b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod @@ -3,7 +3,6 @@ <name>OrganisationEditDefaults_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod index 960c454e103af41d7e9cf5740ae51aec1b1047f5..1cc87b9732a33851587d07a0ca3950c4d1c8d8c1 100644 --- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod +++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod @@ -134,5 +134,18 @@ </neonTreeTableColumn> </columns> </treeTableViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>DynamicMultiDataChart</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Count</yAxisLabel> + <entityField>#ENTITY</entityField> + <columns> + <neonDynamicMultiDataChartColumn> + <name>52be5c1a-4e19-4f03-862b-a9d68e15778f</name> + <entityField>COUNT</entityField> + <aggregateEntityField>COUNT_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> </children> </neonView> diff --git a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod index 59bda381231ca4f7931aeccb6962b1b32313b787..9e557d4f2eed1a851d46cd2b4d2525f38304ecb2 100644 --- a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod +++ b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod @@ -3,7 +3,6 @@ <name>PermissionCalendarEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod b/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod index 32b319f4445dd4838b972b11db7c6193c7833b35..bea5b5d3b4c83c14236e3e3ee1164389370c87fd 100644 --- a/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod +++ b/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod @@ -5,7 +5,7 @@ <layout> <drawerLayout> <name>layout</name> - <layoutCaption>of other on this employee's calendar</layoutCaption> + <layoutCaption>Permission received</layoutCaption> <fixedDrawer v="true" /> </drawerLayout> </layout> diff --git a/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod b/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod index df480a219c345fe0847a2ebdf5c5f62479108e60..ae077ac28d6a0d93a8073361d0467f7abc3a6478 100644 --- a/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod +++ b/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod @@ -7,12 +7,14 @@ <layout> <drawerLayout> <name>layout</name> - <layoutCaption>of this employee on the calendar of others</layoutCaption> + <layoutCaption>granted permission</layoutCaption> + <fixedDrawer v="true" /> </drawerLayout> </layout> <children> <tableViewTemplate> <name>PermissionCalendarFilterReverseTable</name> + <favoriteActionGroup1>AddReverseAction</favoriteActionGroup1> <entityField>#ENTITY</entityField> <isCreatable v="false" /> <isDeletable v="false" /> diff --git a/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod b/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod index 41b1bbdc30b67da75b5f51f33460e4a08f8ca636..8671d21b95c8bc5d16f7bdcc597f4d6a0924cfb7 100644 --- a/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod +++ b/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod @@ -3,7 +3,6 @@ <name>PermissionCalendarPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <headerFooterLayout> diff --git a/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod b/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod index b17320fe0c58d0c5f522f7a928628fa9eb82ff1e..b38046275b1de3d27e9720088053b6cac8503ca9 100644 --- a/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod +++ b/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod @@ -3,7 +3,6 @@ <name>PermissionDetailEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> diff --git a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod index 7e580bee93395e0072c139ff1f8ed7b3bc527ff5..4be76fd469771d104f909dba2d23f4379c4e8218 100644 --- a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod +++ b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod @@ -3,7 +3,6 @@ <name>PersonEditDefaults_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/PersonFilter_view/PersonFilter_view.aod b/neonView/PersonFilter_view/PersonFilter_view.aod index 3de6433f11f0721a7a9d21644f7201c33dd0c364..8eaea8f8294ba09c4a94f70dc4b0930a20357b0c 100644 --- a/neonView/PersonFilter_view/PersonFilter_view.aod +++ b/neonView/PersonFilter_view/PersonFilter_view.aod @@ -148,5 +148,18 @@ </neonTreeTableColumn> </columns> </treeTableViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>DynamicMultiDataChart</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Count</yAxisLabel> + <entityField>#ENTITY</entityField> + <columns> + <neonDynamicMultiDataChartColumn> + <name>79379ca4-70f2-40c9-8af2-05cbe26e8916</name> + <entityField>COUNT</entityField> + <aggregateEntityField>COUNT_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> </children> </neonView> diff --git a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod index e1b8e3e260c2685ad3d0222c0b135df9f9bc333e..6048f3f0bdfefff3c4b9228280e9fbd8580946eb 100644 --- a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod +++ b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod @@ -3,7 +3,6 @@ <name>Prod2ProdEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/ProductFilter_view/ProductFilter_view.aod b/neonView/ProductFilter_view/ProductFilter_view.aod index 3f86ddd7ed38a5909124edfb0004546921b8305e..87133854a0bf04645764e64768e6037d069b48b9 100644 --- a/neonView/ProductFilter_view/ProductFilter_view.aod +++ b/neonView/ProductFilter_view/ProductFilter_view.aod @@ -117,5 +117,18 @@ </neonTreeTableColumn> </columns> </treeTableViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>DynamicMultiDataChart</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Count</yAxisLabel> + <entityField>#ENTITY</entityField> + <columns> + <neonDynamicMultiDataChartColumn> + <name>8e435e30-bd06-4172-81ea-4cd40cb835f2</name> + <entityField>COUNT</entityField> + <aggregateEntityField>COUNT_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> </children> </neonView> diff --git a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod index 30b858cc1af80773a7ea64a97b5d221fc797702b..f2c6e8dac43e719b5612feb930cdb341f50861df 100644 --- a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod +++ b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod @@ -4,7 +4,6 @@ <title>Price list</title> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> 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/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod index 920128f5ff6cb8f4bb2f8378f524c6b4528e3240..6bfac93548e2b901c3d7952818fa6d21bb0c987a 100644 --- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod +++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod @@ -136,5 +136,18 @@ </neonTreeTableColumn> </columns> </treeTableViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>DynamicMultiDataChart</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Count</yAxisLabel> + <entityField>#ENTITY</entityField> + <columns> + <neonDynamicMultiDataChartColumn> + <name>170e3be6-41e5-4e75-b772-a97312e83268</name> + <entityField>COUNT</entityField> + <aggregateEntityField>COUNT_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> </children> </neonView> diff --git a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod index 3a0964da835ba1d8d304df9baac595f0bc6fca8f..056fcc4af211527fda469af4fa6ae96e8a8abdd9 100644 --- a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod +++ b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod @@ -3,7 +3,6 @@ <name>SalesprojectSourceEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/SalutationEdit_view/SalutationEdit_view.aod b/neonView/SalutationEdit_view/SalutationEdit_view.aod index b6ec229c8ec0e8eb93f0dea83f18600a28ce92fb..3179d62093fcc07b1f389b13d5cb250ba2706d28 100644 --- a/neonView/SalutationEdit_view/SalutationEdit_view.aod +++ b/neonView/SalutationEdit_view/SalutationEdit_view.aod @@ -3,7 +3,6 @@ <name>SalutationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> diff --git a/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod b/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod index 2f1af1070f065324d7497746b93921816c2acb2f..b3b8d67e1ba188142d23e3795d039485844f397b 100644 --- a/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod +++ b/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod @@ -3,7 +3,7 @@ <name>SerialLetterAddRecipientsEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> + <isOverlay v="false" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> @@ -14,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> @@ -33,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/SupportTicketFilter_view/SupportTicketFilter_view.aod b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod index ed3af83d74e6237cd4298704707bde0e2f485502..f233e247a8ea243775ec164648f5d61952f791fd 100644 --- a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod +++ b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod @@ -139,5 +139,18 @@ </neonTreeTableColumn> </columns> </treeTableViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>DynamicMultiDataChart</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Count</yAxisLabel> + <entityField>#ENTITY</entityField> + <columns> + <neonDynamicMultiDataChartColumn> + <name>43e0d3fc-2556-4da9-985f-f46919755ebf</name> + <entityField>COUNT</entityField> + <aggregateEntityField>COUNT_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> </children> </neonView> diff --git a/neonView/TaskFilter_view/TaskFilter_view.aod b/neonView/TaskFilter_view/TaskFilter_view.aod index 83268457a49e851f0329c787d3b4e498adb9a620..e42baf0ab3dbc846a09889295e65fd2bf9e2df07 100644 --- a/neonView/TaskFilter_view/TaskFilter_view.aod +++ b/neonView/TaskFilter_view/TaskFilter_view.aod @@ -135,5 +135,18 @@ </neonTreeTableColumn> </columns> </treeTableViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>DynamicMultiDataChart</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Count</yAxisLabel> + <entityField>#ENTITY</entityField> + <columns> + <neonDynamicMultiDataChartColumn> + <name>aad9359c-9d5c-480e-9671-68933a08d615</name> + <entityField>COUNT</entityField> + <aggregateEntityField>COUNT_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> </children> </neonView> diff --git a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod index de849e16e7e2a21db20f6c979320926cfb7cf484..231020b4962ac1c21622fe25641624037f7c1caa 100644 --- a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod +++ b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod @@ -3,7 +3,6 @@ <name>TimetrackingEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod index 9983ee19d58cd4da4293e77905149d6307ba8be5..dec9ecc2091d723dd1c8cc91780346fe776c9b53 100644 --- a/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod +++ b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod @@ -4,7 +4,6 @@ <title>Link e-mail addresses to contacts</title> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <headerFooterLayout> 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 3202fadc72fd55bc53ba640c0bd80a018bacbb76..d11ac479a593f7dea6bd16945f2c04f469f68113 100644 --- a/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod +++ b/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod @@ -3,7 +3,6 @@ <name>VisitPlanEmployeeWeekEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod b/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod index f3d4c1d463b9a6d0b4f283897640a59380d6f46a..7c1d4abf3b4166c10b31c6b3caed3362dff0bba5 100644 --- a/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod +++ b/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod @@ -3,7 +3,7 @@ <name>VisitPlanEmployeeWeekPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> + <isOverlay v="false" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <headerFooterLayout> diff --git a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod index e114a59373604f35e65c9e91617edf5e4c5a5808..950d8706d14ac77e9e0f45694cd50f8b4abb9fc1 100644 --- a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod +++ b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod @@ -3,7 +3,6 @@ <name>VisitPlanEntryEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod b/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod index 7fd526b876a13c6ac9139dacb98f0123319385d2..d58550498e10e16ee96233d559788ae0c579063b 100644 --- a/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod +++ b/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod @@ -3,7 +3,6 @@ <name>VisitRecommendationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod b/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod index 64254558fa26e1ac79604b4dabbfdd1307e10eda..d0aaeebbaa361abc7c40f805605710e08afe8167 100644 --- a/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod +++ b/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod @@ -3,7 +3,7 @@ <name>WorkflowDefinitionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> + <isOverlay v="false" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> @@ -17,17 +17,13 @@ <entityField>#ENTITY</entityField> <fields> <entityFieldLink> - <name>bfec3b64-2cc5-4e51-b321-6d898ddaca9e</name> + <name>42a373cb-956d-4c0a-8a4e-ece1b64c9a95</name> <entityField>FILEUPLOAD</entityField> </entityFieldLink> <entityFieldLink> <name>88c2c956-966a-4ad9-b744-ccb729b024bc</name> <entityField>KEY</entityField> </entityFieldLink> - <entityFieldLink> - <name>14bd4671-d876-430e-8574-277118395ff0</name> - <entityField>ISACTIVE</entityField> - </entityFieldLink> </fields> </genericViewTemplate> </children> diff --git a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod index a4e33a131b80ffae09321355f1d9a5f6e4d9f621..41ffef96290756599469bfd2da5878612c27a6d2 100644 --- a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod +++ b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod @@ -9,32 +9,6 @@ </groupLayout> </layout> <children> - <tableViewTemplate> - <name>Table</name> - <favoriteActionGroup1>tableActions</favoriteActionGroup1> - <entityField>#ENTITY</entityField> - <linkedColumns> - <element>NAME</element> - </linkedColumns> - <columns> - <neonTableColumn> - <name>6a40b78d-422e-4b3f-9d94-c330cf51996d</name> - <entityField>NAME</entityField> - </neonTableColumn> - <neonTableColumn> - <name>5d90aabb-74a9-40f2-bb57-6bf9e5302ed3</name> - <entityField>CATEGORY</entityField> - </neonTableColumn> - <neonTableColumn> - <name>faf08eb7-7076-4872-975d-c38a399a1b98</name> - <entityField>VERSION</entityField> - </neonTableColumn> - <neonTableColumn> - <name>1e1ed75f-a1de-4abb-b81e-6033de520f32</name> - <entityField>ISACTIVE</entityField> - </neonTableColumn> - </columns> - </tableViewTemplate> <tilesViewTemplate> <name>Tiles</name> <iconField>DIAGRAM</iconField> @@ -42,6 +16,7 @@ <subtitleField>KEY</subtitleField> <descriptionField>DESCRIPTION</descriptionField> <infoTopField>VERSION_TITLE</infoTopField> + <infoBottomField>CATEGORY</infoBottomField> <favoriteActionGroup1>tableActions</favoriteActionGroup1> <entityField>#ENTITY</entityField> <isCreatable v="true" /> diff --git a/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod b/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod index 4262fe6771f9726d021ba92d834d13feabf867b8..4b0e3f5af68d91af8afee1ca6aeebdae57f21584 100644 --- a/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod +++ b/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod @@ -13,7 +13,9 @@ <iconField>DIAGRAM</iconField> <titleField>NAME</titleField> <subtitleField>KEY</subtitleField> + <favoriteAction1>editWorkflow</favoriteAction1> <entityField>#ENTITY</entityField> + <isEditable v="false" /> </cardViewTemplate> <genericViewTemplate> <name>Generic</name> @@ -34,7 +36,7 @@ <entityField>ISACTIVE</entityField> </entityFieldLink> <entityFieldLink> - <name>013085a5-c833-42ee-b907-aa268edb1ea3</name> + <name>f5a0addd-becc-4c4f-b381-65612127acaf</name> <entityField>CATEGORY</entityField> </entityFieldLink> <entityFieldLink> diff --git a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod index dfe704578f3cd72c2f5a7a91dbebd2eb8b584ae9..ac1fc2fe5b40ed6fae98393f22b27d7f48a5a679 100644 --- a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod +++ b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod @@ -3,7 +3,6 @@ <name>WorkflowInstanceEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod b/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..b03c3813ded7ad328d49edd4da3f22ecd3656dac --- /dev/null +++ b/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>WorkflowModelEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <isOverlay v="true" /> + <overlayOrientation>PORTRAIT</overlayOrientation> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Generic</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>9dfd354c-7745-4b84-a69a-34308e9186f0</name> + <entityField>NAME</entityField> + </entityFieldLink> + <entityFieldLink> + <name>70c10b5d-3058-45b8-9a24-69a91259f058</name> + <entityField>KEY</entityField> + </entityFieldLink> + <entityFieldLink> + <name>86472557-ab8c-475c-8e83-c9423e5125b4</name> + <entityField>DESCRIPTION</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod b/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..051bb98fe84d47bcf0d18813b114e93eedf42076 --- /dev/null +++ b/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>WorkflowModelLookup_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>Table</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>1860eca1-6350-4071-b36a-c57397c60a24</name> + <entityField>NAME</entityField> + </neonTableColumn> + <neonTableColumn> + <name>187c1d79-44d9-4028-8c1a-5f7f3df6501b</name> + <entityField>KEY</entityField> + </neonTableColumn> + <neonTableColumn> + <name>dc760770-4bd5-4ba8-babf-b7c2965200c3</name> + <entityField>DESCRIPTION</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod b/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod index bf6907e20d7e9805e462c2233ff84e46a1065a87..43ae59380522779a39c44e344ba411241ee7fe88 100644 --- a/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod +++ b/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod @@ -3,7 +3,6 @@ <name>WorkflowSignalEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <noneLayout> diff --git a/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod b/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod index c1e9a0b55f83eb9f3662ed93d91a1fe0605bf622..e25ada40292a5745c12a15e959f0f61700355c2b 100644 --- a/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod +++ b/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod @@ -3,7 +3,6 @@ <name>WorkflowTaskForm_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <boxLayout> diff --git a/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod b/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod index 91894f246d056e10badb8bae17da9c7a24f6f0a0..bf61df8ebf51aed671e004a5ee13daa2663b5512 100644 --- a/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod +++ b/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod @@ -3,7 +3,6 @@ <name>WorkflowTaskPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> - <isOverlay v="true" /> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> <headerFooterLayout> 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/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod index cb973daa809b01fb7c5410887cac797840a2fddb..2c486ae8a6b6c5f2b17883cfe535de5f164d468e 100644 --- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod +++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod @@ -100,7 +100,7 @@ <customStringProperty> <name>workflow.modelerUrl</name> <description></description> - <property>http://localhost:8080/flowable-modeler/#/processes</property> + <property>http://localhost:8080/flowable-modeler/</property> </customStringProperty> </customProperties> <customConfigProperties> diff --git a/process/Address_lib/process.js b/process/Address_lib/process.js index d68036c8e52c9e9d3b2248892b57a104eced03bb..ecd34ddbbcc7821e3781a340ba8e55588bfcb4ea 100644 --- a/process/Address_lib/process.js +++ b/process/Address_lib/process.js @@ -168,12 +168,12 @@ function fetchAddressData( pCondition, pConfig, AddressID, pPerson) case Placeholder.types.SQLPART: //sql part fields.push( pConfig[i].valueDefinition ); output.push([pos++, pConfig[i].type]); - header.push( pConfig[i].placeholderName ); + header.push( pConfig[i].getFormattedName() ); break; case Placeholder.types.SQLPARTFUNCTION: // adito SQL functions fields.push("(" + pConfig[i].valueDefinition.call() + ")"); output.push([pos++, pConfig[i].type]); - header.push( pConfig[i].placeholderName ); + header.push( pConfig[i].getFormattedName() ); break; case Placeholder.types.ADDRESSFORMAT: if ( posaddrfields == -1 ) @@ -184,7 +184,7 @@ function fetchAddressData( pCondition, pConfig, AddressID, pPerson) pos += addrfields.length; } output.push([posaddrfields, pConfig[i].type, pConfig[i].valueDefinition]); - header.push( pConfig[i].placeholderName ); + header.push( pConfig[i].getFormattedName() ); break; case "afunction": // adito functions @@ -192,7 +192,7 @@ function fetchAddressData( pCondition, pConfig, AddressID, pPerson) { fields.push( "'" + evalScript("Address_lib.fetchAddressData", vars.resolveVariables(pConfig[i].valueDefinition), {}, ["Attribute_lib", "Sql_lib", "Keyword_lib", "Person_lib"], true).replace(new RegExp("'","g"), "''") + "'" ); output.push([pos++, pConfig[i].type]); - header.push( pConfig[i].placeholderName ); + header.push( pConfig[i].getFormattedName() ); } catch( err ) { @@ -209,7 +209,7 @@ function fetchAddressData( pCondition, pConfig, AddressID, pPerson) configJSON.localVars]); output.push([pos++, pConfig[i].type]); - header.push( pConfig[i].placeholderName ); + header.push( pConfig[i].getFormattedName() ); break; } } diff --git a/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js index fba1180f3e320d66a2c09961d1eba5cfc49380bd..f64477390ffc247d5e6fd9768f2840dae133c1e1 100644 --- a/process/AttributeFilter_lib/process.js +++ b/process/AttributeFilter_lib/process.js @@ -1,3 +1,4 @@ +import("Util_lib"); import("system.SQLTYPES"); import("system.translate"); import("Entity_lib"); @@ -222,7 +223,7 @@ AttributeFilterExtensionMaker.getFilterCondition = function(pObjectType, pFilter condition = newWhere(["AB_ATTRIBUTERELATION", dbField], SqlUtils.escapeVars(pRawValue), pOperatorName == "=" ? SqlBuilder.EQUAL() : SqlBuilder.NOT_EQUAL()); else { - condition = pCondition.replace(new RegExp(pColumnPlaceholder, "g"), dbField); + condition = StringUtils.replaceAll(pCondition, pColumnPlaceholder, 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/DocumentTemplate_lib.aod b/process/DocumentTemplate_lib/DocumentTemplate_lib.aod index 9f4fede55f117c4fea142e84087e26eb4bd91be1..f7dede09487b8661444e1673ef88ecca8b415c21 100644 --- a/process/DocumentTemplate_lib/DocumentTemplate_lib.aod +++ b/process/DocumentTemplate_lib/DocumentTemplate_lib.aod @@ -2,6 +2,7 @@ <process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> <name>DocumentTemplate_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/DocumentTemplate_lib/documentation.adoc</documentation> <process>%aditoprj%/process/DocumentTemplate_lib/process.js</process> <variants> <element>LIBRARY</element> diff --git a/process/DocumentTemplate_lib/documentation.adoc b/process/DocumentTemplate_lib/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..8f3be0327a57684226b9ef02336bcd09a0f8d9e5 --- /dev/null +++ b/process/DocumentTemplate_lib/documentation.adoc @@ -0,0 +1,64 @@ += DocumentTemplate + +This document explains the functions of the class `DocumentTemplate` and how to use it. Note that it does not cover every single method with the respective parameters in detail. + +== Introduction + +A DocumentTemplate is a template for generating individualized documents by filling the placeholders inside the template with data. It supports the following file types and formats: + +* txt +* html +* eml +* odt +* docx +* docm +* simple strings + +== Usage + +=== Creating a new DocumentTemplate instance + +The most basic way to create a DocumentTemplate is by simply using the constructor, for example: +[source,js] +---- +var myTemplate = new DocumentTemplate(myEncodedHtml, DocumentTemplate.types.HTML); +---- + +The parameters `pTemplateContent` and `pType` are mandatory, the others are not required for every use case. A new instance of DocumentTemplate can also be created by using these static functions for special situations: + +* *DocumentTemplate.fromUpload:* Constructs a template from the given FileUpload object. +* *DocumentTemplate.loadTemplate:* Creates a template from a document stored in the database. + +=== Generating a document and filling placeholders + +Placeholders can be replaced by invoking the method `.getReplacedContent`. It only takes one parameter `pReplacements` which has to be an object with the placeholder as keys and the replacement data as values, like this: +[source,js] +---- +var replacements = { + "{@firstname@}" : "Joseph", + "{@lastname@}" : "Juster" +}; +var myContent = myTemplate.getReplacedContent(replacements); +---- + +It's also possible to use contact data with the functions `.getReplacedContentByContactId` (for a single contactId) and `.getReplacedContentByContactIds` (for multiple contactIds at once). If these functions are used, all placeholders defined in the libraries `Placeholder_lib` and `CustomPlaceholder_lib` are available. +To add extra placeholders that are not necessarily related to the contact, you can put them in the parameter `pAdditionalPlaceholders` which has to be an array of Placeholder objects. For placeholders unrelated to contact data, use these Placeholder types: + +* *FIXEDVALUE:* A fixed value that is stored inside the Placeholder object, useful for data that is already available when you define the placeholder (e. g. entity fields). +* *CALLBACKFUNCTION:* A callback-function inside the Placeholder object that returns the replacement value, it will be called with the contactId as first argument. You can use this type to resolve the placeholder depending on the contactId or to avoid unnecessary code execution because the function will only be called if the placeholder is actually used inside the template. + +Here's an example for the usage of `pAdditionalPlaceholders`: +[source,js] +---- +var getProductCountFn = function (pContactId) +{ + ... //fancy code +} +var additionalPlaceholders = [ + new Placeholder("offercode", Placeholder.types.FIXEDVALUE, vars.get("$field.FullOfferCode")), + new Placeholder("productCount", Placeholder.types.CALLBACKFUNCTION, getProductCountFn) +]; +var myContent = myTemplate.getReplacedContentByContactId(vars.get("$field.CONTACTID"), additionalPlaceholders); +---- + +//TODO: explain subtemplates, serial letters, (bulk-)emails \ No newline at end of file diff --git a/process/DocumentTemplate_lib/process.js b/process/DocumentTemplate_lib/process.js index c302876d0f8ad58c9262a23d9c596095bb9d9372..4ced5f9f03a66cdd93fd5b3836ab474107fa8017 100644 --- a/process/DocumentTemplate_lib/process.js +++ b/process/DocumentTemplate_lib/process.js @@ -23,19 +23,12 @@ import("Keyword_lib"); import("Placeholder_lib"); import("Email_lib"); import("MimeType_lib"); +import("Util_lib"); /** * Object for working with document templates, holds the content and type of the template. * Provides functions to replace placeholders in the content. * - * @class - */ -var DocumentTemplate = (function () -{ - -/** - * constructor for DocumentTemplate - * * @param {String} pTemplateContent content, as base64 string (except for DocumentTemplate.types.PLAIN, then it's a normal string) * @param {String} pType type of the template, use the DocumentTemplate.types constants here * @param {String} [pFilename=undefined] file name of the template @@ -43,19 +36,24 @@ var DocumentTemplate = (function () * @param {String} [pTemplateId=undefined] Provide it, if you have it, because this enables the template to load attachments associated by this ID * @param {String} [pMimeType=undefined] mimetype of the content. Only an additional information. Not mandatory. */ -function DocumentTemplate(pTemplateContent, pType, pFilename, pResolveSubtemplates, pTemplateId, pMimeType) +function DocumentTemplate (pTemplateContent, pType, pFilename, pResolveSubtemplates, pTemplateId, pMimeType) { this.content = pTemplateContent; this.type = pType; + this.options = DocumentTemplate.types.getDefaultTypeOptions(pType); this.filename = pFilename; this.templateId = pTemplateId; this.mimeType = pMimeType; - this._stringCache = null; this._attachmentCache = null; - this._subtemplatedContent = null; + this._subtemplateResolvedContent = null; + //cache used for .toString + this._stringCache = { + onlyContent : null, + withSubtemplatesResolved : null + }; if (pResolveSubtemplates) - this._resolveEmbeddedTemplate(); + this._resolveSubtemplates(); } /** @@ -63,18 +61,40 @@ function DocumentTemplate(pTemplateContent, pType, pFilename, pResolveSubtemplat */ DocumentTemplate.prototype.toString = function (pWithSubtemplates) { - if (this._stringCache == null) + var stringCachePosition = pWithSubtemplates ? "withSubtemplatesResolved" : "onlyContent"; + if (this._stringCache[stringCachePosition] == null) { - var content = this._getTemplatedContent(pWithSubtemplates); + var content = pWithSubtemplates && this._subtemplateResolvedContent || this.content; if (this.type == DocumentTemplate.types.PLAIN) - this._stringCache = content; + this._stringCache[stringCachePosition] = content; else - this._stringCache = text.parseDocument(content); + this._stringCache[stringCachePosition] = text.parseDocument(content); } - return this._stringCache; + return this._stringCache[stringCachePosition]; +} + +/** + * Defines options for the DocumentTemplate, the given options will be appended to the existing options and options that + * already exist will be overridden. The options that can be used may vary depending on the type of the DocumentTemplate, + * that's why they are wrapped inside an object. + * + * @param {Object} pOptions The options to set for the object. Some options only affect special types, for example: + * <ul> + * <li>base64 (boolean): If the replaced content should be base 64 encoded (does not work for docx and odt, these are always encoded)</li> + * <li>onlyBody (boolean): If set to true, only use the body of an eml (option only for eml)</li> + * </ul> + * @return {DocumentTemplate} current object + */ +DocumentTemplate.prototype.setOptions = function (pOptions) +{ + Object.assign(this.options, pOptions); + return this; } -DocumentTemplate.prototype._resolveEmbeddedTemplate = function () +/** + * resolves sub-template placeholders + */ +DocumentTemplate.prototype._resolveSubtemplates = function () { // currently we support only txt and html as others would need special caution. if (this.content != null && (this.type == DocumentTemplate.types.TXT || this.type == DocumentTemplate.types.HTML)) @@ -105,21 +125,15 @@ 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(new RegExp(PlaceholderUtils.formatPlaceholder(pPlaceholder[0]), "g"), pPlaceholder[1]) + placeholders.forEach(function(pPlaceholder) + { + replacedContent = StringUtils.replaceAll(replacedContent, PlaceholderUtils.formatPlaceholder(pPlaceholder[0]), pPlaceholder[1], "g"); }, this); this._subtemplatedContent = util.encodeBase64String(replacedContent); } } -DocumentTemplate.prototype._getTemplatedContent = function (pWithSubtemplates) { - if (this._subtemplatedContent != null && pWithSubtemplates) - return this._subtemplatedContent; - else - return this.content; -} - /** * @return {DocumentTemmplate[]} if the templateId exists, it returns all attachments associated by the id as DocumentTemplate array else it just returns an empty array. */ @@ -221,7 +235,7 @@ DocumentTemplate.types = { * chooses the type depending on the extension in the metadata. If the extension doesn't work, try mimetype * @param {String[]} pBinaryMetadata the binary metadata from system.db */ - fromBinaryMetadata: function(pBinaryMetadata) + fromBinaryMetadata : function (pBinaryMetadata) { let filename = pBinaryMetadata[db.BINARY_FILENAME].split("."); let type = DocumentTemplate.types.fromFileExtension(filename[filename.length - 1]); @@ -229,6 +243,42 @@ DocumentTemplate.types = { type = DocumentTemplate.types.fromMimeType(pBinaryMetadata[db.BINARY_MIMETYPE]); return type; + }, + /** + * Returns the default options for the given type. + * + * @param {String} pType the type + * @return {Object} object containing the default options + */ + getDefaultTypeOptions : function (pType) + { + switch (pType) + { + case this.EML: + return { + base64 : false, + onlyBody : false, + placeholderRegExp : /\{\s*(=\r?\n)?@(.(?!{@)|(\r?\n))+?@\s*(=\r?\n)?\}/gi, + parsePlaceholderFn : function (pPlaceholder) + { + return pPlaceholder.replace(/\s*(=\r?\n)?/, ""); + } + }; + case this.TXT: + case this.HTML: + return { + base64 : false + }; + case this.DOCX: + case this.DOCM: + return { + startDelimiter : "{@", + endDelimiter : "@}" + }; + case this.ODT: + default: + return {}; + } } }; @@ -339,22 +389,19 @@ DocumentTemplate.getSelectedTemplate = function (pTemplateId, pDocumentUpload, p * replace function for the type. * * @param {Object} pReplacements map, the structure is {placeholder : value} - * @param {Boolean} pEncoded if the replaced content should be base64 encoded - * (doesn't affect odt/docx) - * @param {Boolean} [pEmlOnlyBody=false] if true for eml's only the body is parsed (e.g. for previews. Note that eml-bodies are not editable!) * * @return {String} the replaced content */ -DocumentTemplate.prototype.getReplacedContent = function (pReplacements, pEncoded, pEmlOnlyBody) +DocumentTemplate.prototype.getReplacedContent = function (pReplacements) { // if there exists a _subtemplatedContent we use it because then I assume that the replacements are already based on content + subtemplates - var content = this._getTemplatedContent(true); + var content = this._subtemplateResolvedContent || this.content; switch (this.type) { case DocumentTemplate.types.EML: let emlContent - if (pEmlOnlyBody) + if (this.options.onlyBody) { // get only body and treat it as html (next case) var email = Email.fromRFC(content); @@ -363,8 +410,8 @@ DocumentTemplate.prototype.getReplacedContent = function (pReplacements, pEncode else { emlContent = util.decodeBase64String(content); - emlContent = TemplateHelper._replaceText(emlContent, pReplacements, TemplateHelper._getSpecialRegexp(this)); - if (pEncoded) + emlContent = this._replaceText(emlContent, pReplacements); + if (this.options.base64) emlContent = util.encodeBase64String(emlContent); return emlContent; } @@ -374,18 +421,18 @@ DocumentTemplate.prototype.getReplacedContent = function (pReplacements, pEncode pReplacements[i] = text.text2html(pReplacements[i], false); case DocumentTemplate.types.TXT: let decodedContent = util.decodeBase64String(content); - let encodedContent = TemplateHelper._replaceText(decodedContent, pReplacements, TemplateHelper._getSpecialRegexp(this)); - if (pEncoded) + let encodedContent = this._replaceText(decodedContent, pReplacements); + if (this.options.base64) encodedContent = util.encodeBase64String(encodedContent); return encodedContent; case DocumentTemplate.types.ODT: - return TemplateHelper._getReplacedODT(this, pReplacements); + return this._getReplacedODT(pReplacements); case DocumentTemplate.types.DOCX: case DocumentTemplate.types.DOCM: - return TemplateHelper._getReplacedDOCX(this, pReplacements); + return this._getReplacedDOCX(pReplacements); case DocumentTemplate.types.PLAIN: - let plainText = TemplateHelper._replaceText(this.content, pReplacements, TemplateHelper._getSpecialRegexp(this)); - if (pEncoded) + let plainText = this._replaceText(this.content, pReplacements); + if (this.options.base64) plainText = util.encodeBase64String(plainText); return plainText; default: @@ -395,11 +442,17 @@ DocumentTemplate.prototype.getReplacedContent = function (pReplacements, pEncode /** * replaces the placeholders with data from one contact and returns the result + * + * @param {String} pContactId contact id + * @param {Placeholder[]} pAdditionalPlaceholders Additional placeholders that should be used. You can use placeholders with the + * types FIXEDVALUE and CALLBACKFUNCTION if you want to calculate the replacement values yourself. + * + * @return {String} replaced content */ -DocumentTemplate.prototype.getReplacedContentByContactId = function (pContactId, pEncoded, pEmlOnlyBody) +DocumentTemplate.prototype.getReplacedContentByContactId = function (pContactId, pAdditionalPlaceholders) { - var replacements = TemplateHelper._getReplacementsByContactIds(this, [pContactId]); - var content = this.getReplacedContent(replacements[pContactId], pEncoded, pEmlOnlyBody); + var replacements = this.getReplacementsByContactIds([pContactId], pAdditionalPlaceholders)[pContactId]; + var content = this.getReplacedContent(replacements); return content; } @@ -408,17 +461,18 @@ DocumentTemplate.prototype.getReplacedContentByContactId = function (pContactId, * replaces the placeholders with data from the contacts and returns the result * * @param {Array} pContactIds contact ids - * @param {boolean} pEncoded if the replaced content should be base64 encoded + * @param {Placeholder[]} pAdditionalPlaceholders Additional placeholders that should be used. You can use placeholders with the + * types FIXEDVALUE and CALLBACKFUNCTION if you want to calculate the replacement values yourself. * * @return {Object} replaced content for every contactId */ -DocumentTemplate.prototype.getReplacedContentByContactIds = function (pContactIds, pEncoded) +DocumentTemplate.prototype.getReplacedContentByContactIds = function (pContactIds, pAdditionalPlaceholders) { - var replacements = TemplateHelper._getReplacementsByContactIds(this, pContactIds); + var replacements = this.getReplacementsByContactIds(pContactIds, pAdditionalPlaceholders); var contents = {}; for (let contactId in replacements) { - contents[contactId] = this.getReplacedContent(replacements[contactId], pEncoded); + contents[contactId] = this.getReplacedContent(replacements[contactId]); } return contents; } @@ -430,6 +484,8 @@ DocumentTemplate.prototype.getReplacedContentByContactIds = function (pContactId * @param {Array} pContactIds contact ids * @param {Object[][][]} pTableData Table data for the document, as a three-dimensional array * of objects (dimensions are: document, table in that document, rows of the table). For the format, see example. + * @param {Placeholder[]} pAdditionalPlaceholders Additional placeholders that should be used. You can use placeholders with the + * types FIXEDVALUE and CALLBACKFUNCTION if you want to calculate the replacement values yourself. * * @example * var contacts = newSelect("FIRSTNAME, LASTNAME") @@ -456,15 +512,16 @@ DocumentTemplate.prototype.getReplacedContentByContactIds = function (pContactId * * @return {Object} the content of the replaced ODT */ -DocumentTemplate.prototype.getSerialLetterByContactIds = function (pContactIds, pTableData) +DocumentTemplate.prototype.getSerialLetterByContactIds = function (pContactIds, pTableData, pAdditionalPlaceholders) { if (this.type == DocumentTemplate.types.ODT) { - let replacements = TemplateHelper._getReplacementsByContactIds(this, pContactIds); - let replaceArray = []; - for (let i = 0, l = pContactIds.length; i < l; i++) - replaceArray.push(replacements[pContactIds[i]]); - return TemplateHelper._getReplacedODT(this, replaceArray, pTableData); + let replacements = this.getReplacementsByContactIds(pContactIds, pAdditionalPlaceholders); + let replaceArray = pContactIds.map(function (contactId) + { + return replacements[contactId]; + }); + return this._getReplacedODT(replaceArray, pTableData); } question.showMessage(DocumentTemplate.getSerialLetterODTOnlyMessage(), question.INFORMATION, translate.text("Action not supported")) @@ -480,15 +537,18 @@ DocumentTemplate.getSerialLetterODTOnlyMessage = function() * Replaces the placeholders with data from the contacts and returns the resulting Emails. * * @param {Array} pContactIds contact ids + * @param {Placeholder[]} pAdditionalPlaceholders Additional placeholders that should be used. You can use placeholders with the + * types FIXEDVALUE and CALLBACKFUNCTION if you want to calculate the replacement values yourself. * * @return {Object} Object containing the contact ids as keys and the corresponding Email * objects as values */ -DocumentTemplate.prototype.getReplacedEmailsByContactIds = function (pContactIds) +DocumentTemplate.prototype.getReplacedEmailsByContactIds = function (pContactIds, pAdditionalPlaceholders) { var emailObjects = {}; var isEML = this.type == DocumentTemplate.types.EML; - var emailContents = this.getReplacedContentByContactIds(pContactIds, isEML); + this.setOptions({base64 : isEML}); + var emailContents = this.getReplacedContentByContactIds(pContactIds, pAdditionalPlaceholders); for (contactId in emailContents) { @@ -512,15 +572,18 @@ DocumentTemplate.prototype.getReplacedEmailsByContactIds = function (pContactIds } /** - * Provides functions for the DocumentTemplate object that aren't accessible from outside + * replaces placeholders in the given string */ -function TemplateHelper () {} -TemplateHelper._replaceText = function (pText, pReplacements, pSpecialCharFilterRegexpPart) +DocumentTemplate.prototype._replaceText = function (pText, pReplacements) { - if (pSpecialCharFilterRegexpPart == undefined) pSpecialCharFilterRegexpPart = ""; + var placeholderRegExp = this.options.placeholderRegExp || PlaceholderUtils.getRegexpMatchAll(); + var that = this; - pText = pText.replace(new RegExp(PlaceholderUtils.getRegexpMatchAll(pSpecialCharFilterRegexpPart), "gi"), function(pFound) { - let foundFiltered = pFound.replace(new RegExp(pSpecialCharFilterRegexpPart, "gi"),""); + pText = pText.replace(placeholderRegExp, function (pFound) + { + let foundFiltered = typeof that.options.parsePlaceholderFn === "function" + ? that.options.parsePlaceholderFn(pFound) + : pFound; return pReplacements[foundFiltered] ? pReplacements[foundFiltered] : pFound; }); @@ -528,70 +591,89 @@ TemplateHelper._replaceText = function (pText, pReplacements, pSpecialCharFilter } /** - * @param {DocumentTemplate} pTemplate * @param {String[]} pForcedPlaceholders these placeholders are always loaded - * @return {Object[]} all placeholders needed in this template or null, if + * @param {Placeholder[]} pAdditionalPlaceholders Additional placeholders that should be used. You can use placeholders with the + * types FIXEDVALUE and CALLBACKFUNCTION if you want to calculate the replacement values yourself. + * @return {Object[]} all placeholders needed in this template * @private */ -TemplateHelper._getRequiredPlaceholders = function (pTemplate, pForcedPlaceholders) +DocumentTemplate.prototype._getRequiredPlaceholders = function (pForcedPlaceholders, pAdditionalPlaceholders) { - var content = ""; - content = pTemplate.toString(true); - - // get special regexp (e.g. to filter '=' in emls) - var filterRegexpPart = TemplateHelper._getSpecialRegexp(pTemplate); + var content = this.toString(true); var placeholders = PlaceholderUtils.getPlaceholders(); + if (pAdditionalPlaceholders) + placeholders = placeholders.concat(pAdditionalPlaceholders); - var placeholderCleanRegexp = new RegExp(filterRegexpPart, "gi"); - // get all placeholders which matches the placeholder pattern - var foundPlaceholders = content.match(new RegExp(PlaceholderUtils.getRegexpMatchAll(TemplateHelper._getSpecialRegexp(pTemplate)), "gi")); + var foundPlaceholders = content.match(this.options.placeholderRegExp || PlaceholderUtils.getRegexpMatchAll()); if (foundPlaceholders == null) foundPlaceholders = []; // clean placeholder from the spechial strings (e.g. to filter '=' in emls) - foundPlaceholders = foundPlaceholders.map(function(pFound) { - return pFound.replace(placeholderCleanRegexp,""); - }); + if (typeof this.options.parsePlaceholderFn === "function") + foundPlaceholders = foundPlaceholders.map(this.options.parsePlaceholderFn); // filter the possible placeholders by all placeholders found - placeholders = placeholders.filter(function(pPlaceholder) + placeholders = placeholders.filter(function(placeholder) { - return foundPlaceholders.indexOf(pPlaceholder.placeholderName) != -1 || pForcedPlaceholders.indexOf(pPlaceholder.placeholderName) >= 0; + return foundPlaceholders.includes(placeholder.getFormattedName()) || pForcedPlaceholders.includes(placeholder.getFormattedName()); }); return placeholders; } /** - * Builds an object with the placeholder data for multiple contacts + * Builds an object with the placeholder replacement data for multiple contacts * - * @param {DocumentTemplate} pTemplate document template * @param {Array} pContactIds contact ids + * @param {Placeholder[]} pAdditionalPlaceholders Additional placeholders that should be used. You can use placeholders with the + * types FIXEDVALUE and CALLBACKFUNCTION if you want to calculate the replacement values yourself. * * @return {Object} Object containing the data. The structure is like {contactId : {placeholderName : replacementValue, ...}, ...} - * - * @private */ -TemplateHelper._getReplacementsByContactIds = function (pTemplate, pContactIds) +DocumentTemplate.prototype.getReplacementsByContactIds = function (pContactIds, pAdditionalPlaceholders) { - var config = TemplateHelper._getRequiredPlaceholders(pTemplate, ["{@firstname@}", "{@lastname@}"]); + var placeholders = this._getRequiredPlaceholders(["{@firstname@}", "{@lastname@}"], pAdditionalPlaceholders); + var contactPlaceholders = []; + var additionalPlaceholders = {}; + placeholders.forEach(function (placeholder) + { + switch (placeholder.type) + { + case Placeholder.types.ADDRESSFORMAT: + case Placeholder.types.SQLPART: + case Placeholder.types.SQLPARTFUNCTION: + contactPlaceholders.push(placeholder); + break; + case Placeholder.types.FIXEDVALUE: + case Placeholder.types.CALLBACKFUNCTION: + additionalPlaceholders[placeholder.getFormattedName()] = placeholder; + } + }); var contactIdPlaceholder = new Placeholder("contactId", Placeholder.types.SQLPART, "CONTACT.CONTACTID"); - config = [contactIdPlaceholder].concat(config); - - var addressData = getAddressesData(pContactIds, config, EmployeeUtils.getCurrentContactId()); //TODO: add sender selection + contactPlaceholders = [contactIdPlaceholder].concat(contactPlaceholders); + + var addressData = getAddressesData(pContactIds, contactPlaceholders, EmployeeUtils.getCurrentContactId()); //TODO: add sender selection var replacements = {}; var placeholderNames = addressData[0]; var contactIdIndex = placeholderNames.indexOf(contactIdPlaceholder.toString()); for (let i = 1; i < addressData.length; i++) { let contactId = addressData[i][contactIdIndex]; - for (let ii = 0, ll = placeholderNames.length; ii < ll; ii++) + if (!(contactId in replacements)) + replacements[contactId] = {}; + placeholderNames.forEach(function (placeholderName, ii) { - if (!(contactId in replacements)) - replacements[contactId] = {}; - replacements[contactId][placeholderNames[ii]] = addressData[i][ii]; + replacements[contactId][placeholderName] = addressData[i][ii]; + }); + for (let placeholderName in additionalPlaceholders) + { + var placeholder = additionalPlaceholders[placeholderName]; + if (placeholder.type === Placeholder.types.FIXEDVALUE) + replacements[contactId][placeholderName] = placeholder.valueDefinition; + else if (placeholder.type === Placeholder.types.CALLBACKFUNCTION) + replacements[contactId][placeholderName] = placeholder.valueDefinition(contactId); } } return replacements; @@ -600,7 +682,6 @@ TemplateHelper._getReplacementsByContactIds = function (pTemplate, pContactIds) /* * replaces a given Odt-File on the server and returns the replaced base64-file * - * @param {DocumentTemplate} pTemplate document template * @param {Object} pReplacements map of placeholders and replacements * @param {Array} pTableData * @@ -608,22 +689,32 @@ TemplateHelper._getReplacementsByContactIds = function (pTemplate, pContactIds) * * @private */ -TemplateHelper._getReplacedODT = function (pTemplate, pReplacements, pTableData) +DocumentTemplate.prototype._getReplacedODT = function (pReplacements, pTableData) { - var filename = pTemplate.filename; + var filename = this.filename; if (!filename) filename = "dummyname.odt"; + var that = this; + //save the file on the server so it can be unzipped via pack.getFromZip var serverFilePath = vars.get("$sys.servertemp") + "/clientid_" + (vars.exists("$sys.clientid") ? vars.get("$sys.clientid") : 0) + "/" + util.getNewUUID() + "/" + filename.replace(/\\/g, "/"); - fileIO.storeData(serverFilePath, pTemplate.content, util.DATA_BINARY, false); - if (!_replaceODTFile(pReplacements, serverFilePath, pTableData)) - return null; + fileIO.storeData(serverFilePath, this.content, util.DATA_BINARY, false); + var replacedFileData = null; + try + { + if (!_replaceODTFile(pReplacements, serverFilePath, pTableData)) + return null; - var replacedFileData = fileIO.getData(serverFilePath, util.DATA_BINARY); - fileIO.remove(serverFilePath); + replacedFileData = fileIO.getData(serverFilePath, util.DATA_BINARY); + + } + finally + { + fileIO.remove(serverFilePath); + } return replacedFileData; @@ -641,7 +732,7 @@ TemplateHelper._getReplacedODT = function (pTemplate, pReplacements, pTableData) var senderRelId = EmployeeUtils.getCurrentContactId(); if (senderRelId == null) return false; - if (pReplacements.length === undefined) + if (!Array.isArray(pReplacements)) pReplacements = [pReplacements]; if (!pTableData) pTableData = []; @@ -669,8 +760,8 @@ TemplateHelper._getReplacedODT = function (pTemplate, pReplacements, pTableData) */ for (let placeholder in replacements) { - currentBody = currentBody.replace(new RegExp(placeholder, "ig"), - replacements[placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&")); + currentBody = StringUtils.replaceAll(currentBody, placeholder, + replacements[placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&"), "ig"); } @@ -695,7 +786,7 @@ TemplateHelper._getReplacedODT = function (pTemplate, pReplacements, pTableData) for (let rowIndex = 0; rowIndex < tableData.length; rowIndex++) { let tableRowData = tableData[rowIndex]; - currentBody += TemplateHelper._replaceText(tableRow, tableRowData); + currentBody += that._replaceText(tableRow, tableRowData); } currentBody += afterTable; } @@ -709,8 +800,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(new RegExp(placeholder, "ig"), - pReplacements[0][placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&")); + styles = StringUtils.replaceAll(styles, placeholder, + pReplacements[0][placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&"), "ig"); } pack.addToZip(pODTFileName, "styles.xml", util.encodeBase64String(styles)); return true; @@ -722,39 +813,25 @@ TemplateHelper._getReplacedODT = function (pTemplate, pReplacements, pTableData) /* * This function is used to replace placeholders via DocXTemplater * - * @param {DocumentTemplate} pTemplate document template * @param {Object} pReplacements - Must contain an object, which holds the placeholders * * @return {String} returns the modified document in a BASE64 coded string * * @private */ -TemplateHelper._getReplacedDOCX = function (pTemplate, pReplacements) +DocumentTemplate.prototype._getReplacedDOCX = function (pReplacements) { var replacements = {}; + var startDelimiter = this.options.startDelimiter; + var endDelimiter = this.options.endDelimiter; for (let placeholder in pReplacements) //removes the prefix and postfix, the process needs it like this - replacements[placeholder.slice(2, -2)] = pReplacements[placeholder]; + replacements[placeholder.slice(startDelimiter.length, -endDelimiter.length)] = pReplacements[placeholder]; - var documentData = DocxtemplaterUtils.generateDocument(pTemplate.content, replacements, "{@", "@}"); + var documentData = DocxtemplaterUtils.generateDocument(this.content, replacements, startDelimiter, endDelimiter); return documentData; } -TemplateHelper._getSpecialRegexp = function (pTemplate) -{ - switch (pTemplate.type) - { - case DocumentTemplate.types.EML: - return "\\s*(=\\r?\\n)?"; - default: - return ""; - } -} - - return DocumentTemplate; - -})(); - /** * functions for working with letters (mails) */ @@ -772,7 +849,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 9e6e4e7557ba794a5a994896ca42545ec4c25c7b..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 = []; diff --git a/process/Email_lib/process.js b/process/Email_lib/process.js index 2393fee4b38cea9c67566988bf561a3c8a119949..a8645c40d5c729a1546a105048f48020e1369931 100644 --- a/process/Email_lib/process.js +++ b/process/Email_lib/process.js @@ -30,7 +30,7 @@ function EmailWritingUtils () {} * @param {String} [pEmailFilename] filename of the email. * @return {Array} the eml document as array with [filename, base64] */ -EmailWritingUtils.openMailTemplate = function (pToRecipients, pSenderContactId, pTemplateId, pRecipientContactId, pBindata, pAttachments, pSubject, pEmailFilename) +EmailWritingUtils.openMailTemplate = function (pToRecipients, pSenderContactId, pTemplateId, pRecipientContactId, pBindata, pAttachments, pSubject, pEmailFilename, pAdditionalPlaceholders) { if (pToRecipients && typeof(pToRecipients) == "string") pToRecipients = [pToRecipients]; @@ -39,7 +39,7 @@ EmailWritingUtils.openMailTemplate = function (pToRecipients, pSenderContactId, if (pTemplateId || (pBindata.bindata != "" && pBindata.bindata != null)) { - email = Email.fromTemplate(pTemplateId, pRecipientContactId, pBindata); + email = Email.fromTemplate(pTemplateId, pRecipientContactId, pBindata, pAdditionalPlaceholders); if (!email) email = new Email(); } @@ -76,21 +76,23 @@ EmailWritingUtils.openMailTemplate = function (pToRecipients, pSenderContactId, * @param {String} pNotificationMsg message which will be shown after the operation is done. * @param {String} pComingFrom source from where you started (e.g. "Person", "Organisation" ) * @param {String} pEmailFilename optional file name of the email. + * @param {String} [pAdditionalPlaceholders] additional placeholders for the email */ -EmailWritingUtils.openNewMail = function (pToContactId, pToEmailAddress, pComingFrom, pAttachmentArray, pNotificationMsg, pEmailFilename) +EmailWritingUtils.openNewMail = function (pToContactId, pToEmailAddress, pComingFrom, pAttachmentArray, pNotificationMsg, pEmailFilename, pAdditionalPlaceholders) { var params = { "ContactId_param" : pToContactId, "Attachments_param" : JSON.stringify(pAttachmentArray), "ComingFrom_param" : pComingFrom, "NotificationMsg_param" : pNotificationMsg, - "EmailFilename" : pEmailFilename + "EmailFilename" : pEmailFilename, + "AdditionalPlaceholders_param" : JSON.stringify(pAdditionalPlaceholders) }; 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 () @@ -107,14 +109,15 @@ EmailWritingUtils.getMailbridgeAddress = function () * @param {Array} pReportArray array with reports. * @param {String} pNotificationMsg message which will be shown after the operation is done. * @param {String} pEmailFilename optional file name of the email. + * @param {String} [pAdditionalPlaceholders] additional placeholders for the email * Report have to be a object with these attrs: content (base64 encoded report), contentType (mimeType of the report), filename (complete filename with filending) */ -EmailWritingUtils.sendReportAsMail = function (pRecipient, pReportArray, pComingFrom, pNotificationMsg, pEmailFilename) +EmailWritingUtils.sendReportAsMail = function (pRecipient, pReportArray, pComingFrom, pNotificationMsg, pEmailFilename, pAdditionalPlaceholders) { var pRecpientEmail = newSelect("COMMUNICATION.ADDR").from("COMMUNICATION") .where("COMMUNICATION.CONTACT_ID", pRecipient).and("COMMUNICATION.MEDIUM_ID", "COMMEMAIL").cell(); - EmailWritingUtils.openNewMail(pRecipient, pRecpientEmail, pComingFrom, pReportArray, pNotificationMsg, pEmailFilename); + EmailWritingUtils.openNewMail(pRecipient, pRecpientEmail, pComingFrom, pReportArray, pNotificationMsg, pEmailFilename, pAdditionalPlaceholders); } /** @@ -168,7 +171,7 @@ Email.fromRFC = function (pBase64RFC) * @param {String} [pBindata] (required) * @return {Email} a new Email object */ -Email.fromTemplate = function (pTemplateId, pContactId, pBindata) +Email.fromTemplate = function (pTemplateId, pContactId, pBindata, pAdditionalPlaceholders) { var template; @@ -184,7 +187,7 @@ Email.fromTemplate = function (pTemplateId, pContactId, pBindata) return null; } - return template.getReplacedEmailsByContactIds([pContactId])[pContactId]; + return template.getReplacedEmailsByContactIds([pContactId], pAdditionalPlaceholders)[pContactId]; } /** diff --git a/process/Entity_lib/process.js b/process/Entity_lib/process.js index 2e00cc8b9f1b726bab18bca4603751b12ec94c4d..93360446bcf5ed3682da3749fd127d9c10002322 100644 --- a/process/Entity_lib/process.js +++ b/process/Entity_lib/process.js @@ -1,3 +1,4 @@ +import("system.process"); import("system.translate"); import("system.entities"); import("system.result"); @@ -371,4 +372,149 @@ EntityConsumerUtils.rmInsertedConsumerRows = function(pConsumer) { neon.deleteRecord(pConsumer, row["#UID"]); }); -}; \ No newline at end of file +}; + +/** + * Object that makes getting the current consumer rows of an entity easier. + * + * @param {Array} [pRows] The rows that should be initially loaded into the object, in most cases that would be the stored records. + */ +function EntityConsumerRowsHelper (pRows) +{ + this._uidField = "#UID"; + this._consumer = null; + this._rows = pRows || []; +} + +/** + * Static function for getting all current rows of a consumer with all changes applied (insertedRows, changedRows, deletedRows). + * + * @param {String} pConsumer the name of the consumer + * @param {String[]} pFields the entity fields that should be loaded, this only affects the stored rows that are loaded from the consumer entity + * @return {Object[]} current consumer rows + * @example + * var currentAttributes = EntityConsumerRowsHelper.getCurrentConsumerRows("Attributes", ["AB_ATTRIBUTE_ID", "VALUE"]); + */ +EntityConsumerRowsHelper.getCurrentConsumerRows = function (pConsumer, pFields) +{ + return new EntityConsumerRowsHelper() + .consumer(pConsumer) + .fetchRowsFromConsumer(pFields) + .applyConsumerRowChanges() + .getRows(); +} + +/** + * Sets the consumer that is used for loading the rows. + * + * @param {String} pConsumer the name of the consumer + * @return {EntityConsumerRowsHelper} current object + */ +EntityConsumerRowsHelper.prototype.consumer = function (pConsumer) +{ + this._consumer = pConsumer; + return this; +} + +/** + * Loads the stored rows from the consumer into the object. + * + * @param {String[]} pFields the entity fields that should be loaded + * @return {EntityConsumerRowsHelper} current object + */ +EntityConsumerRowsHelper.prototype.fetchRowsFromConsumer = function (pFields) +{ + if (!pFields) + pFields = [this._uidField]; + else if (pFields.indexOf(this._uidField) === -1) + pFields.push(this._uidField); + + var loadConfig = entities.createConfigForLoadingConsumerRows() + .consumer(this._consumer) + .fields(pFields); + this._rows = entities.getRows(loadConfig); + return this; +} + +/** + * Applies all current changes to the consumer rows (insertedRows, changedRows, deletedRows). + * + * @return {EntityConsumerRowsHelper} current object + */ +EntityConsumerRowsHelper.prototype.applyConsumerRowChanges = function () +{ + var insertedRows = vars.get("$field." + this._consumer + ".insertedRows"); + var changedRows = vars.get("$field." + this._consumer + ".changedRows"); + var deletedRows = vars.get("$field." + this._consumer + ".deletedRows"); + + if (deletedRows && deletedRows.length > 0) + this.removeRows(deletedRows); + if (changedRows && changedRows.length > 0) + this.changeRows(changedRows); + if (insertedRows && insertedRows.length > 0) + this.appendRows(insertedRows); + + return this; +} + +/** + * Adds rows to the object. + * + * @param {Object[]} pRowsToAppend the rows that should be added (insertedRows) + * @return {EntityConsumerRowsHelper} current object + */ +EntityConsumerRowsHelper.prototype.appendRows = function (pRowsToAppend) +{ + this._rows = this._rows.concat(pRowsToAppend); + return this; +} + +/** + * Updates the given rows in the object. + * + * @param {Object[]} pRowsToChange the rows that should be changed, they replace existing rows based on the uid (changedRows) + * @return {EntityConsumerRowsHelper} current object + */ +EntityConsumerRowsHelper.prototype.changeRows = function (pRowsToChange) +{ + var changeCatalog = {}; + pRowsToChange.forEach(function (changedRow) + { + changeCatalog[changedRow[this._uidField]] = changedRow; + }); + this._rows = this._rows.map(function (row) + { + return row[this._uidField] in changeCatalog ? changeCatalog[row[this._uidField]] : row; + }); + return this; +} + +/** + * Removes the given rows from the object. + * + * @param {Object[]} pRowsToRemove the rows that should be removed (deletedRows) + * @return {EntityConsumerRowsHelper} current object + */ +EntityConsumerRowsHelper.prototype.removeRows = function (pRowsToRemove) +{ + var deleteCatalog = {}; + pRowsToRemove.forEach(function (deletedRow) + { + deleteCatalog[deletedRow[this._uidField]] = true; + }); + this._rows = this._rows.filter(function (row) + { + return !deleteCatalog[row[this._uidField]]; + }); + return this; +} + +/** + * Returns all rows inside the object. + * + * @return {Object[]} all the current rows + */ +EntityConsumerRowsHelper.prototype.getRows = function () +{ + return this._rows; +} diff --git a/process/ExportTemplate_lib/process.js b/process/ExportTemplate_lib/process.js index 0272a91c61e87df64f2112201d4bc984e941bcd8..a8c09911551c8dfd933e082febebfac8d3a25dd3 100644 --- a/process/ExportTemplate_lib/process.js +++ b/process/ExportTemplate_lib/process.js @@ -71,7 +71,7 @@ ExportTemplateUtils.buildExport = function (pExportTemplateId, pSelection, pComi var affectedPlaceholders = []; for (var i = 0; i < fields.length; i++) { var placeholderField = placeholders.find(function(placeholder){ - return placeholder.placeholderName == fields[i]; + return placeholder.getFormattedName() == fields[i]; }) if(placeholderField) affectedPlaceholders.push(placeholderField); diff --git a/process/ImporterMappingFunctions_lib/process.js b/process/ImporterMappingFunctions_lib/process.js index a5746a0276df1bc7963975598a51395c10e741b1..27a4b5725fbfc5be68e9d42c5a498c3d132d8a25 100644 --- a/process/ImporterMappingFunctions_lib/process.js +++ b/process/ImporterMappingFunctions_lib/process.js @@ -145,7 +145,7 @@ function iAttribute(pObject) var parent = "NULL"; // select ab_attributeid from AB_ATTRIBUTE where ATTRIBUTE_NAME = 'Subordinate campaign of' and attribute_parent_id is null id = newSelect(ab_attributeId, alias).from(ab_attribute).where(attribute_name, attributes[i]) - .and(attribute_parent_id + "is null").cell(); + .and(attribute_parent_id + " is null").cell(); } else { diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js index b53349181660fe4f0829d5fa6f8b7e03e755f735..2ae7c40b6e90dc3d207d4441cbeb3abeadfd128c 100644 --- a/process/KeywordRegistry_basic/process.js +++ b/process/KeywordRegistry_basic/process.js @@ -284,4 +284,6 @@ $KeywordRegistry.visitPlanEntryStatus$Visitreportcreated = function(){return $Ke $KeywordRegistry.visitRecommendationPrioSource = function(){return $KeywordRegistry._autoPad("VisitRecommendationPrioSource");}; $KeywordRegistry.visitRecommendationPrioSource$visitFrequency = function(){return $KeywordRegistry._autoPad("VISITFREQUENCY");}; -$KeywordRegistry.visitRecommendationPrioSource$manual = function(){return $KeywordRegistry._autoPad("MANUAL");}; \ No newline at end of file +$KeywordRegistry.visitRecommendationPrioSource$manual = function(){return $KeywordRegistry._autoPad("MANUAL");}; + +$KeywordRegistry.workflowCategory = function(){return "WorkflowCategory";}; \ No newline at end of file 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/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/Permission_lib/process.js b/process/Permission_lib/process.js index c7f95aca93b2e9a813bbf10254731ed5f9587cbf..fcb7a7086c7058d276aea897d12d898781e1d61f 100644 --- a/process/Permission_lib/process.js +++ b/process/Permission_lib/process.js @@ -239,13 +239,13 @@ function PermissionUtil () {} } /** - * get the entity for a specific permissionset. + * Get the entity for a specific permissionset. * * @param {String} pSetId the id of the permission set * * @return {String} the entity name or an empty string if not found */ - PermissionUtil._getEntity = function(pSetId) { + PermissionUtil.getEntity = function(pSetId) { return newSelect("ENTITY_ID", alias) .from("ASYS_PERMISSIONSET") .whereIfSet("ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID", pSetId) @@ -260,7 +260,7 @@ function PermissionUtil () {} * @result {String} returns id of default permission of given set. Never 'null', empty string if there is no result. */ PermissionUtil.getPermissionWithoutCond = function(pSetId) { - var emptyCond = PermissionUtil.getEmptyCondString(PermissionUtil._getEntity(pSetId)); + var emptyCond = PermissionUtil.getEmptyCondString(PermissionUtil.getEntity(pSetId)); return newSelect("ASYS_PERMISSIONID", alias) .from("ASYS_PERMISSION") @@ -280,7 +280,7 @@ function PermissionUtil () {} * @result {String[]} returns the ids of permissions with conditions of a given permission set. The result can never be null. */ PermissionUtil.getPermissionWithCond = function(pSetId) { - var emptyCond = PermissionUtil.getEmptyCondString(PermissionUtil._getEntity(pSetId)); + var emptyCond = PermissionUtil.getEmptyCondString(PermissionUtil.getEntity(pSetId)); return newSelect("ASYS_PERMISSIONID", alias) .from("ASYS_PERMISSION") @@ -446,7 +446,7 @@ function PermissionUtil () {} * * @param {String} pParentSetId parent permission set, mandatory * - * @param {String} pCond condition of the permission, empty if no condition + * @param {String} pCond condition of the permission, null if no condition * * @param {String} pCondType condition Type of the permission, should always be 1 * @@ -463,12 +463,15 @@ function PermissionUtil () {} "COND" ]; var permId; + var cond = (pCond == null ? PermissionUtil.getEmptyCondString(PermissionUtil.getEntity(pParentSetId)) : pCond); + if (pPermId != null && pPermId != "" && pPermId != undefined) { permId = pPermId; } else { permId = util.getNewUUID(); } - var vals = [pParentSetId, permId, pCondType, pCond]; + + var vals = [pParentSetId, permId, pCondType, cond]; db.insertData(table, cols, null, vals, alias); return permId; } diff --git a/process/Placeholder_lib/process.js b/process/Placeholder_lib/process.js index d6028a429c4158197cedfdc5f11e8f9ffe68c5e6..4f271fa114efc53ff3bb909ea0d4692436e8cead 100644 --- a/process/Placeholder_lib/process.js +++ b/process/Placeholder_lib/process.js @@ -68,7 +68,7 @@ PlaceholderUtils.getPlaceholders = function (pLocale, pIsExportTemplateField) if(placeholders[i]["target"] != "RECIPIENT"){ placeholders.splice(i, 1); i--} - else if(placeholders[i]["placeholderName"] == "{@letterSalutation@}"){ + else if(placeholders[i].getFormattedName() == "{@letterSalutation@}"){ placeholders.splice(i, 1); i--} } @@ -106,11 +106,12 @@ PlaceholderUtils.getPlaceholders = function (pLocale, pIsExportTemplateField) /** * Returns the placeholder with the required prefix and postfix added. - * This function defines the format for placeholders. + * + * @deprecated */ PlaceholderUtils.formatPlaceholder = function (pPlaceholder) { - return "{@" + pPlaceholder + "@}"; + return Placeholder.getDefaultStartDelimiter() + pPlaceholder + Placeholder.getDefaultEndDelimiter(); } /** @@ -120,14 +121,9 @@ PlaceholderUtils.formatPlaceholder = function (pPlaceholder) * return "my special replacement" * }); */ -PlaceholderUtils.getRegexpMatchAll = function (pSpecialCharFilterRegexpPart) +PlaceholderUtils.getRegexpMatchAll = function () { - if (pSpecialCharFilterRegexpPart == undefined) - { - pSpecialCharFilterRegexpPart = ""; - } - - return "{" + pSpecialCharFilterRegexpPart + "@(.(?!{@)|(\\r?\\n))+?@" + pSpecialCharFilterRegexpPart + "}"; + return /\{@(.(?!{@)|(\r?\n))+?@\}/gi; } /** @@ -141,16 +137,42 @@ PlaceholderUtils.getRegexpMatchAll = function (pSpecialCharFilterRegexpPart) */ function Placeholder (pName, pType, pValueDef, pTarget, pTitle) { - this.placeholderName = PlaceholderUtils.formatPlaceholder(pName); + this.startDelimiter = Placeholder.getDefaultStartDelimiter(); + this.endDelimiter = Placeholder.getDefaultEndDelimiter(); + this.placeholderName = pName; this.type = pType; this.target = pTarget || Placeholder.targets.RECIPIENT; this.valueDefinition = pValueDef; this.title = pTitle; } +/** + * Returns the default placeholder start delimiter + */ +Placeholder.getDefaultStartDelimiter = function () +{ + return "{@"; +} + +/** + * Returns the default placeholder end delimiter + */ +Placeholder.getDefaultEndDelimiter = function () +{ + return "@}"; +} + +/** + * Returns the placeholderName with startDelimiter and endDelimiter added + */ +Placeholder.prototype.getFormattedName = function () +{ + return this.startDelimiter + this.placeholderName + this.endDelimiter; +} + Placeholder.prototype.toString = function () { - return this.placeholderName; + return this.getFormattedName(); } /** @@ -170,7 +192,15 @@ Placeholder.types = { /** * function that returns a sub-sql */ - SQLPARTFUNCTION : "SQLPARTFUNCTION" + SQLPARTFUNCTION : "SQLPARTFUNCTION", + /** + * a predefined value, useful for own implementations of special placeholders + */ + FIXEDVALUE : "FIXEDVALUE", + /** + * functions that returns the value for the placeholder + */ + CALLBACKFUNCTION : "CALLBACKFUNCTION" }; /** diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index 9f046efd158cd92f8d7334fec36d43353692258e..30e6b6b27aac5415eadfcaa53db1fcfc88a9ad5a 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -15,6 +15,34 @@ import("system.datetime"); import("Offer_lib"); import("Date_lib"); +/** + * Class containing static utility functions for regular expression objects (RegExp) + * Do not create an instance of this + * + * @class + */ +function RegExpUtils(){} + +/** + * Escapes characters of a string that shall be passed to a RegExp 1:1 <br/> + * This is necessary because the RegExp-constructor uses the given string directly as pattern as you can see here:<br/> + * new RegExp("^t.*t$") <=> /^t.*t$/<br/> + * while<br/> + * new RegExp(escapeStr("^t.*t$")) <=> /\^t\.\*t\$/<br/> + * The first will match any string taht starts with "t" and ends with "t" like the word "test". <br/> + * The second one will match only the string "^t.*t$".<br/> + * You have to decide what you want to use as a RegExp and what is correct for your case.<br/> + * + * @param {String} pStringForRegExp <p/>The plain string that has to be escaped to be used as an RegExp + * + * @return {String} the escaped string + */ +RegExpUtils.escapePatternStr = function (pStringForRegExp) +{ + //source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping + return pStringForRegExp.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +}; + /** * Class containing static utility functions for string-actions * Do not create an instance of this @@ -23,6 +51,58 @@ import("Date_lib"); */ function StringUtils(){} +/** + * Searches and replaces all matches of a string within another string with a given replacement. + * This will not modifiy the original string but return a new string with the applied replacements. + * In the current version of the rhino-javascript-engine the String.prototype.replaceAll-function is not implemented, therefor it's necessary to have + * a separate function for this. + * + * @param {String} pPlainInputStr <p/>String where the matches of the searched word are replaced + * @param {String} pPlainSearchStr <p/>Value that is replaced in the pPlainInputStr; this has to be a plain string + * @param {String|function} pReplacement <p/>A string or a function for the replacement-value just like the String.prototype.replace(...) accepts + * @param {String} [pFlags="g"] <p/>If specified, flags is a string that contains the modifier-flags to add + * (for exmaple "i", "m", "im", etc.; + * <p/> for more details take a look at the constructor of the standard-javascript RegExp the "g" modifier + * is added automatically, so there is no need to set this modifier + * + * @return {String} <p/>A new string, with all matches of the given search string replaced by a replacement + * + * @example + * + * var is = "an apple is an apple is an APPLE"; + * + * var r1 = StringUtils.replaceAll(is, "apple", "orange"); + * var r2 = StringUtils.replaceAll(is, "apple", "orange", "g"); + * var r3 = StringUtils.replaceAll(is, "apple", "orange", "i"); + * var r4 = StringUtils.replaceAll(is, "apple", "orange", "ig"); + * var r5 = StringUtils.replaceAll(is, "apple", function (){ + * return "orangeFn"; + * }, "ig"); + * var r6 = StringUtils.replaceAll("example with RegExp symbols like: - * [] / \\ $$", "$$", "dollarsymbols"); + * + * logging.log("r1:" + r1) //logs: r1:an orange is an orange is an APPLE + * logging.log("r2:" + r2) //logs: r2:an orange is an orange is an APPLE + * logging.log("r3:" + r3) //logs: r3:an orange is an orange is an orange + * logging.log("r4:" + r4) //logs: r4:an orange is an orange is an orange + * logging.log("r5:" + r5) //logs: r5:an orangeFn is an orangeFn is an orangeFn + * logging.log("r6:" + r6) //logs: r6:example with RegExp symbols like: - * [] / \ dollarsymbols + */ +StringUtils.replaceAll = function(pPlainInputStr, pPlainSearchStr, pReplacement, pFlags) +{ + //flags after creating the RegExp object are read only, so we have to determine the flags to bet set before creating the RegExp object + var regExpFlags; + if (pFlags) + if (pFlags.search("g") != -1) + regExpFlags = pFlags; + else + regExpFlags = "g" + pFlags; + else + regExpFlags = "g"; + + var searchRegExp = new RegExp(RegExpUtils.escapePatternStr(pPlainSearchStr), regExpFlags); + return pPlainInputStr.replace(searchRegExp, pReplacement); +}; + /** * concats severel elements by a separator; the separator is only applied if a element is not null and not an empty string ""; * diff --git a/process/Workflow_lib/process.js b/process/Workflow_lib/process.js index 179875a721eeee920de4ed7fa72752661fcefbe9..2387f13ee8f9bf28e21f6c0d5123178a7d14518e 100644 --- a/process/Workflow_lib/process.js +++ b/process/Workflow_lib/process.js @@ -8,6 +8,10 @@ import("system.vars"); import("system.entities"); import("system.workflow"); import("KeywordRegistry_basic"); +import("system.net"); +import("system.auth"); +import("system.util"); +import("MimeType_lib"); /** * Provides general functions for working with workflows and the workflow engine. @@ -80,9 +84,17 @@ WorkflowUtils.engineIsEnabled = function () * * @return {String} the url of the workflow modeler */ -WorkflowUtils.getModelerUrl = function () +WorkflowUtils.getModelerUrl = function (pModelId, pIsEditor) { - return project.getPreferenceValue("custom.workflow.modelerUrl", ""); + var modelerUrl = project.getPreferenceValue("custom.workflow.modelerUrl", "").replace(/\/$/, ""); + if (pModelId) + { + if (pIsEditor) + modelerUrl += "/#/editor/" + pModelId; + else + modelerUrl += "/#/processes/" + pModelId; + } + return modelerUrl; } /** @@ -391,3 +403,251 @@ WorkflowServiceTaskParameter.ENUM = function () { return "enum"; } + +/** + * Representation of a process model from the modeler + */ +function WorkflowModel (pId, pName, pKey, pDescription) +{ + this.id = pId; + this.name = pName; + this.key = pKey; + this.description = pDescription || ""; + this.lastUpdated = new Date(); + this.createdBy = WorkflowModelerApiCall.getDefaultRestUser(); + this.lastUpdatedBy = this.createdBy; + this.latestVersion = true; + this.version = 1; + this.comment = null; + this.modelType = 0; + this.tenantId = null; +} + +/** + * Creates a new WorkflowModel object with the properties of the given object. This is used for deserialization. + * + * @param {Object} pPropertyObj object containing the properties to set + * @return {WorkflowModel} a new WorkflowModel object with the given properties + */ +WorkflowModel.fromObject = function (pPropertyObj) +{ + return Object.assign(new WorkflowModel(), pPropertyObj); +} + +/** + * An object that provides functions for using the REST API of the workflow modeler + */ +function WorkflowModelerApiCall () +{ + this._baseUrl = WorkflowUtils.getModelerUrl(); + this._modelId = null; + this._model = null; + this._processXML = null; + + this._authUser = WorkflowModelerApiCall.getDefaultRestUser(); + this._authPassword = WorkflowModelerApiCall.getDefaultRestPassword(); + +} + +/** + * Configuration for the urls that are used for webservices of the modeler's rest api + */ +WorkflowModelerApiCall.urls = { + MODEL : function (pModelId) + { + return "/api/editor/models/" + pModelId; + }, + MODEL_NEWVERSION : function (pModelId) + { + return "/api/editor/models/" + pModelId + "/newversion"; + }, + MODEL_THUMBNAIL : function (pModelId) + { + return "/api/editor/models/" + pModelId + "/thumbnail"; + }, + MODEL_JSON : function (pModelId) + { + return "/api/editor/models/" + pModelId + "/editor/json"; + }, + MODEL_IMPORT : function () + { + return "/api/editor/import-process-xml"; + }, + MODELS : function () + { + return "/api/editor/models"; + } +}; + +/** + * Gets the default user for the rest api. + * + * @return {String} the username + */ +WorkflowModelerApiCall.getDefaultRestUser = function () +{ + return "admin"; +} + +/** + * Gets the default password for the rest api. + * + * @return {String} the password + */ +WorkflowModelerApiCall.getDefaultRestPassword = function () +{ + return "test"; +} + +/** + * Sets the model id. + * + * @param {String} pModelId + * @return {WorkflowModelerApiCall} current object + */ +WorkflowModelerApiCall.prototype.modelId = function (pModelId) +{ + this._modelId = pModelId; + return this; +} + +/** + * Sets the workflow model that is required for create and update. + * + * @param {WorkflowModel} pModel + * @return {WorkflowModelerApiCall} current object + */ +WorkflowModelerApiCall.prototype.model = function (pModel) +{ + this._model = pModel; + if (this._modelId == null && pModel.id != null) + this._modelId = pModel.id; + return this; +} + +/** + * Sets the process xml that is required for an import to the modeler. + * + * @param {String} pProcessXML the bpmn2.0 process xml + * @return {WorkflowModelerApiCall} current object + */ +WorkflowModelerApiCall.prototype.processXML = function (pProcessXML) +{ + this._processXML = pProcessXML; + return this; +} + +/** + * Sets the user and the password for basic auth + * + * @param {String} pUser the user + * @param {String} pPassword the password + * @return {WorkflowModelerApiCall} current object + */ +WorkflowModelerApiCall.prototype.setBasicAuth = function (pUser, pPassword) +{ + this._authUser = pUser; + this._authPassword = pPassword; + return this; +} + +/** + * Helper function to make rest calls + */ +WorkflowModelerApiCall.prototype._callWebservice = function (pUrl, pHttpMethod, pHeaders, pBody, pDataTypeSend, pQueryParams) +{ + if (!this._baseUrl) + return null; + + var restConfig = net.createConfigForRestWebserviceCall() + .url(this._baseUrl + pUrl) + .dataTypeJDitoAccept(util.DATA_TEXT) + .dataTypeJDitoSend(util.DATA_TEXT) + .dataTypeSend(pDataTypeSend || MimeTypes.JSON()) + .dataTypeAccept(MimeTypes.JSON()) + .actionType(pHttpMethod); + + if (pHeaders) + { + for (let headerName in pHeaders) + restConfig.addHeader(headerName, pHeaders[headerName]); + } + if (pQueryParams) + { + for (let paramName in pQueryParams) + restConfig.addQueryParameter(paramName, pQueryParams[paramName]); + } + if (pBody) + restConfig.requestEntity(pBody); + + var authConfig = this._authUser != null + ? auth.createConfigForBasicAuth().userName(this._authUser).password(this._authPassword) + : auth.createConfigForNoAuth(); + + return net.callRestWebservice(restConfig, authConfig); +} + +/** + * Retrieves a process model from the workflow modeler rest api + * + * @return {WorkflowModel} + */ +WorkflowModelerApiCall.prototype.getModel = function () +{ + var modelJson = this._callWebservice(WorkflowModelerApiCall.urls.MODEL(this._modelId), net.GET); + if (!modelJson) + return null; + + return WorkflowModel.fromObject(JSON.parse(modelJson)); +} + +/** + * Loads the models from the workflow modeler. + * + * @return {WorkflowModel[]} array of models + */ +WorkflowModelerApiCall.prototype.getModels = function (pFilter) +{ + var headers = pFilter ? {filter : pFilter} : null; + var modelsJson = this._callWebservice(WorkflowModelerApiCall.urls.MODELS(), net.GET, headers); + + if (!modelsJson) + return []; + + var models = JSON.parse(modelsJson).data || []; + + return models.map(function (model) + { + return WorkflowModel.fromObject(model); + }); +} + +/** + * Creates a new process model in the workflow modeler over the rest api + * + * @return {WorkflowModel} representation of the created model + */ +WorkflowModelerApiCall.prototype.createModel = function () +{ + var modelJson = this._callWebservice(WorkflowModelerApiCall.urls.MODELS(), net.POST, null, JSON.stringify(this._model)); + if (!modelJson) + return null; + + return WorkflowModel.fromObject(JSON.parse(modelJson)); +} + +/** + * Imports a bpmn2.0 xml into the workflow modeler. If a model with the same key already exists, a new version will be created. + * + * @return {WorkflowModel} representation of the created model + */ +WorkflowModelerApiCall.prototype.importModel = function () +{ + var modelJson = this._callWebservice(WorkflowModelerApiCall.urls.MODEL_IMPORT(), net.POST, null, this._processXML, MimeTypes.TXT(), {userName : this._authUser}); + if (!modelJson) + return null; + + return WorkflowModel.fromObject(JSON.parse(modelJson)); +} + + diff --git a/process/workflowDeploy_rest/process.js b/process/workflowDeploy_rest/process.js new file mode 100644 index 0000000000000000000000000000000000000000..82c3ed4a98aedf4504ec4d250b36a6d6f4e19f90 --- /dev/null +++ b/process/workflowDeploy_rest/process.js @@ -0,0 +1,22 @@ +import("system.workflow"); +import("system.util"); + +function restpost (pRequest) +{ + var request = JSON.parse(pRequest); + + var processObj = JSON.parse(util.decodeBase64String(request.body)); + if (processObj && processObj.processXML) + { + var processIds = workflow.getProcessIds(processObj.processXML); + processIds = processIds != null ? JSON.parse(processIds) : []; + if (processIds.length > 0) + { + processObj.deploymentId = workflow.deployProcess(processIds[0], processObj.processXML); + request.response.statuscode = 200; + request.response.body = JSON.stringify(processObj); + } + } + + return JSON.stringify(request); +} \ No newline at end of file diff --git a/process/workflowDeploy_rest/workflowDeploy_rest.aod b/process/workflowDeploy_rest/workflowDeploy_rest.aod new file mode 100644 index 0000000000000000000000000000000000000000..05c891a90280224cd574f42e6347203f67386f3a --- /dev/null +++ b/process/workflowDeploy_rest/workflowDeploy_rest.aod @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>workflowDeploy_rest</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/workflowDeploy_rest/process.js</process> + <publishAsWebservice v="true" /> + <style>REST</style> + <restAcceptedMimeType>application/json</restAcceptedMimeType> + <restDeliveredMimeType>application/json</restDeliveredMimeType> + <jditoWebserviceUser>flowableIdmService</jditoWebserviceUser> + <variants> + <element>EXECUTABLE</element> + </variants> +</process>