diff --git a/.aditoprj/project.version b/.aditoprj/project.version index c7740156ef666297b2b8bd79e6415568165b5c34..77248a98d35b3a662e3f84ab23a14062e553f082 100644 --- a/.aditoprj/project.version +++ b/.aditoprj/project.version @@ -1,3 +1,3 @@ #This file is generated by ADITO designer. Do NOT delete or modify! -#Thu Jun 13 16:55:33 CEST 2019 -version=5.1.16 +#Tue Jun 18 13:20:50 CEST 2019 +version=5.1.17 diff --git a/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/create_ab_loghistory.xml b/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/create_ab_loghistory.xml index d7d65e6c6fc084edc1edd6173ce131458d314848..415726712dac155f4b8cda1d97117e6b316318b3 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/create_ab_loghistory.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/create_ab_loghistory.xml @@ -15,5 +15,9 @@ <column name="TABLENAME" type="NVARCHAR(30)"/> <column name="TABLENAMEID" type="CHAR(36)"/> </createTable> + <createIndex indexName="IDX_AB_LOGHISTORY_TABLES" tableName="AB_LOGHISTORY"> + <column name="TABLENAME"/> + <column name="TABLENAMEID"/> + </createIndex> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_AttributeKeyword_target_group.xml b/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_AttributeKeyword_target_group.xml index f8515fb50122a8812e7a0f974511d40592ceff61..693645c7e9078c01318458182c8be9d598527419 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_AttributeKeyword_target_group.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_AttributeKeyword_target_group.xml @@ -7,7 +7,7 @@ <column name="ATTRIBUTE_NAME" value="Zielgruppe"/> <column name="ATTRIBUTE_PARENT_ID"/> <column name="ATTRIBUTE_TYPE" value="KEYWORD "/> - <column name="KEYWORD_CONTAINER" value="TargetGroup"/> + <column name="DROPDOWNDEFINITION" value="TargetGroup"/> </insert> <insert tableName="AB_ATTRIBUTEUSAGE"> diff --git a/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_AttributeType.xml b/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_AttributeType.xml index afce4587bceb283ab111c963a2d16390135a3240..a168eafe5bfdc7246c898f476ff5a6b77743a480 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_AttributeType.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_AttributeType.xml @@ -34,6 +34,15 @@ <column name="SORTING" valueNumeric="9"/> <column name="ISACTIVE" valueNumeric="1"/> <column name="ISESSENTIAL" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="00a61337-d3d3-4e7e-bc48-cb08cabe01b3"/> + <column name="KEYID" value="OBJECTSELECTION"/> + <column name="TITLE" value="Object selection"/> + <column name="CONTAINER" value="AttributeType"/> + <column name="SORTING" valueNumeric="10"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="1"/> </insert> <insert tableName="AB_KEYWORD_ATTRIBUTE"> <column name="AB_KEYWORD_ATTRIBUTEID" value="307ecfc6-15c8-4ab9-8afa-e97b90a00c5f"/> @@ -101,46 +110,11 @@ <column name="AB_KEYWORD_ATTRIBUTE_ID" value="307ecfc6-15c8-4ab9-8afa-e97b90a00c5f"/> <column name="CHAR_VALUE" value="VAADIN:TAG"/> </insert> - <rollback> - <delete tableName="AB_KEYWORD_ENTRY"> - <where>AB_KEYWORD_ENTRYID = ?</where> - <whereParams> - <param value="9d2f9605-1a5e-47d3-8920-168f5637e37f"/> - </whereParams> - </delete> - <delete tableName="AB_KEYWORD_ENTRY"> - <where>AB_KEYWORD_ENTRYID = ?</where> - <whereParams> - <param value="ee893a1c-d007-46fe-a190-727124c4467b"/> - </whereParams> - </delete> - <delete tableName="AB_KEYWORD_ENTRY"> - <where>AB_KEYWORD_ENTRYID = ?</where> - <whereParams> - <param value="191d7293-3b3f-4dc7-bbe2-9da1a897f7df"/> - </whereParams> - </delete> - <delete tableName="AB_KEYWORD_ATTRIBUTE"> - <where>AB_KEYWORD_ATTRIBUTEID = ?</where> - <whereParams> - <param value="307ecfc6-15c8-4ab9-8afa-e97b90a00c5f"/> - </whereParams> - </delete> - <delete tableName="AB_KEYWORD_ATTRIBUTERELATION"> - <where>AB_KEYWORD_ATTRIBUTERELATIONID in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)</where> - <whereParams> - <param value="0c537ea0-6ba2-4d9a-a27c-7c6a6920e303"/> - <param value="8ada9b1e-2f23-4e07-bbd6-16a3b76c5b62"/> - <param value="2ef73c53-30b4-47f9-94fb-87825e14743a"/> - <param value="c4cdd0dc-fc7e-443c-9c2f-c3d400ce3a1b"/> - <param value="5afb11f5-e0eb-45f2-8018-cdf85078a236"/> - <param value="0954628d-e40e-45e0-a808-3194594b431e"/> - <param value="1516db79-6f15-4683-9314-cddebb29f995"/> - <param value="091bf881-e599-4baf-915a-e756ae75c52e"/> - <param value="a85fd75f-7346-41d0-b7fe-6c677bd3f392"/> - <param value="a35c73d5-2719-422b-872b-1c6c1e0707a0"/> - </whereParams> - </delete> - </rollback> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="49f0e116-e32b-4391-8a39-121e7a1ad580"/> + <column name="AB_KEYWORD_ENTRY_ID" value="00a61337-d3d3-4e7e-bc48-cb08cabe01b3"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="307ecfc6-15c8-4ab9-8afa-e97b90a00c5f"/> + <column name="CHAR_VALUE" value="VAADIN:COMBOBOX"/> + </insert> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2019.1.4/AttributeKeyword.xml b/.liquibase/Data_alias/basic/2019.1.4/AttributeKeyword.xml index d924ad24ca2252b9d37a5cd90f35c45b66c18b7d..dba5cdc84a7f3fc3ad29b646e6a42ed5e781cdc7 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/AttributeKeyword.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/AttributeKeyword.xml @@ -2,7 +2,7 @@ <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <changeSet author="s.listl" id="f527a5cc-f1e5-497f-a069-33aee944d421"> <addColumn tableName="AB_ATTRIBUTE"> - <column name="KEYWORD_CONTAINER" type="VARCHAR(80)"/> + <column name="DROPDOWNDEFINITION" type="VARCHAR(80)"/> <column name="ATTRIBUTE_INFO" type="NCLOB"/> <column name="SORTING" type="INTEGER"/> </addColumn> diff --git a/.liquibase/Data_alias/basic/2019.1.4/BulkMail/bulkMail_keywords.xml b/.liquibase/Data_alias/basic/2019.1.4/BulkMail/bulkMail_keywords.xml new file mode 100644 index 0000000000000000000000000000000000000000..e970a26e5417dddbbbed5407fc254a5ee93e44e9 --- /dev/null +++ b/.liquibase/Data_alias/basic/2019.1.4/BulkMail/bulkMail_keywords.xml @@ -0,0 +1,30 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="s.listl" id="c652301e-5510-4e1a-a39d-cdc6a3356d62"> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="2710c44b-73a7-4da5-b828-c7ac572ab79c"/> + <column name="KEYID" value="9a0c5608-070e-49fb-92cd-f6abece9242d"/> + <column name="TITLE" value="Pending"/> + <column name="CONTAINER" value="BulkMailSentStatus"/> + <column name="SORTING" valueNumeric="1"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="82d04090-3ef1-4eaf-9836-0490733a078f"/> + <column name="KEYID" value="147211fb-a1cf-49c8-8e08-c3cfe0404f9b"/> + <column name="TITLE" value="Sent"/> + <column name="CONTAINER" value="BulkMailSentStatus"/> + <column name="SORTING" valueNumeric="2"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="d1d6a461-1bbf-4f03-ac99-33a2d38a36e3"/> + <column name="KEYID" value="353e27e9-7491-4bfd-b9f9-f18f2cb2a36c"/> + <column name="TITLE" value="Failed"/> + <column name="CONTAINER" value="BulkMailSentStatus"/> + <column name="SORTING" valueNumeric="3"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2019.1.4/BulkMail/create_bulkMailRecipient.xml b/.liquibase/Data_alias/basic/2019.1.4/BulkMail/create_bulkMailRecipient.xml new file mode 100644 index 0000000000000000000000000000000000000000..69a2328ff422b7ca7bc82f221c83ac554ca454e8 --- /dev/null +++ b/.liquibase/Data_alias/basic/2019.1.4/BulkMail/create_bulkMailRecipient.xml @@ -0,0 +1,14 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="s.listl" id="e6532ebb-6ee3-4f89-a5b9-792cb55cb7e5"> + <createTable tableName="BULKMAILRECIPIENT"> + <column name="BULKMAILRECIPIENTID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_BULKMAILRECIPIENT_BULKMAILRECIPIENTID"/> + </column> + <column name="BULKMAIL_ID" type="CHAR(36)"/> + <column name="CONTACT_ID" type="CHAR(36)"/> + <column name="STATUS" type="CHAR(36)"/> + </createTable> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2019.1.4/BulkMail/create_bulkmail.xml b/.liquibase/Data_alias/basic/2019.1.4/BulkMail/create_bulkmail.xml new file mode 100644 index 0000000000000000000000000000000000000000..6c500af3c2d0ec618f539ebe65922e3265da74c6 --- /dev/null +++ b/.liquibase/Data_alias/basic/2019.1.4/BulkMail/create_bulkmail.xml @@ -0,0 +1,15 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="s.listl" id="4dc221ce-202c-437f-ab5f-f732a40f4151"> + <createTable tableName="BULKMAIL"> + <column name="BULKMAILID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_BULKMAIL_BULKMAILID"/> + </column> + <column name="DOCUMENTTEMPLATE_ID" type="CHAR(36)"/> + <column name="DESCRIPTION" type="NVARCHAR(500)"/> + <column name="NAME" type="NVARCHAR(50)"/> + <column name="SUBJECT" type="NVARCHAR(100)"/> + </createTable> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2019.1.4/Ticketmanagement/insertTicketAttributes_TaskType_Task.xml b/.liquibase/Data_alias/basic/2019.1.4/Ticketmanagement/insertTicketAttributes_TaskType_Task.xml index 2bb5f919999069d48cea1a3330092ce23ebe2149..9a1e4f3e239c6211270045024ba6a7fa0918d341 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/Ticketmanagement/insertTicketAttributes_TaskType_Task.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/Ticketmanagement/insertTicketAttributes_TaskType_Task.xml @@ -6,7 +6,7 @@ <column name="ATTRIBUTE_TYPE" value="GROUP "/> <column name="ATTRIBUTE_NAME" value="Ticket"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> - <column name="KEYWORD_CONTAINER"/> + <column name="DROPDOWNDEFINITION"/> <column name="ATTRIBUTE_INFO"/> <column name="SORTING"/> </insert> @@ -16,7 +16,7 @@ <column name="ATTRIBUTE_TYPE" value="GROUP "/> <column name="ATTRIBUTE_NAME" value="Reklamation"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> - <column name="KEYWORD_CONTAINER"/> + <column name="DROPDOWNDEFINITION"/> <column name="ATTRIBUTE_INFO"/> <column name="SORTING" valueNumeric="1"/> </insert> @@ -26,7 +26,7 @@ <column name="ATTRIBUTE_TYPE" value="COMBO "/> <column name="ATTRIBUTE_NAME" value="Regulierung"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> - <column name="KEYWORD_CONTAINER"/> + <column name="DROPDOWNDEFINITION"/> <column name="ATTRIBUTE_INFO"/> <column name="SORTING" valueNumeric="1"/> </insert> @@ -36,7 +36,7 @@ <column name="ATTRIBUTE_TYPE" value="COMBOVALUE "/> <column name="ATTRIBUTE_NAME" value="Vollberechnung"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> - <column name="KEYWORD_CONTAINER"/> + <column name="DROPDOWNDEFINITION"/> <column name="ATTRIBUTE_INFO"/> <column name="SORTING" valueNumeric="1"/> </insert> @@ -46,7 +46,7 @@ <column name="ATTRIBUTE_TYPE" value="COMBOVALUE "/> <column name="ATTRIBUTE_NAME" value="Teilberechnung"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> - <column name="KEYWORD_CONTAINER"/> + <column name="DROPDOWNDEFINITION"/> <column name="ATTRIBUTE_INFO"/> <column name="SORTING" valueNumeric="2"/> </insert> @@ -56,7 +56,7 @@ <column name="ATTRIBUTE_TYPE" value="COMBOVALUE "/> <column name="ATTRIBUTE_NAME" value="Kulanz"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> - <column name="KEYWORD_CONTAINER"/> + <column name="DROPDOWNDEFINITION"/> <column name="ATTRIBUTE_INFO"/> <column name="SORTING" valueNumeric="3"/> </insert> @@ -67,7 +67,7 @@ <column name="ATTRIBUTE_TYPE" value="COMBO "/> <column name="ATTRIBUTE_NAME" value="Schadensart"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> - <column name="KEYWORD_CONTAINER"/> + <column name="DROPDOWNDEFINITION"/> <column name="ATTRIBUTE_INFO"/> <column name="SORTING" valueNumeric="2"/> </insert> @@ -77,7 +77,7 @@ <column name="ATTRIBUTE_TYPE" value="COMBOVALUE "/> <column name="ATTRIBUTE_NAME" value="Transportschaden"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> - <column name="KEYWORD_CONTAINER"/> + <column name="DROPDOWNDEFINITION"/> <column name="ATTRIBUTE_INFO"/> <column name="SORTING" valueNumeric="1"/> </insert> @@ -87,7 +87,7 @@ <column name="ATTRIBUTE_TYPE" value="COMBOVALUE "/> <column name="ATTRIBUTE_NAME" value="Qualitätsbeanstandung"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> - <column name="KEYWORD_CONTAINER"/> + <column name="DROPDOWNDEFINITION"/> <column name="ATTRIBUTE_INFO"/> <column name="SORTING" valueNumeric="2"/> </insert> @@ -97,7 +97,7 @@ <column name="ATTRIBUTE_TYPE" value="COMBOVALUE "/> <column name="ATTRIBUTE_NAME" value="fehlerhafte Lieferung"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> - <column name="KEYWORD_CONTAINER"/> + <column name="DROPDOWNDEFINITION"/> <column name="ATTRIBUTE_INFO"/> <column name="SORTING" valueNumeric="3"/> </insert> @@ -107,7 +107,7 @@ <column name="ATTRIBUTE_TYPE" value="COMBOVALUE "/> <column name="ATTRIBUTE_NAME" value="unvollständige Lieferung"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> - <column name="KEYWORD_CONTAINER"/> + <column name="DROPDOWNDEFINITION"/> <column name="ATTRIBUTE_INFO"/> <column name="SORTING" valueNumeric="4"/> </insert> @@ -118,7 +118,7 @@ <column name="ATTRIBUTE_TYPE" value="GROUP "/> <column name="ATTRIBUTE_NAME" value="Support Ticket"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> - <column name="KEYWORD_CONTAINER"/> + <column name="DROPDOWNDEFINITION"/> <column name="ATTRIBUTE_INFO"/> <column name="SORTING" valueNumeric="2"/> </insert> diff --git a/.liquibase/Data_alias/basic/2019.1.4/changelog.xml b/.liquibase/Data_alias/basic/2019.1.4/changelog.xml index ba83461f2e35d2f35f73a8d720cc5af484883285..31ef6c3a237ecb7ea047a88abb6719ec480872ca 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/changelog.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/changelog.xml @@ -183,9 +183,6 @@ <include relativeToChangelogFile="true" file="AditoBasic/insert_permission_keyword.xml"/> <include relativeToChangelogFile="true" file="AditoBasic/ab_keyword_attributerelation_add_longtext_type.xml"/> - <include relativeToChangelogFile="true" file="Ticketmanagement/insertTicketAttributes_TaskType_Task.xml"/> - <include relativeToChangelogFile="true" file="Ticketmanagement/insert_TaskType_Task.xml"/> - <include relativeToChangelogFile="true" file="Ticketmanagement/update_TaskStatus_add_icon_and_new_status.xml"/> <include relativeToChangelogFile="true" file="AditoBasic/salesprojectsource_add_icon_attr.xml"/> @@ -194,8 +191,15 @@ <!-- the next generation of data --> <include relativeToChangelogFile="true" file="newExampleData/changelog.xml" context="example"/> + <include relativeToChangelogFile="true" file="Ticketmanagement/insertTicketAttributes_TaskType_Task.xml"/> + <include relativeToChangelogFile="true" file="Ticketmanagement/insert_TaskType_Task.xml"/> + <include relativeToChangelogFile="true" file="Ticketmanagement/update_TaskStatus_add_icon_and_new_status.xml"/> + <include relativeToChangelogFile="true" file="longerProductName_Code.xml"/> + <include relativeToChangelogFile="true" file="BulkMail/create_bulkMail.xml"/> + <include relativeToChangelogFile="true" file="BulkMail/create_bulkMailRecipient.xml"/> + <include relativeToChangelogFile="true" file="DSGVO/create_DSGVO.xml"/> <include relativeToChangelogFile="true" file="DSGVO/insert_DSGVO.xml"/> <include relativeToChangelogFile="true" file="DSGVO/init_statuoritysource_keyword.xml"/> diff --git a/.liquibase/Data_alias/basic/2019.1.4/data/example_attribute/Attribute.xml b/.liquibase/Data_alias/basic/2019.1.4/data/example_attribute/Attribute.xml index 7d0bb354a6dcec9a529f415e6b9911be1e3a88c2..77d21d7bb85aebc0bd786052caaf54a680f59810 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/data/example_attribute/Attribute.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/data/example_attribute/Attribute.xml @@ -618,7 +618,7 @@ <column name="ATTRIBUTE_NAME" value="Preispolitik"/> <column name="ATTRIBUTE_PARENT_ID" value="752d7706-ac6e-4b51-a918-4265531794a4"/> <column name="ATTRIBUTE_TYPE" value="KEYWORD "/> - <column name="KEYWORD_CONTAINER" value="SalesprojectPricePolitics"/> + <column name="DROPDOWNDEFINITION" value="SalesprojectPricePolitics"/> </insert> <insert tableName="AB_ATTRIBUTE"> <column name="AB_ATTRIBUTEID" value="558419b2-6113-4060-b88d-cc6324754765"/> @@ -626,7 +626,7 @@ <column name="ATTRIBUTE_NAME" value="Stärke"/> <column name="ATTRIBUTE_PARENT_ID" value="752d7706-ac6e-4b51-a918-4265531794a4"/> <column name="ATTRIBUTE_TYPE" value="KEYWORD "/> - <column name="KEYWORD_CONTAINER" value="SalesprojectStrength"/> + <column name="DROPDOWNDEFINITION" value="SalesprojectStrength"/> </insert> <insert tableName="AB_ATTRIBUTE"> <column name="AB_ATTRIBUTEID" value="71226196-2812-4d70-b90f-c3e2c14fd4d1"/> @@ -634,7 +634,7 @@ <column name="ATTRIBUTE_NAME" value="Schwäche"/> <column name="ATTRIBUTE_PARENT_ID" value="752d7706-ac6e-4b51-a918-4265531794a4"/> <column name="ATTRIBUTE_TYPE" value="KEYWORD "/> - <column name="KEYWORD_CONTAINER" value="SalesprojectWeakness"/> + <column name="DROPDOWNDEFINITION" value="SalesprojectWeakness"/> </insert> <insert tableName="AB_ATTRIBUTE"> <column name="AB_ATTRIBUTEID" value="0644222a-2b3b-4f5e-a85a-d24c32fa0e72"/> @@ -1394,7 +1394,7 @@ <column name="ATTRIBUTE_NAME" value="Zahlungskondition"/> <column name="ATTRIBUTE_PARENT_ID" value="ab545654-1fce-4993-b763-0ec469781302"/> <column name="ATTRIBUTE_TYPE" value="KEYWORD "/> - <column name="KEYWORD_CONTAINER" value="PaymentTerm"/> + <column name="DROPDOWNDEFINITION" value="PaymentTerm"/> </insert> <insert tableName="AB_ATTRIBUTE"> <column name="AB_ATTRIBUTEID" value="3a6e11fc-b00a-4cf3-975a-a5e8b60fc5cb"/> @@ -1402,7 +1402,7 @@ <column name="ATTRIBUTE_NAME" value="Lieferkondition"/> <column name="ATTRIBUTE_PARENT_ID" value="ab545654-1fce-4993-b763-0ec469781302"/> <column name="ATTRIBUTE_TYPE" value="KEYWORD "/> - <column name="KEYWORD_CONTAINER" value="DeliveryTerm"/> + <column name="DROPDOWNDEFINITION" value="DeliveryTerm"/> </insert> <insert tableName="AB_ATTRIBUTE"> <column name="AB_ATTRIBUTEID" value="97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec"/> @@ -1410,7 +1410,7 @@ <column name="ATTRIBUTE_NAME" value="Preisliste"/> <column name="ATTRIBUTE_PARENT_ID" value="ab545654-1fce-4993-b763-0ec469781302"/> <column name="ATTRIBUTE_TYPE" value="KEYWORD "/> - <column name="KEYWORD_CONTAINER" value="ProductPricelist"/> + <column name="DROPDOWNDEFINITION" value="ProductPricelist"/> </insert> <insert tableName="AB_ATTRIBUTE"> diff --git a/.liquibase/Data_alias/basic/2019.1.4/indicesRefactor/Activity.xml b/.liquibase/Data_alias/basic/2019.1.4/indicesRefactor/Activity.xml index 47c79e3e92f61ef8231836069d31171fe96f9884..10d3ae93878302167e803b2ae9d1b1692b648718 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/indicesRefactor/Activity.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/indicesRefactor/Activity.xml @@ -14,8 +14,8 @@ <column name="ACTIVITY_ID" /> </createIndex> <createIndex indexName="IDX_ACTIVITYLINK_OBJECT" tableName="ACTIVITYLINK"> - <column name="OBJECT_ROWID"/> <column name="OBJECT_TYPE"/> + <column name="OBJECT_ROWID"/> </createIndex> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2019.1.4/newExampleData/generatedData/AB_ATTRIBUTE.xml b/.liquibase/Data_alias/basic/2019.1.4/newExampleData/generatedData/AB_ATTRIBUTE.xml index 0291f2affa9c68371296accb549bca09b3db0484..bf68ac002b052207cef5ac003b28c8913cfd85e8 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/newExampleData/generatedData/AB_ATTRIBUTE.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/newExampleData/generatedData/AB_ATTRIBUTE.xml @@ -619,7 +619,7 @@ <column name="ATTRIBUTE_NAME" value="Preispolitik"/> <column name="ATTRIBUTE_PARENT_ID" value="752d7706-ac6e-4b51-a918-4265531794a4"/> <column name="ATTRIBUTE_TYPE" value="KEYWORD "/> - <column name="KEYWORD_CONTAINER" value="SalesprojectPricePolitics"/> + <column name="DROPDOWNDEFINITION" value="SalesprojectPricePolitics"/> </insert> <insert tableName="AB_ATTRIBUTE"> <column name="AB_ATTRIBUTEID" value="558419b2-6113-4060-b88d-cc6324754765"/> @@ -627,7 +627,7 @@ <column name="ATTRIBUTE_NAME" value="Stärke"/> <column name="ATTRIBUTE_PARENT_ID" value="752d7706-ac6e-4b51-a918-4265531794a4"/> <column name="ATTRIBUTE_TYPE" value="KEYWORD "/> - <column name="KEYWORD_CONTAINER" value="SalesprojectStrength"/> + <column name="DROPDOWNDEFINITION" value="SalesprojectStrength"/> </insert> <insert tableName="AB_ATTRIBUTE"> <column name="AB_ATTRIBUTEID" value="71226196-2812-4d70-b90f-c3e2c14fd4d1"/> @@ -635,7 +635,7 @@ <column name="ATTRIBUTE_NAME" value="Schwäche"/> <column name="ATTRIBUTE_PARENT_ID" value="752d7706-ac6e-4b51-a918-4265531794a4"/> <column name="ATTRIBUTE_TYPE" value="KEYWORD "/> - <column name="KEYWORD_CONTAINER" value="SalesprojectWeakness"/> + <column name="DROPDOWNDEFINITION" value="SalesprojectWeakness"/> </insert> <insert tableName="AB_ATTRIBUTE"> <column name="AB_ATTRIBUTEID" value="0644222a-2b3b-4f5e-a85a-d24c32fa0e72"/> @@ -1395,7 +1395,7 @@ <column name="ATTRIBUTE_NAME" value="Zahlungskondition"/> <column name="ATTRIBUTE_PARENT_ID" value="ab545654-1fce-4993-b763-0ec469781302"/> <column name="ATTRIBUTE_TYPE" value="KEYWORD "/> - <column name="KEYWORD_CONTAINER" value="PaymentTerm"/> + <column name="DROPDOWNDEFINITION" value="PaymentTerm"/> </insert> <insert tableName="AB_ATTRIBUTE"> <column name="AB_ATTRIBUTEID" value="3a6e11fc-b00a-4cf3-975a-a5e8b60fc5cb"/> @@ -1403,7 +1403,7 @@ <column name="ATTRIBUTE_NAME" value="Lieferkondition"/> <column name="ATTRIBUTE_PARENT_ID" value="ab545654-1fce-4993-b763-0ec469781302"/> <column name="ATTRIBUTE_TYPE" value="KEYWORD "/> - <column name="KEYWORD_CONTAINER" value="DeliveryTerm"/> + <column name="DROPDOWNDEFINITION" value="DeliveryTerm"/> </insert> <insert tableName="AB_ATTRIBUTE"> <column name="AB_ATTRIBUTEID" value="97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec"/> @@ -1411,7 +1411,7 @@ <column name="ATTRIBUTE_NAME" value="Preisliste"/> <column name="ATTRIBUTE_PARENT_ID" value="ab545654-1fce-4993-b763-0ec469781302"/> <column name="ATTRIBUTE_TYPE" value="KEYWORD "/> - <column name="KEYWORD_CONTAINER" value="ProductPricelist"/> + <column name="DROPDOWNDEFINITION" value="ProductPricelist"/> </insert> <insert tableName="AB_ATTRIBUTE"> <column name="AB_ATTRIBUTEID" value="e7886e41-252e-414c-a169-5d1481d010c8"/> @@ -1437,13 +1437,15 @@ <column name="AB_ATTRIBUTEID" value="33cb83f1-aee2-469e-b57d-666ac6725f61"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/> <column name="ATTRIBUTE_NAME" value="Unterkampagne von"/> - <column name="ATTRIBUTE_TYPE" value="TEXT "/> + <column name="ATTRIBUTE_TYPE" value="OBJECTSELECTION "/> + <column name="DROPDOWNDEFINITION" value="Campaign"/> </insert> <insert tableName="AB_ATTRIBUTE"> <column name="AB_ATTRIBUTEID" value="093c7337-c134-4be5-a215-dc94804c3511"/> <column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/> <column name="ATTRIBUTE_NAME" value="übergeordnete Kampagne von"/> - <column name="ATTRIBUTE_TYPE" value="TEXT "/> + <column name="ATTRIBUTE_TYPE" value="OBJECTSELECTION "/> + <column name="DROPDOWNDEFINITION" value="Campaign"/> </insert> <insert tableName="AB_ATTRIBUTE"> <column name="AB_ATTRIBUTEID" value="28fd7a4b-72d8-40ff-a893-a9479abcf19e"/> diff --git a/.liquibase/Data_alias/basic/2019.1.4/update_Keyword_Essentials.xml b/.liquibase/Data_alias/basic/2019.1.4/update_Keyword_Essentials.xml index f9e3cb33a23bef6fd498164e20d1bd0ac1cbc16f..c390891c147e17a7184e9c5f656db6f0167a3b2e 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/update_Keyword_Essentials.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/update_Keyword_Essentials.xml @@ -3,14 +3,14 @@ <changeSet author="a.loreth" id="b1629529-92ab-437d-b864-0fd68fe5ceab"> <update tableName="AB_KEYWORD_ENTRY"> <column name="ISESSENTIAL" valueNumeric="1" /> - <where>KEYID in ('BSICacti-0dir-0inc-b8a3-f43e2c73df65', 'BSICacti-0dir-outg-8337-909b0f93143a', 'BSIC0rel-stat-actv-ae03-b6b04430e90b', '21bc4d20-1a87-4247-8f7c-8d3a09631850', '4dee8727-8299-422e-ae41-6cdf9de2dfd7', '02553fc7-4611-4914-8ff5-0b7c4e7531c9', '09072b59-d12f-469b-acbd-18a28232ff70', 'ec92271b-eac2-4ec2-be24-ab4abde7e939')</where> + <where>KEYID in ('548ffe3b-466b-4c8f-97d6-e3ad23e33344', 'BSICacti-0dir-0inc-b8a3-f43e2c73df65', 'BSICacti-0dir-outg-8337-909b0f93143a', 'BSIC0rel-stat-actv-ae03-b6b04430e90b', '21bc4d20-1a87-4247-8f7c-8d3a09631850', '4dee8727-8299-422e-ae41-6cdf9de2dfd7', '02553fc7-4611-4914-8ff5-0b7c4e7531c9', '09072b59-d12f-469b-acbd-18a28232ff70', 'ec92271b-eac2-4ec2-be24-ab4abde7e939')</where> </update> <rollback> <update tableName="AB_KEYWORD_ENTRY"> <column name="ISESSENTIAL" valueNumeric="0" /> - <where>KEYID in ('BSICacti-0dir-0inc-b8a3-f43e2c73df65', 'BSICacti-0dir-outg-8337-909b0f93143a', 'BSIC0rel-stat-actv-ae03-b6b04430e90b', '21bc4d20-1a87-4247-8f7c-8d3a09631850', '4dee8727-8299-422e-ae41-6cdf9de2dfd7', '02553fc7-4611-4914-8ff5-0b7c4e7531c9', '09072b59-d12f-469b-acbd-18a28232ff70', 'ec92271b-eac2-4ec2-be24-ab4abde7e939')</where> + <where>KEYID in ('548ffe3b-466b-4c8f-97d6-e3ad23e33344', 'BSICacti-0dir-0inc-b8a3-f43e2c73df65', 'BSICacti-0dir-outg-8337-909b0f93143a', 'BSIC0rel-stat-actv-ae03-b6b04430e90b', '21bc4d20-1a87-4247-8f7c-8d3a09631850', '4dee8727-8299-422e-ae41-6cdf9de2dfd7', '02553fc7-4611-4914-8ff5-0b7c4e7531c9', '09072b59-d12f-469b-acbd-18a28232ff70', 'ec92271b-eac2-4ec2-be24-ab4abde7e939')</where> </update> </rollback> </changeSet> diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 458e54ec9bec0a9aaa788979a420af38996804eb..e84f7e59b7409231612c3515eed2b621a94178da 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -5724,7 +5724,7 @@ </customProperties> </entityFieldDb> <entityFieldDb> - <name>KEYWORD_CONTAINER</name> + <name>DROPDOWNDEFINITION</name> <dbName></dbName> <primaryKey v="false" /> <columnType v="12" /> @@ -9736,6 +9736,172 @@ </entityFieldDb> </entityFields> </entityDb> + <entityDb> + <name>BULKMAIL</name> + <dbName></dbName> + <idColumn>BULKMAILID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>DOCUMENTTEMPLATE_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>BULKMAILID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DESCRIPTION</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="500" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>SUBJECT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="100" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>NAME</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>BULKMAILRECIPIENT</name> + <dbName></dbName> + <idColumn>BULKMAILRECIPIENTID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>STATUS</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>BULKMAIL_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>BULKMAILRECIPIENTID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>CONTACT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> <entityDb> <name>DSGVO</name> <dbName></dbName> diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index e56198b633c06b1ac2022de0510753e70e060fcb..11bf4ef5b69285c21f0561b1e5798867002a99e1 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -103,6 +103,11 @@ <name>Campaign</name> <kind v="10077" /> </entityNode> + <entityNode> + <name>BulkMail</name> + <kind v="10077" /> + <title></title> + </entityNode> <entityNode> <name>INTERNAL_ADMINISTRATOR</name> <kind v="159" /> diff --git a/entity/360Degree_entity/360Degree_entity.aod b/entity/360Degree_entity/360Degree_entity.aod index 6f98e33cf4e6dfa4ea75e3b8e16a0f28c7a46e64..0978ad120ab3cf5973995bf388121c14e2c1ff0e 100644 --- a/entity/360Degree_entity/360Degree_entity.aod +++ b/entity/360Degree_entity/360Degree_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>360Degree_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>360 Degree</title> @@ -148,7 +148,7 @@ <name>jdito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> <isFilterable v="true" /> - <isRequireContainerFiltering v="true" /> + <isRequireContainerFiltering v="false" /> <contentProcess>%aditoprj%/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <recordFields> <element>UID.value</element> diff --git a/entity/ActivityLink_entity/ActivityLink_entity.aod b/entity/ActivityLink_entity/ActivityLink_entity.aod index 76a95ad5c466279ad636195be477ae733815ed8a..79528f384bb8b92da89b10d828e3c63bd5b478b0 100644 --- a/entity/ActivityLink_entity/ActivityLink_entity.aod +++ b/entity/ActivityLink_entity/ActivityLink_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>ActivityLink_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Connection</title> @@ -65,7 +65,6 @@ <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index 37b1d10481a017e98656e8b1f24c8e67f1b536bb..cc5fc88774f1e1efd760203fc800b83afdf5aec2 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Activity_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Activity_entity/documentation.adoc</documentation> @@ -59,7 +59,6 @@ <entityParameter> <name>RowId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> @@ -86,14 +85,12 @@ <name>OnlyInnate_param</name> <title>Nur Eigene anzeigen</title> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <documentation>%aditoprj%/entity/Activity_entity/entityfields/onlyinnate_param/documentation.adoc</documentation> </entityParameter> <entityParameter> <name>ObjectId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <documentation>%aditoprj%/entity/Activity_entity/entityfields/objectid_param/documentation.adoc</documentation> </entityParameter> @@ -404,12 +401,10 @@ <entityParameter> <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> diff --git a/entity/AddressType_entity/AddressType_entity.aod b/entity/AddressType_entity/AddressType_entity.aod index ddc58c48c3d2ab5e336a58f14f548a916e3b6433..c8d3a2cb7b160f5398b1f041b76901835cfd5f85 100644 --- a/entity/AddressType_entity/AddressType_entity.aod +++ b/entity/AddressType_entity/AddressType_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>AddressType_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <contentTitleProcess>%aditoprj%/entity/AddressType_entity/contentTitleProcess.js</contentTitleProcess> diff --git a/entity/AddressValidation_entity/AddressValidation_entity.aod b/entity/AddressValidation_entity/AddressValidation_entity.aod index 2ee090147246b798b33359749a0159cddcd79332..c45c994d0c67aa20e81788f929ca307c3dc631cc 100644 --- a/entity/AddressValidation_entity/AddressValidation_entity.aod +++ b/entity/AddressValidation_entity/AddressValidation_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>AddressValidation_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <contentTitleProcess>%aditoprj%/entity/AddressValidation_entity/contentTitleProcess.js</contentTitleProcess> @@ -40,7 +40,6 @@ <entityParameter> <name>Country_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityField> @@ -92,7 +91,6 @@ <entityParameter> <name>CurrentValue_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityProvider> diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod index bfa692364fa7b2edb5483a8889c4becc8d464d14..7693958037a0ab5a4896deea5fbf03d80074f9d1 100644 --- a/entity/Address_entity/Address_entity.aod +++ b/entity/Address_entity/Address_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Address_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Address_entity/documentation.adoc</documentation> @@ -154,7 +154,6 @@ <name>ContactType_param</name> <valueProcess>%aditoprj%/entity/Address_entity/entityfields/contactaddresses/children/contacttype_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="true" /> <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> </entityParameter> <entityParameter> diff --git a/entity/Analyses_entity/Analyses_entity.aod b/entity/Analyses_entity/Analyses_entity.aod index b40df2f577c21e07c6c768f4c0a895a55f8a43fd..6658661779bf92d385590e5425de5bb2e199a973 100644 --- a/entity/Analyses_entity/Analyses_entity.aod +++ b/entity/Analyses_entity/Analyses_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Analyses_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:GRID_BIG_O</icon> diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod index 95fb9654ff98bf40eb1bd3243d924860a0cc524b..7c98fe14a763e4978957c60582c69a45d7c5d1e3 100644 --- a/entity/AnyContact_entity/AnyContact_entity.aod +++ b/entity/AnyContact_entity/AnyContact_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>AnyContact_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <contentTitleProcess>%aditoprj%/entity/AnyContact_entity/contentTitleProcess.js</contentTitleProcess> @@ -32,6 +32,12 @@ <fieldName>AnyContacts</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>b2895709-2ebf-46ec-a46d-6b2e9a4575a3</name> + <entityName>BulkMailRecipient_entity</entityName> + <fieldName>Contacts</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityField> @@ -70,7 +76,7 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description> </entityField> <entityField> <name>ORGANISATION_NAME</name> - <title>Organisation name</title> + <title>Company</title> </entityField> <entityField> <name>PERSON_FIRSTNAME</name> diff --git a/entity/AppointmentLink_entity/AppointmentLink_entity.aod b/entity/AppointmentLink_entity/AppointmentLink_entity.aod index f475ae1631c0aa89e8eda3e315a41ce2ddc8c113..b9bf4f38675b7d3d5da90acb41947c3fb6f3b01c 100644 --- a/entity/AppointmentLink_entity/AppointmentLink_entity.aod +++ b/entity/AppointmentLink_entity/AppointmentLink_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>AppointmentLink_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <recordContainer>db</recordContainer> @@ -57,7 +57,6 @@ <entityParameter> <name>AppointmentId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityProvider> @@ -81,7 +80,6 @@ <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/AppointmentLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> diff --git a/entity/Appointment_entity/Appointment_entity.aod b/entity/Appointment_entity/Appointment_entity.aod index 82f3bb5093af6d5fbacfe227cee4c2620c915b34..65a2df205cddbace6781708828173da88c9d8db6 100644 --- a/entity/Appointment_entity/Appointment_entity.aod +++ b/entity/Appointment_entity/Appointment_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Appointment_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Appointment_entity/documentation.adoc</documentation> diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod index dc81d329d7296b2a4559cb0274fc1f93da5adb91..5ef3a514824139ad2decbba39f3efea99b9d2935 100644 --- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod +++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>AttributeRelation_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Attribute</title> @@ -129,7 +129,6 @@ <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/specificattribute/children/objecttype_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>AttributeCount_param</name> @@ -159,7 +158,6 @@ <entityParameter> <name>GetTree_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityProvider> @@ -273,7 +271,6 @@ <entityParameter> <name>FilteredAttributeIds_param</name> <expose v="true" /> - <triggerRecalculation v="false" /> <description>PARAMETER</description> </entityParameter> <entityParameter> diff --git a/entity/AttributeRelation_entity/entityfields/value/displayValueProcess.js b/entity/AttributeRelation_entity/entityfields/value/displayValueProcess.js index 0221c92526a7b91af3e98af04c5eb6e84bc1dcb7..771696f538471395d9e0012ab3397d7964414feb 100644 --- a/entity/AttributeRelation_entity/entityfields/value/displayValueProcess.js +++ b/entity/AttributeRelation_entity/entityfields/value/displayValueProcess.js @@ -1,26 +1,17 @@ -import("system.db"); -import("system.result"); -import("system.vars"); -import("Attribute_lib"); -import("Keyword_lib"); - -var attrType = AttributeUtil.getAttributeType(vars.get("$field.AB_ATTRIBUTE_ID")); -var value; -if (attrType == $AttributeTypes.COMBO) - value = AttributeUtil.getSimpleAttributeName(vars.get("$field.VALUE")); - -//TODO this is a workaround for keywords, when it's possible to use the consumer remove this else if -else if (attrType == $AttributeTypes.KEYWORD) -{ - var keywordContainer = db.cell( - SqlCondition.begin() - .andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$field.AB_ATTRIBUTE_ID") - .buildSql("select KEYWORD_CONTAINER from AB_ATTRIBUTE") - ); - value = KeywordUtils.getViewValue(keywordContainer, vars.get("$field.VALUE")); -} - -else - value = vars.get("$field.VALUE"); - -result.string(value); +import("Context_lib"); +import("system.db"); +import("system.result"); +import("system.vars"); +import("Attribute_lib"); +import("Keyword_lib"); +import("system.tools"); +import("Sql_lib"); + +var attrType = AttributeUtil.getAttributeType(vars.get("$field.AB_ATTRIBUTE_ID")); +var dropDownDef = db.cell( + SqlCondition.begin() + .andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$field.AB_ATTRIBUTE_ID") + .buildSql("select DROPDOWNDEFINITION from AB_ATTRIBUTE") +); + +result.string(AttributeTypeUtil.getAttributeViewValue(attrType, vars.get("$field.VALUE"), dropDownDef)); diff --git a/entity/AttributeRelation_entity/entityfields/value/dropDownProcess.js b/entity/AttributeRelation_entity/entityfields/value/dropDownProcess.js index 7fff32ea3e3cd6ec08ffa32a0060f011364f857a..a5a2f6d468a4d17d44c1447167c9262e5c9a9ce2 100644 --- a/entity/AttributeRelation_entity/entityfields/value/dropDownProcess.js +++ b/entity/AttributeRelation_entity/entityfields/value/dropDownProcess.js @@ -1,3 +1,4 @@ +import("Context_lib"); import("system.translate"); import("system.db"); import("system.result"); @@ -29,7 +30,7 @@ else if (attrType == $AttributeTypes.BOOLEAN) //TODO this is a workaround for keywords, when it's possible to use the consumer remove this else if (attrType == $AttributeTypes.KEYWORD) { - var attrKeywordSelect = "select KEYWORD_CONTAINER from AB_ATTRIBUTE"; + var attrKeywordSelect = "select DROPDOWNDEFINITION from AB_ATTRIBUTE"; attrKeywordSelect = SqlCondition.begin() .andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$field.AB_ATTRIBUTE_ID") .buildSql(attrKeywordSelect); @@ -44,5 +45,16 @@ else if (attrType == $AttributeTypes.KEYWORD) result.object(keywords); } +else if (attrType == $AttributeTypes.OBJECTSELECTION) +{ + var module = db.cell(SqlCondition.begin() + .andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$field.AB_ATTRIBUTE_ID") + .buildSql("select DROPDOWNDEFINITION from AB_ATTRIBUTE") + ); + var objects = []; + objects = db.table(ContextUtils.getContextDataSql(module)); + + result.object(objects); +} else result.object(null) \ No newline at end of file diff --git a/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js b/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js index 5e9c75f3a355c2f532a258157d1db54717418d2d..3bcc421bbfe42766d93ed4b3c27b2369f001f36d 100644 --- a/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js @@ -1,151 +1,151 @@ -import("system.util"); -import("Util_lib"); -import("system.vars"); -import("system.result"); -import("system.db"); -import("Attribute_lib"); -import("Sql_lib"); - -var objectType = vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param"); -var rowId = vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param"); - -//getTree: if true, the attribute groups are loaded as parents -var getTree = vars.exists("$param.GetTree_param") && vars.getString("$param.GetTree_param") == "true"; - -//showEmpty: if true, all selectable attributes are loaded as records, even if they don't have a attributeRelation -var showEmpty = vars.exists("$param.ShowEmpty_param") && vars.getString("$param.ShowEmpty_param") == "true"; - -var displaySimpleName = vars.exists("$param.DisplaySimpleName_param") && vars.get("$param.DisplaySimpleName_param"); -var sqlSelect = "select AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, '', '', '', ATTRIBUTE_NAME from AB_ATTRIBUTE"; - -var attributeRelationJoin = "join AB_ATTRIBUTERELATION on AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"; -var sqlCondition = new SqlCondition(); -var subCondition = new SqlCondition(); - -if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) -{ - let idVals = vars.get("$local.idvalues"); - let idCond = new SqlCondition(); - idVals.forEach(function (id) - { - this.orPrepare("AB_ATTRIBUTERELATION.AB_ATTRIBUTERELATIONID", id); - }, subCondition); - sqlCondition.andSqlCondition(subCondition); - getTree = false; -} -else if (showEmpty || rowId) -{ - if (showEmpty) - { - let idCond = new SqlCondition(); - let possibleAttributes = AttributeUtil.getPossibleAttributes(objectType); - possibleAttributes.forEach(function (attributeId) - { - this.orPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", attributeId); - }, idCond); - sqlCondition.andSqlCondition(idCond); - - attributeRelationJoin = "left " + attributeRelationJoin; - } - if (rowId) - { - subCondition.andPrepare("AB_ATTRIBUTERELATION.OBJECT_ROWID", rowId); - if (objectType != null) - subCondition.andPrepare("AB_ATTRIBUTERELATION.OBJECT_TYPE", objectType); - if (subCondition.isSet()) - attributeRelationJoin += " and " + db.translateCondition(subCondition.build("1=1")); - // add condition to match all returned by joins (override default 1=2 of build) - sqlCondition.and("1=1"); - } - if (vars.exists("$param.FilteredAttributeIds_param") && vars.getString("$param.FilteredAttributeIds_param")) - { - let filteredIds = JSON.parse(vars.getString("$param.FilteredAttributeIds_param")); - - subCondition.clear(); - let filteredIdChildren = AttributeUtil.getAllChildren(filteredIds); - - filteredIds.concat(filteredIdChildren).forEach(function(id) - { - this.orPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", id); - }, subCondition); - - // return nothing if filteredAttributeIds is an empty array. (--> and 1=2) - sqlCondition.andSqlCondition(subCondition, "1=2"); - } -} - -//these fields are always required -var defaultFields = [ - "AB_ATTRIBUTERELATIONID", - "AB_ATTRIBUTE.AB_ATTRIBUTEID", - "AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", - "AB_ATTRIBUTE.ATTRIBUTE_TYPE", - "AB_ATTRIBUTE.ATTRIBUTE_NAME", - "AB_ATTRIBUTE.KEYWORD_CONTAINER", - "COMBOVAL.ATTRIBUTE_NAME" -]; -//these fields hold the attributeRelation value, depending on the attribute type -var valueFields = AttributeTypeUtil.getAllDatabaseFields(); -var attributeSql = sqlCondition.buildSql("select " + defaultFields.join(", ") + ", " + valueFields.join(", ") - + " from AB_ATTRIBUTE " - + attributeRelationJoin - + " left join AB_ATTRIBUTE COMBOVAL on " + $AttributeTypes.COMBO.databaseField + " = COMBOVAL.AB_ATTRIBUTEID" //for the view value of combobox attributes - , "1=2" -); - -var attributeValues = db.table(attributeSql).map(function (row) -{ - let attributeId = row[1]; - let attributeName = row[4]; - if (!getTree && !displaySimpleName && row[2]) - { - let parentName = AttributeUtil.getFullAttributeName(row[2]); - attributeName = (parentName ? parentName + " / " : "") + attributeName; - } - let value = row[AttributeTypeUtil.getTypeColumnIndex(row[3]) + defaultFields.length]; - let viewValue; - if (row[3].trim() == $AttributeTypes.COMBO) - viewValue = row[6]; - else - viewValue = AttributeTypeUtil.getAttributeViewValue(row[3].trim(), value, row[5]); - - //TODO: what should be the uid if showEmpty is true? - // V-- set "," to mark this as new generated UUID - return [row[0] || "," + util.getNewUUID(), row[2], value, viewValue, attributeId, attributeName]; -}); - - -var parentAttributes = []; -var attributeObj = {}; //object of attribute ids to avoid duplicates -if (getTree) - _fetchAttributes(attributeValues.map(function (row) {return row[1]})); - -allAttributes = TreeUtils.sortArrayForTree(parentAttributes, 0, 1).concat(attributeValues); - -result.object(allAttributes); - -/* - * recursive function that loads all superordinate attributes for the tree - */ -function _fetchAttributes (pAttributeIds) -{ - var sqlCondition = SqlCondition.begin(); - var nextIds = []; - pAttributeIds.forEach(function (id) - { - if (!(id in this)) - sqlCondition.orPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", id); - }, attributeObj); - db.table(sqlCondition.buildSql(sqlSelect, "1=2")) - .forEach(function (row) - { - this[row[0]] = true; - if (row[1]) - nextIds.push(row[1]); - else - row[1] = null; - parentAttributes.push(row); - }, attributeObj); - if (nextIds.length) - _fetchAttributes(nextIds); -} +import("system.util"); +import("Util_lib"); +import("system.vars"); +import("system.result"); +import("system.db"); +import("Attribute_lib"); +import("Sql_lib"); + +var objectType = vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param"); +var rowId = vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param"); + +//getTree: if true, the attribute groups are loaded as parents +var getTree = vars.exists("$param.GetTree_param") && vars.getString("$param.GetTree_param") == "true"; + +//showEmpty: if true, all selectable attributes are loaded as records, even if they don't have a attributeRelation +var showEmpty = vars.exists("$param.ShowEmpty_param") && vars.getString("$param.ShowEmpty_param") == "true"; + +var displaySimpleName = vars.exists("$param.DisplaySimpleName_param") && vars.get("$param.DisplaySimpleName_param"); +var sqlSelect = "select AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, '', '', '', ATTRIBUTE_NAME from AB_ATTRIBUTE"; + +var attributeRelationJoin = "join AB_ATTRIBUTERELATION on AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"; +var sqlCondition = new SqlCondition(); +var subCondition = new SqlCondition(); + +if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) +{ + let idVals = vars.get("$local.idvalues"); + let idCond = new SqlCondition(); + idVals.forEach(function (id) + { + this.orPrepare("AB_ATTRIBUTERELATION.AB_ATTRIBUTERELATIONID", id); + }, subCondition); + sqlCondition.andSqlCondition(subCondition); + getTree = false; +} +else if (showEmpty || rowId) +{ + if (showEmpty) + { + let idCond = new SqlCondition(); + let possibleAttributes = AttributeUtil.getPossibleAttributes(objectType); + possibleAttributes.forEach(function (attributeId) + { + this.orPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", attributeId); + }, idCond); + sqlCondition.andSqlCondition(idCond); + + attributeRelationJoin = "left " + attributeRelationJoin; + } + if (rowId) + { + subCondition.andPrepare("AB_ATTRIBUTERELATION.OBJECT_ROWID", rowId); + if (objectType != null) + subCondition.andPrepare("AB_ATTRIBUTERELATION.OBJECT_TYPE", objectType); + if (subCondition.isSet()) + attributeRelationJoin += " and " + db.translateCondition(subCondition.build("1=1")); + // add condition to match all returned by joins (override default 1=2 of build) + sqlCondition.and("1=1"); + } + if (vars.exists("$param.FilteredAttributeIds_param") && vars.getString("$param.FilteredAttributeIds_param")) + { + let filteredIds = JSON.parse(vars.getString("$param.FilteredAttributeIds_param")); + + subCondition.clear(); + let filteredIdChildren = AttributeUtil.getAllChildren(filteredIds); + + filteredIds.concat(filteredIdChildren).forEach(function(id) + { + this.orPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", id); + }, subCondition); + + // return nothing if filteredAttributeIds is an empty array. (--> and 1=2) + sqlCondition.andSqlCondition(subCondition, "1=2"); + } +} + +//these fields are always required +var defaultFields = [ + "AB_ATTRIBUTERELATIONID", + "AB_ATTRIBUTE.AB_ATTRIBUTEID", + "AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", + "AB_ATTRIBUTE.ATTRIBUTE_TYPE", + "AB_ATTRIBUTE.ATTRIBUTE_NAME", + "AB_ATTRIBUTE.DROPDOWNDEFINITION", + "COMBOVAL.ATTRIBUTE_NAME" +]; +//these fields hold the attributeRelation value, depending on the attribute type +var valueFields = AttributeTypeUtil.getAllDatabaseFields(); +var attributeSql = sqlCondition.buildSql("select " + defaultFields.join(", ") + ", " + valueFields.join(", ") + + " from AB_ATTRIBUTE " + + attributeRelationJoin + + " left join AB_ATTRIBUTE COMBOVAL on " + $AttributeTypes.COMBO.databaseField + " = COMBOVAL.AB_ATTRIBUTEID" //for the view value of combobox attributes + , "1=2" +); + +var attributeValues = db.table(attributeSql).map(function (row) +{ + let attributeId = row[1]; + let attributeName = row[4]; + if (!getTree && !displaySimpleName && row[2]) + { + let parentName = AttributeUtil.getFullAttributeName(row[2]); + attributeName = (parentName ? parentName + " / " : "") + attributeName; + } + let value = row[AttributeTypeUtil.getTypeColumnIndex(row[3]) + defaultFields.length]; + let viewValue; + if (row[3].trim() == $AttributeTypes.COMBO) + viewValue = row[6]; + else + viewValue = AttributeTypeUtil.getAttributeViewValue(row[3].trim(), value, row[5]); + + //TODO: what should be the uid if showEmpty is true? + // V-- set "," to mark this as new generated UUID + return [row[0] || "," + util.getNewUUID(), row[2], value, viewValue, attributeId, attributeName]; +}); + + +var parentAttributes = []; +var attributeObj = {}; //object of attribute ids to avoid duplicates +if (getTree) + _fetchAttributes(attributeValues.map(function (row) {return row[1]})); + +allAttributes = TreeUtils.sortArrayForTree(parentAttributes, 0, 1).concat(attributeValues); + +result.object(allAttributes); + +/* + * recursive function that loads all superordinate attributes for the tree + */ +function _fetchAttributes (pAttributeIds) +{ + var sqlCondition = SqlCondition.begin(); + var nextIds = []; + pAttributeIds.forEach(function (id) + { + if (!(id in this)) + sqlCondition.orPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", id); + }, attributeObj); + db.table(sqlCondition.buildSql(sqlSelect, "1=2")) + .forEach(function (row) + { + this[row[0]] = true; + if (row[1]) + nextIds.push(row[1]); + else + row[1] = null; + parentAttributes.push(row); + }, attributeObj); + if (nextIds.length) + _fetchAttributes(nextIds); +} diff --git a/entity/AttributeUsage_entity/AttributeUsage_entity.aod b/entity/AttributeUsage_entity/AttributeUsage_entity.aod index 847cf2690b9c893a65ba6dba8c6435ed60da7cb1..5a78d2334bfb3e4b7f7139c4b48ca8f6f3983b14 100644 --- a/entity/AttributeUsage_entity/AttributeUsage_entity.aod +++ b/entity/AttributeUsage_entity/AttributeUsage_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>AttributeUsage_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/AttributeUsage_entity/documentation.adoc</documentation> @@ -55,6 +55,7 @@ <searchable v="false" /> <stateProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/min_count/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/min_count/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/min_count/displayValueProcess.js</displayValueProcess> <onValidation>%aditoprj%/entity/AttributeUsage_entity/entityfields/min_count/onValidation.js</onValidation> </entityField> <entityField> @@ -64,6 +65,7 @@ <searchable v="false" /> <stateProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/max_count/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/max_count/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/max_count/displayValueProcess.js</displayValueProcess> <onValidation>%aditoprj%/entity/AttributeUsage_entity/entityfields/max_count/onValidation.js</onValidation> </entityField> <entityConsumer> @@ -91,13 +93,11 @@ <entityParameter> <name>SingleSelection_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>DisableMinCount_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> </entityFields> diff --git a/entity/AttributeUsage_entity/entityfields/max_count/displayValueProcess.js b/entity/AttributeUsage_entity/entityfields/max_count/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8d45182f23c7ed4583c8b410ab827802792cf959 --- /dev/null +++ b/entity/AttributeUsage_entity/entityfields/max_count/displayValueProcess.js @@ -0,0 +1,6 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); + +var minCount = vars.get("$this.value"); +result.string(minCount != 0 ? translate.text("Maximal") + " " + minCount : ""); \ No newline at end of file diff --git a/entity/AttributeUsage_entity/entityfields/min_count/displayValueProcess.js b/entity/AttributeUsage_entity/entityfields/min_count/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..891ef3951fb86a9caa2840f3d731797fdbb3577f --- /dev/null +++ b/entity/AttributeUsage_entity/entityfields/min_count/displayValueProcess.js @@ -0,0 +1,6 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); + +var minCount = vars.get("$this.value"); +result.string(minCount != 0 ? translate.text("Minimal") + " " + minCount : ""); \ No newline at end of file diff --git a/entity/Attribute_entity/Attribute_entity.aod b/entity/Attribute_entity/Attribute_entity.aod index 5f7eb10769343718a61d8b871de45995b1431769..29caffcaf3d3b86706021b45f79b3b332ec3f566 100644 --- a/entity/Attribute_entity/Attribute_entity.aod +++ b/entity/Attribute_entity/Attribute_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Attribute_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Attribute_entity/documentation.adoc</documentation> @@ -60,13 +60,11 @@ <name>AttrParentId_param</name> <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributechildren/children/attrparentid_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>AttrParentType_param</name> <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributechildren/children/attrparenttype_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -118,7 +116,6 @@ <name>AttributeId_param</name> <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributeusages/children/attributeid_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>SingleSelection_param</name> @@ -150,21 +147,20 @@ <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/keywordattributetypes/children/containername_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> <entityField> - <name>KEYWORD_CONTAINER</name> + <name>DROPDOWNDEFINITION</name> <title>Keyword</title> - <dropDownProcess>%aditoprj%/entity/Attribute_entity/entityfields/keyword_container/dropDownProcess.js</dropDownProcess> + <dropDownProcess>%aditoprj%/entity/Attribute_entity/entityfields/dropdowndefinition/dropDownProcess.js</dropDownProcess> <searchable v="false" /> - <stateProcess>%aditoprj%/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js</stateProcess> + <stateProcess>%aditoprj%/entity/Attribute_entity/entityfields/dropdowndefinition/stateProcess.js</stateProcess> + <titleProcess>%aditoprj%/entity/Attribute_entity/entityfields/dropdowndefinition/titleProcess.js</titleProcess> </entityField> <entityParameter> <name>AttrParentType_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> @@ -331,7 +327,7 @@ <element>UID.value</element> <element>ATTRIBUTE_PARENT_ID.value</element> <element>ATTRIBUTE_ACTIVE.value</element> - <element>KEYWORD_CONTAINER.value</element> + <element>DROPDOWNDEFINITION.value</element> <element>SORTING.value</element> <element>ATTRIBUTE_TYPE.value</element> <element>ATTRIBUTE_TYPE.displayValue</element> diff --git a/entity/Attribute_entity/entityfields/attribute_type/onValueChange.js b/entity/Attribute_entity/entityfields/attribute_type/onValueChange.js index 1e41dcc648582d40537797bbf22e7d475b5424a4..680e7f2e1063cd169abc39d20c8f69490eace3f4 100644 --- a/entity/Attribute_entity/entityfields/attribute_type/onValueChange.js +++ b/entity/Attribute_entity/entityfields/attribute_type/onValueChange.js @@ -4,5 +4,5 @@ import("Attribute_lib"); import("Entity_lib"); var type = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.ATTRIBUTE_TYPE")) || ""; -if (type.trim() != $AttributeTypes.KEYWORD && vars.get("$field.KEYWORD_CONTAINER")) - neon.setFieldValue("$field.KEYWORD_CONTAINER", ""); \ No newline at end of file +if (type.trim() != $AttributeTypes.KEYWORD && vars.get("$field.DROPDOWNDEFINITION")) + neon.setFieldValue("$field.DROPDOWNDEFINITION", ""); \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/attributetypestate_param/valueProcess.js b/entity/Attribute_entity/entityfields/attributetypestate_param/valueProcess.js index 797792acfabfc8b1dce1c7af42b8a78a4dc9422e..146213fa8e56751c89aa0d7c84bc133d5db01943 100644 --- a/entity/Attribute_entity/entityfields/attributetypestate_param/valueProcess.js +++ b/entity/Attribute_entity/entityfields/attributetypestate_param/valueProcess.js @@ -18,14 +18,11 @@ if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) else if (AttributeTypeUtil.isGroupType(type)) { var hasSubordinate = db.cell(SqlCondition.begin() - .andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$field.UID") + .andPrepareVars("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", "$field.UID") .buildSql( - "select exists (" - + "select SUB.AB_ATTRIBUTEID from AB_ATTRIBUTE SUB " - + "where SUB.ATTRIBUTE_PARENT_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID" - + ") from AB_ATTRIBUTE", "1=2" + "select count(AB_ATTRIBUTEID) from AB_ATTRIBUTE", "1=2" ) - ) == "true"; + ) > 0; if (hasSubordinate) state = neon.COMPONENTSTATE_READONLY; } diff --git a/entity/Attribute_entity/entityfields/keyword_container/dropDownProcess.js b/entity/Attribute_entity/entityfields/dropdowndefinition/dropDownProcess.js similarity index 55% rename from entity/Attribute_entity/entityfields/keyword_container/dropDownProcess.js rename to entity/Attribute_entity/entityfields/dropdowndefinition/dropDownProcess.js index 53d4ce097815409c81e0f6b778eba652137b2b72..413cfa7747294ec669a2457c17b562b6a0877c54 100644 --- a/entity/Attribute_entity/entityfields/keyword_container/dropDownProcess.js +++ b/entity/Attribute_entity/entityfields/dropdowndefinition/dropDownProcess.js @@ -1,12 +1,21 @@ -import("system.vars"); -import("system.result"); -import("Keyword_lib"); -import("Attribute_lib"); - -var res = []; -if (vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.KEYWORD) - res = KeywordUtils.getContainerNames().map(function (e) - { - return [e, e];//currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers - }); -result.object(res); \ No newline at end of file +import("system.translate"); +import("Context_lib"); +import("system.vars"); +import("system.result"); +import("Keyword_lib"); +import("Attribute_lib"); + +var res = []; +var type = vars.get("$field.ATTRIBUTE_TYPE").trim(); +if (type == $AttributeTypes.KEYWORD) +{ + res = KeywordUtils.getContainerNames().map(function (e) + { + return [e, e];//currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers + }); +} +else if (type == $AttributeTypes.OBJECTSELECTION) +{ + res = ContextUtils.getContexts(true); +} +result.object(res); diff --git a/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js b/entity/Attribute_entity/entityfields/dropdowndefinition/stateProcess.js similarity index 61% rename from entity/Attribute_entity/entityfields/keyword_container/stateProcess.js rename to entity/Attribute_entity/entityfields/dropdowndefinition/stateProcess.js index cbe854fdd8770b66f3b660089035cbfb38fd9aa1..8335f36cceeaf1148dfe2e88e50b9ef1d8b565ec 100644 --- a/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js +++ b/entity/Attribute_entity/entityfields/dropdowndefinition/stateProcess.js @@ -1,14 +1,15 @@ -import("system.neon"); -import("system.vars"); -import("system.result"); -import("Attribute_lib"); - -var fieldState; -if (vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.KEYWORD && !AttributeUtil.hasRelations(vars.get("$field.UID"))) - fieldState = neon.COMPONENTSTATE_EDITABLE; -else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW) - fieldState = neon.COMPONENTSTATE_INVISIBLE; -else - fieldState = neon.COMPONENTSTATE_READONLY; - +import("system.neon"); +import("system.vars"); +import("system.result"); +import("Attribute_lib"); + +var fieldState; +if ((vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.KEYWORD || vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.OBJECTSELECTION) + && !AttributeUtil.hasRelations(vars.get("$field.UID"))) + fieldState = neon.COMPONENTSTATE_EDITABLE; +else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW) + fieldState = neon.COMPONENTSTATE_INVISIBLE; +else + fieldState = neon.COMPONENTSTATE_READONLY; + result.string(fieldState); \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/dropdowndefinition/titleProcess.js b/entity/Attribute_entity/entityfields/dropdowndefinition/titleProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f00cbd82e67e091c167605b83a160416e4b83853 --- /dev/null +++ b/entity/Attribute_entity/entityfields/dropdowndefinition/titleProcess.js @@ -0,0 +1,11 @@ +import("system.translate"); +import("system.neon"); +import("system.vars"); +import("system.result"); +import("Attribute_lib"); + +var type = vars.get("$field.ATTRIBUTE_TYPE").trim(); +if (type == $AttributeTypes.KEYWORD) + result.string(translate.text("Keyword")); +else if (type == $AttributeTypes.OBJECTSELECTION) + result.string(translate.text("Module")); diff --git a/entity/Attribute_entity/entityfields/icon/colorProcess.js b/entity/Attribute_entity/entityfields/icon/colorProcess.js index 302ce429bcdf61217ffa97c1b5b40051b5838f21..16a333ea2d60fe6b0abe35d82d40928889b5e3d3 100644 --- a/entity/Attribute_entity/entityfields/icon/colorProcess.js +++ b/entity/Attribute_entity/entityfields/icon/colorProcess.js @@ -1,6 +1,6 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if (vars.getString("$field.ATTRIBUTE_ACTIVE") != "1") - result.string(neon.PRIORITY_LOW_COLOR); \ No newline at end of file +import("system.vars"); +import("system.result"); +import("system.neon"); + +if (vars.getString("$field.ATTRIBUTE_ACTIVE") != "1") + result.string(neon.PRIORITY_LOW_COLOR); diff --git a/entity/Attribute_entity/recordcontainers/jdito/contentProcess.js b/entity/Attribute_entity/recordcontainers/jdito/contentProcess.js index 85ec8b3390e8d92172565db1488e356f6b4c0387..4aa2fc2aac11e228e042b757019152b6ee802d5f 100644 --- a/entity/Attribute_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Attribute_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,5 @@ +import("system.logging"); +import("system.translate"); import("Util_lib"); import("JditoFilter_lib"); import("KeywordRegistry_basic"); @@ -12,8 +14,10 @@ var getGroups = vars.exists("$param.GetGroups_param") && vars.get("$param.GetGro var objectType = vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param"); var parentType = vars.exists("$param.AttrParentType_param") && vars.get("$param.AttrParentType_param"); +logging.log([getGroups, objectType, parentType]) + var uidTableAlias = "UIDROW"; -var sqlSelect = "select UIDROW.AB_ATTRIBUTEID, UIDROW.ATTRIBUTE_PARENT_ID, UIDROW.ATTRIBUTE_ACTIVE, UIDROW.KEYWORD_CONTAINER, UIDROW.SORTING, UIDROW.ATTRIBUTE_TYPE, " +var sqlSelect = "select UIDROW.AB_ATTRIBUTEID, UIDROW.ATTRIBUTE_PARENT_ID, UIDROW.ATTRIBUTE_ACTIVE, UIDROW.DROPDOWNDEFINITION, UIDROW.SORTING, UIDROW.ATTRIBUTE_TYPE, " + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.attributeType(), "UIDROW.ATTRIBUTE_TYPE") //3 + ", '', UIDROW.ATTRIBUTE_NAME, PARENT1.ATTRIBUTE_NAME, PARENT2.ATTRIBUTE_NAME, PARENT3.ATTRIBUTE_NAME, PARENT3.ATTRIBUTE_PARENT_ID " + "from AB_ATTRIBUTE UIDROW " @@ -62,7 +66,7 @@ else if (objectType) //if there's an objectType, it comes from the AttributeRel if (ids.length > 0) condition.and("UIDROW.AB_ATTRIBUTEID in ('" + ids.join("','") + "')"); - else if (filteredAttributes != null) // do not return anything, if parameter is there but an empty array + else // do not return anything, if parameter is there but an empty array condition.and("1=2"); @@ -138,7 +142,10 @@ function _buildAttributeTable (pAttributes, pUsages) let rowData = rows[i].data; if (rowData[5].trim() != $AttributeTypes.COMBOVALUE && i in pUsages) { - rowData[7] = pUsages[i].join(", "); + rowData[7] = pUsages[i].map(function (usage) + { + return translate.text(usage); + }).join(", "); } var fullName = displaySimpleName ? rowData[8] diff --git a/entity/Attribute_entity/recordcontainers/jdito/onInsert.js b/entity/Attribute_entity/recordcontainers/jdito/onInsert.js index 1409f43794007ac09be06eb16a823a15a24edf50..40e10e11b533fc5ccee823daad6872941beebaf7 100644 --- a/entity/Attribute_entity/recordcontainers/jdito/onInsert.js +++ b/entity/Attribute_entity/recordcontainers/jdito/onInsert.js @@ -1,23 +1,23 @@ -import("system.db"); -import("system.vars"); - -var columns = [ - "AB_ATTRIBUTEID", - "ATTRIBUTE_ACTIVE", - "ATTRIBUTE_NAME", - "ATTRIBUTE_PARENT_ID", - "ATTRIBUTE_TYPE", - "KEYWORD_CONTAINER", - "SORTING" -]; -var values = [ - vars.get("$field.UID"), - vars.get("$field.ATTRIBUTE_ACTIVE"), - vars.get("$field.ATTRIBUTE_NAME"), - vars.get("$field.ATTRIBUTE_PARENT_ID"), - vars.get("$field.ATTRIBUTE_TYPE"), - vars.get("$field.KEYWORD_CONTAINER"), - vars.get("$field.SORTING") -]; - +import("system.db"); +import("system.vars"); + +var columns = [ + "AB_ATTRIBUTEID", + "ATTRIBUTE_ACTIVE", + "ATTRIBUTE_NAME", + "ATTRIBUTE_PARENT_ID", + "ATTRIBUTE_TYPE", + "DROPDOWNDEFINITION", + "SORTING" +]; +var values = [ + vars.get("$field.UID"), + vars.get("$field.ATTRIBUTE_ACTIVE"), + vars.get("$field.ATTRIBUTE_NAME"), + vars.get("$field.ATTRIBUTE_PARENT_ID"), + vars.get("$field.ATTRIBUTE_TYPE"), + vars.get("$field.DROPDOWNDEFINITION"), + vars.get("$field.SORTING") +]; + db.insertData("AB_ATTRIBUTE", columns, null, values); \ No newline at end of file diff --git a/entity/Attribute_entity/recordcontainers/jdito/onUpdate.js b/entity/Attribute_entity/recordcontainers/jdito/onUpdate.js index 32f0f0d8de80a70ce6cf3e87f947b759ca44fc3f..af114d5a96bcef11470b6da3b48910bb0b5ef555 100644 --- a/entity/Attribute_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/Attribute_entity/recordcontainers/jdito/onUpdate.js @@ -7,7 +7,7 @@ var columns = [ "ATTRIBUTE_NAME", "ATTRIBUTE_PARENT_ID", "ATTRIBUTE_TYPE", - "KEYWORD_CONTAINER", + "DROPDOWNDEFINITION", "SORTING" ]; var values = [ @@ -15,7 +15,7 @@ var values = [ vars.get("$field.ATTRIBUTE_NAME"), vars.get("$field.ATTRIBUTE_PARENT_ID"), vars.get("$field.ATTRIBUTE_TYPE"), - vars.get("$field.KEYWORD_CONTAINER"), + vars.get("$field.DROPDOWNDEFINITION"), vars.get("$field.SORTING") ]; diff --git a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..5589bd9878f1183e93cc6c37ae291d03d87a8bcf --- /dev/null +++ b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> + <name>BulkMailRecipient_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <title>Recipient</title> + <titlePlural>Recipients</titlePlural> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>BULKMAIL_ID</name> + <valueProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/bulkmail_id/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>CONTACT_ID</name> + <title>Contact</title> + <consumer>Contacts</consumer> + <linkedContextProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess> + <displayValueProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>STATUS</name> + <title>Status</title> + <consumer>StatusKeyword</consumer> + <valueProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/status/valueProcess.js</valueProcess> + </entityField> + <entityProvider> + <name>BulkMailRecipients</name> + <targetContextField>targetContext</targetContextField> + <targetIdField>CONTACT_ID</targetIdField> + <dependencies> + <entityDependency> + <name>575e04ed-14aa-456c-8236-0bd284b1315f</name> + <entityName>BulkMail_entity</entityName> + <fieldName>Recipients</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityParameter> + <name>BulkMailId_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>BULKMAILRECIPIENTID</name> + </entityField> + <entityField> + <name>targetContext</name> + <valueProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/targetcontext/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>Contacts</name> + <dependency> + <name>dependency</name> + <entityName>AnyContact_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>StatusKeyword</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <conditionProcess>%aditoprj%/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <linkInformation> + <linkInformation> + <name>760deb9b-6b31-48b5-a339-595d3d104bb5</name> + <tableName>BULKMAILRECIPIENT</tableName> + <primaryKey>BULKMAILRECIPIENTID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>BULKMAIL_ID.value</name> + <recordfield>BULKMAILRECIPIENT.BULKMAIL_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>BULKMAILRECIPIENTID.value</name> + <recordfield>BULKMAILRECIPIENT.BULKMAILRECIPIENTID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ID.value</name> + <recordfield>BULKMAILRECIPIENT.CONTACT_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>STATUS.value</name> + <recordfield>BULKMAILRECIPIENT.STATUS</recordfield> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/BulkMailRecipient_entity/entityfields/bulkmail_id/valueProcess.js b/entity/BulkMailRecipient_entity/entityfields/bulkmail_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..cea362d78f9084fe85f7764b09d0a1fde3065017 --- /dev/null +++ b/entity/BulkMailRecipient_entity/entityfields/bulkmail_id/valueProcess.js @@ -0,0 +1,10 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + if (vars.exists("$param.BulkMailId_param") && vars.get("$param.BulkMailId_param")) + result.string(vars.getString("$param.BulkMailId_param")); +} + diff --git a/entity/BulkMailRecipient_entity/entityfields/contact_id/displayValueProcess.js b/entity/BulkMailRecipient_entity/entityfields/contact_id/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..85822946ab4fe0ba7730ca93fd6fca69250a5b33 --- /dev/null +++ b/entity/BulkMailRecipient_entity/entityfields/contact_id/displayValueProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.vars"); +import("Contact_lib"); +import("system.neon"); + +result.string(ContactUtils.getFullTitleByContactId(vars.getString("$field.CONTACT_ID"))); \ No newline at end of file diff --git a/entity/BulkMailRecipient_entity/entityfields/contact_id/linkedContextProcess.js b/entity/BulkMailRecipient_entity/entityfields/contact_id/linkedContextProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2e504d63e3b5a3f71b54b072798b3ad09c50984b --- /dev/null +++ b/entity/BulkMailRecipient_entity/entityfields/contact_id/linkedContextProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("Contact_lib"); + +result.string(ContactUtils.getContextByContactId(vars.getString("$field.CONTACT_ID"))); \ No newline at end of file diff --git a/entity/BulkMailRecipient_entity/entityfields/status/valueProcess.js b/entity/BulkMailRecipient_entity/entityfields/status/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..1c341faf48f943058c829be897c929c77001147c --- /dev/null +++ b/entity/BulkMailRecipient_entity/entityfields/status/valueProcess.js @@ -0,0 +1,2 @@ + +//preset pending \ No newline at end of file diff --git a/entity/BulkMailRecipient_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js b/entity/BulkMailRecipient_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ed3b8531d70d092278f787ddb54e289b20931b4e --- /dev/null +++ b/entity/BulkMailRecipient_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("BulkMailSentStatus"); //TODO: keyword registry \ No newline at end of file diff --git a/entity/BulkMailRecipient_entity/entityfields/targetcontext/valueProcess.js b/entity/BulkMailRecipient_entity/entityfields/targetcontext/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..a15d38343e1dfbb1e1e80999aa6f9440cef261ea --- /dev/null +++ b/entity/BulkMailRecipient_entity/entityfields/targetcontext/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("Context_lib"); + +result.string(ContextUtils.getContextName("Person")); \ No newline at end of file diff --git a/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js b/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ca4a5c0748545f13847d1a5993051065553804f6 --- /dev/null +++ b/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,8 @@ +import("system.db"); +import("system.result"); +import("Sql_lib"); + +var condition = SqlCondition.begin() + .andPrepareVars("BULKMAILRECIPIENT.BULKMAIL_ID", "$param.BulkMailId_param"); + +result.string(db.translateCondition(condition.build("1=2"))); \ No newline at end of file diff --git a/entity/BulkMail_entity/BulkMail_entity.aod b/entity/BulkMail_entity/BulkMail_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..b5380f1f61ed0ebb81fb451ec16431c9f369c349 --- /dev/null +++ b/entity/BulkMail_entity/BulkMail_entity.aod @@ -0,0 +1,98 @@ +<?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.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> + <name>BulkMail_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:ENVELOPES</icon> + <title>Bulk mail</title> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>BULKMAILID</name> + </entityField> + <entityField> + <name>NAME</name> + <title>Name</title> + </entityField> + <entityField> + <name>SUBJECT</name> + <title>Subject</title> + </entityField> + <entityField> + <name>DESCRIPTION</name> + <title>Description</title> + </entityField> + <entityField> + <name>DOCUMENTTEMPLATE_ID</name> + <title>Document Template</title> + <consumer>Templates</consumer> + </entityField> + <entityConsumer> + <name>Recipients</name> + <dependency> + <name>dependency</name> + <entityName>BulkMailRecipient_entity</entityName> + <fieldName>BulkMailRecipients</fieldName> + </dependency> + <children> + <entityParameter> + <name>BulkMailId_param</name> + <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/recipients/children/bulkmailid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>Templates</name> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>STATUS</name> + </entityField> + <entityField> + <name>SENDER</name> + </entityField> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <linkInformation> + <linkInformation> + <name>bccfb408-864f-41e3-b9ac-eef18f1f53c4</name> + <tableName>BULKMAIL</tableName> + <primaryKey>BULKMAILID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>BULKMAILID.value</name> + <recordfield>BULKMAIL.BULKMAILID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DESCRIPTION.value</name> + <recordfield>BULKMAIL.DESCRIPTION</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DOCUMENTTEMPLATE_ID.value</name> + <recordfield>BULKMAIL.DOCUMENTTEMPLATE_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>NAME.value</name> + <recordfield>BULKMAIL.NAME</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SUBJECT.value</name> + <recordfield>BULKMAIL.SUBJECT</recordfield> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/BulkMail_entity/entityfields/recipients/children/bulkmailid_param/valueProcess.js b/entity/BulkMail_entity/entityfields/recipients/children/bulkmailid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2a12b8389ba83e397d6b9ae10eb59989a25590fe --- /dev/null +++ b/entity/BulkMail_entity/entityfields/recipients/children/bulkmailid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.BULKMAILID")); \ No newline at end of file diff --git a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod index 6999aa6d83f40c68feb35600006c8139c3435ea3..84f549db4a81ff69e3572a152c2a2115f7d27e5f 100644 --- a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod +++ b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>CampaignAddParticipants_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Add participants to Campaign</title> @@ -62,7 +62,6 @@ <name>campaignId_param</name> <valueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaignstepconsumer/children/campaignid_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -95,12 +94,10 @@ <entityParameter> <name>campaignParticipants_param</name> <valueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaignanalyses/children/campaignparticipants_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>campaignStepId_param</name> <valueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaignanalyses/children/campaignstepid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> diff --git a/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod b/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod index c52609e15377d231b79f68e9da5b6f737612eedd..69cb219cfd312afc22b9cea0fb43b0c6eed8826e 100644 --- a/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod +++ b/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>CampaignAnalysis_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <recordContainer>jdito</recordContainer> diff --git a/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod b/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod index eca39381b498caeca64c4e275adb059c16e5643f..f7a27c33ac15ae5eb0c9161aaea372531cd17dfc 100644 --- a/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod +++ b/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>CampaignCostChart_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <recordContainer>jdito</recordContainer> diff --git a/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod b/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod index 1c35951407533bf81ae89a12e87b57fa33ebcd1b..1bace191a21df6819ecf6e85dd26e426793faf89 100644 --- a/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod +++ b/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>CampaignCost_entitiy</name> <majorModelMode>DISTRIBUTED</majorModelMode> <afterOperatingState>%aditoprj%/entity/CampaignCost_entitiy/afterOperatingState.js</afterOperatingState> diff --git a/entity/CampaignCost_entity/CampaignCost_entity.aod b/entity/CampaignCost_entity/CampaignCost_entity.aod index 663e19dff74016452c99141aa28d925322a2e7d7..c50f744a3c5d9eb96cc95685de523c0a2361c059 100644 --- a/entity/CampaignCost_entity/CampaignCost_entity.aod +++ b/entity/CampaignCost_entity/CampaignCost_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>CampaignCost_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <afterOperatingState>%aditoprj%/entity/CampaignCost_entity/afterOperatingState.js</afterOperatingState> diff --git a/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod b/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod index bc388fa15464cd123b8a9d517314e23af3df1e89..f30172a7deac43064afd53df1323901e7e26dd43 100644 --- a/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod +++ b/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>CampaignParticipantChart_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <recordContainer>jdito</recordContainer> diff --git a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod index 3841ed1b0c35257c44fd88c153db724a7d6e64d5..8415479efcab29b2fd7a0304154ec135c9578f50 100644 --- a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod +++ b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>CampaignParticipant_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Participant</title> @@ -49,14 +49,12 @@ <entityParameter> <name>CampaignStepId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>CampaignId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> <description>PARAMETER</description> </entityParameter> @@ -104,7 +102,6 @@ <entityParameter> <name>ContactId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityField> @@ -152,7 +149,6 @@ <name>campaignId_param</name> <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -183,6 +179,25 @@ <title>Max participants</title> <displayValueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/campaignstepmaxparticipantcount/displayValueProcess.js</displayValueProcess> </entityField> + <entityField> + <name>ADVERTISINGBAN_ICON</name> + <contentType>TEXT</contentType> + <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>ParticipantsCommRestiction</name> + <dependency> + <name>dependency</name> + <entityName>CommRestriction_Entity</entityName> + <fieldName>PersonsCommRestriction</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContactId_param</name> + <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/participantscommrestiction/children/contactid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..07627fcdb556afcdbc40e12910b3f3e923eec814 --- /dev/null +++ b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/valueProcess.js @@ -0,0 +1,14 @@ +import("system.result"); +import("Sql_lib"); +import("system.logging"); +import("system.vars"); +import("system.db"); + +var contact = vars.get("$field.CONTACT_ID"); +var commres = db.table(SqlCondition.begin() + .andPrepareVars("COMMRESTRICTION.CONTACT_ID", "$field.CONTACT_ID") + .buildSql("select MEDIUM from COMMRESTRICTION", "1=2")); + +logging.log(commres.toSource()); + +result.string(commres); diff --git a/entity/CampaignStep_entity/CampaignStep_entity.aod b/entity/CampaignStep_entity/CampaignStep_entity.aod index 8e574ce76ab900547a1e3b137fc6778d84b1f86a..80f03f5a37a44f9d51299501c93bed89c1dd448b 100644 --- a/entity/CampaignStep_entity/CampaignStep_entity.aod +++ b/entity/CampaignStep_entity/CampaignStep_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>CampaignStep_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>NEON:GROUP_APPOINTMENT</icon> @@ -144,7 +144,6 @@ <entityParameter> <name>campaignId_param</name> <expose v="true" /> - <triggerRecalculation v="false" /> <mandatory v="true" /> </entityParameter> </children> @@ -152,7 +151,6 @@ <entityParameter> <name>campaignId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityConsumer> diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod index c7de7e7b77a3bd6d461c051a8df896aa68b75f90..328e9a0af0deb7ba95f8b76e0cf6f90bbf1cf606 100644 --- a/entity/Campaign_entity/Campaign_entity.aod +++ b/entity/Campaign_entity/Campaign_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Campaign_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:GROUP</icon> @@ -104,7 +104,6 @@ <name>campaignId_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="false" /> <mandatory v="true" /> </entityParameter> </children> diff --git a/entity/ClassificationAdmin_entity/ClassificationAdmin_entity.aod b/entity/ClassificationAdmin_entity/ClassificationAdmin_entity.aod index e3cded7f7c29c8a7186004384fe671b604f63945..b42f3d43475016789581492e3cf7c11af77ab6b7 100644 --- a/entity/ClassificationAdmin_entity/ClassificationAdmin_entity.aod +++ b/entity/ClassificationAdmin_entity/ClassificationAdmin_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>ClassificationAdmin_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:LIST_OL</icon> @@ -52,7 +52,6 @@ <entityField> <name>CLASSIFICATIONTYPEID</name> <searchable v="false" /> - <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/valueProcess.js</valueProcess> </entityField> <entityField> <name>CLASSIFICATIONGROUP</name> diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/valueProcess.js deleted file mode 100644 index 16c47d8b58490ac63829673a531ffce4e6896745..0000000000000000000000000000000000000000 --- a/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/valueProcess.js +++ /dev/null @@ -1,10 +0,0 @@ -import("system.util"); -import("system.result"); -import("system.neon"); -import("system.vars"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) -{ - var newId = util.getNewUUID(); - result.string(newId); -} \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/recordcontainers/jdito/contentProcess.js b/entity/ClassificationAdmin_entity/recordcontainers/jdito/contentProcess.js index c2b453ca932d02b33f33aac2fb385217d73feb8f..52a61eb71abaeb31c3468bf91027f2167d1f47a1 100644 --- a/entity/ClassificationAdmin_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/ClassificationAdmin_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,4 @@ +import("system.logging"); import("JditoFilter_lib"); import("Classification_lib"); import("system.vars"); @@ -8,17 +9,12 @@ import("system.result"); var classificationId; var classificationTypeId; -// if the id starts with "C," it is a classificationId. If it starts with "T,", it is a classificationtypeId if (vars.exists("$local.idvalues") && vars.get("$local.idvalues") && vars.get("$local.idvalues").length > 0) { - var selected = vars.get("$local.idvalues")[0].split(","); - if (selected.length == 2) - { - if (selected[0] == 'C') - classificationId = selected[1] - else if (selected[0] == 'T') - classificationTypeId = selected[1] - } + var selected = vars.get("$local.idvalues")[0]; + logging.log(selected.toSource()) + + classificationTypeId = selected; } var cond = SqlCondition.begin() @@ -42,7 +38,7 @@ if (vars.exists("$local.filter") && vars.get("$local.filter")) } var masking = new SqlMaskingUtils(); -result.object(db.table(cond.buildSql("select case when CLASSIFICATIONID is not null then " + masking.concat(["'C,'", "CLASSIFICATIONID"], "", false) + " else " + masking.concat(["'T,'", "CLASSIFICATIONTYPEID"], "", false) + " end, CLASSIFICATIONID, CLASSIFICATIONGROUP, CLASSIFICATIONSCORE_ID, CLASSIFICATIONTYPEID, CLASSIFICATIONTYPE_ID, OBJECT_TYPE, OBJECT_ROWID, SCORETYPE, CLASSIFICATIONTYPE.CLASSIFICATIONTYPE from CLASSIFICATION \n\ +result.object(db.table(cond.buildSql("select CLASSIFICATIONTYPEID, CLASSIFICATIONID, CLASSIFICATIONGROUP, CLASSIFICATIONSCORE_ID, CLASSIFICATIONTYPEID, CLASSIFICATIONTYPE_ID, OBJECT_TYPE, OBJECT_ROWID, SCORETYPE, CLASSIFICATIONTYPE.CLASSIFICATIONTYPE from CLASSIFICATION \n\ right join CLASSIFICATIONTYPE on " + db.translateCondition(SqlCondition.begin() .and("CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPEID") .andPrepareVars("CLASSIFICATION.OBJECT_TYPE", "$param.ObjectType_param") diff --git a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onInsert.js b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onInsert.js index 5abae8836df8a9065da11605f54e2ca73902aa91..7245a3d2d8f9830c28f851d410c42566a721ad0f 100644 --- a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onInsert.js +++ b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onInsert.js @@ -3,7 +3,7 @@ import("system.util"); import("system.vars"); db.insertData("CLASSIFICATIONTYPE", ["CLASSIFICATIONTYPEID", "CLASSIFICATIONTYPE", "SCORETYPE", "CLASSIFICATIONGROUP"], null, [ - vars.get("$field.CLASSIFICATIONTYPEID"), + vars.get("$field.UID"), vars.get("$field.CLASSIFICATIONTYPE"), vars.get("$field.SCORETYPE"), vars.get("$field.CLASSIFICATIONGROUP"), diff --git a/entity/ClassificationScore_entity/ClassificationScore_entity.aod b/entity/ClassificationScore_entity/ClassificationScore_entity.aod index 8dc6d4f366c40e6a0ac4bd381982d58cbcf1c53e..810874d91a119469eaa6ebc521bf45d28331bf7d 100644 --- a/entity/ClassificationScore_entity/ClassificationScore_entity.aod +++ b/entity/ClassificationScore_entity/ClassificationScore_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>ClassificationScore_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Possible Value</title> @@ -44,19 +44,16 @@ <entityParameter> <name>ClassificationGroup_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> <entityParameter> <name>ClassificationTypeId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> <entityParameter> <name>ClassificationType_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> @@ -64,7 +61,6 @@ <entityParameter> <name>ClassificationTypeId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityField> @@ -74,7 +70,6 @@ <entityParameter> <name>ClassificationGroup_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> diff --git a/entity/ClassificationType_entity/ClassificationType_entity.aod b/entity/ClassificationType_entity/ClassificationType_entity.aod index 87518872dc661a4517ff86c0907b8cdf4aad9e12..33db4fa7f5461f87b68cbfc30ab7c0636f173539 100644 --- a/entity/ClassificationType_entity/ClassificationType_entity.aod +++ b/entity/ClassificationType_entity/ClassificationType_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>ClassificationType_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <entityFields> diff --git a/entity/Classification_entity/Classification_entity.aod b/entity/Classification_entity/Classification_entity.aod index d38b34d7155f9db1a6812c423b852d52b6e5069b..41ecaaf9d7ec40aeeab5edf7ab6b2213842efd25 100644 --- a/entity/Classification_entity/Classification_entity.aod +++ b/entity/Classification_entity/Classification_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Classification_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Classification</title> diff --git a/entity/CommRestriction_Entity/CommRestriction_Entity.aod b/entity/CommRestriction_Entity/CommRestriction_Entity.aod index 9b56ec04b3adeaa4b247d6a1f4aa77b0acf81e55..ef0e6d0b71796f32427d09c76681e6ae5cf13ebd 100644 --- a/entity/CommRestriction_Entity/CommRestriction_Entity.aod +++ b/entity/CommRestriction_Entity/CommRestriction_Entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>CommRestriction_Entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Advertising ban</title> @@ -82,7 +82,6 @@ <entityParameter> <name>PersonId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> @@ -90,7 +89,6 @@ <entityParameter> <name>PersonId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> <entityField> diff --git a/entity/Communication_entity/Communication_entity.aod b/entity/Communication_entity/Communication_entity.aod index db82db07eeff1ad87ae8cf1b4d8774aec2770ab3..39af552b0f331027b89b35f390e78db421b355a9 100644 --- a/entity/Communication_entity/Communication_entity.aod +++ b/entity/Communication_entity/Communication_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Communication_entity</name> <description>former Comm</description> <majorModelMode>DISTRIBUTED</majorModelMode> @@ -182,7 +182,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <entityParameter> <name>CommMediumIds_param</name> <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/commmediumids_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityConsumer> diff --git a/entity/Competition_entity/Competition_entity.aod b/entity/Competition_entity/Competition_entity.aod index a4c7e2042f93d9efc99cab70a093650b2bae8986..8d1b7c6bd8b95a044b221fa7736f329489cc8eb6 100644 --- a/entity/Competition_entity/Competition_entity.aod +++ b/entity/Competition_entity/Competition_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Competition_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Competition</title> @@ -78,7 +78,6 @@ <entityParameter> <name>ContactId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -217,7 +216,6 @@ <entityParameter> <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/Competition_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> @@ -247,13 +245,11 @@ <entityParameter> <name>ObjectRowId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>ObjectType_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityConsumer> @@ -276,7 +272,6 @@ <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Competition_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> @@ -296,12 +291,10 @@ <entityParameter> <name>ObjectRowId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityProvider> diff --git a/entity/Competition_entity/fromClauseProcess.js b/entity/Competition_entity/fromClauseProcess.js index 93e25f58bf5e95ba49314fa1cd20000066dac054..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/entity/Competition_entity/fromClauseProcess.js +++ b/entity/Competition_entity/fromClauseProcess.js @@ -1,4 +0,0 @@ -import("system.result"); - -result.string("COMPETITION left join CONTACT on (CONTACT.CONTACTID = COMPETITION.CONTACT_ID) " - + "left join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID)"); \ No newline at end of file diff --git a/entity/Competition_entity/recordcontainers/db/fromClauseProcess.js b/entity/Competition_entity/recordcontainers/db/fromClauseProcess.js index 0384058046ec3037b95e40f9517af1f0949550e8..8242beefbb6bfe56cd7644e540f382077854b05c 100644 --- a/entity/Competition_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Competition_entity/recordcontainers/db/fromClauseProcess.js @@ -1,4 +1,5 @@ import("system.result"); -result.string("COMPETITION " - + "left join ORGANISATION on (ORGANISATION.ORGANISATIONID = COMPETITION.CONTACT_ID)"); \ No newline at end of file +result.string("COMPETITION \n\ + left join CONTACT on (COMPETITION.CONTACT_ID = CONTACT.CONTACTID) \n\ + left join ORGANISATION on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID)"); \ No newline at end of file diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod index 73255156b682645361317cd9a095483199426899..c03d2f2816f42fa855a010247046ba8c9315152b 100644 --- a/entity/Contact_entity/Contact_entity.aod +++ b/entity/Contact_entity/Contact_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Contact_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Contact_entity/documentation.adoc</documentation> diff --git a/entity/Context_entity/Context_entity.aod b/entity/Context_entity/Context_entity.aod index 77dc95ff5caa799c426b231a4854066031698684..d0893562e2044051c534d795f2ac6655a11ccedd 100644 --- a/entity/Context_entity/Context_entity.aod +++ b/entity/Context_entity/Context_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Context_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Context_entity/documentation.adoc</documentation> diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod index f23de4fe3fe842672ef30652d30b1bc40354b645..8a808064792cd913e1b49a847d3fe01324475527 100644 --- a/entity/Contract_entity/Contract_entity.aod +++ b/entity/Contract_entity/Contract_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Contract_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Contract_entity/documentation.adoc</documentation> @@ -79,7 +79,7 @@ <entityField> <name>CONTACT_ID</name> <documentation>%aditoprj%/entity/Contract_entity/entityfields/contact_id/documentation.adoc</documentation> - <title>Connection</title> + <title>Contact</title> <consumer>AnyContacts</consumer> <linkedContextProcess>%aditoprj%/entity/Contract_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess> <mandatory v="true" /> @@ -180,12 +180,12 @@ </entityProvider> <entityField> <name>CONTACT_ORG_ID</name> - <title>CONTACT_ORG_ID</title> + <title>Company</title> <searchable v="false" /> </entityField> <entityField> <name>CONTACT_PERSON_ID</name> - <title>CONTACT_PERSON_ID</title> + <title>Person</title> <searchable v="false" /> </entityField> <entityConsumer> @@ -199,17 +199,14 @@ <children> <entityParameter> <name>AssignmentName_param</name> - <triggerRecalculation v="false" /> </entityParameter> <entityParameter> <name>AssignmentRowId_param</name> <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="false" /> </entityParameter> <entityParameter> <name>AssignmentTable_param</name> <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> - <triggerRecalculation v="false" /> </entityParameter> </children> </entityConsumer> @@ -298,13 +295,11 @@ <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -319,12 +314,10 @@ <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -479,6 +472,14 @@ <name>CONTRACTTYPE.displayValue</name> <expression>%aditoprj%/entity/Contract_entity/recordcontainers/db/recordfieldmappings/contracttype.displayvalue/expression.js</expression> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ORG_ID.displayValue</name> + <recordfield>ORGANISATION.NAME</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_PERSON_ID.displayValue</name> + <expression>%aditoprj%/entity/Contract_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Contract_entity/recordcontainers/db/fromClauseProcess.js b/entity/Contract_entity/recordcontainers/db/fromClauseProcess.js index d48c1c87c7ab0ff8273e2d7ff400ecb96fe87c1f..e247a2acf8970cdbcb522e91f1d089239394498b 100644 --- a/entity/Contract_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Contract_entity/recordcontainers/db/fromClauseProcess.js @@ -1,4 +1,6 @@ import("system.result"); -result.string("CONTRACT left join CONTACT on CONTACTID = CONTACT_ID \n\ -left join ORGANISATION on ORGANISATIONID = ORGANISATION_ID left join PERSON on PERSONID = PERSON_ID"); \ No newline at end of file +result.string("CONTRACT \n\ + left join CONTACT on CONTACT.CONTACTID = CONTRACT.CONTACT_ID \n\ + left join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID\n\ + left join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID"); \ No newline at end of file diff --git a/entity/Contract_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js b/entity/Contract_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..e5f6d2a4902ec5e2ffaa71188b089757bb66701e --- /dev/null +++ b/entity/Contract_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js @@ -0,0 +1,4 @@ +import("Person_lib"); +import("system.result"); + +result.string(PersUtils.getDisplaySqlExpression()); \ No newline at end of file diff --git a/entity/Countries_Entity/Countries_Entity.aod b/entity/Countries_Entity/Countries_Entity.aod index e0c86529b2ae290b46619408911cbe8f5a4b2408..3c4da9d1e85cd7b0effe440b4e7a30455616d4a8 100644 --- a/entity/Countries_Entity/Countries_Entity.aod +++ b/entity/Countries_Entity/Countries_Entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Countries_Entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Countries_Entity/documentation.adoc</documentation> @@ -106,6 +106,7 @@ <dbRecordContainer> <name>db</name> <alias>Data_alias</alias> + <isPageable v="false" /> <orderClauseProcess>%aditoprj%/entity/Countries_Entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> <linkInformation> <linkInformation> diff --git a/entity/DSGVO_entity/recordcontainers/db/onDBInsert.js b/entity/DSGVO_entity/recordcontainers/db/onDBInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..09754cf5860927f9a6380fa0a8dad7fa1c185b87 --- /dev/null +++ b/entity/DSGVO_entity/recordcontainers/db/onDBInsert.js @@ -0,0 +1,43 @@ +import("KeywordRegistry_basic"); +import("Keyword_lib"); +import("system.db"); +import("system.neon"); +import("system.vars"); +import("system.util"); + + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + var cols = ["USER_NEW" , "USER_EDIT" , "DSGVOID" , "ROW_ID" , "DATE_NEW" , + "TABLENAME" , "DATE_EDIT" , "RIGHT" , "VALID_TO" , "CONTACT_ID" , "USE"]; + + var vals = [vars.get("$sys.user"), null, util.getNewUUID(), + vars.get("$field.ROW_ID"), vars.get("$sys.date"), vars.get("$field.TABLENAME"), + null, KeywordUtils. vars.get("$field.RIGHT").valueOf(), vars.get("$field.VALID_TO"), + vars.get("$field.CONTACT_ID"), vars.get("$field.USE").valueOf()]; + // KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.DSGVOUse(), "DSGVO.USE"); + db.insertData("DSGVO", cols, null, vals); +} + // TODO Eintrag in DSGVO Tabelle + + /* + * + var InputMapping = { + "OFFERITEM": { + condition: "OFFER_ID = '" + pSourceOfferId + "' order by ITEMSORT", + ValueMapping: { + "OFFER_ID" : pTargetOfferId + } + } + }; + CopyModuleUtils.copyModule(InputMapping); + + var oiUtils = new OfferItemUtils(pTargetOfferId); + + //update order price + cols = ["NET", "VAT"]; + var vals = oiUtils.getNetAndVat(); + + db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", pTargetOfferId, "1 = 2")); + * + */ \ No newline at end of file diff --git a/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod b/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod index 3a6a4f24d554c6915c8d013b11ee00dec57ec270..6f4ab549ba6c4dd42e4d6edd3ce3fe6f963b70ed 100644 --- a/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod +++ b/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>DocumentTemplateLink_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Attachment</title> @@ -46,7 +46,6 @@ <entityParameter> <name>DocumentId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityConsumer> @@ -80,19 +79,16 @@ <entityParameter> <name>DocumentId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>Type_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityProvider> <entityParameter> <name>Type_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityActionField> diff --git a/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod b/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod index 5cf2a393d37c16253555bcad5c575683ce3ab26b..35f0c344adee45cf3eeb9bacc714671322a7c1cb 100644 --- a/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod +++ b/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>DocumentTemplateTypeCategory_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <contentTitleProcess>%aditoprj%/entity/DocumentTemplateTypeCategory_entity/contentTitleProcess.js</contentTitleProcess> @@ -11,7 +11,6 @@ <entityParameter> <name>usageFilter_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityField> diff --git a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod index 29cc3a7787ce8f5731acdb8b555a1ef27a3ed963..3b8bcc92f0429cc34ae54a105b72f1bef40cca44 100644 --- a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod +++ b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>DocumentTemplate_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:FILE_FONT</icon> @@ -197,13 +197,11 @@ <name>DocumentId_param</name> <valueProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/links/children/documentid_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>Type_param</name> <valueProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/links/children/type_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -239,12 +237,17 @@ <fieldName>DocumentTemplates</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>233d356c-c81b-41e6-8489-440ca8c81dfa</name> + <entityName>BulkMail_entity</entityName> + <fieldName>Templates</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityParameter> <name>DocumentTemplateType_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityField> diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod index a55d8a3546b5f5b92f669e2ce412af4488003eb2..c9316e69006fff9e898478648ed1f4e7a69481d1 100644 --- a/entity/Document_entity/Document_entity.aod +++ b/entity/Document_entity/Document_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Document_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Document</title> @@ -92,6 +92,7 @@ <entityField> <name>UID</name> <searchable v="false" /> + <valueProcess>%aditoprj%/entity/Document_entity/entityfields/uid/valueProcess.js</valueProcess> </entityField> <entityField> <name>DESCRIPTION</name> diff --git a/entity/Document_entity/entityfields/uid/valueProcess.js b/entity/Document_entity/entityfields/uid/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..cb202a4d661d58a69eaba5744ae3bb7f264682fe --- /dev/null +++ b/entity/Document_entity/entityfields/uid/valueProcess.js @@ -0,0 +1,4 @@ +import("system.util"); +import("system.result"); +var uid = util.getNewUUID(); +result.string(uid) \ No newline at end of file diff --git a/entity/Document_entity/recordcontainers/jdito/contentProcess.js b/entity/Document_entity/recordcontainers/jdito/contentProcess.js index d58680419fb0222dbafbccafa1e60bb03cce7c8a..a4ad1b837c44901630593abd843a4467f6ca8707 100644 --- a/entity/Document_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Document_entity/recordcontainers/jdito/contentProcess.js @@ -5,7 +5,8 @@ import("system.db"); // Check if assignment parameters are present if(vars.exists("$param.AssignmentTable_param") && vars.exists("$param.AssignmentName_param") && - vars.exists("$param.AssignmentRowId_param")) { + vars.exists("$param.AssignmentRowId_param") + || vars.exists("$local.idvalues") && vars.get("$local.idvalues")) { var assignmentTable = vars.get("$param.AssignmentTable_param"); var assignmentName = vars.get("$param.AssignmentName_param"); var assignmentRowId = vars.get("$param.AssignmentRowId_param"); diff --git a/entity/Document_entity/recordcontainers/jdito/onInsert.js b/entity/Document_entity/recordcontainers/jdito/onInsert.js index 2654a171563317095fb786d8cb233d3853431055..a938789f38f6b0d6ff43f78c51280feab2a92af2 100644 --- a/entity/Document_entity/recordcontainers/jdito/onInsert.js +++ b/entity/Document_entity/recordcontainers/jdito/onInsert.js @@ -9,6 +9,7 @@ var bindata = DocumentUtil.getBindataFromUpload(vars.get("$field.BINDATA_UPLOAD" var filename = vars.get("$field.NAME"); var description = vars.get("$field.DESCRIPTION"); var alias = db.getCurrentAlias(); +var id = vars.get("$field.UID"); if(bindata != '' && filename != ''){ var keyword = ''; @@ -16,6 +17,7 @@ if(bindata != '' && filename != ''){ keyword = 'MAINDOCUMENT'; } - db.insertBinary(assignmentTable, assignmentName, assignmentRowId, "", - bindata, filename, description, keyword, alias); + var uid = db.insertBinary(assignmentTable, assignmentName, assignmentRowId, "", + bindata, filename, description, keyword, alias, id); + } diff --git a/entity/Email_entity/Email_entity.aod b/entity/Email_entity/Email_entity.aod index 41ec35f5990331ced3c34c80804788279f4e4d92..214f3a2f015256651be7a635a63b2b8adf302d6a 100644 --- a/entity/Email_entity/Email_entity.aod +++ b/entity/Email_entity/Email_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Email_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <recordContainer>jdito</recordContainer> diff --git a/entity/Email_entity/recordcontainers/jdito/onInsert.js b/entity/Email_entity/recordcontainers/jdito/onInsert.js index 857bf055dd9ef564ac8a107327423919f10b0bcc..a4a6db2b00da0ebb8ffa004876a78a4a6edc75ca 100644 --- a/entity/Email_entity/recordcontainers/jdito/onInsert.js +++ b/entity/Email_entity/recordcontainers/jdito/onInsert.js @@ -1,5 +1,18 @@ +import("ActivityTask_lib"); +import("system.neon"); import("Employee_lib"); import("system.vars"); import("Email_lib"); -EmailUtils.openMailTemplate(vars.get("$field.RECIPIENT"), EmployeeUtils.getCurrentContactId(), vars.get("$field.DOCUMENT_TEMPLATE"), vars.get("$param.ContactId_param")); \ No newline at end of file +EmailUtils.openMailTemplate( + vars.get("$field.RECIPIENT"), + EmployeeUtils.getCurrentContactId(), + vars.get("$field.DOCUMENT_TEMPLATE"), + vars.get("$param.ContactId_param") +); + +var links = []; +if (contactId) + links.push(["Person", contactId]); //TODO: dynamic + +ActivityUtils.createNewActivity(null, links); \ No newline at end of file diff --git a/entity/EmployeeRole_entity/EmployeeRole_entity.aod b/entity/EmployeeRole_entity/EmployeeRole_entity.aod index 8e857dd2e41febfaa6b2c768251588185d3596dc..46fae34883dddaadb7d684fb29e9270a129507f6 100644 --- a/entity/EmployeeRole_entity/EmployeeRole_entity.aod +++ b/entity/EmployeeRole_entity/EmployeeRole_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>EmployeeRole_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Role</title> diff --git a/entity/Employee_entity/Employee_entity.aod b/entity/Employee_entity/Employee_entity.aod index c736a4686a4f6fe91a8b9029950d91021ecc7d51..a98051a68509722f2bdc9806789ba247cb2e92fe 100644 --- a/entity/Employee_entity/Employee_entity.aod +++ b/entity/Employee_entity/Employee_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Employee_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Employee</title> diff --git a/entity/Forecast_entity/Forecast_entity.aod b/entity/Forecast_entity/Forecast_entity.aod index 4f4e90e52f09daab6a3dea708c8aa0b297d2d7d1..093a7112c79901472998ab645af4588eabf0033c 100644 --- a/entity/Forecast_entity/Forecast_entity.aod +++ b/entity/Forecast_entity/Forecast_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Forecast_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>${FORECAST_ENGLISH}</title> @@ -81,7 +81,6 @@ <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Forecast_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> @@ -109,7 +108,6 @@ <entityParameter> <name>ObjectRowId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> diff --git a/entity/Gender_keyword/Gender_keyword.aod b/entity/Gender_keyword/Gender_keyword.aod index 5c54120690055e7f9d0a3f410fa5983b3a7adeb4..810415127d19efe204101c65be4b833234baeb8d 100644 --- a/entity/Gender_keyword/Gender_keyword.aod +++ b/entity/Gender_keyword/Gender_keyword.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Gender_keyword</name> <majorModelMode>DISTRIBUTED</majorModelMode> <contentTitleProcess>%aditoprj%/entity/Gender_keyword/contentTitleProcess.js</contentTitleProcess> diff --git a/entity/IndexSearchEntity/IndexSearchEntity.aod b/entity/IndexSearchEntity/IndexSearchEntity.aod index 8fe6cbc235ec8cf5b20ddd424b853cd1d6fb8783..1dddc5b340cf1762f94ade04d8de8c2805b60887 100644 --- a/entity/IndexSearchEntity/IndexSearchEntity.aod +++ b/entity/IndexSearchEntity/IndexSearchEntity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>IndexSearchEntity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <entityFields> diff --git a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod index 61aefa5705ae195959b0d874e8fbd7b855e0175f..cb4c9ac863324c6b391b749314298c191441d6ad 100644 --- a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod +++ b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>KeywordAttributeRelation_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/KeywordAttributeRelation_entity/documentation.adoc</documentation> @@ -61,7 +61,6 @@ <entityParameter> <name>KeywordEntryId_param</name> <expose v="true" /> - <triggerRecalculation v="false" /> <mandatory v="false" /> </entityParameter> </children> @@ -69,7 +68,6 @@ <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/containername_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> @@ -85,7 +83,6 @@ <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/keywordattributes/children/containername_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="false" /> </entityParameter> <entityParameter> <name>FilterAlreadyUsedByEntryId_param</name> @@ -97,7 +94,6 @@ <entityParameter> <name>KeywordEntryId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> <description>PARAMETER</description> </entityParameter> @@ -122,6 +118,8 @@ <dbRecordContainer> <name>db</name> <alias>Data_alias</alias> + <isPageable v="false" /> + <isRequireContainerFiltering v="false" /> <conditionProcess>%aditoprj%/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <linkInformation> <linkInformation> diff --git a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod index 5cc7415766a4a8cc19902937efb0dee66187b8b1..e49e6791888f9cb63814b16164abcc8be77a9958 100644 --- a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod +++ b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>KeywordAttribute_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/KeywordAttribute_entity/documentation.adoc</documentation> @@ -57,7 +57,6 @@ <children> <entityParameter> <name>ContainerName_param</name> - <triggerRecalculation v="false" /> </entityParameter> <entityParameter> <name>FilterAlreadyUsedByEntryId_param</name> @@ -67,7 +66,6 @@ <entityParameter> <name>ContainerName_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> @@ -97,6 +95,7 @@ <dbRecordContainer> <name>db</name> <alias>Data_alias</alias> + <isPageable v="false" /> <conditionProcess>%aditoprj%/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <onDBDelete>%aditoprj%/entity/KeywordAttribute_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index c40b460a6d7df3d1fd33289ee07c43fa6f243532..6cf04b0a03f31112d5118b4a763c271062c88504 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>KeywordEntry_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/KeywordEntry_entity/documentation.adoc</documentation> @@ -315,12 +315,6 @@ <fieldName>KeywordPhases</fieldName> <isConsumer v="false" /> </entityDependency> - <entityDependency> - <name>f672b4a5-7d68-46c8-9834-4f706d0d8720</name> - <entityName>Salesproject_entity</entityName> - <fieldName>KeywordPhases</fieldName> - <isConsumer v="false" /> - </entityDependency> <entityDependency> <name>1053a90d-574a-4ca2-b41d-42b513db0fd2</name> <entityName>Task_entity</entityName> @@ -405,6 +399,12 @@ <fieldName>CommRestrictionMedium</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>eb7c17de-3057-45c5-96c0-f863551cc049</name> + <entityName>BulkMailRecipient_entity</entityName> + <fieldName>StatusKeyword</fieldName> + <isConsumer v="false" /> + </entityDependency> <entityDependency> <name>3ab18dc8-b702-49d9-9cbc-4b8d8ffaea2e</name> <entityName>DSGVO_entity</entityName> @@ -429,7 +429,6 @@ <name>OnlyActives_param</name> <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/children/onlyactives_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="false" /> </entityParameter> <entityParameter> <name>ContainerName_param</name> @@ -445,7 +444,6 @@ <name>OnlyActives_param</name> <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/onlyactives_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityConsumer> diff --git a/entity/Language_entity/Language_entity.aod b/entity/Language_entity/Language_entity.aod index 829e36adc6e63efce34d7d23f435b488b254b6a1..e2e65cf810e2c82b788bd7fc9dbcc2fcf614b6fc 100644 --- a/entity/Language_entity/Language_entity.aod +++ b/entity/Language_entity/Language_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Language_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <contentTitleProcess>%aditoprj%/entity/Language_entity/contentTitleProcess.js</contentTitleProcess> diff --git a/entity/Letter_entity/Letter_entity.aod b/entity/Letter_entity/Letter_entity.aod index 0387ac0541736306ad4b4135bd898974ce89f9ad..3b7ae585372f79da24c7dd54b8b4efa987dbecbe 100644 --- a/entity/Letter_entity/Letter_entity.aod +++ b/entity/Letter_entity/Letter_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Letter_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <recordContainer>jdito</recordContainer> diff --git a/entity/Letter_entity/recordcontainers/jdito/onInsert.js b/entity/Letter_entity/recordcontainers/jdito/onInsert.js index 6c26e3a267e63b881b0eceb3510a405f235017a8..35bc3b14d02877310488934385dc9a5e7472ade0 100644 --- a/entity/Letter_entity/recordcontainers/jdito/onInsert.js +++ b/entity/Letter_entity/recordcontainers/jdito/onInsert.js @@ -7,9 +7,8 @@ var template = DocumentTemplate.loadTemplate(vars.get("$field.DOCUMENT_TEMPLATE" var contactId = vars.get("$param.ContactId_param"); neon.download(template.getReplacedContentByContactId(contactId), template.filename); -var params = { - "ObjectId_param" : "Person", //TODO: dynamic - "RowId_param" : contactId -}; +var links = []; +if (contactId) + links.push(["Person", contactId]); //TODO: dynamic -neon.openContext("Activity", null, null, neon.OPERATINGSTATE_NEW, params); +ActivityUtils.createNewActivity(null, links); diff --git a/entity/LogHistory_entity/LogHistory_entity.aod b/entity/LogHistory_entity/LogHistory_entity.aod index e349a252894be4b6f4ac746ec3b7a9f121716d8f..d68c31fbc8107a5ecffb9e8fab549f4340d552c1 100644 --- a/entity/LogHistory_entity/LogHistory_entity.aod +++ b/entity/LogHistory_entity/LogHistory_entity.aod @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>LogHistory_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Log</title> + <grantUpdate v="false" /> <grantDelete v="false" /> <iconId>NEON:HISTORY</iconId> <imageProcess>%aditoprj%/entity/LogHistory_entity/imageProcess.js</imageProcess> @@ -90,7 +91,6 @@ <entityParameter> <name>tablenames_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> <description>PARAMETER</description> </entityParameter> diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index 644ffef17a5732f61f21ed1d20aeb429e576fe56..0921bcc6d1d675e6e93f0e44013aa8dbd67f34e0 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Member_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>${SALESPROJECT_MEMBER}</title> @@ -164,13 +164,11 @@ TODO: intuitive möglichkeit, auf dend Stand aus Relation zurückzusetzen... akt <entityParameter> <name>ObjectRowId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>ObjectType_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityConsumer> @@ -185,7 +183,6 @@ TODO: intuitive möglichkeit, auf dend Stand aus Relation zurückzusetzen... akt <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Member_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> diff --git a/entity/Member_entity/fromClauseProcess.js b/entity/Member_entity/fromClauseProcess.js index edff7462ed28f71c7e85a667f69468eacf1e5af9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/entity/Member_entity/fromClauseProcess.js +++ b/entity/Member_entity/fromClauseProcess.js @@ -1,5 +0,0 @@ -import("system.result"); - -result.string("MEMBER join CONTACT on (CONTACT.CONTACTID = MEMBER.CONTACT_ID) " - + "left join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID) " - + "left join PERSON on (PERSON.PERSONID = CONTACT.PERSON_ID)"); \ No newline at end of file diff --git a/entity/ModuleTree_entity/ModuleTree_entity.aod b/entity/ModuleTree_entity/ModuleTree_entity.aod index 37dae997765d3bbe35e97abfa1f10b0ab6f219ac..23d46663cc5e67af385e3a170299439d62afe753 100644 --- a/entity/ModuleTree_entity/ModuleTree_entity.aod +++ b/entity/ModuleTree_entity/ModuleTree_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>ModuleTree_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>History</title> diff --git a/entity/Notification_entity/Notification_entity.aod b/entity/Notification_entity/Notification_entity.aod index d4ebfd6e05eca274d8e606401e4bf99765119b2a..b850f824fefd1c0fe7974e6ba16f5d398ae21a0f 100644 --- a/entity/Notification_entity/Notification_entity.aod +++ b/entity/Notification_entity/Notification_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Notification_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Notifications</title> diff --git a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod index 3c309a6583e745e077c48b2610fc6d0f94b8a2f9..d0c14753f16c05a67770f61087f51496daf0372f 100644 --- a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod +++ b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>ObjectRelationType_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:SPLIT</icon> @@ -23,7 +23,6 @@ <entityParameter> <name>SourceObjectType_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityProvider> @@ -40,7 +39,6 @@ <entityParameter> <name>SourceObjectType_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>OnlyFirstSide_param</name> diff --git a/entity/ObjectRelationType_entity/recordcontainers/jdito/contentProcess.js b/entity/ObjectRelationType_entity/recordcontainers/jdito/contentProcess.js index e3b5147b2a0d188cc8121b65f5748eb67200edf7..5344cbdce607cc638cfa2edde885fd7da7649b5b 100644 --- a/entity/ObjectRelationType_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/ObjectRelationType_entity/recordcontainers/jdito/contentProcess.js @@ -8,5 +8,10 @@ if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) } else { - result.object(ObjectRelationUtils.getPossibleRelationTypes(vars.get("$param.SourceObjectType_param"), true, vars.get("$param.OnlyFirstSide_param") == "1", undefined, true)); + result.object(ObjectRelationUtils.getPossibleRelationTypes( + vars.exists("$param.SourceObjectType_param") ? vars.get("$param.SourceObjectType_param") : undefined, + true, + (vars.exists("$param.OnlyFirstSide_param") ? vars.get("$param.OnlyFirstSide_param") : "0") == "1", + undefined, + true)); } \ No newline at end of file diff --git a/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js b/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js index 9c7155c513a43eef2afadf630ee6b6ef12bad3c9..a1d965ad67fb37dc0b62709e784c8d6b20e5e328 100644 --- a/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js +++ b/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js @@ -23,8 +23,7 @@ db.insertData("AB_OBJECTRELATIONTYPE", [ ]); if (vars.getString("$field.Type2Enabled_proxy") == "1" - && (vars.get("$field.SOURCE_RELATION_TITLE") != vars.get("$field.DEST_RELATION_TITLE") - && vars.get("$field.SOURCE_OBJECT_TYPE") != vars.get("$field.DEST_OBJECT_TYPE"))) + && vars.get("$field.SOURCE_RELATION_TITLE") != vars.get("$field.DEST_RELATION_TITLE")) { db.insertData("AB_OBJECTRELATIONTYPE", [ "AB_OBJECTRELATIONTYPEID", diff --git a/entity/ObjectTree_entity/ObjectTree_entity.aod b/entity/ObjectTree_entity/ObjectTree_entity.aod index 6fac866bdcae94bd2d26fc0a85f9ac2f42098143..acc265e37cecd39a8c996f12a3a39a5d23ce3394 100644 --- a/entity/ObjectTree_entity/ObjectTree_entity.aod +++ b/entity/ObjectTree_entity/ObjectTree_entity.aod @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>ObjectTree_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Object relation</title> - <grantDeleteProcess>%aditoprj%/entity/ObjectTree_entity/grantDeleteProcess.js</grantDeleteProcess> + <grantUpdateProcess>%aditoprj%/entity/ObjectTree_entity/grantUpdateProcess.js</grantUpdateProcess> <titlePlural>Relations</titlePlural> <recordContainer>jdito</recordContainer> <entityFields> @@ -149,7 +149,6 @@ <name>ObjectType_param</name> <title></title> <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ExcludedObjectIds_param</name> diff --git a/entity/ObjectTree_entity/grantUpdateProcess.js b/entity/ObjectTree_entity/grantUpdateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..105ebb440b8a5084799523a1615266a7727dcab4 --- /dev/null +++ b/entity/ObjectTree_entity/grantUpdateProcess.js @@ -0,0 +1,26 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +if (vars.exists("$sys.selection") && vars.getString("$sys.selection")) +{ + var selectedRows = vars.get("$sys.selection"); + var isObjectRelationNode = false; + + if (selectedRows.length > 0 && selectedRows[0] && selectedRows[0].length > 0 && selectedRows[0][0] == "[") + { + var uid = JSON.parse(selectedRows[0]); + isObjectRelationNode = typeof uid[2] == "string"; + } + + if (isObjectRelationNode) + { + result.string(true) + } + else + { + result.string(false) + } +} +else + result.string(false) \ No newline at end of file diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod index 434e477b1fdd70dbe01c74ec9d265e5972ae18c1..38aacf3ee882ff4d486bfe6003ae052abab84d94 100644 --- a/entity/Object_entity/Object_entity.aod +++ b/entity/Object_entity/Object_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Object_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Object_entity/documentation.adoc</documentation> @@ -19,7 +19,6 @@ <entityParameter> <name>ObjectType_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> <description>PARAMETER</description> </entityParameter> @@ -70,7 +69,6 @@ <entityParameter> <name>ObjectType_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> <entityParameter> @@ -209,7 +207,6 @@ <entityParameter> <name>ObjectType_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> <entityParameter> diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod index 6ec8fe5d3d7f4fa6545dae454edfa9c65086bf08..b83566310c0b892a02ff9f9d8f90e8f65007e355 100644 --- a/entity/Offer_entity/Offer_entity.aod +++ b/entity/Offer_entity/Offer_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Offer_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Offer_entity/documentation.adoc</documentation> @@ -101,27 +101,23 @@ <name>OfferId_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offeritems/children/offerid_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> <entityParameter> <name>Currency_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offeritems/children/currency_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offeritems/children/ContactId_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> <entityParameter> <name>OfferStatus_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offeritems/children/offerstatus_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> @@ -190,7 +186,6 @@ <entityParameter> <name>ContactId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> <description>PARAMETER</description> </entityParameter> @@ -203,12 +198,12 @@ </entityActionField> <entityField> <name>CONTACT_ORG_ID</name> - <title>CONTACT_ORG_ID</title> + <title>Company</title> <searchable v="false" /> </entityField> <entityField> <name>CONTACT_PERSON_ID</name> - <title>CONTACT_PERSON_ID</title> + <title>Person</title> <searchable v="false" /> </entityField> <entityConsumer> @@ -448,49 +443,42 @@ <entityParameter> <name>OfferCurrency_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>OfferLanguage_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>OfferHeader_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>OfferOriginal_Id_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>OfferAddress_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>OfferCode_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>OfferVersnr_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> @@ -683,7 +671,6 @@ <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/objects/children/contactid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -771,7 +758,6 @@ <entityParameter> <name>ObjectRowId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> @@ -824,7 +810,6 @@ <entityParameter> <name>OfferFooter_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityField> @@ -905,26 +890,40 @@ <onDBDelete>%aditoprj%/entity/Offer_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> <linkInformation> - <name>681f6893-d11a-430c-a8ca-87215054d86f</name> + <name>69b62a9f-95bf-48be-8891-b6c2524f6ea1</name> <tableName>OFFER</tableName> <primaryKey>OFFERID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> <linkInformation> - <name>acdf69f0-c6ad-431a-90c7-5bd0b3dc3d8e</name> + <name>d2334c28-1be0-4377-b13a-062bb1613c5a</name> <tableName>CONTACT</tableName> <primaryKey>CONTACTID</primaryKey> <isUIDTable v="false" /> <readonly v="true" /> </linkInformation> <linkInformation> - <name>b129928e-886e-4482-99da-463135008fef</name> + <name>16e5d66a-f156-4855-9da4-b9dee497c3f3</name> <tableName>SALESPROJECT</tableName> <primaryKey>SALESPROJECTID</primaryKey> <isUIDTable v="false" /> <readonly v="true" /> </linkInformation> + <linkInformation> + <name>6b708a89-8864-433b-bdec-4edcedb3d7d1</name> + <tableName>ORGANISATION</tableName> + <primaryKey>ORGANISATIONID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + <linkInformation> + <name>4cdfe047-48d0-409e-8b01-e2c1312e8a5b</name> + <tableName>PERSON</tableName> + <primaryKey>PERSONID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> </linkInformation> <recordFieldMappings> <dbRecordFieldMapping> @@ -1055,14 +1054,18 @@ <name>CONTACT_ID.value</name> <recordfield>OFFER.CONTACT_ID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CONTACT_ID.displayValue</name> - <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>LETTERSALUTATION.value</name> <recordfield>OFFER.LETTERSALUTATION</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ORG_ID.displayValue</name> + <recordfield>ORGANISATION.NAME</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_PERSON_ID.displayValue</name> + <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Offer_entity/entityfields/contact_id/onValidation.js b/entity/Offer_entity/entityfields/contact_id/onValidation.js index 1497b00d0eae900100739cdf5db6bdd7b65d8957..cd4f2d8bb99c59f2c909a1b7f8d5247db00309a7 100644 --- a/entity/Offer_entity/entityfields/contact_id/onValidation.js +++ b/entity/Offer_entity/entityfields/contact_id/onValidation.js @@ -4,7 +4,9 @@ import("system.translate"); import("system.vars"); import("Context_lib"); import("Entity_lib"); +import("Contact_lib"); -if (ContextUtils.getCountByContactId(vars.get("$field.OBJECT_TYPE"), ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID"))) == 0) { +if (ContactUtils.getContactTypeByContactId(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID"))) != 2 && ContextUtils.getCountByContactId(vars.get("$field.OBJECT_TYPE"), ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID"))) == 0) { + logging.log(ContextUtils.getCountByContactId(vars.get("$field.OBJECT_TYPE"), ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID")))); result.string(translate.text("This contact has no possible link.")) } \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/db/fromClauseProcess.js b/entity/Offer_entity/recordcontainers/db/fromClauseProcess.js index 1fd88578ab3b01fffc36b918f8a9ceb951a4f5bd..99dbfd903855059d2b7c9b66a9ae087ffc5abae3 100644 --- a/entity/Offer_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Offer_entity/recordcontainers/db/fromClauseProcess.js @@ -1,4 +1,7 @@ import("system.result"); -result.string("OFFER left join CONTACT on CONTACTID = CONTACT_ID \n\ -left join SALESPROJECT on SALESPROJECTID = OBJECT_ROWID"); \ No newline at end of file +result.string("OFFER \n\ + left join CONTACT on CONTACT.CONTACTID = OFFER.CONTACT_ID \n\ + left join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID \n\ + left join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID \n\ + left join SALESPROJECT on SALESPROJECT.SALESPROJECTID = OFFER.OBJECT_ROWID"); \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..e5f6d2a4902ec5e2ffaa71188b089757bb66701e --- /dev/null +++ b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js @@ -0,0 +1,4 @@ +import("Person_lib"); +import("system.result"); + +result.string(PersUtils.getDisplaySqlExpression()); \ No newline at end of file diff --git a/entity/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod index 5855a86980d2fbad2e4c662fd57c113a1c85b9ce..d65c83bfe0c264e1f3be07ff335a483bfc93287f 100644 --- a/entity/Offeritem_entity/Offeritem_entity.aod +++ b/entity/Offeritem_entity/Offeritem_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Offeritem_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Offeritem_entity/documentation.adoc</documentation> @@ -16,10 +16,10 @@ </entityField> <entityField> <name>DISCOUNT</name> - <title>Discount %</title> + <title>Discount</title> <contentType>NUMBER</contentType> - <outputFormat>#,##0.00</outputFormat> - <inputFormat>#,##0.00</inputFormat> + <outputFormat>0.00'%'</outputFormat> + <inputFormat>0.00</inputFormat> <onValidation>%aditoprj%/entity/Offeritem_entity/entityfields/discount/onValidation.js</onValidation> </entityField> <entityField> @@ -111,27 +111,24 @@ <name>VAT</name> <title>VAT</title> <contentType>NUMBER</contentType> + <outputFormat>0.00'%'</outputFormat> <inputFormat>0.00</inputFormat> <state>READONLY</state> - <displayValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/vat/displayValueProcess.js</displayValueProcess> </entityField> <entityParameter> <name>OfferId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>ContactId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>Currency_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityField> @@ -153,7 +150,6 @@ <entityParameter> <name>OfferStatus_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityProvider> diff --git a/entity/Offeritem_entity/entityfields/vat/displayValueProcess.js b/entity/Offeritem_entity/entityfields/vat/displayValueProcess.js deleted file mode 100644 index 9ed18437e1748ebc5e978224847214e739b4febd..0000000000000000000000000000000000000000 --- a/entity/Offeritem_entity/entityfields/vat/displayValueProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.text"); -import("system.vars"); -import("system.translate"); -import("system.result"); - -if (vars.get("$this.value")) - result.string(text.formatDouble(vars.get("$this.value"), "0.00") + "%"); diff --git a/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js b/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js index 810d73b91164b9eee3e9ec78ae7734dfd422b001..155a103a7d45a2dd589c72a6b79bd6c27cc32145 100644 --- a/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js @@ -1,7 +1,9 @@ +import("system.db"); +import("Sql_lib"); import("system.result"); import("system.vars"); -if(vars.exists("$param.OfferId_param") && vars.get("$param.OfferId_param") != "") - result.string("OFFERITEM.OFFER_ID = ('" + vars.get("$param.OfferId_param") + "')"); -else - result.string(""); \ No newline at end of file +var cond = SqlCondition.begin() + .andPrepareVars("OFFERITEM.OFFER_ID", "$param.OfferId_param") + +result.string(db.translateCondition(cond.build("1=1"))); \ No newline at end of file diff --git a/entity/Options_Entity/Options_Entity.aod b/entity/Options_Entity/Options_Entity.aod index db10d9f26cac216d35fb5235fd9038aad78e8234..b93f25bcf77fd8ddb95eb8ebb0640ff931220f6e 100644 --- a/entity/Options_Entity/Options_Entity.aod +++ b/entity/Options_Entity/Options_Entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Options_Entity</name> <description></description> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod index 1a6d4d2ae0a3d8ed7fe4366887d1e51869f60608..1e2f501fdadcb5f0e3288244fc4c419ece95e78e 100644 --- a/entity/Order_entity/Order_entity.aod +++ b/entity/Order_entity/Order_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Order_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Order_entity/documentation.adoc</documentation> @@ -118,27 +118,23 @@ <name>OrderId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/orderitems/children/orderid_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation 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" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/orderitems/children/ContactId_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation 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" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> @@ -169,7 +165,6 @@ <entityParameter> <name>SalesprojectId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> @@ -213,18 +208,17 @@ <entityParameter> <name>ContactId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> <entityField> <name>CONTACT_ORG_ID</name> - <title>CONTACT_ORG_ID</title> + <title>Company</title> <searchable v="false" /> </entityField> <entityField> <name>CONTACT_PERSON_ID</name> - <title>CONTACT_PERSON_ID</title> + <title>Person</title> <searchable v="false" /> </entityField> <entityConsumer> @@ -323,28 +317,24 @@ <entityParameter> <name>OrderCurrency_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>OrderLanguage_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>OrderHeader_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>OrderAddress_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> @@ -359,7 +349,6 @@ <entityParameter> <name>OfferId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> @@ -494,26 +483,40 @@ <onDBDelete>%aditoprj%/entity/Order_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> <linkInformation> - <name>c1a83567-58d0-44bd-ae08-14018311a6ae</name> + <name>39d6d76d-8c8f-40aa-b2ed-4684de5d0050</name> <tableName>SALESORDER</tableName> <primaryKey>SALESORDERID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> <linkInformation> - <name>7d433584-df9f-4b5b-bae4-f3b0a1962d59</name> + <name>c67be87c-ef41-4b01-bc74-95c46a101536</name> <tableName>CONTACT</tableName> <primaryKey>CONTACTID</primaryKey> <isUIDTable v="false" /> <readonly v="true" /> </linkInformation> <linkInformation> - <name>33653e5e-df52-413c-9a91-349fd989ab89</name> + <name>6c333196-ff8c-4fef-a85f-0fee8e408661</name> <tableName>SALESPROJECT</tableName> <primaryKey>SALESPROJECTID</primaryKey> <isUIDTable v="false" /> <readonly v="true" /> </linkInformation> + <linkInformation> + <name>04cf409d-daeb-41be-ba24-9b7779ac4231</name> + <tableName>PERSON</tableName> + <primaryKey>PERSONID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + <linkInformation> + <name>a807abec-8815-4b57-a039-d53d24b90331</name> + <tableName>ORGANISATION</tableName> + <primaryKey>ORGANISATIONID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> </linkInformation> <recordFieldMappings> <dbRecordFieldMapping> @@ -600,6 +603,14 @@ <name>SALESPROJECT_ID.displayValue</name> <recordfield>SALESPROJECT.PROJECTTITLE</recordfield> </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> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Order_entity/recordcontainers/db/fromClauseProcess.js b/entity/Order_entity/recordcontainers/db/fromClauseProcess.js index 5972289c6996fa45ee4b680dfa87ef3d2e0c2048..4b856fef61de20128e1110bf14de27b0fa400d97 100644 --- a/entity/Order_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Order_entity/recordcontainers/db/fromClauseProcess.js @@ -1,4 +1,7 @@ import("system.result"); -result.string("SALESORDER left join CONTACT on CONTACTID = CONTACT_ID \n\ -left join SALESPROJECT on SALESPROJECTID = SALESPROJECT_ID"); \ No newline at end of file +result.string("SALESORDER \n\ + left join CONTACT on CONTACT.CONTACTID = SALESORDER.CONTACT_ID \n\ + left join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID \n\ + left join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID \n\ + left join SALESPROJECT on SALESPROJECTID = SALESPROJECT_ID"); \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..e5f6d2a4902ec5e2ffaa71188b089757bb66701e --- /dev/null +++ b/entity/Order_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js @@ -0,0 +1,4 @@ +import("Person_lib"); +import("system.result"); + +result.string(PersUtils.getDisplaySqlExpression()); \ No newline at end of file diff --git a/entity/Orderitem_entity/Orderitem_entity.aod b/entity/Orderitem_entity/Orderitem_entity.aod index f1e572cd8e213b960543204710dca8c09c2a10c4..85977e91be06a4f902992ebee12798910ead511c 100644 --- a/entity/Orderitem_entity/Orderitem_entity.aod +++ b/entity/Orderitem_entity/Orderitem_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Orderitem_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Orderitem_entity/documentation.adoc</documentation> @@ -105,20 +105,17 @@ <entityParameter> <name>OrderId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>ContactId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>Currency_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityField> @@ -141,7 +138,6 @@ <entityParameter> <name>OrderStatus_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityProvider> diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index e21c7b789ab9ff0d8a218b889a6034a706f47e78..ac2e0d37071ad4bf7f8e7fbc673939e097702481 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Organisation_entity</name> <description>former Org</description> <majorModelMode>DISTRIBUTED</majorModelMode> @@ -76,7 +76,6 @@ <entityParameter> <name>RowId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectId_param</name> @@ -96,7 +95,6 @@ <entityParameter> <name>OrgId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/contact/children/orgid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -129,7 +127,6 @@ <entityParameter> <name>WithPrivate_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> @@ -160,13 +157,11 @@ <entityParameter> <name>DefaultAddressId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/addresses/children/defaultaddressid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/addresses/children/contactid_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -191,7 +186,6 @@ <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/communications/children/contactid_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -208,7 +202,6 @@ <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/contracts/children/contactid_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> @@ -225,7 +218,6 @@ <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/productprices/children/contactid_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="false" /> <mandatory v="true" /> </entityParameter> </children> @@ -373,12 +365,10 @@ <name>ObjectRowId_param</name> <title></title> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -516,7 +506,6 @@ <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> @@ -544,7 +533,6 @@ <name>WithPrivate_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/withprivate_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/withprivate_param/documentation.adoc</documentation> <description>PARAMETER</description> </entityParameter> @@ -585,7 +573,6 @@ <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/loghistoryconsumer/children/tablenames_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> @@ -724,12 +711,10 @@ <entityParameter> <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -821,17 +806,14 @@ <entityParameter> <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributeconditions/children/objectrowid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributeconditions/children/objecttype_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>DisplaySimpleName_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributeconditions/children/displaysimplename_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>FilteredAttributeIds_param</name> @@ -860,21 +842,21 @@ <onDBUpdate>%aditoprj%/entity/Organisation_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> <linkInformation> <linkInformation> - <name>f745a13c-6fbe-4cab-99d8-3cb7d599005a</name> + <name>5808a4a3-f2c1-4ccd-bad1-4e8a834ec7a4</name> <tableName>ORGANISATION</tableName> <primaryKey>ORGANISATIONID</primaryKey> - <isUIDTable v="true" /> + <isUIDTable v="false" /> <readonly v="false" /> </linkInformation> <linkInformation> - <name>31f03bd6-83c1-4185-a9a7-4e6d94469fd2</name> + <name>5cd93c60-47e5-4eaa-90a4-69990f6a7d00</name> <tableName>CONTACT</tableName> <primaryKey>CONTACTID</primaryKey> - <isUIDTable v="false" /> + <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> <linkInformation> - <name>695731e1-879d-4fb1-a1bb-56ecfd6f7c03</name> + <name>23fa4717-b401-48db-92ed-285aeab71f08</name> <tableName>ADDRESS</tableName> <primaryKey>ADDRESSID</primaryKey> <isUIDTable v="false" /> diff --git a/entity/Organisation_entity/entityfields/360degreeobjects/children/objectrowid_param/valueProcess.js b/entity/Organisation_entity/entityfields/360degreeobjects/children/objectrowid_param/valueProcess.js index c52b656d2fdd6ac1d409ce40987c4e9149f0b883..1610ade0360e9fab87e7730b6578905eb1e5309e 100644 --- a/entity/Organisation_entity/entityfields/360degreeobjects/children/objectrowid_param/valueProcess.js +++ b/entity/Organisation_entity/entityfields/360degreeobjects/children/objectrowid_param/valueProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.getString("$field.ORGANISATIONID")); \ No newline at end of file +result.string(vars.getString("$field.CONTACTID"));//TODO: CONTACTID/ORGANISATIONID: review if this should be the CONTACTID or the ORGANISATIONID \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/attributeconditions/children/objectrowid_param/valueProcess.js b/entity/Organisation_entity/entityfields/attributeconditions/children/objectrowid_param/valueProcess.js index bcfda44fe71eac93b3f8c11cc0c85a496f2cd51c..59af8506d7c8ff241823ba185c646366667521c0 100644 --- a/entity/Organisation_entity/entityfields/attributeconditions/children/objectrowid_param/valueProcess.js +++ b/entity/Organisation_entity/entityfields/attributeconditions/children/objectrowid_param/valueProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.ORGANISATIONID")); \ No newline at end of file +result.string(vars.get("$field.CONTACTID"));//TODO: CONTACTID/ORGANISATIONID: review if this should be the CONTACTID or the ORGANISATIONID \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js b/entity/Organisation_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js index 957f645b377f903d61ab5ecab7a1a48ee34d0eab..59af8506d7c8ff241823ba185c646366667521c0 100644 --- a/entity/Organisation_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js +++ b/entity/Organisation_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js @@ -1,4 +1,4 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.ORGANISATIONID")); \ No newline at end of file +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.CONTACTID"));//TODO: CONTACTID/ORGANISATIONID: review if this should be the CONTACTID or the ORGANISATIONID \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/contactid/valueProcess.js b/entity/Organisation_entity/entityfields/contactid/valueProcess.js index 8c08f09dbe9cede6f76346843dd65528181931c7..86ef789e064a4016f2d12c432498dc23474807aa 100644 --- a/entity/Organisation_entity/entityfields/contactid/valueProcess.js +++ b/entity/Organisation_entity/entityfields/contactid/valueProcess.js @@ -1,6 +1,7 @@ +import("system.util"); import("system.vars"); import("system.result"); import("system.neon"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.get("$field.ORGANISATIONID")); \ No newline at end of file + result.string(util.getNewUUID()); \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/newtask/onActionProcess.js b/entity/Organisation_entity/entityfields/newtask/onActionProcess.js index 1f63a9595bd528908ee2b8731a5ebbc9925c2d45..9bd58b362d48804d508fe385a94ee347b7af57ca 100644 --- a/entity/Organisation_entity/entityfields/newtask/onActionProcess.js +++ b/entity/Organisation_entity/entityfields/newtask/onActionProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("ActivityTask_lib"); -TaskUtils.createNewTask(vars.get("$field.ORGANISATIONID")); \ No newline at end of file +TaskUtils.createNewTask(vars.get("$field.CONTACTID"));//TODO: CONTACTID/ORGANISATIONID: review if this should be the CONTACTID or the ORGANISATIONID \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/objectrelations/children/objectrowid_param/valueProcess.js b/entity/Organisation_entity/entityfields/objectrelations/children/objectrowid_param/valueProcess.js index bcfda44fe71eac93b3f8c11cc0c85a496f2cd51c..59af8506d7c8ff241823ba185c646366667521c0 100644 --- a/entity/Organisation_entity/entityfields/objectrelations/children/objectrowid_param/valueProcess.js +++ b/entity/Organisation_entity/entityfields/objectrelations/children/objectrowid_param/valueProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.ORGANISATIONID")); \ No newline at end of file +result.string(vars.get("$field.CONTACTID"));//TODO: CONTACTID/ORGANISATIONID: review if this should be the CONTACTID or the ORGANISATIONID \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js b/entity/Organisation_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js index 835140d0bee877176a6fd5a8e94460e5b5e776d1..7b6137b4d105e9ba592cf8ef6e796fb838a32b09 100644 --- a/entity/Organisation_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js +++ b/entity/Organisation_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js @@ -1,3 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.ORGANISATIONID")); \ No newline at end of file + +result.string(vars.get("$field.CONTACTID")); \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/tasks/stateProcess.js b/entity/Organisation_entity/entityfields/tasks/stateProcess.js index 2d6a0eb24444a21440ea2433c6acd0e252c6e68d..fc227febcf322b829a554a1a953de51435e4db1c 100644 --- a/entity/Organisation_entity/entityfields/tasks/stateProcess.js +++ b/entity/Organisation_entity/entityfields/tasks/stateProcess.js @@ -4,7 +4,7 @@ import("system.vars"); import("ActivityTask_lib"); import("Context_lib"); -if(TaskUtils.hasTasks(vars.get("$field.ORGANISATIONID"), ContextUtils.getCurrentContextId())) +if(TaskUtils.hasTasks(vars.get("$field.CONTACTID"), ContextUtils.getCurrentContextId()))//TODO: CONTACTID/ORGANISATIONID: review if this should be the CONTACTID or the ORGANISATIONID result.string(neon.COMPONENTSTATE_EDITABLE); else result.string(neon.COMPONENTSTATE_INVISIBLE); \ No newline at end of file diff --git a/entity/Organisation_entity/fromClauseProcess.js b/entity/Organisation_entity/fromClauseProcess.js index fd4f9ce328d42a3ef11efbd7b6454d99d6b3f30c..866a616c6ae9a7c4b96b7afbe773a266009fbe59 100644 --- a/entity/Organisation_entity/fromClauseProcess.js +++ b/entity/Organisation_entity/fromClauseProcess.js @@ -1,3 +1,4 @@ import("system.result"); -result.string("ORGANISATION join CONTACT on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null)"); \ No newline at end of file +result.string("ORGANISATION \n\ + join CONTACT on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null)"); \ No newline at end of file diff --git a/entity/PermissionDetail_entity/PermissionDetail_entity.aod b/entity/PermissionDetail_entity/PermissionDetail_entity.aod index 4f49c00083fa4ed69241ed8b60cbbae13e3a3bcc..c85bbb5bfeea2d8dcf8bcb6770807962cd0261e3 100644 --- a/entity/PermissionDetail_entity/PermissionDetail_entity.aod +++ b/entity/PermissionDetail_entity/PermissionDetail_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>PermissionDetail_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Permission Detail</title> diff --git a/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod b/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod index 735f8f741f0cb515a2e5b3b39d0be80d86e0f3ea..0a4fc544a9a1bb2e8bef0b77475806db2ec7e2b6 100644 --- a/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod +++ b/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>PermissionMetaData_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:CONNECT</icon> diff --git a/entity/PermissionOverview_entity/PermissionOverview_entity.aod b/entity/PermissionOverview_entity/PermissionOverview_entity.aod index 859006193ee50014d2a655f558575b5d79e21983..ac436c852402ed3b34168c1016a343fc81b875ee 100644 --- a/entity/PermissionOverview_entity/PermissionOverview_entity.aod +++ b/entity/PermissionOverview_entity/PermissionOverview_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>PermissionOverview_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Permission Overview</title> diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index 64939000764563609747f46b8b82d5d87568f49a..03d152da50b1dbecdf2fd40697936696a91a4015 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Person_entity</name> <description>former Pers</description> <majorModelMode>DISTRIBUTED</majorModelMode> @@ -72,7 +72,6 @@ <entityParameter> <name>OrgId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> @@ -164,13 +163,11 @@ <entityParameter> <name>DefaultAddressId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/persaddresses/children/defaultaddressid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/persaddresses/children/contactid_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -186,7 +183,6 @@ <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/communications/children/contactid_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="true" /> <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> @@ -219,7 +215,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/contracts/children/contactid_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> @@ -238,7 +233,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/pricelists/children/contactid_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="false" /> <mandatory v="true" /> </entityParameter> </children> @@ -296,7 +290,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <entityParameter> <name>ContactId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> @@ -354,7 +347,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/orgaddresses/children/contactid_param/valueProcess.js</valueProcess> <expose v="false" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>DefaultAddressId_param</name> @@ -518,7 +510,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <entityParameter> <name>Language_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/salutations/children/language_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -534,12 +525,10 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <entityParameter> <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -640,7 +629,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/contactandorganisationaddresses/children/contactid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>OrganisationId_param</name> @@ -678,7 +666,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/loghistoryconsumer/children/tablenames_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> @@ -774,12 +761,10 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <entityParameter> <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -882,7 +867,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <name>PersonId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/commrestrictions/children/personid_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> diff --git a/entity/Person_entity/entityfields/language/valueProcess.js b/entity/Person_entity/entityfields/language/valueProcess.js index 1af70be4c971c334dbd2b777f26c3f051bd02aa4..44dcbc3f04bb4fc3788fb890bf97db622e520008 100644 --- a/entity/Person_entity/entityfields/language/valueProcess.js +++ b/entity/Person_entity/entityfields/language/valueProcess.js @@ -3,5 +3,5 @@ import("system.vars"); import("system.db"); import("system.result"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.getString("$field.LANGUAGE") == "") +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.getString("$this.value")) result.string("deu"); \ No newline at end of file diff --git a/entity/Person_entity/fromClauseProcess.js b/entity/Person_entity/fromClauseProcess.js index ce2f7eb850a73316a2aecd84f0ef7c968124d5d9..bea9bd3897f01eb07fe79bc7d953770d17b0a88e 100644 --- a/entity/Person_entity/fromClauseProcess.js +++ b/entity/Person_entity/fromClauseProcess.js @@ -1,4 +1,6 @@ import("system.vars"); import("system.result"); -result.string("PERSON join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID) join ORGANISATION on ORGANISATIONID = ORGANISATION_ID "); \ No newline at end of file +result.string("PERSON \n\ + join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID) \n\ + join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID) "); \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/db/fromClauseProcess.js b/entity/Person_entity/recordcontainers/db/fromClauseProcess.js index 96d05d16af027f62abf95a8cb65c6d30b71530cd..ee43318317813db5384c2a13bba96181b447a6be 100644 --- a/entity/Person_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Person_entity/recordcontainers/db/fromClauseProcess.js @@ -3,5 +3,6 @@ import("system.result"); //ADDRESS is necessary to display standard address fast within contact lists result.string("PERSON \n\ - join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID) join ORGANISATION on ORGANISATIONID = ORGANISATION_ID\n\ + join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID) \n\ + join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID) \n\ left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)"); \ No newline at end of file diff --git a/entity/Prod2prod_entity/Prod2prod_entity.aod b/entity/Prod2prod_entity/Prod2prod_entity.aod index 2f761efb4e97d3fcec2b4fabfd8a6c8899048f49..e7e2b6362f099256302d0fde50550f5cd73fa09f 100644 --- a/entity/Prod2prod_entity/Prod2prod_entity.aod +++ b/entity/Prod2prod_entity/Prod2prod_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Prod2prod_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Prod2prod_entity/documentation.adoc</documentation> @@ -50,7 +50,6 @@ <entityParameter> <name>ProductId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityField> diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod index 1622ede9a651c92be17af4371eef94f69c577d2d..eb95bd1a677a88d5454600e586044a60cec80ab5 100644 --- a/entity/Product_entity/Product_entity.aod +++ b/entity/Product_entity/Product_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Product_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Product_entity/documentation.adoc</documentation> @@ -66,6 +66,7 @@ <title>Unit</title> <consumer>KeywordQuantityUnits</consumer> <mandatory v="true" /> + <valueProcess>%aditoprj%/entity/Product_entity/entityfields/unit/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Product_entity/entityfields/unit/displayValueProcess.js</displayValueProcess> </entityField> <entityField> @@ -185,7 +186,6 @@ <name>ProductId_param</name> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/productlinks/children/productid_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> </entityParameter> </children> @@ -280,6 +280,7 @@ <consumer>Languages</consumer> <searchable v="false" /> <titleProcess>%aditoprj%/entity/Product_entity/entityfields/language/titleProcess.js</titleProcess> + <valueProcess>%aditoprj%/entity/Product_entity/entityfields/language/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Product_entity/entityfields/language/displayValueProcess.js</displayValueProcess> </entityField> <entityConsumer> @@ -395,12 +396,10 @@ <entityParameter> <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -459,12 +458,26 @@ <onDBDelete>%aditoprj%/entity/Product_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> <linkInformation> - <name>67ca4a6c-a613-4ee7-bd9d-6ebc17c43944</name> + <name>0c8977f6-8d3d-4377-adb4-3ddde463ab1a</name> <tableName>PRODUCT</tableName> <primaryKey>PRODUCTID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> + <linkInformation> + <name>6d77303b-6d0f-4636-b230-bb498470eec7</name> + <tableName>CONTACT</tableName> + <primaryKey>CONTACTID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + <linkInformation> + <name>a4cc4ee2-e913-4c1a-bfe8-bdd83ccb3b5e</name> + <tableName>ORGANISATION</tableName> + <primaryKey>ORGANISATIONID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> </linkInformation> <recordFieldMappings> <dbRecordFieldMapping> @@ -543,6 +556,10 @@ <name>DATE_EDIT.value</name> <recordfield>PRODUCT.DATE_EDIT</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ID.displayValue</name> + <recordfield>ORGANISATION.NAME</recordfield> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Product_entity/entityfields/language/valueProcess.js b/entity/Product_entity/entityfields/language/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..fef47cfe6e7315f7dad5f4864bbe69e1276f7f38 --- /dev/null +++ b/entity/Product_entity/entityfields/language/valueProcess.js @@ -0,0 +1,7 @@ +import("system.neon"); +import("system.vars"); +import("system.db"); +import("system.result"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.getString("$field.LANGUAGE")) + result.string("deu"); \ No newline at end of file diff --git a/entity/Product_entity/entityfields/unit/valueProcess.js b/entity/Product_entity/entityfields/unit/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..680bcb0016ceba4de1b98d2b92924a820ba2bc4d --- /dev/null +++ b/entity/Product_entity/entityfields/unit/valueProcess.js @@ -0,0 +1,8 @@ +import("system.neon"); +import("system.vars"); +import("system.db"); +import("system.result"); +import("KeywordRegistry_basic"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.getString("$this.value")) + result.string($KeywordRegistry.quantityUnit$pieces()); \ No newline at end of file diff --git a/entity/Product_entity/recordcontainers/db/fromClauseProcess.js b/entity/Product_entity/recordcontainers/db/fromClauseProcess.js index 18cb9431c0932a67570dba8ae0f22b0de85e3e9e..40deb580b141603aec2649fd0a75d35f3d8a1b2b 100644 --- a/entity/Product_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Product_entity/recordcontainers/db/fromClauseProcess.js @@ -1,4 +1,5 @@ import("system.result"); -result.string("PRODUCT left join CONTACT on CONTACT.CONTACTID = PRODUCT.CONTACT_ID \n\ -left join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID"); \ No newline at end of file +result.string("PRODUCT \n\ + left join CONTACT on CONTACT.CONTACTID = PRODUCT.CONTACT_ID \n\ + left join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID"); \ No newline at end of file diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod index 9fe2e97fcc940a603c2b99bedc86f0863317ea11..e45c613aa87e47a9393c254cfb4abfb07fa67268 100644 --- a/entity/Productprice_entity/Productprice_entity.aod +++ b/entity/Productprice_entity/Productprice_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Productprice_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Productprice_entity/documentation.adoc</documentation> @@ -105,14 +105,12 @@ <entityParameter> <name>ProductId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> <entityParameter> <name>ContactId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <description>PARAMETER</description> </entityParameter> diff --git a/entity/Productprice_entity/recordcontainers/db/conditionProcess.js b/entity/Productprice_entity/recordcontainers/db/conditionProcess.js index 0019feb30c21ff68602d2db757f5c8cab5c626e6..6dfa481d2964da773d5bb96a89928c1474f2c877 100644 --- a/entity/Productprice_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Productprice_entity/recordcontainers/db/conditionProcess.js @@ -8,4 +8,4 @@ var cond = SqlCondition.begin() .andPrepareVars("PRODUCTPRICE.CONTACT_ID", "$param.ContactId_param"); //TODO: use a preparedCondition when available #1030812 #1034026 -result.string(db.translateCondition(cond.build("1 = 2"))); \ No newline at end of file +result.string(db.translateCondition(cond.build("1 = 1"))); \ No newline at end of file diff --git a/entity/Role_entity/Role_entity.aod b/entity/Role_entity/Role_entity.aod index 3b82d36323afe1f3e4fbe73fad094c7bf63b5ec0..3ff601b2a139f8ba3a1ac486dc21e4033bb8038d 100644 --- a/entity/Role_entity/Role_entity.aod +++ b/entity/Role_entity/Role_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Role_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:USER_CHECK</icon> diff --git a/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod b/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod index 3f624271fb92529e8a78967f4dc96ef79cd51340..6f1edfeb29534e11941f27cd63779633e43944fc 100644 --- a/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod +++ b/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>SalesprojectAnalyses_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/SalesprojectAnalyses_entity/documentation.adoc</documentation> diff --git a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod index d9ad0461fbde4c67796c623da51276fba04f23d1..08b05153f37a910cb6c95f53527a8fb09109b4a2 100644 --- a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod +++ b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>SalesprojectMilestone_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title></title> @@ -52,7 +52,6 @@ <entityParameter> <name>SalesprojectId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> <description>PARAMETER</description> </entityParameter> diff --git a/entity/SalesprojectPhase_entity/SalesprojectPhase_entity.aod b/entity/SalesprojectPhase_entity/SalesprojectPhase_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..20d329a42037cbec6fdae0ee7c1c625af9c54ad2 --- /dev/null +++ b/entity/SalesprojectPhase_entity/SalesprojectPhase_entity.aod @@ -0,0 +1,54 @@ +<?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.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> + <name>SalesprojectPhase_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <title>Phase</title> + <titlePlural>Phases</titlePlural> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityParameter> + <name>CurrentPhase_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>UID</name> + </entityField> + <entityField> + <name>TITLE</name> + </entityField> + <entityField> + <name>ICON</name> + <contentType>IMAGE</contentType> + </entityField> + <entityField> + <name>STATE</name> + </entityField> + <entityProvider> + <name>Phases</name> + <dependencies> + <entityDependency> + <name>22c52a24-f1ad-4035-9567-1b5e99c7b5be</name> + <entityName>Salesproject_entity</entityName> + <fieldName>SalesprojectPhaseStepper</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/SalesprojectPhase_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <recordFields> + <element>UID.value</element> + <element>STATE.value</element> + <element>TITLE.value</element> + <element>ICON.value</element> + </recordFields> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/SalesprojectPhase_entity/recordcontainers/jdito/contentProcess.js b/entity/SalesprojectPhase_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..38fe36fcf5a06ce3ad5c65dfa486ebd6fdf70f36 --- /dev/null +++ b/entity/SalesprojectPhase_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,30 @@ +import("system.logging"); +import("Sql_lib"); +import("system.db"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); +import("system.result"); +import("system.vars"); + +var steps = KeywordUtils.getEntryNamesAndIdsByContainer($KeywordRegistry.salesprojectPhase()); +var selection = vars.get("$sys.selection"); +logging.log(selection.toSource()); +var selected = vars.exists("$param.CurrentPhase_param") && vars.get("$param.CurrentPhase_param"); +logging.log(selected); + +var res = []; +steps.forEach(function ([stepId, title]) +{ + if (selection.length > 0) + res.push([stepId, selection.indexOf(stepId) > -1 ? "ACTIVE" : "EDITABLE", title, _getIcon(stepId)]); + else + res.push([stepId, stepId === selected ? "ACTIVE" : "EDITABLE", title, _getIcon(stepId)]); +}); +logging.log(res.toSource()) +result.object(res); + +function _getIcon (pPhase) +{ + var phaseIconAttr = new KeywordAttribute($KeywordRegistry.salesprojectPhase(), "icon", "VAADIN:BOOK_DOLLAR"); + return phaseIconAttr.getValue(pPhase); +} \ No newline at end of file diff --git a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod index 950e10b5c26d830b65b9e94645c65462fba2f772..cce18079de31c377a2a8783e25551be0e1cead4f 100644 --- a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod +++ b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>SalesprojectSource_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Touchpoint</title> @@ -31,7 +31,6 @@ <entityParameter> <name>SalesprojectId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="true" /> <description>PARAMETER</description> </entityParameter> diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 2f53f4fdd52245c313896d6feb94338e8d809412..2885c8c71d50dadbc3a4dfe136ecefa1ef01e84c 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Salesproject_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Salesproject</title> @@ -45,8 +45,9 @@ <entityField> <name>PHASE</name> <title>Phase</title> - <consumer>KeywordPhases</consumer> + <consumer>SalesprojectPhaseStepper</consumer> <mandatory v="true" /> + <state>EDITABLE</state> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/phase/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/phase/displayValueProcess.js</displayValueProcess> </entityField> @@ -134,7 +135,6 @@ <entityParameter> <name>SalesprojectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectsources/children/salesprojectid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -149,7 +149,6 @@ <entityParameter> <name>SalesprojectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasemilestones/children/salesprojectid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -165,13 +164,11 @@ <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/forecasts/children/objecttype_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/forecasts/children/objectrowid_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -188,13 +185,11 @@ <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/competitions/children/objectrowid_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/competitions/children/objecttype_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -210,13 +205,11 @@ <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/offers/children/objectrowid_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/offers/children/objecttype_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -231,17 +224,14 @@ <entityParameter> <name>PresetLinks_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>RowId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -257,13 +247,11 @@ <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/objectrowid_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/objecttype_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -286,12 +274,10 @@ <entityParameter> <name>ObjectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/timetrackings/children/objectid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>RowId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/timetrackings/children/rowid_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> @@ -400,8 +386,6 @@ <name>KeywordPhases</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> </dependency> <children> <entityParameter> @@ -646,6 +630,20 @@ </entityParameter> </children> </entityConsumer> + <entityConsumer> + <name>SalesprojectPhaseStepper</name> + <dependency> + <name>dependency</name> + <entityName>SalesprojectPhase_entity</entityName> + <fieldName>Phases</fieldName> + </dependency> + <children> + <entityParameter> + <name>CurrentPhase_param</name> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/currentphase_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Salesproject_entity/entityfields/keywordphases/children/containername_param/valueProcess.js b/entity/Salesproject_entity/entityfields/keywordphases/children/containername_param/valueProcess.js deleted file mode 100644 index d74e92060b4f3939402f40b792aee139e5f73b00..0000000000000000000000000000000000000000 --- a/entity/Salesproject_entity/entityfields/keywordphases/children/containername_param/valueProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string($KeywordRegistry.salesprojectPhase()); diff --git a/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/currentphase_param/valueProcess.js b/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/currentphase_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7d27814e727ef51078645ba0c65fa52b22dc4a3d --- /dev/null +++ b/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/currentphase_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.PHASE")); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js b/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js index 18dead55d190447fd1b51dc319abe52f8479776a..3537c33492c3ea6e636b0fd9970e90d681ba6291 100644 --- a/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js @@ -1,4 +1,6 @@ import("system.vars"); import("system.result"); -result.string("SALESPROJECT left join ORGANISATION on CONTACT_ID = ORGANISATIONID "); \ No newline at end of file +result.string("SALESPROJECT \n\ + left join CONTACT on (SALESPROJECT.CONTACT_ID = CONTACT.CONTACTID) \n\ + left join ORGANISATION on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID)"); \ No newline at end of file diff --git a/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod b/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod index a3aff9b8bd464e2612795ee4890616452ac3b8cb..0a6a256317f22fd7de2b5b8d62e88096003d13f1 100644 --- a/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod +++ b/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>SalutationDistinct_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <contentTitleProcess>%aditoprj%/entity/SalutationDistinct_entity/contentTitleProcess.js</contentTitleProcess> @@ -17,7 +17,6 @@ <entityParameter> <name>Language_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityProvider> diff --git a/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod b/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod index 4cac488db7cef13e591570e6c29c519156d4e11a..40fc7c5802eecae6db4771dd50266ac372c66080 100644 --- a/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod +++ b/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>SalutationTitleDistinct_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <contentTitleProcess>%aditoprj%/entity/SalutationTitleDistinct_entity/contentTitleProcess.js</contentTitleProcess> @@ -22,12 +22,10 @@ <entityParameter> <name>Language_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>Salutation_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityProvider> diff --git a/entity/Salutation_entity/Salutation_entity.aod b/entity/Salutation_entity/Salutation_entity.aod index 5dca28e87312a6aa0df7b97b8022b6083e434e1a..2520d3835bd2fe79017253f489a093b57e25d285 100644 --- a/entity/Salutation_entity/Salutation_entity.aod +++ b/entity/Salutation_entity/Salutation_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Salutation_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Salutation</title> diff --git a/entity/Social_entity/Social_entity.aod b/entity/Social_entity/Social_entity.aod index 35128b37f5d02de38162ae98e5e102712be6dbd4..475990d3b8f7eac3b1c8e26f0514ab17acd6031d 100644 --- a/entity/Social_entity/Social_entity.aod +++ b/entity/Social_entity/Social_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Social_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Social Media</title> diff --git a/entity/Stock_entity/Stock_entity.aod b/entity/Stock_entity/Stock_entity.aod index 62f6af1d845db1443d3ca543fbbb3a7292ce5023..9ab05b379c2dff4ae500cdc65982f9b7fa9ebd35 100644 --- a/entity/Stock_entity/Stock_entity.aod +++ b/entity/Stock_entity/Stock_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Stock_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Stock_entity/documentation.adoc</documentation> @@ -88,7 +88,6 @@ <entityParameter> <name>ProductId_param</name> <expose v="true" /> - <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityProvider> diff --git a/entity/TaskLink_entity/TaskLink_entity.aod b/entity/TaskLink_entity/TaskLink_entity.aod index 0b6531eaad9ab494e2ce700374d240324de591eb..81535cc22679535d2b5e00c8929ed1f42a59107e 100644 --- a/entity/TaskLink_entity/TaskLink_entity.aod +++ b/entity/TaskLink_entity/TaskLink_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>TaskLink_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Connection</title> @@ -74,7 +74,6 @@ <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/TaskLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> </entityParameter> </children> </entityConsumer> diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod index 0551f9b8d08df178091b6377e74b8a7fc79bf9e6..03fd7028b4dd7a6d70627caf4f5bbdaf5b01b2dc 100644 --- a/entity/Task_entity/Task_entity.aod +++ b/entity/Task_entity/Task_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Task_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Task_entity/documentation.adoc</documentation> diff --git a/entity/Timetracking_entity/Timetracking_entity.aod b/entity/Timetracking_entity/Timetracking_entity.aod index cdc401c8f8dd4fb34a3a527f5e281b43998776f9..cd6526511adeb5213171bc485c955ab5a8230ae7 100644 --- a/entity/Timetracking_entity/Timetracking_entity.aod +++ b/entity/Timetracking_entity/Timetracking_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Timetracking_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Timetracking</title> diff --git a/entity/TurnoverTree_entity/TurnoverTree_entity.aod b/entity/TurnoverTree_entity/TurnoverTree_entity.aod index dc2a01e59f81aa5f81ae14a14ba5aa7170ecf3e3..11425f028190fd30ae2f1777e03b39e949f81629 100644 --- a/entity/TurnoverTree_entity/TurnoverTree_entity.aod +++ b/entity/TurnoverTree_entity/TurnoverTree_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>TurnoverTree_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <title>Tree</title> @@ -27,7 +27,6 @@ <name>YearCountToShow_param</name> <valueProcess>%aditoprj%/entity/TurnoverTree_entity/entityfields/yearcounttoshow_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <documentation>%aditoprj%/entity/TurnoverTree_entity/entityfields/yearcounttoshow_param/documentation.adoc</documentation> <description>PARAMETER</description> @@ -36,7 +35,6 @@ <name>MaxYear_param</name> <valueProcess>%aditoprj%/entity/TurnoverTree_entity/entityfields/maxyear_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <documentation>%aditoprj%/entity/TurnoverTree_entity/entityfields/maxyear_param/documentation.adoc</documentation> <description>PARAMETER</description> diff --git a/entity/Turnover_entity/Turnover_entity.aod b/entity/Turnover_entity/Turnover_entity.aod index 2f4ccbe0eefe90e74f26b6a2b561ec4a86c80ef2..7eaa1fe042fde2d59529e36e73965f4ff326945c 100644 --- a/entity/Turnover_entity/Turnover_entity.aod +++ b/entity/Turnover_entity/Turnover_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.7"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.8"> <name>Turnover_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Turnover_entity/documentation.adoc</documentation> @@ -36,7 +36,6 @@ <name>YearCountToShow_param</name> <valueProcess>%aditoprj%/entity/Turnover_entity/entityfields/yearcounttoshow_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <documentation>%aditoprj%/entity/Turnover_entity/entityfields/yearcounttoshow_param/documentation.adoc</documentation> <description>PARAMETER</description> @@ -45,7 +44,6 @@ <name>MaxYear_param</name> <valueProcess>%aditoprj%/entity/Turnover_entity/entityfields/maxyear_param/valueProcess.js</valueProcess> <expose v="true" /> - <triggerRecalculation v="true" /> <mandatory v="false" /> <documentation>%aditoprj%/entity/Turnover_entity/entityfields/maxyear_param/documentation.adoc</documentation> <description>PARAMETER</description> diff --git a/entity/Turnover_entity/entityfields/y/titleProcess.js b/entity/Turnover_entity/entityfields/y/titleProcess.js index 93172094849a46feb91b0e37b52387dcbd47a020..064dd703467efa6f65e449d11368770d3d56bf5f 100644 --- a/entity/Turnover_entity/entityfields/y/titleProcess.js +++ b/entity/Turnover_entity/entityfields/y/titleProcess.js @@ -1,4 +1,4 @@ -import("system.translate"); -import("system.result"); - -result.string(translate.text("Turnover") + " " + translate.text("in") + " " + translate.text("${EURO_SIGN}")); \ No newline at end of file +import("system.translate"); +import("system.result"); + +result.string(translate.text("Sum") + " " + translate.text("in") + " " + translate.text("${EURO_SIGN}")); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index db5c7d00ffb5728a657c9267ad1be1bd97f10b33..9a8d001a9d1c787c22d3d659019605b98315b0ff 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -3759,6 +3759,21 @@ <entry> <key>Permission</key> </entry> + <entry> + <key>SalesprojectPhase</key> + </entry> + <entry> + <key>SalesprojectState</key> + </entry> + <entry> + <key>Maximal</key> + </entry> + <entry> + <key>Minimal</key> + </entry> + <entry> + <key>Object selection</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 37d7953da29ff5663c7332d3df943c021cd1c0ff..24b3587e8601093d56386cf3a0e54cfb6434f7d0 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -26,6 +26,10 @@ <key>ARCHIVE</key> <value>Archiviert</value> </entry> + <entry> + <key>Maximal</key> + <value></value> + </entry> <entry> <key>SalesprojectPhase</key> <value>Phase</value> @@ -57,6 +61,10 @@ <key>Long string value</key> <value>Langer String-Wert</value> </entry> + <entry> + <key>Object selection</key> + <value>Objektauswahl</value> + </entry> <entry> <key>CONFIRMED</key> <value>Gelesen</value> @@ -69,6 +77,10 @@ <key>Add to Campaign</key> <value>Zu Kampagne hinzufügen</value> </entry> + <entry> + <key>Bulk mail</key> + <value>Serienmail</value> + </entry> <entry> <key>No fax</key> <value>Kein Fax</value> @@ -2604,6 +2616,10 @@ <key>Project_reference</key> <value>Projekt_Referenz</value> </entry> + <entry> + <key>Minimal</key> + <value></value> + </entry> <entry> <key>Vanuatu</key> <value>Vanuatu</value> @@ -3485,6 +3501,10 @@ <key>Sales manager</key> <value>Vertriebsleiter</value> </entry> + <entry> + <key>Recipients</key> + <value>Empfänger</value> + </entry> <entry> <key>IT</key> </entry> @@ -4615,6 +4635,7 @@ </entry> <entry> <key>Price Condition</key> + <value>Preis Konditionen</value> </entry> <entry> <key>Entität</key> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index a4197c775800f861ec33b3110ba16b716ad07d5f..876933f4e0a2d0a54aa3885e1ebe7449c4b500af 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -3808,6 +3808,21 @@ <entry> <key>Permission</key> </entry> + <entry> + <key>SalesprojectPhase</key> + </entry> + <entry> + <key>SalesprojectState</key> + </entry> + <entry> + <key>Maximal</key> + </entry> + <entry> + <key>Minimal</key> + </entry> + <entry> + <key>Object selection</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/Attribute/Attribute.aod b/neonContext/Attribute/Attribute.aod index a31d17c07bf37316a20816416bfe5f95c89099cd..b5df2588451587bfb01da4465a6211ce5bdd4988 100644 --- a/neonContext/Attribute/Attribute.aod +++ b/neonContext/Attribute/Attribute.aod @@ -1,34 +1,29 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0"> - <name>Attribute</name> - <title>Attributes</title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <icon>VAADIN:TAGS</icon> - <mainview>AttributeMain_view</mainview> - <filterview>AttributeFilter_view</filterview> - <editview>AttributeEdit_view</editview> - <preview>AttributePreview_view</preview> - <entity>Attribute_entity</entity> - <references> - <neonViewReference> - <name>058f2577-b598-4d92-90ad-628342302a9c</name> - <view>AttributeFilter_view</view> - </neonViewReference> - <neonViewReference> - <name>96bf484d-dc8d-42ad-9242-dfefacc87956</name> - <view>AttributePreview_view</view> - </neonViewReference> - <neonViewReference> - <name>59089acc-a6db-48c2-8061-2d3ca8246e37</name> - <view>AttributeEdit_view</view> - </neonViewReference> - <neonViewReference> - <name>05d998e7-7364-4425-aefe-3cf284933d52</name> - <view>AttributeMain_view</view> - </neonViewReference> - <neonViewReference> - <name>6ab8d733-544c-4e48-ade9-b5210a5e5355</name> - <view>AttributeTree_view</view> - </neonViewReference> - </references> -</neonContext> +<?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.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0"> + <name>Attribute</name> + <title>Attributes</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:TAGS</icon> + <filterview>AttributeFilter_view</filterview> + <editview>AttributeEdit_view</editview> + <preview>AttributePreview_view</preview> + <entity>Attribute_entity</entity> + <references> + <neonViewReference> + <name>058f2577-b598-4d92-90ad-628342302a9c</name> + <view>AttributeFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>96bf484d-dc8d-42ad-9242-dfefacc87956</name> + <view>AttributePreview_view</view> + </neonViewReference> + <neonViewReference> + <name>59089acc-a6db-48c2-8061-2d3ca8246e37</name> + <view>AttributeEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>6ab8d733-544c-4e48-ade9-b5210a5e5355</name> + <view>AttributeTree_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/AttributeUsage/AttributeUsage.aod b/neonContext/AttributeUsage/AttributeUsage.aod index fa7176fd2d24ad706d0703a320654287498cd21d..68db5e8e6f8d9bba0689af8253da09b148fd378a 100644 --- a/neonContext/AttributeUsage/AttributeUsage.aod +++ b/neonContext/AttributeUsage/AttributeUsage.aod @@ -1,16 +1,20 @@ -<?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.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0"> - <name>AttributeUsage</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <entity>AttributeUsage_entity</entity> - <references> - <neonViewReference> - <name>6f384e66-886a-4a88-90b2-3fa74447b485</name> - <view>AttributeUsageFilter_view</view> - </neonViewReference> - <neonViewReference> - <name>db6545ff-cbf4-4c47-aa52-30ae7e203448</name> - <view>AttributeUsageMultiEdit_view</view> - </neonViewReference> - </references> -</neonContext> +<?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.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0"> + <name>AttributeUsage</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>AttributeUsage_entity</entity> + <references> + <neonViewReference> + <name>6f384e66-886a-4a88-90b2-3fa74447b485</name> + <view>AttributeUsageFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>db6545ff-cbf4-4c47-aa52-30ae7e203448</name> + <view>AttributeUsageMultiEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>d6bd1bbe-cdba-4322-835b-4176308c4a03</name> + <view>AttributeUsageList_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/BulkMail/BulkMail.aod b/neonContext/BulkMail/BulkMail.aod new file mode 100644 index 0000000000000000000000000000000000000000..5671a98946abec37c4a4fc1c9fa5da370688a107 --- /dev/null +++ b/neonContext/BulkMail/BulkMail.aod @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0"> + <name>BulkMail</name> + <title>Bulk mail</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <mainview>BulkMailMain_view</mainview> + <filterview>BulkMailFilter_view</filterview> + <editview>BulkMailEdit_view</editview> + <preview>BulkMailPreview_view</preview> + <entity>BulkMail_entity</entity> + <references> + <neonViewReference> + <name>b3d943fa-80ad-4588-8788-2005908677c5</name> + <view>BulkMailMain_view</view> + </neonViewReference> + <neonViewReference> + <name>45358c68-0dbc-47e9-809f-c4d32f8b6f0c</name> + <view>BulkMailPreview_view</view> + </neonViewReference> + <neonViewReference> + <name>bc34fcf6-fd65-40c0-a9d9-ee30ab08e5f4</name> + <view>BulkMailEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>d9462c8d-f0ad-4d9f-9c0c-80bca19cbb7f</name> + <view>BulkMailFilter_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/BulkMailRecipient/BulkMailRecipient.aod b/neonContext/BulkMailRecipient/BulkMailRecipient.aod new file mode 100644 index 0000000000000000000000000000000000000000..9f5d116664adcaa2ad8d5621f158c2538046bc4b --- /dev/null +++ b/neonContext/BulkMailRecipient/BulkMailRecipient.aod @@ -0,0 +1,18 @@ +<?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.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0"> + <name>BulkMailRecipient</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterview>BulkMailRecipientFilter_view</filterview> + <editview>BulkMailRecipientEdit_view</editview> + <entity>BulkMailRecipient_entity</entity> + <references> + <neonViewReference> + <name>f8ad11ce-9b5a-424f-a3eb-333c767ffb2a</name> + <view>BulkMailRecipientFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>55526723-ba65-45d5-8025-20e6d6a688bc</name> + <view>BulkMailRecipientEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/Productprice/Productprice.aod b/neonContext/Productprice/Productprice.aod index 5385e3c1cb27bf2f4217a831622eb7770d5d7873..705012cef4192bf010547b88fdacc2242bf92dd7 100644 --- a/neonContext/Productprice/Productprice.aod +++ b/neonContext/Productprice/Productprice.aod @@ -1,22 +1,27 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0"> - <name>Productprice</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <filterview>ProductpriceFilter_view</filterview> - <editview>ProductpriceEdit_view</editview> - <entity>Productprice_entity</entity> - <references> - <neonViewReference> - <name>cb76925e-63da-45c8-b332-e0fd2faff26e</name> - <view>ProductpriceFilter_view</view> - </neonViewReference> - <neonViewReference> - <name>5d987a22-773d-4353-87d5-8da2427f4239</name> - <view>ProductpriceEdit_view</view> - </neonViewReference> - <neonViewReference> - <name>d1c8b084-a20b-49ae-88fe-7a578396d4a5</name> - <view>ProductpriceRelation_view</view> - </neonViewReference> - </references> -</neonContext> +<?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.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0"> + <name>Productprice</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterview>ProductpriceFilter_view</filterview> + <editview>ProductpriceEdit_view</editview> + <preview>ProductpricePreview_view</preview> + <entity>Productprice_entity</entity> + <references> + <neonViewReference> + <name>cb76925e-63da-45c8-b332-e0fd2faff26e</name> + <view>ProductpriceFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>5d987a22-773d-4353-87d5-8da2427f4239</name> + <view>ProductpriceEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>d1c8b084-a20b-49ae-88fe-7a578396d4a5</name> + <view>ProductpriceRelation_view</view> + </neonViewReference> + <neonViewReference> + <name>590ab927-5303-451b-824a-c16adfb00772</name> + <view>ProductpricePreview_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/Salesproject/Salesproject.aod b/neonContext/Salesproject/Salesproject.aod index 7132036f9565f46312c7cf84234512dc2c6d92a1..8a1b6992cbbbb4612c5db429bf040432333bd81e 100644 --- a/neonContext/Salesproject/Salesproject.aod +++ b/neonContext/Salesproject/Salesproject.aod @@ -52,15 +52,19 @@ </neonViewReference> <neonViewReference> <name>68e9257b-d402-4edc-8345-7da46c3b63f9</name> - <view>SalesprojectClassificationAttribute_view</view> + <view>SalesprojectClassificationAndChart_view</view> </neonViewReference> <neonViewReference> <name>99f70216-c195-4c08-a6ab-3a4d5acc759b</name> - <view>SalesprojectClassScoreAttribute_view</view> + <view>SalesprojectClassificationAttribute_view</view> </neonViewReference> <neonViewReference> <name>b3e34681-eef6-48d3-a4e6-975a6fe77e7b</name> <view>SalesprojectOfferForecastChart_view</view> </neonViewReference> + <neonViewReference> + <name>f23558c0-b0e7-42f6-8307-5e70c130a5f1</name> + <view>SalesprojectPhase_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonContext/SalesprojectPhase/SalesprojectPhase.aod b/neonContext/SalesprojectPhase/SalesprojectPhase.aod new file mode 100644 index 0000000000000000000000000000000000000000..4c826c6554e20442dd93ec182f2f0cefb633f440 --- /dev/null +++ b/neonContext/SalesprojectPhase/SalesprojectPhase.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.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0"> + <name>SalesprojectPhase</name> + <title>Phase</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <lookupview>SalesprojectPhaseStep_view</lookupview> + <entity>SalesprojectPhase_entity</entity> + <references> + <neonViewReference> + <name>b875ea44-3ca5-4b19-95e1-aca307dc0068</name> + <view>SalesprojectPhaseStep_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/Timetracking/Timetracking.aod b/neonContext/Timetracking/Timetracking.aod index 1cd5118750a6c5d10e0cda5a363edabdb0709682..899b249d7201e72d601aa41d2632bd091cda0fa6 100644 --- a/neonContext/Timetracking/Timetracking.aod +++ b/neonContext/Timetracking/Timetracking.aod @@ -35,5 +35,9 @@ <name>1290dad5-f796-4847-9510-05607e079f30</name> <view>TimetrackingAnalysesDrawer_view</view> </neonViewReference> + <neonViewReference> + <name>9f848d8a-5dee-4388-8ade-6aa2c3f6c21f</name> + <view>TimetrackingFilterAnalyses</view> + </neonViewReference> </references> </neonContext> diff --git a/neonView/AttributeEdit_view/AttributeEdit_view.aod b/neonView/AttributeEdit_view/AttributeEdit_view.aod index 38144c9d34953a7c8183f7654ab666f811310945..a36a3eeedeb3f1058062f8b60b4bddc7c114f424 100644 --- a/neonView/AttributeEdit_view/AttributeEdit_view.aod +++ b/neonView/AttributeEdit_view/AttributeEdit_view.aod @@ -1,49 +1,49 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> - <name>AttributeEdit_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <isSmall v="true" /> - <layout> - <noneLayout> - <name>layout</name> - </noneLayout> - </layout> - <children> - <genericViewTemplate> - <name>Edit</name> - <editMode v="true" /> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>2d269ed7-a664-40c3-aadb-f274f7c00a66</name> - <entityField>ATTRIBUTE_PARENT_ID</entityField> - </entityFieldLink> - <entityFieldLink> - <name>0c6cd7c6-cced-4719-b0c5-08f8e3d13f2f</name> - <entityField>ATTRIBUTE_NAME</entityField> - </entityFieldLink> - <entityFieldLink> - <name>8cbc6049-2530-4960-b45f-830f3220889e</name> - <entityField>ATTRIBUTE_TYPE</entityField> - </entityFieldLink> - <entityFieldLink> - <name>529f9734-182e-46f3-ad89-14dc5656f307</name> - <entityField>KEYWORD_CONTAINER</entityField> - </entityFieldLink> - <entityFieldLink> - <name>d26696ac-199c-45f0-9147-b75dee3f4b65</name> - <entityField>ATTRIBUTE_ACTIVE</entityField> - </entityFieldLink> - <entityFieldLink> - <name>c8a5f45e-8092-45f4-ac22-681700447235</name> - <entityField>ATTRIBUTE_LEVEL</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - <neonViewReference> - <name>8387ef27-9565-400f-a0d5-ef1d2019b722</name> - <entityField>AttributeUsages</entityField> - <view>AttributeUsageMultiEdit_view</view> - </neonViewReference> - </children> -</neonView> +<?xml version="1.0" encoding="UTF-8"?> +<neonView 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/neonView/1.1.1"> + <name>AttributeEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <isSmall v="true" /> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericViewTemplate> + <name>Edit</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>2d269ed7-a664-40c3-aadb-f274f7c00a66</name> + <entityField>ATTRIBUTE_PARENT_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>0c6cd7c6-cced-4719-b0c5-08f8e3d13f2f</name> + <entityField>ATTRIBUTE_NAME</entityField> + </entityFieldLink> + <entityFieldLink> + <name>8cbc6049-2530-4960-b45f-830f3220889e</name> + <entityField>ATTRIBUTE_TYPE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>529f9734-182e-46f3-ad89-14dc5656f307</name> + <entityField>DROPDOWNDEFINITION</entityField> + </entityFieldLink> + <entityFieldLink> + <name>d26696ac-199c-45f0-9147-b75dee3f4b65</name> + <entityField>ATTRIBUTE_ACTIVE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>c8a5f45e-8092-45f4-ac22-681700447235</name> + <entityField>ATTRIBUTE_LEVEL</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>8387ef27-9565-400f-a0d5-ef1d2019b722</name> + <entityField>AttributeUsages</entityField> + <view>AttributeUsageMultiEdit_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/AttributePreview_view/AttributePreview_view.aod b/neonView/AttributePreview_view/AttributePreview_view.aod index e710ffaa582ce6ed96579096870168f1ffb72766..17503eac3db6f7b892a08e923a7b91225fcef5de 100644 --- a/neonView/AttributePreview_view/AttributePreview_view.aod +++ b/neonView/AttributePreview_view/AttributePreview_view.aod @@ -1,43 +1,48 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> - <name>AttributePreview_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <headerFooterLayout> - <name>layout</name> - <header>Head</header> - </headerFooterLayout> - </layout> - <children> - <cardViewTemplate> - <name>Head</name> - <iconField>ICON</iconField> - <titleField>FULL_ATTRIBUTE_NAME</titleField> - <subtitleField>ATTRIBUTE_TYPE</subtitleField> - <entityField>#ENTITY</entityField> - </cardViewTemplate> - <genericViewTemplate> - <name>Details</name> - <showDrawer v="true" /> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>3de869e9-936b-4215-86de-b1e24f6bfd78</name> - <entityField>ATTRIBUTE_PARENT_ID</entityField> - </entityFieldLink> - <entityFieldLink> - <name>39cf159f-2c34-41a1-bf6d-210d2d1f8df9</name> - <entityField>KEYWORD_CONTAINER</entityField> - </entityFieldLink> - <entityFieldLink> - <name>70953962-9472-484b-ac95-567d2249f42e</name> - <entityField>ATTRIBUTE_ACTIVE</entityField> - </entityFieldLink> - <entityFieldLink> - <name>1b1cfdcb-fcab-4ca9-b0e0-b69fe88b65f0</name> - <entityField>SORTING</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - </children> -</neonView> +<?xml version="1.0" encoding="UTF-8"?> +<neonView 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/neonView/1.1.1"> + <name>AttributePreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <headerFooterLayout> + <name>layout</name> + <header>Head</header> + </headerFooterLayout> + </layout> + <children> + <cardViewTemplate> + <name>Head</name> + <iconField>ICON</iconField> + <titleField>FULL_ATTRIBUTE_NAME</titleField> + <subtitleField>ATTRIBUTE_TYPE</subtitleField> + <entityField>#ENTITY</entityField> + </cardViewTemplate> + <genericViewTemplate> + <name>Details</name> + <showDrawer v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>3de869e9-936b-4215-86de-b1e24f6bfd78</name> + <entityField>ATTRIBUTE_PARENT_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>39cf159f-2c34-41a1-bf6d-210d2d1f8df9</name> + <entityField>DROPDOWNDEFINITION</entityField> + </entityFieldLink> + <entityFieldLink> + <name>70953962-9472-484b-ac95-567d2249f42e</name> + <entityField>ATTRIBUTE_ACTIVE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>1b1cfdcb-fcab-4ca9-b0e0-b69fe88b65f0</name> + <entityField>SORTING</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>8ecf4cfd-a1a0-49fa-9650-575f32c48840</name> + <entityField>AttributeUsages</entityField> + <view>AttributeUsageList_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/AttributeUsageList_view/AttributeUsageList_view.aod b/neonView/AttributeUsageList_view/AttributeUsageList_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..5c3f2347266b67eccdb7de9bc23798762f0bff5d --- /dev/null +++ b/neonView/AttributeUsageList_view/AttributeUsageList_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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> + <name>AttributeUsageList_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <titledListViewTemplate> + <name>Usages</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>dad2eee7-ccfb-4795-8574-5fae64033271</name> + <entityField>OBJECT_TYPE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>eb87855e-c5b1-45c9-aa84-d566f2493bc0</name> + <entityField>MIN_COUNT</entityField> + </neonTableColumn> + <neonTableColumn> + <name>a8876438-3152-4d39-9e1f-35735b4890d5</name> + <entityField>MAX_COUNT</entityField> + </neonTableColumn> + </columns> + </titledListViewTemplate> + </children> +</neonView> diff --git a/neonView/BulkMailEdit_view/BulkMailEdit_view.aod b/neonView/BulkMailEdit_view/BulkMailEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..19e453d3cb60342db7f680a84facb923ca05d166 --- /dev/null +++ b/neonView/BulkMailEdit_view/BulkMailEdit_view.aod @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView 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/neonView/1.1.1"> + <name>BulkMailEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>BulkMail</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>e363bda2-d8bf-456e-bcae-d1870408022a</name> + <entityField>NAME</entityField> + </entityFieldLink> + <entityFieldLink> + <name>06f08869-5a81-41cb-8c7e-51be6a7041a7</name> + <entityField>DESCRIPTION</entityField> + </entityFieldLink> + <entityFieldLink> + <name>c73d0fb7-b740-48ac-8f3e-fd4199f169da</name> + <entityField>SUBJECT</entityField> + </entityFieldLink> + <entityFieldLink> + <name>b68c65de-4ecd-4a23-9242-f85e7b708b1e</name> + <entityField>DOCUMENTTEMPLATE_ID</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/BulkMailFilter_view/BulkMailFilter_view.aod b/neonView/BulkMailFilter_view/BulkMailFilter_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..b47381e310e88d97e189352fad7644cb5873debe --- /dev/null +++ b/neonView/BulkMailFilter_view/BulkMailFilter_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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> + <name>BulkMailFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>Table</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>4d9c0321-a9d9-409b-8839-d1a5b9a19215</name> + <entityField>NAME</entityField> + </neonTableColumn> + <neonTableColumn> + <name>9ad2e3dd-5496-43f4-b6ff-5b2b8c1fb6db</name> + <entityField>SUBJECT</entityField> + </neonTableColumn> + <neonTableColumn> + <name>d8f9dce6-8c10-4235-b3c3-2d15d01586bc</name> + <entityField>DESCRIPTION</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/AttributeMain_view/AttributeMain_view.aod b/neonView/BulkMailMain_view/BulkMailMain_view.aod similarity index 50% rename from neonView/AttributeMain_view/AttributeMain_view.aod rename to neonView/BulkMailMain_view/BulkMailMain_view.aod index 8e3efc3dcc725ba52bd5a16c38c49cc5f2d2f13c..b13921e7858eb60a0b3df9c0ae8eeb3b247df45c 100644 --- a/neonView/AttributeMain_view/AttributeMain_view.aod +++ b/neonView/BulkMailMain_view/BulkMailMain_view.aod @@ -1,28 +1,23 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> - <name>AttributeMain_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <masterSlaveLayout> - <name>layout</name> - <master>b8e5b606-4fbb-4a74-b7c4-ac612a9797f2</master> - </masterSlaveLayout> - </layout> - <children> - <neonViewReference> - <name>b8e5b606-4fbb-4a74-b7c4-ac612a9797f2</name> - <entityField>#ENTITY</entityField> - <view>AttributePreview_view</view> - </neonViewReference> - <neonViewReference> - <name>981059c6-2f57-4c6b-86bb-45e5a0a8f138</name> - <entityField>AttributeChildren</entityField> - <view>AttributeFilter_view</view> - </neonViewReference> - <neonViewReference> - <name>5dee1c0b-c670-4eb9-bd95-6f6474709aa2</name> - <entityField>AttributeUsages</entityField> - <view>AttributeUsageFilter_view</view> - </neonViewReference> - </children> -</neonView> +<?xml version="1.0" encoding="UTF-8"?> +<neonView 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/neonView/1.1.1"> + <name>BulkMailMain_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <masterSlaveLayout> + <name>layout</name> + <master>9f5528f7-230e-42e5-8831-66bdee9a9588</master> + </masterSlaveLayout> + </layout> + <children> + <neonViewReference> + <name>9f5528f7-230e-42e5-8831-66bdee9a9588</name> + <entityField>#ENTITY</entityField> + <view>BulkMailPreview_view</view> + </neonViewReference> + <neonViewReference> + <name>8be4ed02-1c54-41d0-9bba-3b785346a550</name> + <entityField>Recipients</entityField> + <view>BulkMailRecipientFilter_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/BulkMailPreview_view/BulkMailPreview_view.aod b/neonView/BulkMailPreview_view/BulkMailPreview_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..60b64ff404000d53c4df4ade238752f60acb39b1 --- /dev/null +++ b/neonView/BulkMailPreview_view/BulkMailPreview_view.aod @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> + <name>BulkMailPreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <headerFooterLayout> + <name>layout</name> + <header>Card</header> + </headerFooterLayout> + </layout> + <children> + <cardViewTemplate> + <name>Card</name> + <titleField>NAME</titleField> + <descriptionField>SUBJECT</descriptionField> + <entityField>#ENTITY</entityField> + </cardViewTemplate> + <genericViewTemplate> + <name>Generic</name> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>edbeea4d-019f-4661-b0d7-c07468e747cc</name> + <entityField>DOCUMENTTEMPLATE_ID</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod b/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..bbb1b90f1c9bf7719ea982819ce95d0b70018c81 --- /dev/null +++ b/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView 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/neonView/1.1.1"> + <name>BulkMailRecipientEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <isSmall v="true" /> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Generic</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>49dec5a0-161c-4392-a764-65e183d1c1ce</name> + <entityField>CONTACT_ID</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod b/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..d2933b291153beb33c82d04272a685af7f612cb6 --- /dev/null +++ b/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> + <name>BulkMailRecipientFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>Table</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>d18adeb8-352a-4b87-83a7-19959c73f718</name> + <entityField>CONTACT_ID</entityField> + </neonTableColumn> + <neonTableColumn> + <name>f311e8da-4139-48bd-a792-6df572dce7ad</name> + <entityField>STATUS</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/CampaignFilter_view/CampaignFilter_view.aod b/neonView/CampaignFilter_view/CampaignFilter_view.aod index 60d0e80e43a98f15b94592d9a35cd4ab4354db32..92a0a4185572b65a2e3f126c17ddc359fe204008 100644 --- a/neonView/CampaignFilter_view/CampaignFilter_view.aod +++ b/neonView/CampaignFilter_view/CampaignFilter_view.aod @@ -1,45 +1,53 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView 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/neonView/1.1.1"> - <name>CampaignFilter_view</name> - <title>Campaign</title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <icon>VAADIN:GROUP</icon> - <filterable v="true" /> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <tableViewTemplate> - <name>Campaigns</name> - <entityField>#ENTITY</entityField> - <isEditable v="false" /> - <columns> - <neonTableColumn> - <name>8fd2c7a2-37ad-43be-b37a-3cf9d07e71c8</name> - <entityField>#IMAGE</entityField> - </neonTableColumn> - <neonTableColumn> - <name>c384e4df-3f29-45b8-b86d-2c6aa253833f</name> - <entityField>NAME</entityField> - <width v="100" /> - </neonTableColumn> - <neonTableColumn> - <name>a66574f0-f104-4579-b1fe-e9f33cd200be</name> - <entityField>DATE_START</entityField> - <width v="100" /> - </neonTableColumn> - <neonTableColumn> - <name>0153b107-544e-4f9a-a734-431d343abc8e</name> - <entityField>DATE_END</entityField> - <width v="100" /> - </neonTableColumn> - <neonTableColumn> - <name>3f075c57-e61a-4db2-a402-141da6bbf29d</name> - <entityField>STATE</entityField> - </neonTableColumn> - </columns> - </tableViewTemplate> - </children> -</neonView> +<?xml version="1.0" encoding="UTF-8"?> +<neonView 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/neonView/1.1.1"> + <name>CampaignFilter_view</name> + <title>Campaign</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:GROUP</icon> + <filterable v="true" /> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>Campaigns</name> + <entityField>#ENTITY</entityField> + <isEditable v="false" /> + <columns> + <neonTableColumn> + <name>8fd2c7a2-37ad-43be-b37a-3cf9d07e71c8</name> + <entityField>#IMAGE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>c384e4df-3f29-45b8-b86d-2c6aa253833f</name> + <entityField>NAME</entityField> + <width v="100" /> + </neonTableColumn> + <neonTableColumn> + <name>87caf58d-c77a-47b4-a2ba-55b6e77672d8</name> + <entityField>EMPLOYEE_CONTACT_ID</entityField> + </neonTableColumn> + <neonTableColumn> + <name>a66574f0-f104-4579-b1fe-e9f33cd200be</name> + <entityField>DATE_START</entityField> + <width v="100" /> + </neonTableColumn> + <neonTableColumn> + <name>0153b107-544e-4f9a-a734-431d343abc8e</name> + <entityField>DATE_END</entityField> + <width v="100" /> + </neonTableColumn> + <neonTableColumn> + <name>3f075c57-e61a-4db2-a402-141da6bbf29d</name> + <entityField>STATE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>f5fc40b2-c6d3-4f03-9ffa-b7e269323b4d</name> + <entityField>DESCRIPTION</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod index a9ab180e53b4330cff6f740024f3585b2454c869..e9d6fdecb1bc417725219df008a1835078b50032 100644 --- a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod +++ b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod @@ -28,6 +28,10 @@ <name>d9ca59de-1441-494a-91f0-1cff91c575de</name> <entityField>NAME</entityField> </neonTableColumn> + <neonTableColumn> + <name>75d15a06-1591-4f5c-9be6-df98e32e3834</name> + <entityField>EMPLOYEE_CONTACT_ID</entityField> + </neonTableColumn> <neonTableColumn> <name>0ffcc021-2b58-49f6-91d0-21f4029f744f</name> <entityField>DATE_START</entityField> diff --git a/neonView/ContractFilter_view/ContractFilter_view.aod b/neonView/ContractFilter_view/ContractFilter_view.aod index 5ef1fa5e8c38cfa14fc5ec48bbdaa8095071c378..36402f58995033b150be327e14f5310cd2fa46b1 100644 --- a/neonView/ContractFilter_view/ContractFilter_view.aod +++ b/neonView/ContractFilter_view/ContractFilter_view.aod @@ -1,68 +1,72 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView 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/neonView/1.1.1"> - <name>ContractFilter_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <filterable v="true" /> - <dashletConfigurations> - <neonDashletConfiguration> - <name>AllContractsDashlet</name> - <title>Contracts</title> - <description>Show all contracts</description> - <fragment>Contract/filter</fragment> - <singleton v="true" /> - <requiresConfiguration v="false" /> - <icon>vaadin:form</icon> - <categories> - <neonDashletCategory> - <name>sales</name> - <title>Sales</title> - </neonDashletCategory> - <neonDashletCategory> - <name>contract</name> - <title>Contract</title> - </neonDashletCategory> - </categories> - </neonDashletConfiguration> - </dashletConfigurations> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <tableViewTemplate> - <name>Contracts</name> - <entityField>#ENTITY</entityField> - <columns> - <neonTableColumn> - <name>67ceacc5-6238-496a-9bc6-ccc52ce91cd3</name> - <entityField>IMAGE</entityField> - </neonTableColumn> - <neonTableColumn> - <name>1a610a45-8c8c-48d4-bc0b-905655afa016</name> - <entityField>CONTRACTCODE</entityField> - </neonTableColumn> - <neonTableColumn> - <name>ea38d067-af86-4936-8311-f64305fc5576</name> - <entityField>CONTRACTTYPE</entityField> - </neonTableColumn> - <neonTableColumn> - <name>0ec4c5ee-4af2-4530-8fc3-fbecef7983b7</name> - <entityField>CONTACT_ID</entityField> - </neonTableColumn> - <neonTableColumn> - <name>05f745fe-6f29-4536-9794-8ddfefd2b369</name> - <entityField>CONTRACTSTATUS</entityField> - </neonTableColumn> - <neonTableColumn> - <name>ef313bd9-b3a3-4c60-b7d5-9cf2e208aade</name> - <entityField>CONTRACTSTART</entityField> - </neonTableColumn> - <neonTableColumn> - <name>845c3a71-0fa9-4299-9b85-8fa25f92436d</name> - <entityField>CONTRACTEND</entityField> - </neonTableColumn> - </columns> - </tableViewTemplate> - </children> -</neonView> +<?xml version="1.0" encoding="UTF-8"?> +<neonView 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/neonView/1.1.1"> + <name>ContractFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> + <dashletConfigurations> + <neonDashletConfiguration> + <name>AllContractsDashlet</name> + <title>Contracts</title> + <description>Show all contracts</description> + <fragment>Contract/filter</fragment> + <singleton v="true" /> + <requiresConfiguration v="false" /> + <icon>vaadin:form</icon> + <categories> + <neonDashletCategory> + <name>sales</name> + <title>Sales</title> + </neonDashletCategory> + <neonDashletCategory> + <name>contract</name> + <title>Contract</title> + </neonDashletCategory> + </categories> + </neonDashletConfiguration> + </dashletConfigurations> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>Contracts</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>67ceacc5-6238-496a-9bc6-ccc52ce91cd3</name> + <entityField>IMAGE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>1a610a45-8c8c-48d4-bc0b-905655afa016</name> + <entityField>CONTRACTCODE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>ea38d067-af86-4936-8311-f64305fc5576</name> + <entityField>CONTRACTTYPE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>0ec4c5ee-4af2-4530-8fc3-fbecef7983b7</name> + <entityField>CONTACT_ORG_ID</entityField> + </neonTableColumn> + <neonTableColumn> + <name>d9382527-d322-45f6-8a61-9a8ada6b9fa2</name> + <entityField>CONTACT_PERSON_ID</entityField> + </neonTableColumn> + <neonTableColumn> + <name>05f745fe-6f29-4536-9794-8ddfefd2b369</name> + <entityField>CONTRACTSTATUS</entityField> + </neonTableColumn> + <neonTableColumn> + <name>ef313bd9-b3a3-4c60-b7d5-9cf2e208aade</name> + <entityField>CONTRACTSTART</entityField> + </neonTableColumn> + <neonTableColumn> + <name>845c3a71-0fa9-4299-9b85-8fa25f92436d</name> + <entityField>CONTRACTEND</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod index 2224a8959900a10c9264f328a6458d88f8d92425..e18ac930066433f9273a6bbb2ba2574e89b5a702 100644 --- a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod +++ b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod @@ -1,61 +1,69 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView 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/neonView/1.1.1"> - <name>KeywordEntryFilter_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <filterable v="true" /> - <layout> - <groupLayout> - <name>layout</name> - </groupLayout> - </layout> - <children> - <treeTableViewTemplate> - <name>EntriesTreeTable</name> - <defaultGroupFields> - <element>CONTAINER</element> - </defaultGroupFields> - <entityField>#ENTITY</entityField> - <columns> - <neonTableColumn> - <name>aa5612b4-997e-4f0f-8fb1-91e18e32051d</name> - <entityField>TITLE</entityField> - </neonTableColumn> - <neonTableColumn> - <name>6100879d-dc6a-4c7e-b750-f5b7e627f48a</name> - <entityField>KEYID</entityField> - </neonTableColumn> - </columns> - </treeTableViewTemplate> - <tableViewTemplate> - <name>EntriesTable</name> - <entityField>#ENTITY</entityField> - <title></title> - <columns> - <neonTableColumn> - <name>0e85b64c-6ce8-4221-8544-b8b5152a1292</name> - <entityField>#ICON</entityField> - </neonTableColumn> - <neonTableColumn> - <name>7f8c3b75-62dc-4826-bad3-99aa9d471067</name> - <entityField>CONTAINER</entityField> - </neonTableColumn> - <neonTableColumn> - <name>4dc50d75-d856-4fca-bd4d-d79eb3c8769f</name> - <entityField>KEYID</entityField> - </neonTableColumn> - <neonTableColumn> - <name>42d1d488-8739-4101-9aee-087dcc34d51a</name> - <entityField>TITLE</entityField> - </neonTableColumn> - <neonTableColumn> - <name>f4241fa3-907e-4542-b01d-6efa95ac4d0f</name> - <entityField>ISACTIVE</entityField> - </neonTableColumn> - <neonTableColumn> - <name>64a15e98-c6da-4c36-b20b-af1867b15602</name> - <entityField>SORTING</entityField> - </neonTableColumn> - </columns> - </tableViewTemplate> - </children> -</neonView> +<?xml version="1.0" encoding="UTF-8"?> +<neonView 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/neonView/1.1.1"> + <name>KeywordEntryFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> + <layout> + <groupLayout> + <name>layout</name> + </groupLayout> + </layout> + <children> + <treeTableViewTemplate> + <name>EntriesTreeTable</name> + <defaultGroupFields> + <element>CONTAINER</element> + </defaultGroupFields> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>6100879d-dc6a-4c7e-b750-f5b7e627f48a</name> + <entityField>KEYID</entityField> + </neonTableColumn> + <neonTableColumn> + <name>aa5612b4-997e-4f0f-8fb1-91e18e32051d</name> + <entityField>TITLE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>eea7891c-81bd-4c1b-9d9b-fd81c6bc49b2</name> + <entityField>ISACTIVE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>1739a6c3-14fb-4b86-941e-28d165f1b8bd</name> + <entityField>ISESSENTIAL</entityField> + </neonTableColumn> + </columns> + </treeTableViewTemplate> + <tableViewTemplate> + <name>EntriesTable</name> + <entityField>#ENTITY</entityField> + <title></title> + <columns> + <neonTableColumn> + <name>0e85b64c-6ce8-4221-8544-b8b5152a1292</name> + <entityField>#ICON</entityField> + </neonTableColumn> + <neonTableColumn> + <name>7f8c3b75-62dc-4826-bad3-99aa9d471067</name> + <entityField>CONTAINER</entityField> + </neonTableColumn> + <neonTableColumn> + <name>4dc50d75-d856-4fca-bd4d-d79eb3c8769f</name> + <entityField>KEYID</entityField> + </neonTableColumn> + <neonTableColumn> + <name>42d1d488-8739-4101-9aee-087dcc34d51a</name> + <entityField>TITLE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>f4241fa3-907e-4542-b01d-6efa95ac4d0f</name> + <entityField>ISACTIVE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>64a15e98-c6da-4c36-b20b-af1867b15602</name> + <entityField>SORTING</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod b/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod index 7033e20f42372476b758a070490c9f36b428f095..a2f745cf473bb46657565aca058de8903dae3ce8 100644 --- a/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod +++ b/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod @@ -30,6 +30,10 @@ <hideLabels v="true" /> <entityField>#ENTITY</entityField> <fields> + <entityFieldLink> + <name>68ea43c8-fb8d-47bb-83d5-d756a62f6256</name> + <entityField>ChoosenTEXHeader</entityField> + </entityFieldLink> <entityFieldLink> <name>ea40e259-0920-4ba1-8a26-8c84c6ba3b61</name> <entityField>HEADER</entityField> @@ -43,6 +47,10 @@ <hideLabels v="true" /> <entityField>#ENTITY</entityField> <fields> + <entityFieldLink> + <name>a702eef3-b285-44e2-ba27-68377e83e882</name> + <entityField>ChoosenTEXFooter</entityField> + </entityFieldLink> <entityFieldLink> <name>aec6d9a1-dfae-4e74-a48a-3303884c121a</name> <entityField>FOOTER</entityField> diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod index 233e57008b83b305dcba9430866f4093dda4caf2..792e13eb6190078c112baea3af283b4d1a9c4223 100644 --- a/neonView/OfferFilter_view/OfferFilter_view.aod +++ b/neonView/OfferFilter_view/OfferFilter_view.aod @@ -63,10 +63,14 @@ </neonTableColumn> <neonTableColumn> <name>780087e7-ff3c-4592-90be-607357168295</name> - <entityField>CONTACT_ID</entityField> + <entityField>CONTACT_ORG_ID</entityField> <width v="75" /> <expandRatio v="100" /> </neonTableColumn> + <neonTableColumn> + <name>1556a6e6-f147-4573-82da-7a59f39a81e5</name> + <entityField>CONTACT_PERSON_ID</entityField> + </neonTableColumn> <neonTableColumn> <name>c5780864-ac2c-4650-8630-2690a9a074ea</name> <entityField>STATUS</entityField> diff --git a/neonView/OrderFilter_view/OrderFilter_view.aod b/neonView/OrderFilter_view/OrderFilter_view.aod index c93d94888edcbd43127f1e8711aedc96db0635e4..ecf2e155081c89ca14f364ea201a2780f2c8ac7b 100644 --- a/neonView/OrderFilter_view/OrderFilter_view.aod +++ b/neonView/OrderFilter_view/OrderFilter_view.aod @@ -64,10 +64,14 @@ </neonTableColumn> <neonTableColumn> <name>5688908f-7c50-46a3-8899-2767ea5b4a90</name> - <entityField>CONTACT_ID</entityField> + <entityField>CONTACT_ORG_ID</entityField> <width v="75" /> <expandRatio v="100" /> </neonTableColumn> + <neonTableColumn> + <name>6fdca295-2e0a-4f89-a386-1ddda8a3090c</name> + <entityField>CONTACT_PERSON_ID</entityField> + </neonTableColumn> <neonTableColumn> <name>443c8480-5676-43a3-9617-f86dae39c960</name> <entityField>SALESORDERDATE</entityField> diff --git a/neonView/ProductpricePreview_view/ProductpricePreview_view.aod b/neonView/ProductpricePreview_view/ProductpricePreview_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..4353f66b64422eb7aa3d9294f996840ebb2ef4e1 --- /dev/null +++ b/neonView/ProductpricePreview_view/ProductpricePreview_view.aod @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView 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/neonView/1.1.1"> + <name>ProductpricePreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <headerFooterLayout> + <name>layout</name> + <header>Header</header> + </headerFooterLayout> + </layout> + <children> + <genericViewTemplate> + <name>PriceInfo</name> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>017828ab-b638-48fe-9ce0-cd9f0a85320d</name> + <entityField>VALID_FROM</entityField> + </entityFieldLink> + <entityFieldLink> + <name>e34a8afc-7dc2-49eb-97a8-5b7e1345ea3c</name> + <entityField>VALID_TO</entityField> + </entityFieldLink> + <entityFieldLink> + <name>e7a79993-a075-415f-9d39-712884f1167d</name> + <entityField>PRICE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>264eb382-5e41-4c8b-a2fa-ce93398c844b</name> + <entityField>CURRENCY</entityField> + </entityFieldLink> + <entityFieldLink> + <name>9584102a-f0a1-4d44-934a-9dd6087a7ff4</name> + <entityField>BUYSELL</entityField> + </entityFieldLink> + <entityFieldLink> + <name>75bd282e-2782-49da-bbd8-d835a47356f0</name> + <entityField>FROMQUANTITY</entityField> + </entityFieldLink> + <entityFieldLink> + <name>276f4380-51e4-4268-bb96-9d95778eb852</name> + <entityField>VAT</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <cardViewTemplate> + <name>Header</name> + <iconField>IMAGE</iconField> + <titleField>PRICELIST</titleField> + <entityField>#ENTITY</entityField> + </cardViewTemplate> + </children> +</neonView> diff --git a/neonView/ProductpricePreview_views/ProductpricePreview_view.aod b/neonView/ProductpricePreview_views/ProductpricePreview_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..3bc608ee66b871fe29ce9f87e4a82fcecaf50f21 --- /dev/null +++ b/neonView/ProductpricePreview_views/ProductpricePreview_view.aod @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView 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/neonView/1.1.1"> + <name>ProductpricePreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> +</neonView> diff --git a/neonView/SalesprojectClassificationAndChart_view/SalesprojectClassificationAndChart_view.aod b/neonView/SalesprojectClassificationAndChart_view/SalesprojectClassificationAndChart_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..5e697d1cc59bd998ebffa273865be89022733ebe --- /dev/null +++ b/neonView/SalesprojectClassificationAndChart_view/SalesprojectClassificationAndChart_view.aod @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> + <name>SalesprojectClassificationAndChart_view</name> + <title></title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + <direction>HORIZONTAL</direction> + <maxDirectionElements v="2" /> + </boxLayout> + </layout> + <children> + <neonViewReference> + <name>b2bbddb9-1a44-4926-9707-7052f96e5963</name> + <entityField>Classifications</entityField> + <view>ClassificationTree_view</view> + </neonViewReference> + <neonViewReference> + <name>0442c345-d0a3-4778-a906-c5ef86dacd16</name> + <entityField>Classifications</entityField> + <view>ClassificationChart_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/SalesprojectClassificationAttribute_view/SalesprojectClassificationAttribute_view.aod b/neonView/SalesprojectClassificationAttribute_view/SalesprojectClassificationAttribute_view.aod index bfe23f33231cc821af46d6439d5a9446a8b3695b..9ceb8b366343ca0043e462b5367d008516712ad4 100644 --- a/neonView/SalesprojectClassificationAttribute_view/SalesprojectClassificationAttribute_view.aod +++ b/neonView/SalesprojectClassificationAttribute_view/SalesprojectClassificationAttribute_view.aod @@ -1,25 +1,24 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView 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/neonView/1.1.1"> - <name>SalesprojectClassificationAttribute_view</name> - <title></title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - <direction>HORIZONTAL</direction> - <maxDirectionElements v="2" /> - </boxLayout> - </layout> - <children> - <neonViewReference> - <name>793ed21a-147f-4ca0-a86a-ddbf79db92b6</name> - <entityField>Classifications</entityField> - <view>ClassificationDrawer_view</view> - </neonViewReference> - <neonViewReference> - <name>0442c345-d0a3-4778-a906-c5ef86dacd16</name> - <entityField>Classifications</entityField> - <view>ClassificationChart_view</view> - </neonViewReference> - </children> -</neonView> +<?xml version="1.0" encoding="UTF-8"?> +<neonView 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/neonView/1.1.1"> + <name>SalesprojectClassificationAttribute_view</name> + <title>Classification</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + <direction>VERTICAL</direction> + </boxLayout> + </layout> + <children> + <neonViewReference> + <name>1af0e58c-db49-41c3-b7ce-d69498070699</name> + <entityField>#ENTITY</entityField> + <view>SalesprojectClassificationAndChart_view</view> + </neonViewReference> + <neonViewReference> + <name>523e3855-eade-4cce-842d-9b272b028cbb</name> + <entityField>AttributeTree</entityField> + <view>AttributeRelationTreeDrawer_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod b/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod index 2aff0cef7c723beb6fd590c0b53c7209f7c80f64..b23e3bfd1d4659454c56cc97bde3e8d5b5fd2fd9 100644 --- a/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod +++ b/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod @@ -6,8 +6,8 @@ <layout> <boxLayout> <name>layout</name> - <direction>HORIZONTAL</direction> - <maxDirectionElements v="2" /> + <direction>VERTICAL</direction> + <maxDirectionElements v="0" /> </boxLayout> </layout> <children> @@ -16,11 +16,6 @@ <entityField>Timetrackings</entityField> <view>TimetrackingDrawer_view</view> </neonViewReference> - <neonViewReference> - <name>5d00dd5a-7c80-41b4-a53e-29375be4f806</name> - <entityField>Timetrackings</entityField> - <view>TimetrackingAnalyses_view</view> - </neonViewReference> <neonViewReference> <name>4dcc3fdd-6683-435c-95c1-a59597fc3e71</name> <entityField>Competitions</entityField> diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod index d3967c08b2b64f507a61eb540387ef2f5c75011f..614e3fec5e03066e769bdf811726dc8379e95a4f 100644 --- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod +++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod @@ -14,20 +14,25 @@ <entityField>#ENTITY</entityField> <view>SalesprojectPreview_view</view> </neonViewReference> + <neonViewReference> + <name>9fe0e309-b367-479b-81d4-da06496b805a</name> + <entityField>#ENTITY</entityField> + <view>SalesprojectPhase_view</view> + </neonViewReference> <neonViewReference> <name>57b93e84-fcb9-4f9d-bbad-1d7fdf16cc77</name> <entityField>#ENTITY</entityField> <view>SalesprojectMemberActivity_view</view> </neonViewReference> <neonViewReference> - <name>8a83afee-e02c-4714-9641-13b62c95cea1</name> + <name>67659a20-068f-4522-ad33-2c35e29f929a</name> <entityField>#ENTITY</entityField> - <view>SalesprojectMilestoneSource_view</view> + <view>SalesprojectClassificationAttribute_view</view> </neonViewReference> <neonViewReference> - <name>67659a20-068f-4522-ad33-2c35e29f929a</name> + <name>8a83afee-e02c-4714-9641-13b62c95cea1</name> <entityField>#ENTITY</entityField> - <view>SalesprojectClassScoreAttribute_view</view> + <view>SalesprojectMilestoneSource_view</view> </neonViewReference> <neonViewReference> <name>3da4532a-716f-4ff2-a8bc-c29d4f7cb9fb</name> diff --git a/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod b/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod index 22a77ded18bff79861784a97fe69ab15e40e6335..0eec94ee7c019424c3248579fc68b9562d4a4d01 100644 --- a/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod +++ b/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod @@ -1,24 +1,25 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> - <name>SalesprojectMilestone_view</name> - <title>Milestones</title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - <direction>HORIZONTAL</direction> - </boxLayout> - </layout> - <children> - <neonViewReference> - <name>30c775ea-7488-4dfd-8e6d-c65b7982849d</name> - <entityField>SalesprojectStateMilestones</entityField> - <view>SalesprojectMilestoneChart_view</view> - </neonViewReference> - <neonViewReference> - <name>cc8f1469-805f-4e2c-aa4f-d55f932c6deb</name> - <entityField>SalesprojectPhaseMilestones</entityField> - <view>SalesprojectMilestoneChart_view</view> - </neonViewReference> - </children> -</neonView> +<?xml version="1.0" encoding="UTF-8"?> +<neonView 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/neonView/1.1.1"> + <name>SalesprojectMilestone_view</name> + <title>Milestones</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + <direction>HORIZONTAL</direction> + <maxDirectionElements v="2" /> + </boxLayout> + </layout> + <children> + <neonViewReference> + <name>30c775ea-7488-4dfd-8e6d-c65b7982849d</name> + <entityField>SalesprojectStateMilestones</entityField> + <view>SalesprojectMilestoneChart_view</view> + </neonViewReference> + <neonViewReference> + <name>cc8f1469-805f-4e2c-aa4f-d55f932c6deb</name> + <entityField>SalesprojectPhaseMilestones</entityField> + <view>SalesprojectMilestoneChart_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod b/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod index 06ec1cd5206e5ceada8e4a063254c1e9cd7e0ecc..ffb635e533832e66346cb7a0fe688178db687a10 100644 --- a/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod +++ b/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod @@ -12,9 +12,9 @@ </layout> <children> <neonViewReference> - <name>c399a9ac-e0ad-490c-8ffb-247fc806233b</name> + <name>e192d0d6-8d36-437a-a9cf-775c811c2761</name> <entityField>Forecasts</entityField> - <view>ForecastDrawer_view</view> + <view>ForecastFilter_view</view> </neonViewReference> <neonViewReference> <name>ca2581ac-0987-4fa4-a45a-c33ea4cd61e1</name> diff --git a/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod b/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..08638092fd114f45bccefde343d905542045cb8e --- /dev/null +++ b/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> + <name>SalesprojectPhaseStep_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <stepperViewTemplate> + <name>Phases</name> + <stateField>STATE</stateField> + <titleField>TITLE</titleField> + <iconField>ICON</iconField> + <entityField>#ENTITY</entityField> + </stepperViewTemplate> + </children> +</neonView> diff --git a/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod b/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..d046bb9b4fa8e43b41fbf168be9795332b4fabf4 --- /dev/null +++ b/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> + <name>SalesprojectPhase_view</name> + <title>Overview</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <lookupViewTemplate> + <name>Phases</name> + <consumerField>PHASE</consumerField> + <consumerPresentationMode>EMBEDDED</consumerPresentationMode> + <entityField>#ENTITY</entityField> + </lookupViewTemplate> + </children> +</neonView> diff --git a/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod b/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod index eaaa35e64364e5872a26a37e262849ddabd47966..894a9056ba56da8901f00981b982b84ea2cc8823 100644 --- a/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod +++ b/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod @@ -10,9 +10,9 @@ </layout> <children> <neonViewReference> - <name>463458e6-fb6a-4550-b4b4-04b61969f9f2</name> + <name>c6133a75-f87d-448f-bf52-e360373aa7f7</name> <entityField>#ENTITY</entityField> - <view>TimetrackingFilter_view</view> + <view>TimetrackingFilterAnalyses</view> </neonViewReference> </children> </neonView> diff --git a/neonView/SalesprojectClassScoreAttribute_view/SalesprojectClassScoreAttribute_view.aod b/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod similarity index 58% rename from neonView/SalesprojectClassScoreAttribute_view/SalesprojectClassScoreAttribute_view.aod rename to neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod index e7b905232b0012988ebd7d3562df992fbe2b9daa..92aaadacea0dc78c08c08783d652724ecec3f439 100644 --- a/neonView/SalesprojectClassScoreAttribute_view/SalesprojectClassScoreAttribute_view.aod +++ b/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod @@ -1,24 +1,24 @@ -<?xml version="1.0" encoding="UTF-8"?> -<neonView 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/neonView/1.1.1"> - <name>SalesprojectClassScoreAttribute_view</name> - <title>Classification</title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - <direction>VERTICAL</direction> - </boxLayout> - </layout> - <children> - <neonViewReference> - <name>1af0e58c-db49-41c3-b7ce-d69498070699</name> - <entityField>#ENTITY</entityField> - <view>SalesprojectClassificationAttribute_view</view> - </neonViewReference> - <neonViewReference> - <name>523e3855-eade-4cce-842d-9b272b028cbb</name> - <entityField>AttributeTree</entityField> - <view>AttributeRelationTreeDrawer_view</view> - </neonViewReference> - </children> -</neonView> +<?xml version="1.0" encoding="UTF-8"?> +<neonView 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/neonView/1.1.1"> + <name>TimetrackingFilterAnalyses</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + <direction>HORIZONTAL</direction> + <maxDirectionElements v="2" /> + </boxLayout> + </layout> + <children> + <neonViewReference> + <name>373d9986-ad06-4a86-9f5d-801ecee6139c</name> + <entityField>#ENTITY</entityField> + <view>TimetrackingFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>9b1e339c-70aa-4841-8e8f-b66fd2e9f9f5</name> + <entityField>#ENTITY</entityField> + <view>TimetrackingAnalyses_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/process/Address_lib/process.js b/process/Address_lib/process.js index 03e8d5d77a95eca6f0fa232ccdc5c7a321153971..a694f7a3d47e8cb06566318eb06dc133ea98b302 100644 --- a/process/Address_lib/process.js +++ b/process/Address_lib/process.js @@ -1,475 +1,475 @@ -import("Employee_lib"); -import("system.swing"); -import("system.text"); -import("system.db"); -import("system.logging"); -import("system.vars"); -import("system.translate"); -import("Attribute_lib"); -import("Sql_lib"); -import("Util_lib"); -import("DocumentTemplate_lib"); - -/* -* Creates a Address Object -* -* @param {String} pContactId req relationid for which address should be retrieved -* @param {String} pAddressId opt addressid for which address should be retrieved -* @param {boolean} pPerson whether the address is from a person, not an organisation -* -* @return {String} the formatted address -*/ - -function AddrObject(pContactId, pPerson, pAddressId) -{ - this.Data = fetchAddressData([pContactId], [new Placeholder("", Placeholder.types.ADDRESSFORMAT, "")], pAddressId, pPerson); - this.fmt = this.Data[0][0][26]; - - /* - * creates a formatted address - * - * @param {boolean} pCountry whether the country should be displayed - * @param {String} pFormat a fixed format for the address - * - * @return {String} formatted address - */ - this.getFormattedAddress = function( pCountry, pFormat ) - { - return _formatAddrData( _getAddrData( this.Data[0][0] ), pFormat, pCountry ); - } -} - -/* -* creates address data -* -* @param {String} pCondition req SQL-Where-Condition -* @param {Object []} pConfig req ( name, functionality, details ) -* @param {String} pSenderID opt UserRelationID -* @param {String} pAddressID opt addressid -* -* @return {[]} Daten -*/ -function getAddressesData( pCondition, pConfig, pSenderID, pAddressID ) -{ - var returndata = []; - var senderconfig = []; - var employeeconfig = []; - var config = []; - for (let i = 0; i < pConfig.length; i++) - { - switch (pConfig[i].target) - { - case Placeholder.targets.EMPLOYEE: - employeeconfig.push(pConfig[i]); - break; - case Placeholder.targets.SENDER: - senderconfig.push(pConfig[i]); - break; - case Placeholder.targets.RECIPIENT: - default: - config.push(pConfig[i]); - break; - } - } - var data = getAddressData(pCondition, config, pAddressID); - if (pSenderID == undefined) pSenderID = vars.get("$global.user").relationid; - if (senderconfig.length > 0) - var senderdata = getAddressData([pSenderID], senderconfig); - if (employeeconfig.length > 0) - var employeedata = getAddressData([EmployeeUtils.getCurrentContactId()], employeeconfig); - if (data.length > 0 && (senderconfig.length > 0 || employeeconfig.length > 0)) - { - var ze = data[0]; - if (employeeconfig.length > 0) ze = ze.concat(employeedata[0]); - if (senderconfig.length > 0) ze = ze.concat(senderdata[0]); - returndata.push(ze); - for (let i = 1; i < data.length; i++) - { - ze = data[i]; - if (employeeconfig.length > 0) ze = ze.concat(employeedata[1]); - if (senderconfig.length > 0) ze = ze.concat(senderdata[1]); - returndata.push(ze); - } - return returndata; - } - else return data; -} - -/* -* creates -* -* @param {String} pCondition req SQL-Where-Condition -* @param {Placeholder[]} pConfig req array of placeholders -* @param {String} AddressID opt addressid -* -* @return {[]} Daten -*/ -function getAddressData( pCondition, pConfig, AddressID ) -{ - return setAddressData( fetchAddressData( pCondition, pConfig, AddressID ) ); -} - -/* -* reads data from the database -* -* @param {String} pCondition req SQL-Where-Condition -* @param {Placeholder[]} pConfig req array of placeholders -* @param {String} AddressID opt addressid -* @param {boolean} pPerson opt if private person -* -* @return {Array} 2d-Array, structure: [[ data, output, header, addrfields ]] -*/ -function fetchAddressData( pCondition, pConfig, AddressID, pPerson ) -{ - if ( typeof(pCondition) == "object") pCondition = "CONTACT.CONTACTID in ('" + pCondition.join("','") + "')"; - if ( pConfig.length > 0 ) - { - var header = []; - var fields = []; - var output = []; - var pos = 0; - var posaddrfields = -1; - var functionCalls = []; - var addrfields = ["case when CONTACT.PERSON_ID is null then 1 else case when " + SqlMaskingUtils.prototype.trim("CONTACT.ORGANISATION_ID") + " = '0' then 2 else 3 end end", //0 - "ADDRESS.ADDRESS", "ADDRESS.BUILDINGNO", "ADDRESS.ZIP", "ADDRESS.CITY", "ADDRESS.COUNTRY", "ADDRESS.ADDRESSADDITION", // 1-6 - "ADDRESS.ADDRIDENTIFIER", "ADDRESS.DISTRICT", "ADDRESS.REGION", "ADDRESS.STATE", "CONTACT.DEPARTMENT", "CONTACT.CONTACTROLE", // 7-12 - "CONTACT.POSITION", "CONTACT.LETTERSALUTATION", "ORGANISATION.NAME", "PERSON.FIRSTNAME", "PERSON.MIDDLENAME", "PERSON.LASTNAME", // 13-18 - "PERSON.SALUTATION", "PERSON.TITLE", "PERSON.TITLESUFFIX", // 19-21 - "coalesce( CONTACT.LANGUAGE, (select C.LANGUAGE from CONTACT C where C.ORGANISATION_ID = CONTACT.ORGANISATION_ID and PERSON_ID is null))", // 22 - "''", "''", "''", "(select ADDR_FORMAT from AB_COUNTRYINFO where ISO2 = ADDRESS.COUNTRY)", "ADDRESS.ADDR_TYPE"]; // 23-27 - - for (let i=0; i < pConfig.length; i++ ) - { - switch( pConfig[i].type ) - { - case Placeholder.types.SQLPART: //sql part - fields.push( pConfig[i].valueDefinition ); //TODO: maybe do vars.resolveVariables - output.push([pos++, pConfig[i].type]); - header.push( pConfig[i].placeholderName ); - 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 ); - break; - case "afunction": // adito functions - try - { - 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 ); - } - catch( err ) - { - logging.log( err ) - } - break; - case "select": // Subselects - fields.push( "(" + vars.resolveVariables(pConfig[i].valueDefinition) + " )" ); - output.push([pos++, pConfig[i].type]); - header.push( pConfig[i].placeholderName ); - break; - case Placeholder.types.ADDRESSFORMAT: - if ( posaddrfields == -1 ) - { - var sortfields = ["ORGANISATION.NAME", "PERSON.LASTNAME"]; - fields.push( addrfields.join(", ") ); - posaddrfields = pos; - pos += addrfields.length; - } - output.push([posaddrfields, pConfig[i].type, pConfig[i].valueDefinition]); - header.push( pConfig[i].placeholderName ); - break; - case "resolveIDFunction": - var configJSON = pConfig[i].valueDefinition; - fields.push( configJSON.rowIDField ); - - functionCalls.push([pos, - configJSON.resolveFunction, - configJSON.imports, - configJSON.localVars]); - - output.push([pos++, pConfig[i].type]); - header.push( pConfig[i].placeholderName ); - break; - } - } - if (!pPerson) { - var sqlstr = "select " + fields.join(",") - + " from CONTACT join ORGANISATION on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID " - + " left join PERSON on CONTACT.PERSON_ID = PERSON.PERSONID " - + " left join ADDRESS on CONTACT.ADDRESS_ID = "; - } else { - - sqlstr = "select " + fields.join(",") - + " from CONTACT join PERSON on CONTACT.PERSON_ID = PERSON.PERSONID " - + " left join ORGANISATION on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID " - + " left join ADDRESS on CONTACT.ADDRESS_ID = "; - } - - if ( AddressID != undefined && AddressID != "" ) sqlstr += "'" + AddressID + "'"; - else sqlstr += "ADDRESS.ADDRESSID"; - if ( pCondition != "" ) sqlstr += " where " + pCondition; - var data = db.table(sqlstr + (sortfields != undefined ? " order by " + sortfields.join(", ") : "" )); - - // loop over all returned datasets - for(let j = 0; j < data.length; j++) - { - // loop over all possible resolveFunction entries - for(let k = 0; k < functionCalls.length; k++ ) - { - // get the local variables, which should be present in the function call - var localVars = functionCalls[k][3]; - // add the row id value to the localVars Object so the funtion can gather the data for this dataset - localVars.rowIDValue = data[j][ functionCalls[k][0] ]; - // replace the row id with its base64 string - data[j][ functionCalls[k][0] ] = evalScript("Address_lib.fetchAddressData.resolveFunction", - vars.resolveVariables( functionCalls[k][1]+"()" ), - localVars, - functionCalls[k][2], // imports - true); - } - } - - if ( data.length == 0 ) - { - logging.log("Address_lib: " + pCondition, logging.ERROR); - data = [[]]; - for (let i = 0; i < addrfields.length + fields.length; i++ ) data[0].push("Err."); - } - data = [ data, output, header, addrfields ]; - } - return data; -} - -/* -* reads data from the database -* -* @param {String [[]]} pData req array of data -* -* @return {String [[]]} data -*/ -function setAddressData( pData ) -{ - var sqlresult = pData[0]; - var data = []; - if ( sqlresult.length > 0 ) - { - var output = pData[1]; - var header = pData[2]; - var addrfields = pData[3]; - data.push( header ); - for ( var i = 0; i < sqlresult.length; i++ ) - { - var addrdata = []; - var row = []; - for ( var z = 0; z < header.length; z++ ) - { - switch( output[z][1] ) - { - case Placeholder.types.SQLPART: - case Placeholder.types.SQLPARTFUNCTION: - case "afunction": - case "resolveIDFunction": - case "select": - row[z] = sqlresult[i][output[z][0]]; - break; - case Placeholder.types.ADDRESSFORMAT: - if (addrdata.length == 0) addrdata = _getAddrData( sqlresult[i].slice(output[z][0], output[z][0] + addrfields.length) ); - row[z] = _formatAddrData( addrdata, output[z][2], false ); - break; - } - } - data.push( row ); - } - } - return data; -} -/* -* -* returns formatted address data -* -* @param {String [[]]} pData req data -* -* @return {String [[]]} formatted data -*/ -function _getAddrData( pData ) -{ - var lettersalutation = pData[14]; - var salutation = pData[19]; - var sformat = ""; - switch( Number(pData[0]) ) - { - case 1: - if ( lettersalutation == "" ) - { - sformat = _getSalutation( pData[22] ); - if ( sformat != undefined && sformat[1] != "" ) lettersalutation = _formatAddrData( pData, sformat[1] ); - else lettersalutation = "Sehr geehrte Damen und Herren"; - } - break; - case 2: - // private -> orgname deleted - pData[15] = ""; - case 3: - sformat = _getSalutation( pData[22] + pData[19] + pData[20] ); - //no language defined - if ( sformat == undefined ) sformat = _getSalutation( pData[19] + pData[20] ); - // no language specific entry in salutation - if ( sformat == undefined || sformat[0] == "" || sformat[1] == "" ) sformat = ["{sa} {ti} {fn} {la}", "{sa} {ti} {ln}"]; - salutation = _formatAddrData( pData, sformat[0] ); - // lettersalutation if none existent yet - if( lettersalutation == "" ) lettersalutation = _formatAddrData( pData, sformat[1] ); - } - - pData[23] = salutation; - pData[24] = lettersalutation; - pData[25] = _getCountryName(pData[5]); - return pData; -} - -/* -* returns a formatted salutation -* -* @param {String} pSalutCode req salutation code -* -* @return {String} translated salutation -*/ -function _getSalutation( pSalutCode ) -{ - var salut = new Object(); - if (vars.exists("$global.Salutation")) { - salut = vars.get("$global.Salutation"); - } - else - { - var list = db.table("select LANGUAGE, SALUTATION, TITLE, HEADLINE, LETTERSALUTATION from SALUTATION" ); - for ( var i = 0; i < list.length; i++ ) - { - salut[list[i][0] + list[i][1] + list[i][2]] = [list[i][3], list[i][4]]; - salut[list[i][1] + list[i][2]] = [list[i][3], list[i][4]]; - } - vars.set("$global.Salutation", salut); - } - return salut[pSalutCode]; -} - -/* -* returns country names -* -* @param {String} pCountryCode req countrycode -* -* @return {String} translated countryname -*/ -function _getCountryName(pCountryCode) -{ - var countryname = new Object(); - if ( vars.exists("$global.CountryName")) countryname = vars.get("$global.CountryName"); - else - { - var list = db.table("select ISO2, NAME_NATIVE from AB_COUNTRYINFO" ); - for (var i=0; i < list.length; i++ ) countryname[list[i][0]] = translate.text(list[i][1]); - vars.set("$global.CountryName", countryname); - } - return countryname[pCountryCode]; -} - -/* -* returns a formatted address -* -* @param {String [[]]} pAddrData req Address data -* @param {String} pFormat opt given format -* @param {boolean} pCountry if the country should be displayed -* -* @return {String} formatted address -*/ -function _formatAddrData( pAddrData, pFormat, pCountry ) -{ - var placeholerInfo = { - "street": {dataPosition: 1}, - "buildingno": {dataPosition: 2}, - "zip": {dataPosition: 3}, - "city": {dataPosition: 4}, - "district": {dataPosition: 8}, - "region": {dataPosition: 9}, - "state": {dataPosition: 10}, - "firstname": {dataPosition: 16}, - "middlename": {dataPosition: 17}, - "lastname": {dataPosition: 18}, - "saluation": {dataPosition: 19}, - "title": {dataPosition: 20}, - "suffix": {dataPosition: 21}, - "country": {dataPosition: 25}, - "organisation_name": {dataPosition: 15}, - "salutation_name": {dataPosition: 23}, - "letter_salutation": {dataPosition: 24} - }; - - var format = pFormat || pAddrData[26]; - format = _mapFormatPlaceholderTitles(format, pAddrData, pCountry); - - var res = format; - for (var placeholder in placeholerInfo) - { - var currentAddrData = pAddrData[placeholerInfo[placeholder].dataPosition]; - if (currentAddrData != undefined) - { - res = res.replace(new RegExp("{" + placeholder + "}", "g"), currentAddrData); - res = res.replace(new RegExp("{" + placeholder.toUpperCase() + "}", "g"), currentAddrData.toUpperCase()); - } - } - - res = res.replace(/^\n/, ""); // CR am Anfang entfernen; - res = res.replace(/ /g, " "); // doppelte leerzeichen entfernen - res = res.replace(/\\n/ig, "\n"); // newline marker ersetzen - res = res.replace(/ *\n */g, "\n");// leerzeichen am ende und Anfang entfernen - res = res.replace(/\s(?=\s)/g, ""); // leerzeilen rauswerfen - return res; -} - -/* -* returns the new format -* -* @param {String [[]]} pAddrData req Daten -* @param {String} pFormat req the format string -* @param {boolean} pCountry if the country should be displayed -* -* @return {String} new formate -* -N – Name - salutation -O – Organisation - orgname -A – Street Address Line(s) - address + buildingno -D – Dependent locality - district / region -C – City or Locality - city -S – Administrative area - state -Z – Zip or postal code - zip -X – Sorting code - not available -*/ -function _mapFormatPlaceholderTitles(pFormat, pAddrData, pCountry) -{ - //gstatic-paceholders - pFormat = pFormat.replace(new RegExp("%N", "g"), "{salutation_name}"); - pFormat = pFormat.replace(new RegExp("%A", "g"), "{street} {buildingno}"); - pFormat = pFormat.replace(new RegExp("%C", "g"), "{city}"); - pFormat = pFormat.replace(new RegExp("%S", "g"), "{state}"); - pFormat = pFormat.replace(new RegExp("%Z", "g"), "{zip}"); - pFormat = pFormat.replace(new RegExp("%O", "g"), "{organisation_name}"); - pFormat = pFormat.replace(new RegExp("%X", "g"), ""); - pFormat = pFormat.replace(new RegExp("%n", "g"), "\n"); - - //shortform adito-placeholders - pFormat = pFormat.replace(new RegExp("{fn}", "g"), "{firstname}"); - pFormat = pFormat.replace(new RegExp("{ln}", "g"), "{lastname}"); - pFormat = pFormat.replace(new RegExp("{ti}", "g"), "{title}"); - pFormat = pFormat.replace(new RegExp("{sa}", "g"), "{salutation}"); - - if (pAddrData[8] == pAddrData[9]) - pFormat = pFormat.replace(new RegExp("%D", "g"), "{district}"); - else - pFormat = pFormat.replace(new RegExp("%D", "g"), "{district} \n {region}"); - - if(pCountry == undefined || pCountry == null || pCountry == true) - pFormat = pFormat + "\n {country}"; - - return pFormat; +import("Employee_lib"); +import("system.swing"); +import("system.text"); +import("system.db"); +import("system.logging"); +import("system.vars"); +import("system.translate"); +import("Attribute_lib"); +import("Sql_lib"); +import("Util_lib"); +import("DocumentTemplate_lib"); + +/* +* Creates a Address Object +* +* @param {String} pContactId req relationid for which address should be retrieved +* @param {String} pAddressId opt addressid for which address should be retrieved +* @param {boolean} pPerson whether the address is from a person, not an organisation +* +* @return {String} the formatted address +*/ + +function AddrObject(pContactId, pPerson, pAddressId) +{ + this.Data = fetchAddressData([pContactId], [new Placeholder("", Placeholder.types.ADDRESSFORMAT, "")], pAddressId, pPerson); + this.fmt = this.Data[0][0][26]; + + /* + * creates a formatted address + * + * @param {boolean} pCountry whether the country should be displayed + * @param {String} pFormat a fixed format for the address + * + * @return {String} formatted address + */ + this.getFormattedAddress = function( pCountry, pFormat ) + { + return _formatAddrData( _getAddrData( this.Data[0][0] ), pFormat, pCountry ); + } +} + +/* +* creates address data +* +* @param {String} pCondition req SQL-Where-Condition +* @param {Object []} pConfig req ( name, functionality, details ) +* @param {String} pSenderID opt UserRelationID +* @param {String} pAddressID opt addressid +* +* @return {[]} Daten +*/ +function getAddressesData( pCondition, pConfig, pSenderID, pAddressID ) +{ + var returndata = []; + var senderconfig = []; + var employeeconfig = []; + var config = []; + for (let i = 0; i < pConfig.length; i++) + { + switch (pConfig[i].target) + { + case Placeholder.targets.EMPLOYEE: + employeeconfig.push(pConfig[i]); + break; + case Placeholder.targets.SENDER: + senderconfig.push(pConfig[i]); + break; + case Placeholder.targets.RECIPIENT: + default: + config.push(pConfig[i]); + break; + } + } + var data = getAddressData(pCondition, config, pAddressID); + if (pSenderID == undefined) pSenderID = vars.get("$global.user").relationid; + if (senderconfig.length > 0) + var senderdata = getAddressData([pSenderID], senderconfig); + if (employeeconfig.length > 0) + var employeedata = getAddressData([EmployeeUtils.getCurrentContactId()], employeeconfig); + if (data.length > 0 && (senderconfig.length > 0 || employeeconfig.length > 0)) + { + var ze = data[0]; + if (employeeconfig.length > 0) ze = ze.concat(employeedata[0]); + if (senderconfig.length > 0) ze = ze.concat(senderdata[0]); + returndata.push(ze); + for (let i = 1; i < data.length; i++) + { + ze = data[i]; + if (employeeconfig.length > 0) ze = ze.concat(employeedata[1]); + if (senderconfig.length > 0) ze = ze.concat(senderdata[1]); + returndata.push(ze); + } + return returndata; + } + else return data; +} + +/* +* creates +* +* @param {String} pCondition req SQL-Where-Condition +* @param {Placeholder[]} pConfig req array of placeholders +* @param {String} AddressID opt addressid +* +* @return {[]} Daten +*/ +function getAddressData( pCondition, pConfig, AddressID ) +{ + return setAddressData( fetchAddressData( pCondition, pConfig, AddressID ) ); +} + +/* +* reads data from the database +* +* @param {String} pCondition req SQL-Where-Condition +* @param {Placeholder[]} pConfig req array of placeholders +* @param {String} AddressID opt addressid +* @param {boolean} pPerson opt if private person +* +* @return {Array} 2d-Array, structure: [[ data, output, header, addrfields ]] +*/ +function fetchAddressData( pCondition, pConfig, AddressID, pPerson ) +{ + if ( typeof(pCondition) == "object") pCondition = "CONTACT.CONTACTID in ('" + pCondition.join("','") + "')"; + if ( pConfig.length > 0 ) + { + var header = []; + var fields = []; + var output = []; + var pos = 0; + var posaddrfields = -1; + var functionCalls = []; + var addrfields = [ + "case when CONTACT.PERSON_ID is null then 1 else case when " + SqlMaskingUtils.prototype.trim("CONTACT.ORGANISATION_ID") + " = '0' then 2 else 3 end end", //0 + "ADDRESS.ADDRESS", "ADDRESS.BUILDINGNO", "ADDRESS.ZIP", "ADDRESS.CITY", "ADDRESS.COUNTRY", "ADDRESS.ADDRESSADDITION", // 1-6 + "ADDRESS.ADDRIDENTIFIER", "ADDRESS.DISTRICT", "ADDRESS.REGION", "ADDRESS.STATE", "CONTACT.DEPARTMENT", "CONTACT.CONTACTROLE", // 7-12 + "CONTACT.POSITION", "CONTACT.LETTERSALUTATION", "ORGANISATION.NAME", "PERSON.FIRSTNAME", "PERSON.MIDDLENAME", "PERSON.LASTNAME", // 13-18 + "PERSON.SALUTATION", "PERSON.TITLE", "PERSON.TITLESUFFIX", // 19-21 + "coalesce( CONTACT.LANGUAGE, (select C.LANGUAGE from CONTACT C where C.ORGANISATION_ID = CONTACT.ORGANISATION_ID and PERSON_ID is null))", // 22 + "''", "''", "''", "(select ADDR_FORMAT from AB_COUNTRYINFO where ISO2 = ADDRESS.COUNTRY)", "ADDRESS.ADDR_TYPE" // 23-27 + ]; + + for (let i=0; i < pConfig.length; i++ ) + { + switch( pConfig[i].type ) + { + case Placeholder.types.SQLPART: //sql part + fields.push( pConfig[i].valueDefinition ); + output.push([pos++, pConfig[i].type]); + header.push( pConfig[i].placeholderName ); + 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 ); + break; + case Placeholder.types.ADDRESSFORMAT: + if ( posaddrfields == -1 ) + { + var sortfields = ["ORGANISATION.NAME", "PERSON.LASTNAME"]; + fields.push( addrfields.join(", ") ); + posaddrfields = pos; + pos += addrfields.length; + } + output.push([posaddrfields, pConfig[i].type, pConfig[i].valueDefinition]); + header.push( pConfig[i].placeholderName ); + break; + + case "afunction": // adito functions + try + { + 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 ); + } + catch( err ) + { + logging.log( err ) + } + break; + case "resolveIDFunction": + var configJSON = pConfig[i].valueDefinition; + fields.push( configJSON.rowIDField ); + + functionCalls.push([pos, + configJSON.resolveFunction, + configJSON.imports, + configJSON.localVars]); + + output.push([pos++, pConfig[i].type]); + header.push( pConfig[i].placeholderName ); + break; + } + } + if (!pPerson) { + var sqlstr = "select " + fields.join(",") + + " from CONTACT join ORGANISATION on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID " + + " left join PERSON on CONTACT.PERSON_ID = PERSON.PERSONID " + + " left join ADDRESS on CONTACT.ADDRESS_ID = "; + } else { + + sqlstr = "select " + fields.join(",") + + " from CONTACT join PERSON on CONTACT.PERSON_ID = PERSON.PERSONID " + + " left join ORGANISATION on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID " + + " left join ADDRESS on CONTACT.ADDRESS_ID = "; + } + + if ( AddressID != undefined && AddressID != "" ) + sqlstr += "'" + AddressID + "'"; + else + sqlstr += "ADDRESS.ADDRESSID"; + if ( pCondition != "" ) sqlstr += " where " + pCondition; + var data = db.table(sqlstr + (sortfields != undefined ? " order by " + sortfields.join(", ") : "" )); + + // loop over all returned datasets + for(let j = 0; j < data.length; j++) + { + // loop over all possible resolveFunction entries + for(let k = 0; k < functionCalls.length; k++ ) + { + // get the local variables, which should be present in the function call + var localVars = functionCalls[k][3]; + // add the row id value to the localVars Object so the funtion can gather the data for this dataset + localVars.rowIDValue = data[j][ functionCalls[k][0] ]; + // replace the row id with its base64 string + data[j][ functionCalls[k][0] ] = evalScript("Address_lib.fetchAddressData.resolveFunction", + vars.resolveVariables( functionCalls[k][1]+"()" ), + localVars, + functionCalls[k][2], // imports + true); + } + } + + if ( data.length == 0 ) + { + logging.log("Address_lib: " + pCondition, logging.ERROR); + data = [[]]; + for (let i = 0; i < addrfields.length + fields.length; i++ ) data[0].push("Err."); + } + data = [ data, output, header, addrfields ]; + } + return data; +} + +/* +* reads data from the database +* +* @param {String [[]]} pData req array of data +* +* @return {String [[]]} data +*/ +function setAddressData( pData ) +{ + var sqlresult = pData[0]; + var data = []; + if ( sqlresult.length > 0 ) + { + var output = pData[1]; + var header = pData[2]; + var addrfields = pData[3]; + data.push( header ); + for ( var i = 0; i < sqlresult.length; i++ ) + { + var addrdata = []; + var row = []; + for ( var z = 0; z < header.length; z++ ) + { + switch( output[z][1] ) + { + case Placeholder.types.SQLPART: + case Placeholder.types.SQLPARTFUNCTION: + case "afunction": + case "resolveIDFunction": + case "select": + row[z] = sqlresult[i][output[z][0]]; + break; + case Placeholder.types.ADDRESSFORMAT: + if (addrdata.length == 0) addrdata = _getAddrData( sqlresult[i].slice(output[z][0], output[z][0] + addrfields.length) ); + row[z] = _formatAddrData( addrdata, output[z][2], false ); + break; + } + } + data.push( row ); + } + } + return data; +} +/* +* +* returns formatted address data +* +* @param {String [[]]} pData req data +* +* @return {String [[]]} formatted data +*/ +function _getAddrData( pData ) +{ + var lettersalutation = pData[14]; + var salutation = pData[19]; + var sformat = ""; + switch( Number(pData[0]) ) + { + case 1: + if ( lettersalutation == "" ) + { + sformat = _getSalutation( pData[22] ); + if ( sformat != undefined && sformat[1] != "" ) lettersalutation = _formatAddrData( pData, sformat[1] ); + else lettersalutation = "Sehr geehrte Damen und Herren"; + } + break; + case 2: + // private -> orgname deleted + pData[15] = ""; + case 3: + sformat = _getSalutation( pData[22] + pData[19] + pData[20] ); + //no language defined + if ( sformat == undefined ) sformat = _getSalutation( pData[19] + pData[20] ); + // no language specific entry in salutation + if ( sformat == undefined || sformat[0] == "" || sformat[1] == "" ) sformat = ["{sa} {ti} {fn} {la}", "{sa} {ti} {ln}"]; + salutation = _formatAddrData( pData, sformat[0] ); + // lettersalutation if none existent yet + if( lettersalutation == "" ) lettersalutation = _formatAddrData( pData, sformat[1] ); + } + + pData[23] = salutation; + pData[24] = lettersalutation; + pData[25] = _getCountryName(pData[5]); + return pData; +} + +/* +* returns a formatted salutation +* +* @param {String} pSalutCode req salutation code +* +* @return {String} translated salutation +*/ +function _getSalutation( pSalutCode ) +{ + var salut = new Object(); + if (vars.exists("$global.Salutation")) { + salut = vars.get("$global.Salutation"); + } + else + { + var list = db.table("select LANGUAGE, SALUTATION, TITLE, HEADLINE, LETTERSALUTATION from SALUTATION" ); + for ( var i = 0; i < list.length; i++ ) + { + salut[list[i][0] + list[i][1] + list[i][2]] = [list[i][3], list[i][4]]; + salut[list[i][1] + list[i][2]] = [list[i][3], list[i][4]]; + } + vars.set("$global.Salutation", salut); + } + return salut[pSalutCode]; +} + +/* +* returns country names +* +* @param {String} pCountryCode req countrycode +* +* @return {String} translated countryname +*/ +function _getCountryName(pCountryCode) +{ + var countryname = new Object(); + if ( vars.exists("$global.CountryName")) countryname = vars.get("$global.CountryName"); + else + { + var list = db.table("select ISO2, NAME_NATIVE from AB_COUNTRYINFO" ); + for (var i=0; i < list.length; i++ ) countryname[list[i][0]] = translate.text(list[i][1]); + vars.set("$global.CountryName", countryname); + } + return countryname[pCountryCode]; +} + +/* +* returns a formatted address +* +* @param {String [[]]} pAddrData req Address data +* @param {String} pFormat opt given format +* @param {boolean} pCountry if the country should be displayed +* +* @return {String} formatted address +*/ +function _formatAddrData( pAddrData, pFormat, pCountry ) +{ + var placeholerInfo = { + "street": {dataPosition: 1}, + "buildingno": {dataPosition: 2}, + "zip": {dataPosition: 3}, + "city": {dataPosition: 4}, + "district": {dataPosition: 8}, + "region": {dataPosition: 9}, + "state": {dataPosition: 10}, + "firstname": {dataPosition: 16}, + "middlename": {dataPosition: 17}, + "lastname": {dataPosition: 18}, + "saluation": {dataPosition: 19}, + "title": {dataPosition: 20}, + "suffix": {dataPosition: 21}, + "country": {dataPosition: 25}, + "organisation_name": {dataPosition: 15}, + "salutation_name": {dataPosition: 23}, + "letter_salutation": {dataPosition: 24} + }; + + var format = pFormat || pAddrData[26]; + format = _mapFormatPlaceholderTitles(format, pAddrData, pCountry); + + var res = format; + for (var placeholder in placeholerInfo) + { + var currentAddrData = pAddrData[placeholerInfo[placeholder].dataPosition]; + if (currentAddrData != undefined) + { + res = res.replace(new RegExp("{" + placeholder + "}", "g"), currentAddrData); + res = res.replace(new RegExp("{" + placeholder.toUpperCase() + "}", "g"), currentAddrData.toUpperCase()); + } + } + + res = res.replace(/^\n/, ""); // CR am Anfang entfernen; + res = res.replace(/ /g, " "); // doppelte leerzeichen entfernen + res = res.replace(/\\n/ig, "\n"); // newline marker ersetzen + res = res.replace(/ *\n */g, "\n");// leerzeichen am ende und Anfang entfernen + res = res.replace(/\s(?=\s)/g, ""); // leerzeilen rauswerfen + return res; +} + +/* +* returns the new format +* +* @param {String [[]]} pAddrData req Daten +* @param {String} pFormat req the format string +* @param {boolean} pCountry if the country should be displayed +* +* @return {String} new formate +* +N – Name - salutation +O – Organisation - orgname +A – Street Address Line(s) - address + buildingno +D – Dependent locality - district / region +C – City or Locality - city +S – Administrative area - state +Z – Zip or postal code - zip +X – Sorting code - not available +*/ +function _mapFormatPlaceholderTitles(pFormat, pAddrData, pCountry) +{ + //gstatic-paceholders + pFormat = pFormat.replace(new RegExp("%N", "g"), "{salutation_name}"); + pFormat = pFormat.replace(new RegExp("%A", "g"), "{street} {buildingno}"); + pFormat = pFormat.replace(new RegExp("%C", "g"), "{city}"); + pFormat = pFormat.replace(new RegExp("%S", "g"), "{state}"); + pFormat = pFormat.replace(new RegExp("%Z", "g"), "{zip}"); + pFormat = pFormat.replace(new RegExp("%O", "g"), "{organisation_name}"); + pFormat = pFormat.replace(new RegExp("%X", "g"), ""); + pFormat = pFormat.replace(new RegExp("%n", "g"), "\n"); + + //shortform adito-placeholders + pFormat = pFormat.replace(new RegExp("{fn}", "g"), "{firstname}"); + pFormat = pFormat.replace(new RegExp("{ln}", "g"), "{lastname}"); + pFormat = pFormat.replace(new RegExp("{ti}", "g"), "{title}"); + pFormat = pFormat.replace(new RegExp("{sa}", "g"), "{salutation}"); + + if (pAddrData[8] == pAddrData[9]) + pFormat = pFormat.replace(new RegExp("%D", "g"), "{district}"); + else + pFormat = pFormat.replace(new RegExp("%D", "g"), "{district} \n {region}"); + + if(pCountry == undefined || pCountry == null || pCountry == true) + pFormat = pFormat + "\n {country}"; + + return pFormat; } \ No newline at end of file diff --git a/process/Attribute_lib/process.js b/process/Attribute_lib/process.js index 37898cbc0b23bd7a1e47df931088405add877d79..9e3e472a98b9587d8fa8bf06015cf002dbf820c8 100644 --- a/process/Attribute_lib/process.js +++ b/process/Attribute_lib/process.js @@ -1,3 +1,4 @@ +import("Context_lib"); import("system.util"); import("system.datetime"); import("system.translate"); @@ -188,6 +189,8 @@ AttributeUtil.hasRelations = function (pAttributeId) */ AttributeUtil.getAttributeType = function (pAttributeId) { + if (!pAttributeId) + return ""; var attrTypeSelect = "select ATTRIBUTE_TYPE from AB_ATTRIBUTE"; attrTypeSelect = SqlCondition.begin() .andPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", pAttributeId) @@ -225,7 +228,7 @@ AttributeRelationUtils.getAttribute = function (pAttributeId, pObjectRowId, pObj var defaultFields = [ "AB_ATTRIBUTE.ATTRIBUTE_TYPE", - "AB_ATTRIBUTE.KEYWORD_CONTAINER", + "AB_ATTRIBUTE.DROPDOWNDEFINITION", "COMBOVAL.ATTRIBUTE_NAME" ]; var valueFields = AttributeTypeUtil.getAllDatabaseFields(); @@ -266,7 +269,7 @@ AttributeRelationUtils.getAllAttributes = function (pObjectRowId, pObjectType, p var defaultFields = [ "AB_ATTRIBUTE_ID", "AB_ATTRIBUTE.ATTRIBUTE_TYPE", - "AB_ATTRIBUTE.KEYWORD_CONTAINER", + "AB_ATTRIBUTE.DROPDOWNDEFINITION", "COMBOVAL.ATTRIBUTE_NAME" ]; var valueFields = AttributeTypeUtil.getAllDatabaseFields(); @@ -307,7 +310,7 @@ AttributeRelationUtils.getAllAttributes = function (pObjectRowId, pObjectType, p */ AttributeRelationUtils.selectAttributeValue = function (pAttributeId, pValueMap, pGetViewValue) { - var sqlSelect = "select ATTRIBUTE_TYPE, KEYWORD_CONTAINER from AB_ATTRIBUTE"; + var sqlSelect = "select ATTRIBUTE_TYPE, DROPDOWNDEFINITION from AB_ATTRIBUTE"; var type = db.array(db.ROW, SqlCondition.begin() .andPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", pAttributeId) .buildSql(sqlSelect) @@ -444,7 +447,7 @@ AttributeRelationUtils.validateAttributeCount = function (pRowId, pObjectType, p return validationMessage.join("\n"); - //returns the correct count expression by chossing either singular (1 time) or plural (2 times) + //returns the correct count expression by choosing either singular (1 time) or plural (2 times) function _getTranslatedCount (pCount) { if (pCount == 1) @@ -526,25 +529,29 @@ AttributeRelationUtils.countAttributeRelations = function (pRowId, pObjectType, * This Object is only for the general definition of attribute types and for getting * data about every type, anything that has to do with a specific attribute (= the function requires an attribute id) * should be done in AttributeUtils. - * The values for each type are: + * The required values and methods for each type are: * - * keyword = the key of the corresponding keyword + * toString = function that should return a unique name * contentType = the value that is returned in the contentType process for the attribute * databaseField = the database field that holds values of attributes with the type * + * optional: + * getViewValue = function that gets the display value for a given value + * isGroup = if true, the attribute can have children + * getDropDownDefinitions = function that returns an array of possible values + * for DROPDOWNDEFINITION + * * The display name is controlled by the keyword 'AttributeType' */ function $AttributeTypes () {} $AttributeTypes.TEXT = { - toString : function () {return this.keyword}, - keyword : "TEXT", + toString : function () {return "TEXT";}, contentType : "TEXT", databaseField : "CHAR_VALUE" }; $AttributeTypes.DATE = { - toString : function () {return this.keyword}, - keyword : "DATE", + toString : function () {return "DATE";}, contentType : "DATE", databaseField : "DATE_VALUE", getViewValue : function (pValue) @@ -553,14 +560,12 @@ $AttributeTypes.DATE = { } }; $AttributeTypes.NUMBER = { - toString : function () {return this.keyword}, - keyword : "NUMBER", + toString : function () {return "NUMBER";}, contentType : "NUMBER", databaseField : "NUMBER_VALUE" }; $AttributeTypes.BOOLEAN = { - toString : function () {return this.keyword}, - keyword : "BOOLEAN", + toString : function () {return "BOOLEAN";}, contentType : "BOOLEAN", databaseField : "INT_VALUE", getViewValue : function (pValue) @@ -569,48 +574,63 @@ $AttributeTypes.BOOLEAN = { } }; $AttributeTypes.COMBO = { - toString : function () {return this.keyword}, - keyword : "COMBO", + toString : function () {return "COMBO";}, contentType : "UNKNOWN", databaseField : "ID_VALUE", isGroup : true }; $AttributeTypes.COMBOVALUE = { - toString : function () {return this.keyword}, - keyword : "COMBOVALUE", + toString : function () {return "COMBOVALUE";}, contentType : null, databaseField : null }; $AttributeTypes.GROUP = { - toString : function () {return this.keyword}, - keyword : "GROUP", + toString : function () {return "GROUP";}, contentType : null, databaseField : null, isGroup : true }; $AttributeTypes.KEYWORD = { - toString : function () {return this.keyword}, - keyword : "KEYWORD", + toString : function () {return "KEYWORD";}, contentType : "UNKNOWN", databaseField : "ID_VALUE", getViewValue : function (pValue, pKeyword) { return KeywordUtils.getViewValue(pKeyword, pValue); + }, + getDropDownDefinitions : function () + { + return KeywordUtils.getContainerNames().map(function (e) + { + return [e, e];//currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers + }); } }; $AttributeTypes.VOID = { - toString : function () {return this.keyword}, - keyword : "VOID", + toString : function () {return "VOID";}, contentType : null, databaseField : null, isGroup : true }; $AttributeTypes.MEMO = { - toString : function () {return this.keyword}, - keyword : "MEMO", + toString : function () {return "MEMO";}, contentType : "LONG_TEXT", databaseField : "CHAR_VALUE" }; +$AttributeTypes.OBJECTSELECTION = { + toString : function () {return "OBJECTSELECTION";}, + contentType : "UNKNOWN", + databaseField : "ID_VALUE", + getViewValue : function (pValue, pModule) + { + return db.cell(ContextUtils.getNameSql(pModule, pValue)); + }, + getDropDownDefinitions : function () + { + return ContextUtils.getContexts(true); + } +}; + function AttributeTypeUtil () {} @@ -705,8 +725,6 @@ AttributeTypeUtil.getTypeColumnIndex = function (pAttributeType) /** * Functions for AttributeUsages. * Do not instanciate this! - * - * @class */ function AttributeUsageUtil () {} diff --git a/process/Bulkmail_lib/Bulkmail_lib.aod b/process/Bulkmail_lib/Bulkmail_lib.aod new file mode 100644 index 0000000000000000000000000000000000000000..e02358029db1060e0396ba5d77f7b402cf4d7d27 --- /dev/null +++ b/process/Bulkmail_lib/Bulkmail_lib.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>Bulkmail_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/Bulkmail_lib/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/Bulkmail_lib/process.js b/process/Bulkmail_lib/process.js new file mode 100644 index 0000000000000000000000000000000000000000..27a4b8362f5d4c49ca9a2094eb1fab7919eddaa8 --- /dev/null +++ b/process/Bulkmail_lib/process.js @@ -0,0 +1,6 @@ +import("DocumentTemplate_lib"); + +function Bulkmail () +{ + +} \ No newline at end of file diff --git a/process/Contact_lib/process.js b/process/Contact_lib/process.js index 9db41fc6d453cbda9df6b68a85835c6f956c22ea..5cca68dfd2b81d5023746b9596a1ca2a1a78baa1 100644 --- a/process/Contact_lib/process.js +++ b/process/Contact_lib/process.js @@ -1,528 +1,550 @@ -import("system.translate"); -import("system.neon"); -import("system.vars"); -import("system.result"); -import("system.db"); -import("Sql_lib"); -import("Util_lib"); -import("Context_lib"); - -/** - * a static Utility class for organisations - * - * Do not create an instance of this! - * @class - */ -function OrganisationUtils() {} - -/* - * retrieves the name of an organisation with a select statement - * - * @param {String} pOrganisationId the ID of the organisation that shall be searched in the database; - * - * @return {String} the name of the organisation - */ -OrganisationUtils.getNameByOrganisationId = function(pOrganisationId) -{ - var orgname = ""; - if (pOrganisationId) - { - orgname = db.cell(SqlCondition.begin() - .andPrepare("ORGANISATION.ORGANISATIONID", pOrganisationId) - .buildSql("select ORGANISATION.NAME from ORGANISATION")); - } - return orgname; -}; - -/* - * retrieves the name of an organisation with a select statement - * - * @param {String} pContactId the ID of the corresponding org-contact of the organisation that shall be searched in the database; - * - * @return {String} the name of the organisation - */ -OrganisationUtils.getNameByContactId = function(pContactId) -{ - var orgname = ""; - if (pContactId) - { - orgname = db.cell(SqlCondition.begin() - .andPrepare("CONTACT.CONTACTID", pContactId) - .buildSql("select ORGANISATION.NAME \n\ - from ORGANISATION \n\ - join CONTACT on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID and CONTACT.PERSON_ID is null)")); - } - return orgname; -}; - -/** - * a static Utility class for contacts - * - * Do not create an instance of this! - * @class - */ -function ContactUtils() {} - -/* - * validates if a ORGANISATION_ID in a person-contact is correct [=>does not already exist] or not [=>does already exist] - * this is done by checking the database for entires that do already exist with this combination of ORGANISATIONID and PERSONID - * gives different messages for private persons and contacts that do already exist - * - * @param {String} pPersonId the ID of the person that shall be searched in the database - * @param {String} pOrganisationId the ID of the organisation that shall be searched in the database; - * if this is an empty string it will be treated as private-dummy-organisation - * @param {String} [pOwnContactId] the CONTACTID of your current record; this is only needed when in EDIT-mode since you don't want to get a message - * for your own CONTACT; - * (if you do a lookup if a organisation-person-combination does already exist you'l get your own contact which you want to exclude) - * - * @return {String} translated text that describes whats the problem or null if there was no problem and everything is fine - * - */ -ContactUtils.validateIfAlreadyExists = function(pPersonId, pOrganisationId, pOwnContactId) -{ - if (!pPersonId) - return null; - if (pOrganisationId == "") - pOrganisationId = "0"; - var cond = SqlCondition.begin() - .andPrepare("CONTACT.PERSON_ID", pPersonId) - .andPrepare("CONTACT.ORGANISATION_ID", pOrganisationId) - //exclude the own since we do not want a "is not valid"-message for our own entry (on EDIT-mode) - .andPrepareIfSet("CONTACT.CONTACTID", pOwnContactId, "# != ?"); - - var sql = cond.buildSql("select CONTACT.CONTACTID from CONTACT"); - var alreadyExistantContactId = db.cell(sql); - if (alreadyExistantContactId) - if (pOrganisationId.trim() == "0") - return translate.text("This private person doeas already exist and can not be created once more."); - else - return translate.text("This combination of person and organisation does already exist and can not be created once more."); - - return null; -}; - -/** - * Get the type of contact. <br> - * In recordstate NEW or EDIT it loads the person- / orgid from the db.<br> - * But in the other states it uses the values pPersId, pOrgId directly (for performance).<br> - * <br> - * It only checks if pPersId / pOrgId are not empty. <br> - * Based on which parameter is empty / not empty it return s the type of the contact. <br> - * <br> - * !!It does not check if the person / org ids really exist!! <br> - * !!And it does not check if really any contact with this person / org ids exist!! <br> - * <br> - * <br> - * It is meant to be used by entitys, where you can load person and org with the DataRecord. <br> - * This saves an extra select from CONTACT. <br> - * <br> - * <br> - * @param {String} pContactId - * @param {String} pPersId selected from the CONTACT table - * @param {String} pOrgId selected from the CONTACT table - * <br> - * @return {Integer} <br>0 if both ids are empty <br> - * 1 if organisation <br> - * 2 if privat person <br> - * 3 if person of an organisation <br> - */ -ContactUtils.getContactType = function(pContactId, pPersId, pOrgId) -{ - if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) - { - return ContactUtils.getContactTypeByContactId(pContactId); - } - else - { - return ContactUtils.getContactTypeByPersOrg(pPersId, pOrgId); - } -} - -/** - * get the type of contact for a relationId <br> - * If you already have persId and orgId from the CONTACT table, use getContactTypeByPersOrg() <br> - * @param {String} pContactId - * <br> - * @return {Integer} 0 if relationId not found <br> - * 1 if organisation <br> - * 2 if privat person <br> - * 3 if person of an organisation <br> - */ -ContactUtils.getContactTypeByContactId = function(pContactId) -{ - var relationData = ContactUtils.getPersOrgIds(pContactId); - if (relationData[0]) - { - return this.getContactTypeByPersOrg(relationData[1], relationData[2]); - } - else - { - return 0; - } -} - -/** - * Get the type of contact. <br> - * It only checks if the parameters are not empty. <br> - * Based on which parameter is empty / not empty it return s the type of the contact. <br> - * <br> - * !!It does not check if the person / org ids really exist!! <br> - * !!And it does not check if really any contact with this person / org ids exist!! <br> - * <br> - * This function is more performant than getContactTypeByContactId, <br> - * because it doesn't load something from the db. <br> - * <br> - * It is meant to be used by entitys, where you can load person and org with the DataRecord. <br> - * This saves an extra select from CONTACT. <br> - * <br> - * @param {String} pPersId selected from the CONTACT table - * @param {String} pOrgId selected from the CONTACT table - * <br> - * @return {Integer} <br>0 if both ids are empty <br> - * 1 if organisation <br> - * 2 if privat person <br> - * 3 if person of an organisation <br> - */ -ContactUtils.getContactTypeByPersOrg = function(pPersId, pOrgId) -{ - if (!pPersId) - { - if (!pOrgId) { - return 0; // both are empty - } - return 1; // Organisation da PERSON_ID leer - } - else - { - if (pOrgId.replace(/\s/g,"") == "0" ) - { - return 2; // Privatperson da PERSON_ID nicht leer und ORGANISATION_ID.trim() = '0' - } - else - { - return 3; // Person einer Organisation da PERSON_ID nicht leer und ORGANISATION_ID nicht '0' - } - } -} - -/** - * return the corresponding context of the contact - * - * It only checks if the parameters are not empty. <br> - * Based on which parameter is empty / not empty it return s the type of the contact. <br> - * <br> - * !!It does not check if the person / org ids really exist!! <br> - * !!And it does not check if really any contact with this person / org ids exist!! <br> - * <br> - * This function is more performant than getContextByContactId, <br> - * because it doesn't load something from the db. <br> - * <br> - * It is meant to be used by entitys, where you can load person and org with the DataRecord. <br> - * This saves an extra select from CONTACT. <br> - * <br> - * - * @param {String} pPersId selected from the CONTACT table - * @param {String} pOrgId selected from the CONTACT table - * - * @return {String} contextname or "" if both ids are empty - */ -ContactUtils.getContextByPersOrg = function(pPersId, pOrgId) -{ - switch (ContactUtils.getContactTypeByPersOrg(pPersId, pOrgId)) - { - case 1: // Org - return ContextUtils.getContextName("Organisation"); - case 2: // private Person - case 3: // Person - return ContextUtils.getContextName("Person"); - default: - return ""; - } -} - -/** - * return the corresponding context of the contact <br> - * If you already have persId and orgId from the CONTACT table, use getContextByPersOrg() <br> - * - * @param {String} pContactId - * @return {String} contextname or "" if contact not found - */ -ContactUtils.getContextByContactId = function(pContactId) -{ - var relationData = ContactUtils.getPersOrgIds(pContactId); - return ContactUtils.getContextByPersOrg(relationData[1], relationData[2]) -} - -/** - * get the person- and org-id from a contact as array - * - * @param {String} pContactId - * @return {String[]} result as [contactid, persid, orgid] if one of them is null in the db, "" will be returned as the id. - */ -ContactUtils.getPersOrgIds = function(pContactId) -{ - if (pContactId) { - return db.array(db.ROW, - SqlCondition.begin() - .andPrepare("CONTACT.CONTACTID", pContactId) - .buildSql("select CONTACTID, PERSON_ID, ORGANISATION_ID from CONTACT", "1=0")); - } - - return []; -} - -/** - * get the name of the person or organisation - * - * @param {String} pContactId the contact id where pers-name or orgname shall be loaded - * - * @return {String} the name or "" - */ -ContactUtils.getFullTitleByContactId = function(pContactId) -{ - if (pContactId) - { - var data = db.array(db.ROW, SqlCondition.begin() - .andPrepare("CONTACT.CONTACTID", pContactId) - .buildSql("select ORGANISATION.NAME, PERSON.SALUTATION, PERSON.TITLE, PERSON.FIRSTNAME, PERSON.MIDDLENAME, PERSON.LASTNAME " - + "from CONTACT CONTACT " - + "join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID " - + "left join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID", "1 = 2")); - if (data.length == 0) - return ""; - var contact = new Contact(); - [contact.organisationName, contact.salutation, contact.title, contact.firstname, contact.middlename, contact.lastname] = data; - var renderer = new ContactTitleRenderer(contact); - return renderer.asString(); - } - - return ""; -} - -/** - * get the name of the person - * do not use this for a mass of data (e.g. in a loop) since this will be slow due to select-time - * - * @param {String} pPersonId the id of the person where the data shall be loaded - * - * @return {String} the name or "" - */ -ContactUtils.getTitleByPersonId = function(pPersonId) -{ - if (pPersonId) - { - var data = db.array(db.ROW, SqlCondition.begin() - .andPrepare("PERSON.PERSONID", pPersonId) - .buildSql("select PERSON.SALUTATION, PERSON.TITLE, PERSON.FIRSTNAME, PERSON.MIDDLENAME, PERSON.LASTNAME " - + "from PERSON", "1 = 2")); - if (data.length == 0) - return ""; - var contact = new Contact(); - [contact.salutation, contact.title, contact.firstname, contact.middlename, contact.lastname] = data; - var renderer = new ContactTitleRenderer(contact); - return renderer.asString(); - } - - return ""; -} - -/** - * get the name of the person - * do not use this for a mass of data (e.g. in a loop) since this will be slow due to select-time - * - * @param {String} pContactId the id of the contact entry with the person where the data shall be loaded - * - * @return {String} the name or "" - */ -ContactUtils.getTitleByContactId = function(pContactId) -{ - if (pContactId) - { - var personId = db.cell(SqlCondition.begin() - .andPrepare("CONTACT.CONTACTID", pContactId) - .buildSql("select CONTACT.PERSON_ID from CONTACT ", "1 = 2")); - if (personId) - return ContactUtils.getTitleByPersonId(personId); - } - - return ""; -} - -/** - * returns the from string for the contact joined with org, person, address - * - * @return {String} - */ -ContactUtils.getFullContactString = function() -{ - return " CONTACT join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID" - + " left join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID" - + " left join ADDRESS on ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID"; -} - -/** - * get the addressid of the default address - * - * @return {String} the ID or "" if no default address exists - */ -ContactUtils.getDefaultAddressId = function(pContactId) -{ - return db.cell(SqlCondition.begin().andPrepare("CONTACT.CONTACTID", pContactId) - .buildSql("select ADDRESS_ID from CONTACT", "1=2")); -} - -/** - * object for handling of a single contact - * provides static- and instance-functions - * - * @class - * - */ -function Contact() -{ - //storage for information - this.salutation = ""; - this.title = ""; - this.firstname= ""; - this.middlename = ""; - this.lastname = ""; - this.suffix = ""; - - this.customercode = ""; - this.organisationName = ""; - - this._contactType = Contact.TYPES.Auto; -} - -/** - * sets the contactType of a contact - * reserved for future implementation - * - * @param {String} pContactType contactType that shall be set; value of Contact.TYPES. - * - * @return void - */ -Contact.prototype.setContactType = function (pContactType) -{ - if (! ObjectUtils.existsValue(Contact.TYPES, pContactType)) - throw new TypeError("the given contact type is not a valid value and not a contact type"); - - this._contactType = pContactType; -}; - -/** - * returns the contactType of a contact - * reserved for future implementation - * - * @return {String} the contactType is a value of Contact.TYPES. - */ -Contact.prototype.getContactType = function () -{ - return this._contactType; -}; - -/** - * constants for types of Contacts - * use only within functions - * reserved for future implementation - * - * @static - */ -Contact.TYPES = { - Organisation: "organisation", - Contact: "contact", - Private: "private", - Auto: null -}; - -/** - * creates a new Contact-object with a preset of DB-columns - * - * @static - */ -Contact.createWithColumnPreset = function() -{ - var contact = new Contact(); - contact.salutation = "PERSON.SALUTATION"; - contact.title = "PERSON.TITLE"; - contact.firstname= "PERSON.FIRSTNAME"; - contact.middlename = "PERSON.MIDDLENAME"; - contact.lastname = "PERSON.LASTNAME"; - contact.suffix = "PERSON.TITLESUFFIX"; - contact.customercode = "ORGANISATION.CUSTOMERCODE"; - contact.organisationName = "ORGANISATION.NAME"; - return contact; -}; - -/** - * object for rendering a Contact-object into text representation or an sql that represents the text - * provides static- and instance-functions - * - * @param {Contact} pContact The Contact-object to render - * @param {Number} pOptions additional options for rendering; use values of ContactTitleRenderer.OPTIONS and pass them by bitwise OR concatination; e.g.: - * OPTION_1 | OPTION_2 | OPTION_5 - * - * @class - * - */ -function ContactTitleRenderer(pContact, pOptions) -{ - this.contact = pContact; - if (pOptions !== undefined)//null means null which is "no option"; so check exactly for undefined to check if default option has to be set - this._options = pOptions; - else - this._options = ContactTitleRenderer.OPTIONS.IncludeOrganisation; - - //function that renders the contact into a sql expression (e.g. for a subselect) - this._asSqlFn = function(){ - var maskingUtil = new SqlMaskingUtils(); - var res = maskingUtil.concat([this.contact.salutation, this.contact.title, this.contact.firstname, this.contact.middlename, this.contact.lastname].filter(function (e){ - return e != ""; - }), " "); - if (this._options & ContactTitleRenderer.OPTIONS.IncludeOrganisation && this.contact.organisationName) - res = maskingUtil.concat([res, this.contact.organisationName], " | "); - return res; - }; - - //function that renders the contact into a text (e.g. for a displayValue) - this._asStringFn = function (){ - var res = StringUtils.concat(" ", [this.contact.salutation, this.contact.title, this.contact.firstname, this.contact.middlename, this.contact.lastname]); - - if (this._options & ContactTitleRenderer.OPTIONS.IncludeOrganisation && this.contact.organisationName) - res = StringUtils.concat(" | ", [res, this.contact.organisationName]); - return res; - } -} - -/** - * constants for options for the ContactTitleRenderer - * use only within functions - * - * @static - */ -ContactTitleRenderer.OPTIONS = { - NoOption: 0, - IncludeOrganisation: 1 -}; - -/** - * function that renders the contact into a sql expression (e.g. for a subselect) - * what this function exactly does depends on specified values and options specified in the Renderer-object - * - * @return {String} sql-expression that can be placed inside a select statement - */ -ContactTitleRenderer.prototype.asSql = function () -{ - return this._asSqlFn.apply(this, arguments); -}; - -/** - * function that renders the contact into text - * what this function exactly does depends on specified values and options specified in the Renderer-object - * - * @return {String} rendered values as text - */ -ContactTitleRenderer.prototype.asString = function () -{ - return this._asStringFn.apply(this, arguments); -}; +import("system.translate"); +import("system.neon"); +import("system.vars"); +import("system.result"); +import("system.db"); +import("Sql_lib"); +import("Util_lib"); +import("Context_lib"); + +/** + * a static Utility class for organisations + * + * Do not create an instance of this! + * @class + */ +function OrganisationUtils() {} + +/* + * retrieves the name of an organisation with a select statement + * + * @param {String} pOrganisationId the ID of the organisation that shall be searched in the database; + * + * @return {String} the name of the organisation + */ +OrganisationUtils.getNameByOrganisationId = function(pOrganisationId) +{ + var orgname = ""; + if (pOrganisationId) + { + orgname = db.cell(SqlCondition.begin() + .andPrepare("ORGANISATION.ORGANISATIONID", pOrganisationId) + .buildSql("select ORGANISATION.NAME from ORGANISATION")); + } + return orgname; +}; + +/* + * retrieves the name of an organisation with a select statement + * + * @param {String} pContactId the ID of the corresponding org-contact of the organisation that shall be searched in the database; + * + * @return {String} the name of the organisation + */ +OrganisationUtils.getNameByContactId = function(pContactId) +{ + var orgname = ""; + if (pContactId) + { + orgname = db.cell(SqlCondition.begin() + .andPrepare("CONTACT.CONTACTID", pContactId) + .buildSql("select ORGANISATION.NAME \n\ + from ORGANISATION \n\ + join CONTACT on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID and CONTACT.PERSON_ID is null)")); + } + return orgname; +}; + +/** + * a static Utility class for contacts + * + * Do not create an instance of this! + * @class + */ +function ContactUtils() {} + +/** + * creates an subSql for resolving a person/organisation-contact into one string of text (for example the name of a person) + * useful for example in an displayValue-expression to resolave a references (which is chosen by Lookups) + * does not validate if pRelationIdField exists or is a valid or harmful value + * + * @param {String} pContactIdField fieldname for the CONTACTID-condition as TABLEALIAS.COLUMNALIAS; e.g. TASK.EDITOR_CONTACT_ID + * @return {String} a subsql (without bracets) that can be played within an SQL + */ +ContactUtils.getResolvingDisplaySubSql = function(pContactIdField) +{ + var contact = Contact.createWithColumnPreset(); + var renderer = new ContactTitleRenderer(contact, ContactTitleRenderer.OPTIONS.IncludeOrganisation); + var selectExpression = renderer.asSql(); + + //TODO: verify if there is a better solution for the usage of this as a displayValueExpression --> automatic use of #TITLE | waiting vor implementation + return "select " + selectExpression + "from CONTACT \n\ + left join PERSON on (PERSON.PERSONID = CONTACT.PERSON_ID) \n\ + left join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID) \n\ + where CONTACT.CONTACTID = " + pContactIdField; +} + +/* + * validates if a ORGANISATION_ID in a person-contact is correct [=>does not already exist] or not [=>does already exist] + * this is done by checking the database for entires that do already exist with this combination of ORGANISATIONID and PERSONID + * gives different messages for private persons and contacts that do already exist + * + * @param {String} pPersonId the ID of the person that shall be searched in the database + * @param {String} pOrganisationId the ID of the organisation that shall be searched in the database; + * if this is an empty string it will be treated as private-dummy-organisation + * @param {String} [pOwnContactId] the CONTACTID of your current record; this is only needed when in EDIT-mode since you don't want to get a message + * for your own CONTACT; + * (if you do a lookup if a organisation-person-combination does already exist you'l get your own contact which you want to exclude) + * + * @return {String} translated text that describes whats the problem or null if there was no problem and everything is fine + * + */ +ContactUtils.validateIfAlreadyExists = function(pPersonId, pOrganisationId, pOwnContactId) +{ + if (!pPersonId) + return null; + if (pOrganisationId == "") + pOrganisationId = "0"; + var cond = SqlCondition.begin() + .andPrepare("CONTACT.PERSON_ID", pPersonId) + .andPrepare("CONTACT.ORGANISATION_ID", pOrganisationId) + //exclude the own since we do not want a "is not valid"-message for our own entry (on EDIT-mode) + .andPrepareIfSet("CONTACT.CONTACTID", pOwnContactId, "# != ?"); + + var sql = cond.buildSql("select CONTACT.CONTACTID from CONTACT"); + var alreadyExistantContactId = db.cell(sql); + if (alreadyExistantContactId) + if (pOrganisationId.trim() == "0") + return translate.text("This private person doeas already exist and can not be created once more."); + else + return translate.text("This combination of person and organisation does already exist and can not be created once more."); + + return null; +}; + +/** + * Get the type of contact. <br> + * In recordstate NEW or EDIT it loads the person- / orgid from the db.<br> + * But in the other states it uses the values pPersId, pOrgId directly (for performance).<br> + * <br> + * It only checks if pPersId / pOrgId are not empty. <br> + * Based on which parameter is empty / not empty it return s the type of the contact. <br> + * <br> + * !!It does not check if the person / org ids really exist!! <br> + * !!And it does not check if really any contact with this person / org ids exist!! <br> + * <br> + * <br> + * It is meant to be used by entitys, where you can load person and org with the DataRecord. <br> + * This saves an extra select from CONTACT. <br> + * <br> + * <br> + * @param {String} pContactId + * @param {String} pPersId selected from the CONTACT table + * @param {String} pOrgId selected from the CONTACT table + * <br> + * @return {Integer} <br>0 if both ids are empty <br> + * 1 if organisation <br> + * 2 if privat person <br> + * 3 if person of an organisation <br> + */ +ContactUtils.getContactType = function(pContactId, pPersId, pOrgId) +{ + if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) + { + return ContactUtils.getContactTypeByContactId(pContactId); + } + else + { + return ContactUtils.getContactTypeByPersOrg(pPersId, pOrgId); + } +} + +/** + * get the type of contact for a relationId <br> + * If you already have persId and orgId from the CONTACT table, use getContactTypeByPersOrg() <br> + * @param {String} pContactId + * <br> + * @return {Integer} 0 if relationId not found <br> + * 1 if organisation <br> + * 2 if privat person <br> + * 3 if person of an organisation <br> + */ +ContactUtils.getContactTypeByContactId = function(pContactId) +{ + var relationData = ContactUtils.getPersOrgIds(pContactId); + if (relationData[0]) + { + return this.getContactTypeByPersOrg(relationData[1], relationData[2]); + } + else + { + return 0; + } +} + +/** + * Get the type of contact. <br> + * It only checks if the parameters are not empty. <br> + * Based on which parameter is empty / not empty it return s the type of the contact. <br> + * <br> + * !!It does not check if the person / org ids really exist!! <br> + * !!And it does not check if really any contact with this person / org ids exist!! <br> + * <br> + * This function is more performant than getContactTypeByContactId, <br> + * because it doesn't load something from the db. <br> + * <br> + * It is meant to be used by entitys, where you can load person and org with the DataRecord. <br> + * This saves an extra select from CONTACT. <br> + * <br> + * @param {String} pPersId selected from the CONTACT table + * @param {String} pOrgId selected from the CONTACT table + * <br> + * @return {Integer} <br>0 if both ids are empty <br> + * 1 if organisation <br> + * 2 if privat person <br> + * 3 if person of an organisation <br> + */ +ContactUtils.getContactTypeByPersOrg = function(pPersId, pOrgId) +{ + if (!pPersId) + { + if (!pOrgId) { + return 0; // both are empty + } + return 1; // Organisation da PERSON_ID leer + } + else + { + if (pOrgId.replace(/\s/g,"") == "0" ) + { + return 2; // Privatperson da PERSON_ID nicht leer und ORGANISATION_ID.trim() = '0' + } + else + { + return 3; // Person einer Organisation da PERSON_ID nicht leer und ORGANISATION_ID nicht '0' + } + } +} + +/** + * return the corresponding context of the contact + * + * It only checks if the parameters are not empty. <br> + * Based on which parameter is empty / not empty it return s the type of the contact. <br> + * <br> + * !!It does not check if the person / org ids really exist!! <br> + * !!And it does not check if really any contact with this person / org ids exist!! <br> + * <br> + * This function is more performant than getContextByContactId, <br> + * because it doesn't load something from the db. <br> + * <br> + * It is meant to be used by entitys, where you can load person and org with the DataRecord. <br> + * This saves an extra select from CONTACT. <br> + * <br> + * + * @param {String} pPersId selected from the CONTACT table + * @param {String} pOrgId selected from the CONTACT table + * + * @return {String} contextname or "" if both ids are empty + */ +ContactUtils.getContextByPersOrg = function(pPersId, pOrgId) +{ + switch (ContactUtils.getContactTypeByPersOrg(pPersId, pOrgId)) + { + case 1: // Org + return ContextUtils.getContextName("Organisation"); + case 2: // private Person + case 3: // Person + return ContextUtils.getContextName("Person"); + default: + return ""; + } +} + +/** + * return the corresponding context of the contact <br> + * If you already have persId and orgId from the CONTACT table, use getContextByPersOrg() <br> + * + * @param {String} pContactId + * @return {String} contextname or "" if contact not found + */ +ContactUtils.getContextByContactId = function(pContactId) +{ + var relationData = ContactUtils.getPersOrgIds(pContactId); + return ContactUtils.getContextByPersOrg(relationData[1], relationData[2]) +} + +/** + * get the person- and org-id from a contact as array + * + * @param {String} pContactId + * @return {String[]} result as [contactid, persid, orgid] if one of them is null in the db, "" will be returned as the id. + */ +ContactUtils.getPersOrgIds = function(pContactId) +{ + if (pContactId) { + return db.array(db.ROW, + SqlCondition.begin() + .andPrepare("CONTACT.CONTACTID", pContactId) + .buildSql("select CONTACTID, PERSON_ID, ORGANISATION_ID from CONTACT", "1=0")); + } + + return []; +} + +/** + * get the name of the person or organisation + * + * @param {String} pContactId the contact id where pers-name or orgname shall be loaded + * + * @return {String} the name or "" + */ +ContactUtils.getFullTitleByContactId = function(pContactId) +{ + if (pContactId) + { + var data = db.array(db.ROW, SqlCondition.begin() + .andPrepare("CONTACT.CONTACTID", pContactId) + .buildSql("select ORGANISATION.NAME, PERSON.SALUTATION, PERSON.TITLE, PERSON.FIRSTNAME, PERSON.MIDDLENAME, PERSON.LASTNAME " + + "from CONTACT CONTACT " + + "join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID " + + "left join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID", "1 = 2")); + if (data.length == 0) + return ""; + var contact = new Contact(); + [contact.organisationName, contact.salutation, contact.title, contact.firstname, contact.middlename, contact.lastname] = data; + var renderer = new ContactTitleRenderer(contact); + return renderer.asString(); + } + + return ""; +} + +/** + * get the name of the person + * do not use this for a mass of data (e.g. in a loop) since this will be slow due to select-time + * + * @param {String} pPersonId the id of the person where the data shall be loaded + * + * @return {String} the name or "" + */ +ContactUtils.getTitleByPersonId = function(pPersonId) +{ + if (pPersonId) + { + var data = db.array(db.ROW, SqlCondition.begin() + .andPrepare("PERSON.PERSONID", pPersonId) + .buildSql("select PERSON.SALUTATION, PERSON.TITLE, PERSON.FIRSTNAME, PERSON.MIDDLENAME, PERSON.LASTNAME " + + "from PERSON", "1 = 2")); + if (data.length == 0) + return ""; + var contact = new Contact(); + [contact.salutation, contact.title, contact.firstname, contact.middlename, contact.lastname] = data; + var renderer = new ContactTitleRenderer(contact); + return renderer.asString(); + } + + return ""; +} + +/** + * get the name of the person + * do not use this for a mass of data (e.g. in a loop) since this will be slow due to select-time + * + * @param {String} pContactId the id of the contact entry with the person where the data shall be loaded + * + * @return {String} the name or "" + */ +ContactUtils.getTitleByContactId = function(pContactId) +{ + if (pContactId) + { + var personId = db.cell(SqlCondition.begin() + .andPrepare("CONTACT.CONTACTID", pContactId) + .buildSql("select CONTACT.PERSON_ID from CONTACT ", "1 = 2")); + if (personId) + return ContactUtils.getTitleByPersonId(personId); + } + + return ""; +} + +/** + * returns the from string for the contact joined with org, person, address + * + * @return {String} + */ +ContactUtils.getFullContactString = function() +{ + return " CONTACT \n\ + join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID \n\ + left join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID \n\ + left join ADDRESS on ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID"; +} + +/** + * get the addressid of the default address + * + * @return {String} the ID or "" if no default address exists + */ +ContactUtils.getDefaultAddressId = function(pContactId) +{ + return db.cell(SqlCondition.begin().andPrepare("CONTACT.CONTACTID", pContactId) + .buildSql("select ADDRESS_ID from CONTACT", "1=2")); +} + +/** + * object for handling of a single contact + * provides static- and instance-functions + * + * @class + * + */ +function Contact() +{ + //storage for information + this.salutation = ""; + this.title = ""; + this.firstname= ""; + this.middlename = ""; + this.lastname = ""; + this.suffix = ""; + + this.customercode = ""; + this.organisationName = ""; + + this._contactType = Contact.TYPES.Auto; +} + +/** + * sets the contactType of a contact + * reserved for future implementation + * + * @param {String} pContactType contactType that shall be set; value of Contact.TYPES. + * + * @return void + */ +Contact.prototype.setContactType = function (pContactType) +{ + if (! ObjectUtils.existsValue(Contact.TYPES, pContactType)) + throw new TypeError("the given contact type is not a valid value and not a contact type"); + + this._contactType = pContactType; +}; + +/** + * returns the contactType of a contact + * reserved for future implementation + * + * @return {String} the contactType is a value of Contact.TYPES. + */ +Contact.prototype.getContactType = function () +{ + return this._contactType; +}; + +/** + * constants for types of Contacts + * use only within functions + * reserved for future implementation + * + * @static + */ +Contact.TYPES = { + Organisation: "organisation", + Contact: "contact", + Private: "private", + Auto: null +}; + +/** + * creates a new Contact-object with a preset of DB-columns + * + * @static + */ +Contact.createWithColumnPreset = function() +{ + var contact = new Contact(); + contact.salutation = "PERSON.SALUTATION"; + contact.title = "PERSON.TITLE"; + contact.firstname= "PERSON.FIRSTNAME"; + contact.middlename = "PERSON.MIDDLENAME"; + contact.lastname = "PERSON.LASTNAME"; + contact.suffix = "PERSON.TITLESUFFIX"; + contact.customercode = "ORGANISATION.CUSTOMERCODE"; + contact.organisationName = "ORGANISATION.NAME"; + return contact; +}; + +/** + * object for rendering a Contact-object into text representation or an sql that represents the text + * provides static- and instance-functions + * + * @param {Contact} pContact The Contact-object to render + * @param {Number} pOptions additional options for rendering; use values of ContactTitleRenderer.OPTIONS and pass them by bitwise OR concatination; e.g.: + * OPTION_1 | OPTION_2 | OPTION_5 + * + * @class + * + */ +function ContactTitleRenderer(pContact, pOptions) +{ + this.contact = pContact; + if (pOptions !== undefined)//null means null which is "no option"; so check exactly for undefined to check if default option has to be set + this._options = pOptions; + else + this._options = ContactTitleRenderer.OPTIONS.IncludeOrganisation; + + //function that renders the contact into a sql expression (e.g. for a subselect) + this._asSqlFn = function(){ + var maskingUtil = new SqlMaskingUtils(); + var res = maskingUtil.concat([this.contact.salutation, this.contact.title, this.contact.firstname, this.contact.middlename, this.contact.lastname].filter(function (e){ + return e != ""; + }), " "); + if (this._options & ContactTitleRenderer.OPTIONS.IncludeOrganisation && this.contact.organisationName) + res = maskingUtil.concat([res, this.contact.organisationName], " | "); + return res; + }; + + //function that renders the contact into a text (e.g. for a displayValue) + this._asStringFn = function (){ + var res = StringUtils.concat(" ", [this.contact.salutation, this.contact.title, this.contact.firstname, this.contact.middlename, this.contact.lastname]); + + if (this._options & ContactTitleRenderer.OPTIONS.IncludeOrganisation && this.contact.organisationName) + res = StringUtils.concat(" | ", [res, this.contact.organisationName]); + return res; + } +} + +/** + * constants for options for the ContactTitleRenderer + * use only within functions + * + * @static + */ +ContactTitleRenderer.OPTIONS = { + NoOption: 0, + IncludeOrganisation: 1 +}; + +/** + * function that renders the contact into a sql expression (e.g. for a subselect) + * what this function exactly does depends on specified values and options specified in the Renderer-object + * + * @return {String} sql-expression that can be placed inside a select statement + */ +ContactTitleRenderer.prototype.asSql = function () +{ + return this._asSqlFn.apply(this, arguments); +}; + +/** + * function that renders the contact into text + * what this function exactly does depends on specified values and options specified in the Renderer-object + * + * @return {String} rendered values as text + */ +ContactTitleRenderer.prototype.asString = function () +{ + return this._asStringFn.apply(this, arguments); +}; diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index 71beab7d3b5c0e3692d1ff54f82f631f32b1d35f..0acbe8b80929ad5a9198fce2f706d7d5737c7ede 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -334,7 +334,8 @@ ContextUtils.getSelectMap = function() { var maskingUtils = new SqlMaskingUtils(); return { - "Organisation": ContextSelector.create("ORGANISATION", "ORGANISATIONID", "NAME") + "Organisation": ContextSelector.create("ORGANISATION", "CONTACT.CONTACTID", "ORGANISATION.NAME") + .setJoinExpression("join CONTACT on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null") .setCondition(SqlCondition.begin().and("ORGANISATION.ORGANISATIONID != '0'")) ,"Person": ContextSelector.create("CONTACT", "CONTACTID") .setTitleExpression(maskingUtils.concat([ diff --git a/process/CountryInfo_lib/process.js b/process/CountryInfo_lib/process.js index 67f674c97d8e655ddf53b3ecdf639d6a2dbf4892..1bd84270bc4173346b5a54a4721ddc54bcb81b37 100644 --- a/process/CountryInfo_lib/process.js +++ b/process/CountryInfo_lib/process.js @@ -22,6 +22,8 @@ function CountryUtils() {} */ CountryUtils.getLatinNameByIso2 = function(pIso2, pLocale) { + if (!pIso2) + return ""; var countryName = db.cell(SqlCondition.begin() .andPrepare("AB_COUNTRYINFO.ISO2", pIso2) .buildSql("select AB_COUNTRYINFO.NAME_LATIN from AB_COUNTRYINFO")); diff --git a/process/DocumentTemplate_lib/process.js b/process/DocumentTemplate_lib/process.js index 933f91713b0e1ce503a0ab9be97095a9ec88447d..2cbeffcce9962843b8873fbbab9a2db3a4efd75d 100644 --- a/process/DocumentTemplate_lib/process.js +++ b/process/DocumentTemplate_lib/process.js @@ -1,3 +1,4 @@ +import("system.logging"); import("Communication_lib"); import("system.neon"); import("Employee_lib"); @@ -22,6 +23,8 @@ import("Placeholder_lib"); /** * Object for working with document templates, holds the content and type of the template. * Provides functions to replace placeholders in the content. + * + * @class */ function DocumentTemplate (pTemplateContent, pType, pFilename) { @@ -30,9 +33,16 @@ function DocumentTemplate (pTemplateContent, pType, pFilename) this.filename = pFilename; } +DocumentTemplate.prototype.toString = function () +{ + return text.parseDocument(this.content); +} + /** * The types a DocumentTemplate can have. Depending on the type, * the correct method for replacing the placeholders can be chosen + * + * @enum {String} */ DocumentTemplate.types = { TXT : "txt", @@ -77,6 +87,8 @@ DocumentTemplate.loadTemplate = function (pTemplateId) /** * Replace function that works with strings instead of regular expressions * so that control characters (for example '{', '}') don't have to be escaped. + * + * @private */ DocumentTemplate._replaceText = function (pText, pReplacements) { @@ -85,24 +97,20 @@ DocumentTemplate._replaceText = function (pText, pReplacements) return pText; } -DocumentTemplate.prototype.toString = function () -{ - return this.getReplacedContent({}); -} - /** - * returns the simpleName of all placeholders that are used in the template + * returns the 'simpleName' of all placeholders that are used in the template + * + * @private */ -DocumentTemplate.prototype.getRequiredPlaceholders = function () +DocumentTemplate.prototype._getRequiredPlaceholders = function () { - if (this.type == DocumentTemplate.types.ODT || this.type == DocumentTemplate.types.DOCX) - return []; var allPlaceholders = PlaceholderUtils.getPlaceholders(); + var plainText = this.toString(); var usedPlaceholders = []; for (let i = 0, l = allPlaceholders.length; i < l; i++) { - if (this.toString().indexOf(allPlaceholders[i]) !== -1) - usedPlaceholders.push(allPlaceholders[i].simpleName); + if (plainText.indexOf(allPlaceholders[i]) !== -1) + usedPlaceholders.push(allPlaceholders[i]); } return usedPlaceholders; } @@ -136,15 +144,21 @@ DocumentTemplate.prototype.getReplacedContent = function (pReplacements) } } -DocumentTemplate.prototype.getReplacedContentByContactId = function (pContactId) +/** + * replaces the placeholders with data from the contact and returns the result + */ +DocumentTemplate.prototype.getReplacedContentByContactId = function (pContactId) //TODO: function required for mass replacing (for bulkmails) { - var replacements = DocumentTemplate._getReplacementsByContactId(pContactId); + var replacements = this._getReplacementsByContactId(pContactId); return this.getReplacedContent(replacements); } -DocumentTemplate._getReplacementsByContactId = function (pContactId) +/** + * @private + */ +DocumentTemplate.prototype._getReplacementsByContactId = function (pContactId) { - var config = PlaceholderUtils.getPlaceholders(); + var config = this._getRequiredPlaceholders(); var addressData = getAddressesData([pContactId], config, EmployeeUtils.getCurrentContactId()); //TODO: add sender selection var replacements = {}; for (let i = 0, l = addressData[0].length; i < l; i++) @@ -186,6 +200,8 @@ DocumentTemplate.prototype.setEmailTemplateByContactId = function (pEmail, pCont * @param {Object} pReplacements mapping with replacements for every placeholder * * @return {String} the replaced content + * + * @private */ DocumentTemplate.prototype._getReplacedEML = function (pReplacements) { @@ -197,10 +213,11 @@ DocumentTemplate.prototype._getReplacedEML = function (pReplacements) /* * replaces a given Odt-File on the server and returns the replaced base64-file * - * @param {String|String[]} pAddrDataCondition req a SQL-Condition or an Array of Relation-Ids for reducing the default-placeholders - * @param {String} pAddressID opt if you want to use the standard address you can pass undefined, otherwise you need to specify a Address-Id + * @param {Object} pReplacements map of placeholders and replacements * * @return {String} base64-encoded replaced file + * + * @private */ DocumentTemplate.prototype._getReplacedODT = function (pReplacements) { @@ -217,13 +234,12 @@ DocumentTemplate.prototype._getReplacedODT = function (pReplacements) return replacedFileData; - /* - * ersetzt die Platzhalter in ODT-Datei - * - * @param {String} pCondition req Condition - * @param {String} pODTFileName req Filename des odt-Datei - * @param {String} pAddressID opt ID von der die Adressdaten geholt werden + /** + * replaces placeholders in a odt file * + * @param {Object} pReplacements replacement object + * @param {String} pODTFileName filename of the odt + * * @return {Boolean} */ function _replaceODTFile (pReplacements, pODTFileName) @@ -233,23 +249,29 @@ DocumentTemplate.prototype._getReplacedODT = function (pReplacements) return false; if (Object.keys(pReplacements).length) { - // ersetzen Platzhalter in content.xml - - var textS = util.decodeBase64String(pack.getFromZip(pODTFileName, "content.xml")); - var bodybegin = textS.indexOf("<office:body>"); - var bodyend = textS.indexOf("</office:body>") + 14; - var body = textS.substring( bodybegin, bodyend ); - var lastbody = textS.substr( bodyend ); - textS = textS.substring( 0, bodybegin ); + //replace placeholders in content.xml + var contentXml = util.decodeBase64String(pack.getFromZip(pODTFileName, "content.xml")); + var bodybegin = contentXml.indexOf("<office:body>"); + var bodyend = contentXml.indexOf("</office:body>") + 14; + + var body = contentXml.substring(bodybegin, bodyend); + var beforeBody = contentXml.substring(0, bodybegin); + var afterBody = contentXml.substr(bodyend); + + /* This only works if the text of the placeholders in the odt were not edited since they were written. + * If you edit the odt and change a placeholder (for example: you change '{@addres@}' to '{@address@}'), + * the text is saved in different XML tags and won't be replaced correctly. + */ + for (let placeholder in pReplacements) { body = body.replace(placeholder, pReplacements[placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&"), "ig"); } - textS += body; - textS += lastbody; - pack.addToZip(pODTFileName, "content.xml", util.encodeBase64String(textS)) - // ersetzen Platzhalter in styles.xml + contentXml = beforeBody + body + afterBody; + pack.addToZip(pODTFileName, "content.xml", util.encodeBase64String(contentXml)); + + //replace placeholders in styles.xml var styles = util.decodeBase64String(pack.getFromZip(pODTFileName, "styles.xml")); for (let placeholder in pReplacements) { @@ -269,6 +291,8 @@ DocumentTemplate.prototype._getReplacedODT = function (pReplacements) * @param {Object} pReplacements - Must contain an object, which holds the placeholders * * @return {String} returns the modified document in a BASE64 coded string + * + * @private */ DocumentTemplate.prototype._getReplacedDOCX = function (pReplacements) { diff --git a/process/JditoFilter_lib/process.js b/process/JditoFilter_lib/process.js index be2203fcd517d83bc53d8c9289fb2c03deb9a2bf..75d84b59c61ce1cbdf111641aa19ba4da5863c17 100644 --- a/process/JditoFilter_lib/process.js +++ b/process/JditoFilter_lib/process.js @@ -1,230 +1,234 @@ -import("Sql_lib"); - -/** - * object for filtering records - * - * @param {Array} pColumns the column names - * @param {Object} pFilter the filter object - */ -function JditoFilterHelper (pColumns, pFilter) -{ - var columnMap = {}; - for (let i = 0, l = pColumns.length; i < l; i++) - { - if (pColumns[i]) - columnMap[pColumns[i]] = i; - } - this._columnMap = columnMap; - this._filter = pFilter; -} - -/** - * tests the given row if it matches the filter - * - * @param {Array} pRow one record - * - * @return {boolean} true, if it matches the condition - */ -JditoFilterHelper.prototype.checkRecord = function (pRow) -{ - if (this._filter.length == 0) - return true; - - return _testRecord.call(this, this._filter); - - function _testRecord (pCondition) - { - if (pCondition.type == "row") - { - let value = pRow[this._columnMap[pCondition.name]]; - return _testValue(value, (pCondition.key || pCondition.value), pCondition.operator); - } - else if (pCondition.type == "group") - { - if (pCondition.operator == "AND") - return pCondition.childs.every(_testRecord, this); - return pCondition.childs.some(_testRecord, this); - } - return true; - } - - /** - * compares two values with the given operator - */ - function _testValue (pRowValue, pFilterValue, pOperator) - { - switch (pOperator) - { - case "CONTAINS": - return (new RegExp(pFilterValue)).test(pRowValue); - case "CONTAINSNOT": - return !(new RegExp(pFilterValue)).test(pRowValue); - case "STARTSWITH": - return (new RegExp("^" + pFilterValue)).test(pRowValue); - case "ENDSWITH": - return (new RegExp(pFilterValue + "$")).test(pRowValue); - case "EQUAL": - return (new RegExp("^" + pFilterValue + "$")).test(pRowValue); - case "NOT_EQUAL": - return !(new RegExp("^" + pFilterValue + "$")).test(pRowValue); - case "LESS": - return pRowValue < pFilterValue; - case "LESS_OR_EQUAL": - return pRowValue <= pFilterValue; - case "GREATER": - return pRowValue > pFilterValue; - case "GREATER_OR_EQUAL": - return pRowValue >= pFilterValue; - case "ISNULL": - return pRowValue == ""; - case "ISNOTNULL": - return pRowValue != ""; - } - } -} - - - -/** - * Provides functions for using the filter with jdito recordcontainers - * - * Do not instanciate this! - * - * @class - */ -function JditoFilterUtils () {} - -/** - * Filters the given records manually. If you get the records using a sql query, you might consider using - * JditoFilterUtils.getSqlCondition instead for better performance. - * - * @param {Array} pColumns one dimensional array with all column names (only the columns with the idValue, displayValue columns should be null or ""), - * the order has to match the columns of the recordFields property in the recordcontainer - * @param {Array} pRecords two dimensional array with all records - * @param {String|Object} pFilter the value of vars.get($local.filter).filter - * - * @return {Array} the filtered records - */ -JditoFilterUtils.filterRecords = function (pColumns, pRecords, pFilter) -{ - if (!pFilter) - return pRecords; - - var filter = new JditoFilterHelper(pColumns, pFilter); - - return pRecords.filter(function (row) - { - return this.checkRecord(row); - }, filter); -} - -/** - * builds an sql condition from the given filter - * - * @param {Object} pFilter the filter object - * @param {String} pTable the database table - * @param {String} [pTableAlias=null] the database table alias - * @param {Object} [pColumnMap=null] Custom mapping for the fields to the DB columns, this is necessary - * if the fields are from different tables. Structure has to be like this: - * { - * FIELD1 : "TABLE1.COLUMN1", - * FIELD2 : ["TABLE2", "COLUMN2", "TABLE2ALIAS"] //do it like this if the table has an alias - * } - * - * @example - * var condition = SqlCondition.begin(); - * if (vars.exists("$local.filter") && vars.get("$local.filter")) - * { - * var filter = vars.get("$local.filter"); - * if (filter.filter) - * condition.andSqlCondition((JditoFilterUtils.getSqlCondition(filter.filter, "AB_ATTRIBUTE"))); - * } - * var attributeSql = condition.buildSql("select AB_ATTRIBUTEID from AB_ATTRIBUTE"); - * - * @return {SqlCondition} the SqlCondition object - */ -JditoFilterUtils.getSqlCondition = function (pFilter, pTable, pTableAlias, pColumnMap) -{ - var condition = new SqlCondition(); - - if (!pFilter) - return condition; - if (!pColumnMap) - pColumnMap = {}; - - _addCondition.call(condition, pFilter, pFilter.operator); - - return condition; - - //recursive function (for compatibility with a condition tree) that - //builds the SqlCondition - function _addCondition (pCondition, pOperator) - { - if (pCondition.type == "row") - { - if (pCondition.name in pColumnMap) - pCondition.name = pColumnMap[pCondition.name]; - else if (pTable && pTableAlias) - pCondition.name = [pTable, pCondition.name, pTableAlias]; - else if (pTable) - pCondition.name = pTable + "." + pCondition.name; - - pCondition.value = (pCondition.key || pCondition.value); - var condition = _getCondition.call(pCondition); - if (pOperator == "AND") - this.andPrepare(pCondition.name, pCondition.value, condition); - else if (pOperator == "OR") - this.orPrepare(pCondition.name, pCondition.value, condition); - } - else if (pCondition.type == "group") - { - let subCondition = new SqlCondition(); - let operator = pCondition.operator; - pCondition.childs.forEach(function (cond) - { - _addCondition.call(subCondition, cond, operator); - }); - if (pOperator == "AND") - this.andSqlCondition(subCondition); - else if (pOperator == "OR") - this.orSqlCondition(subCondition); - } - } - - //returns the condition depending on the operator and - //adds wildcards to the value if necessary - function _getCondition () - { - switch (this.operator) - { - case "CONTAINS": - this.value = "%" + this.value + "%"; - return "# like ?"; - case "CONTAINSNOT": - this.value = "%" + this.value + "%"; - return "# not like ?"; - case "STARTSWITH": - this.value = this.value + "%"; - return "# like ?"; - case "ENDSWITH": - this.value = "%" + this.value; - return "# like ?"; - case "EQUAL": - return "# = ?"; - case "NOT_EQUAL": - return "# != ?"; - case "LESS": - return "# < ?"; - case "LESS_OR_EQUAL": - return "# <= ?"; - case "GREATER": - return "# > ?"; - case "GREATER_OR_EQUAL": - return "# >= ?"; - case "ISNULL": - return "# is null"; - case "ISNOTNULL": - return "# is not null"; - } - } +import("system.logging"); +import("Sql_lib"); + +/** + * object for filtering records + * + * @param {Array} pColumns the column names + * @param {Object} pFilter the filter object + */ +function JditoFilterHelper (pColumns, pFilter) +{ + var columnMap = {}; + for (let i = 0, l = pColumns.length; i < l; i++) + { + if (pColumns[i]) + columnMap[pColumns[i]] = i; + } + this._columnMap = columnMap; + this._filter = pFilter; +} + +/** + * tests the given row if it matches the filter + * + * @param {Array} pRow one record + * + * @return {boolean} true, if it matches the condition + */ +JditoFilterHelper.prototype.checkRecord = function (pRow) +{ + if (this._filter.length == 0) + return true; + + return _testRecord.call(this, this._filter); + + /** + * recursive function to test the row against the condition + */ + function _testRecord (pCondition) + { + if (pCondition.type == "row") + { + let value = pRow[this._columnMap[pCondition.name]]; + return _testValue(value, (pCondition.key || pCondition.value), pCondition.operator); + } + else if (pCondition.type == "group") + { + if (pCondition.operator == "AND") + return pCondition.childs.every(_testRecord, this); + return pCondition.childs.some(_testRecord, this); + } + return true; + } + + /** + * compares two values with the given operator + */ + function _testValue (pRowValue, pFilterValue, pOperator) + { + switch (pOperator) + { + case "CONTAINS": + return (new RegExp(pFilterValue)).test(pRowValue); + case "CONTAINSNOT": + return !(new RegExp(pFilterValue)).test(pRowValue); + case "STARTSWITH": + return (new RegExp("^" + pFilterValue)).test(pRowValue); + case "ENDSWITH": + return (new RegExp(pFilterValue + "$")).test(pRowValue); + case "EQUAL": + return (new RegExp("^" + pFilterValue + "$")).test(pRowValue); + case "NOT_EQUAL": + return !(new RegExp("^" + pFilterValue + "$")).test(pRowValue); + case "LESS": + return pRowValue < pFilterValue; + case "LESS_OR_EQUAL": + return pRowValue <= pFilterValue; + case "GREATER": + return pRowValue > pFilterValue; + case "GREATER_OR_EQUAL": + return pRowValue >= pFilterValue; + case "ISNULL": + return pRowValue == ""; + case "ISNOTNULL": + return pRowValue != ""; + } + } +} + + + +/** + * Provides functions for using the filter with jdito recordcontainers + * + * Do not instanciate this! + * + * @class + */ +function JditoFilterUtils () {} + +/** + * Filters the given records manually. If you get the records using a sql query, you might consider using + * JditoFilterUtils.getSqlCondition instead for better performance. + * + * @param {Array} pColumns one dimensional array with all column names (only the columns with the idValue, displayValue columns should be null or ""), + * the order has to match the columns of the recordFields property in the recordcontainer + * @param {Array} pRecords two dimensional array with all records + * @param {String|Object} pFilter the value of vars.get($local.filter).filter + * + * @return {Array} the filtered records + */ +JditoFilterUtils.filterRecords = function (pColumns, pRecords, pFilter) +{ + if (!pFilter) + return pRecords; + + var filter = new JditoFilterHelper(pColumns, pFilter); + + return pRecords.filter(function (row) + { + return this.checkRecord(row); + }, filter); +} + +/** + * builds an sql condition from the given filter + * + * @param {Object} pFilter the filter object + * @param {String} pTable the database table + * @param {String} [pTableAlias=null] the database table alias + * @param {Object} [pColumnMap=null] Custom mapping for the fields to the DB columns, this is necessary + * if the fields are from different tables. Structure has to be like this: + * { + * FIELD1 : "TABLE1.COLUMN1", + * FIELD2 : ["TABLE2", "COLUMN2", "TABLE2ALIAS"] //do it like this if the table has an alias + * } + * + * @example + * var condition = SqlCondition.begin(); + * if (vars.exists("$local.filter") && vars.get("$local.filter")) + * { + * var filter = vars.get("$local.filter"); + * if (filter.filter) + * condition.andSqlCondition((JditoFilterUtils.getSqlCondition(filter.filter, "AB_ATTRIBUTE"))); + * } + * var attributeSql = condition.buildSql("select AB_ATTRIBUTEID from AB_ATTRIBUTE"); + * + * @return {SqlCondition} the SqlCondition object + */ +JditoFilterUtils.getSqlCondition = function (pFilter, pTable, pTableAlias, pColumnMap) +{ + var condition = new SqlCondition(); + + if (!pFilter) + return condition; + if (!pColumnMap) + pColumnMap = {}; + + _addCondition.call(condition, pFilter, pFilter.operator); + + return condition; + + //recursive function (for compatibility with a condition tree) that + //builds the SqlCondition + function _addCondition (pCondition, pOperator) + { + if (pCondition.type == "row") + { + if (pCondition.name in pColumnMap) + pCondition.name = pColumnMap[pCondition.name]; + else if (pTable && pTableAlias) + pCondition.name = [pTable, pCondition.name, pTableAlias]; + else if (pTable) + pCondition.name = pTable + "." + pCondition.name; + + pCondition.value = (pCondition.key || pCondition.value); + var condition = _getCondition.call(pCondition); + if (pOperator == "AND") + this.andPrepare(pCondition.name, pCondition.value, condition); + else if (pOperator == "OR") + this.orPrepare(pCondition.name, pCondition.value, condition); + } + else if (pCondition.type == "group") + { + let subCondition = new SqlCondition(); + let operator = pCondition.operator; + pCondition.childs.forEach(function (cond) + { + _addCondition.call(subCondition, cond, operator); + }); + if (pOperator == "AND") + this.andSqlCondition(subCondition); + else if (pOperator == "OR") + this.orSqlCondition(subCondition); + } + } + + //returns the condition depending on the operator and + //adds wildcards to the value if necessary + function _getCondition () + { + switch (this.operator) + { + case "CONTAINS": + this.value = "%" + this.value + "%"; + return "# like ?"; + case "CONTAINSNOT": + this.value = "%" + this.value + "%"; + return "# not like ?"; + case "STARTSWITH": + this.value = this.value + "%"; + return "# like ?"; + case "ENDSWITH": + this.value = "%" + this.value; + return "# like ?"; + case "EQUAL": + return "# = ?"; + case "NOT_EQUAL": + return "# != ?"; + case "LESS": + return "# < ?"; + case "LESS_OR_EQUAL": + return "# <= ?"; + case "GREATER": + return "# > ?"; + case "GREATER_OR_EQUAL": + return "# >= ?"; + case "ISNULL": + return "# is null"; + case "ISNOTNULL": + return "# is not null"; + } + } } \ No newline at end of file diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js index d9f1c97af2af46fd3664c7ac5c60fd5d707bdb14..7aacc071aeede38bc1207baf2cacad71d117a405 100644 --- a/process/KeywordRegistry_basic/process.js +++ b/process/KeywordRegistry_basic/process.js @@ -55,6 +55,7 @@ $KeywordRegistry.productPricelist = function(){return "ProductPricelist";}; $KeywordRegistry.productPricelist$standardList = function(){return "02553fc7-4611-4914-8ff5-0b7c4e7531c9";}; $KeywordRegistry.quantityUnit = function(){return "QuantityUnit";}; +$KeywordRegistry.quantityUnit$pieces = function(){return "548ffe3b-466b-4c8f-97d6-e3ad23e33344";}; $KeywordRegistry.MemberRole = function(){return "MemberRole";}; $KeywordRegistry.salesprojectSource = function(){return "SalesprojectSource";}; $KeywordRegistry.salesorderState = function(){return "SalesorderState";}; diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js index a7d93bfb2fa94ffc6bf804368308dcb9b17d4177..faa11ee5cd526b4ec26522e4ef037a20c224aa9f 100644 --- a/process/Keyword_lib/process.js +++ b/process/Keyword_lib/process.js @@ -200,13 +200,15 @@ KeywordUtils.getTranslatedContainer = function(pContainerName) * @param {String} pContainerName specifies the type of the keyword and therefore the list elements; * e.g. "COUNTRY"; use an entry of the $KeywordRegistry here * @param {String} pAttributeName the name of the keyword attribute that shall be initalized + * @param {String} [pDefault=undefined] the default value -> Does not throw an error, if default value exists. * * @class */ -function KeywordAttribute(pContainerName, pAttributeName) +function KeywordAttribute(pContainerName, pAttributeName, pDefault) { this.container = pContainerName; this.attribute = pAttributeName; + this.defaultValue = pDefault; var sql = SqlCondition.begin() .andPrepare("AB_KEYWORD_ATTRIBUTE.CONTAINER", pContainerName) @@ -215,23 +217,58 @@ function KeywordAttribute(pContainerName, pAttributeName) var keywordAttrData = db.array(db.ROW, sql); - if (keywordAttrData.length == 0) + if (keywordAttrData.length > 0) + { + this.id = keywordAttrData[0]; + this.type = keywordAttrData[1]; + this.dbField = this.type.trim(); + } + else if(pDefault == undefined) + { throw new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", [this.attribute, this.container])); - - this.id = keywordAttrData[0]; - this.type = keywordAttrData[1]; - this.dbField = this.type.trim(); + } } +/** + * get the value for a specific keyId. + * Error if the keyword container does not have the attribute at all (you can check this with .exists()) + * Error if the attribute does not exist at the provided keyId and you have not specified a default + * + * @param {String} pKeyId the keyId + * + * @return {String} the loaded value (or the default) + */ KeywordAttribute.prototype.getValue = function(pKeyId) { - var sql = SqlCondition.begin() + if (this.exists()) + { + var sql = SqlCondition.begin() .andPrepare("AB_KEYWORD_ENTRY.CONTAINER", this.container) .andPrepare("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTE_ID", this.id) .andPrepare("AB_KEYWORD_ENTRY.KEYID", pKeyId) .buildSql("select " + this.dbField + " from AB_KEYWORD_ENTRY join AB_KEYWORD_ATTRIBUTERELATION on AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID = AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID"); + var attrValue = db.cell(sql); + if (attrValue) + return attrValue; + + if (this.defaultValue) + return this.defaultValue; + + throw new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword \"%1\" from container \"%2\"", [this.attribute, pKeyId, this.container])); + } + else if (this.defaultValue == undefined) + throw new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", [this.attribute, this.container])); + else + return this.defaultValue; +} - return db.cell(sql); +/** + * check if the Container can have the attribute. + * @return {Boolean} true if it exists, false if not + */ +KeywordAttribute.prototype.exists = function() +{ + return this.id != undefined && this.type != undefined && this.dbField != undefined; } /** diff --git a/process/Person_lib/process.js b/process/Person_lib/process.js index 2fe262fac3ee20b20078c4ff90293500a8b77f16..1963013e3e25e981546cf3852b7dc242c71a7b39 100644 --- a/process/Person_lib/process.js +++ b/process/Person_lib/process.js @@ -52,16 +52,28 @@ PersUtils.removeImage = function(pPersId) * does not validate if pRelationIdField exists or is a valid or harmful value * * @param {String} pRelationIdField fieldname for the CONTACTID-condition as TABLEALIAS.COLUMNALIAS; e.g. TASK.EDITOR_CONTACT_ID - * @return {String} a subsql (without bracets) that can be played within an SQL + * @return {String} a subsql (without bracets) that can be placed within an SQL */ PersUtils.getResolvingDisplaySubSql = function(pRelationIdField) { - var contact = Contact.createWithColumnPreset(); - var renderer = new ContactTitleRenderer(contact, null); - var selectExpression = renderer.asSql(); + var selectExpression = PersUtils.getDisplaySqlExpression(); //TODO: verify if there is a better solution for the usage of this as a displayValueExpression --> automatic use of #TITLE | waiting vor implementation return "select " + selectExpression + "from PERSON \n\ join CONTACT on (PERSON.PERSONID = CONTACT.PERSON_ID) \n\ where CONTACT.CONTACTID = " + pRelationIdField; +} + +/** + * creates a sql-part for resolving a person into one string of text (for example the name of a person) + * useful for example in an displayValue-expression to resolave a references which is already joined within the record-container + + * @return {String} a sql-part that can be placed within an SQL + */ +PersUtils.getDisplaySqlExpression = function() +{ + var contact = Contact.createWithColumnPreset(); + var renderer = new ContactTitleRenderer(contact, null); + var expression = renderer.asSql(); + return expression; } \ No newline at end of file diff --git a/process/Placeholder_lib/process.js b/process/Placeholder_lib/process.js index c410229e0b6499caf5272e796bbe1bd0728875bb..54520ad69d604a24dbf59d0b231b0bbca241c7e9 100644 --- a/process/Placeholder_lib/process.js +++ b/process/Placeholder_lib/process.js @@ -5,6 +5,9 @@ import("Communication_lib"); * All possible placeholders that can be used in a template are defined here. */ +/** + * Provides functions for placeholders. + */ function PlaceholderUtils () {} /** @@ -12,17 +15,10 @@ function PlaceholderUtils () {} * * @return {Array} array of placeholders */ -PlaceholderUtils.getPlaceholders = function (pFilter) +PlaceholderUtils.getPlaceholders = function () { - var filter = {}; - if (pFilter) - { - pFilter.forEach(function (p) - { - this[p] = true; - }, filter); - } var placeholders = []; + var sqlUtil = new SqlMaskingUtils(); /***************************************************************************************************************/ //Definition of available Placeholders. Placeholders should be added here: @@ -41,12 +37,12 @@ PlaceholderUtils.getPlaceholders = function (pFilter) _addAddressFormat("senderFullAddress", "", Placeholder.targets.SENDER); _addSqlPart("orgname", "ORGANISATION.NAME"); - - _addSqlPartFunction("phone", CommUtil.getStandardSubSqlPhone); - _addSqlPartFunction("email", CommUtil.getStandardSubSqlMail); - _addSqlPartFunction("senderPhone", CommUtil.getStandardSubSqlPhone, Placeholder.targets.SENDER); - _addSqlPartFunction("senderEmail", CommUtil.getStandardSubSqlMail, Placeholder.targets.SENDER); - _addSqlPartFunction("senderName", function () {return (new SqlMaskingUtils()).concat(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"])}, Placeholder.targets.SENDER); + _addSqlPart("phone", CommUtil.getStandardSubSqlPhone()); + _addSqlPart("email", CommUtil.getStandardSubSqlMail()); + _addSqlPart("name", sqlUtil.concat(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"])); + _addSqlPart("senderPhone", CommUtil.getStandardSubSqlPhone(), Placeholder.targets.SENDER); + _addSqlPart("senderEmail", CommUtil.getStandardSubSqlMail(), Placeholder.targets.SENDER); + _addSqlPart("senderName", sqlUtil.concat(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"]), Placeholder.targets.SENDER); @@ -61,18 +57,16 @@ PlaceholderUtils.getPlaceholders = function (pFilter) */ function _addAddressFormat (pName, pFormat, pTarget) { - if (!pFilter || filter[pName]) - placeholders.push(new Placeholder(pName, Placeholder.types.ADDRESSFORMAT, pFormat, pTarget)); + placeholders.push(new Placeholder(pName, Placeholder.types.ADDRESSFORMAT, pFormat, pTarget)); } /** * Add a sub-sql placeholder to placeholders. For further information regarding the full query, you can take * a look at the function 'fetchAddressData' in Address_lib. You can use fields from CONTACT, ADDRESS, ORGANISATION and PERSON. */ - function _addSqlPart (pName, pSqlPart, pTarget, pAddBraces) + function _addSqlPart (pName, pSqlPart, pTarget) { - if (!pFilter || filter[pName]) - placeholders.push(new Placeholder(pName, Placeholder.types.SQLPART, pAddBraces ? "(" + pSqlPart + ")" : pSqlPart, pTarget)); + placeholders.push(new Placeholder(pName, Placeholder.types.SQLPART, "(" + pSqlPart + ")", pTarget)); } /** @@ -81,8 +75,7 @@ PlaceholderUtils.getPlaceholders = function (pFilter) */ function _addSqlPartFunction (pName, pSqlPartFunction, pTarget) { - if (!pFilter || filter[pName]) - placeholders.push(new Placeholder(pName, Placeholder.types.SQLPARTFUNCTION, pSqlPartFunction, pTarget)); + placeholders.push(new Placeholder(pName, Placeholder.types.SQLPARTFUNCTION, pSqlPartFunction, pTarget)); } } @@ -107,7 +100,6 @@ PlaceholderUtils.formatPlaceholder = function (pPlaceholder) function Placeholder (pName, pType, pValueDef, pTarget) { this.placeholderName = PlaceholderUtils.formatPlaceholder(pName); - this.simpleName = pName; this.type = pType; this.target = pTarget || Placeholder.targets.RECIPIENT; this.valueDefinition = pValueDef; @@ -120,6 +112,8 @@ Placeholder.prototype.toString = function () /** * placeholder types, defines how the value is acquired + * + * @enum {String} */ Placeholder.types = { /** @@ -138,6 +132,8 @@ Placeholder.types = { /** * placeholder targets, defines whose data is used + * + * @enum {String} */ Placeholder.targets = { /** diff --git a/process/autostartNeon/process.js b/process/autostartNeon/process.js index 69f1c38301c03b7a0cc0ea574015b33424454426..4c0947f97557e1f7f3225bd5406aac3b350f86ee 100644 --- a/process/autostartNeon/process.js +++ b/process/autostartNeon/process.js @@ -1,3 +1,4 @@ +import("system.logging"); import("system.tools"); import("system.calendars") import("system.notification") @@ -6,19 +7,4 @@ import("system.util"); var users = ["Admin", "Birgit Leicht", "Harold Smith", "Herbert Obermeier", "Lisa Sommer", "Susanne Lustig"]; calendars.setCalendarUser(users, calendars.RIGHT_READ | calendars.RIGHT_WRITE, false, calendars.SORTSTRATEGY_NATURAL); -calendars.setCheckAttendeesOnWrite(false); - -//notification.addNotification( -// "", -// text.encodeMS(["Person", "1a67eaa7-21da-4a18-97ab-755ac5cb74f7"]), -// null, -// "", -// "Geburtstag", -// notification.PRIO_MAX, -// 1, -// notification.STATE_UNSEEN, -// ["_____USER_bcdfb521-c7d0-4ef1-8916-78e7d3232046"], -// "Susanne Lustig", -// "Alles Gute!"); -// - +calendars.setCheckAttendeesOnWrite(false); \ No newline at end of file