diff --git a/.liquibase/Data_alias/basic/2019.2/addDefaultAddresses.xml b/.liquibase/Data_alias/basic/2019.2/addDefaultAddresses.xml new file mode 100644 index 0000000000000000000000000000000000000000..53c2858677b011f511d70426a00f473448665451 --- /dev/null +++ b/.liquibase/Data_alias/basic/2019.2/addDefaultAddresses.xml @@ -0,0 +1,274 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="j.hoermann" id="58c94c79-1c82-43b3-bd19-324955d4cbfb"> + <!--Lisa Sommer--> + <update tableName="CONTACT"> + <column name="ADDRESS_ID" value="11d01332-985b-4efe-a634-da71ae482907"/> + <where>CONTACTID = ? and ADDRESS_ID is null</where> + <whereParams> + <param value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + </whereParams> + </update> + + <!--MNF--> + <insert tableName="ADDRESS"> + <column name="STATE" value="Bayern"/> + <column name="ADDR_TYPE" value="b3292432-bca2-4674-8b06-b78b2b06351e"/> + <column name="CITY" value="München"/> + <column name="COUNTRY" value="DE"/> + <column name="CONTACT_ID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/> + <column name="ADDRIDENTIFIER" value="Tor 1"/> + <column name="REGION" value=""/> + <column name="ADDRESSID" value="6a3f6232-7a66-4a72-8d2d-66a3a9f1b9ea"/> + <column name="BUILDINGNO" value="3"/> + <column name="ADDRESSADDITION"/> + <column name="ZIP" value="80807"/> + <column name="ADDRESS" value="Muster-Straße"/> + <column name="DISTRICT" value="Oberbayern"/> + <column name="USER_NEW" value="Admin"/> + <column name="DATE_NEW" valueComputed="current_datetime"/> + </insert> + <update tableName="CONTACT"> + <column name="ADDRESS_ID" value="6a3f6232-7a66-4a72-8d2d-66a3a9f1b9ea"/> + <where>CONTACTID = ? and ADDRESS_ID is null</where> + <whereParams> + <param value="e6da1393-f46b-41a4-826b-2c7d22de2246" /> + </whereParams> + </update> + + <!--Lichtenstein--> + <insert tableName="ADDRESS"> + <column name="STATE" value="Bayern"/> + <column name="ADDR_TYPE" value="b3292432-bca2-4674-8b06-b78b2b06351e"/> + <column name="CITY" value="München"/> + <column name="COUNTRY" value="DE"/> + <column name="CONTACT_ID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/> + <column name="ADDRIDENTIFIER" value="Tor 1"/> + <column name="REGION" value=""/> + <column name="ADDRESSID" value="f54606ee-ecdd-4859-ad7d-aa096c5e9596"/> + <column name="BUILDINGNO" value="35"/> + <column name="ADDRESSADDITION"/> + <column name="ZIP" value="80807"/> + <column name="ADDRESS" value="Lützowplatz"/> + <column name="DISTRICT" value="Oberbayern"/> + <column name="USER_NEW" value="Admin"/> + <column name="DATE_NEW" valueComputed="current_datetime"/> + </insert> + <update tableName="CONTACT"> + <column name="ADDRESS_ID" value="f54606ee-ecdd-4859-ad7d-aa096c5e9596"/> + <where>CONTACTID = ? and ADDRESS_ID is null</where> + <whereParams> + <param value="e83c45e0-c30b-436e-b445-00a8b58383b0" /> + </whereParams> + </update> + + <!--International Kältetechnik AG--> + <insert tableName="ADDRESS"> + <column name="STATE" value="Bayern"/> + <column name="ADDR_TYPE" value="b3292432-bca2-4674-8b06-b78b2b06351e"/> + <column name="CITY" value="München"/> + <column name="COUNTRY" value="DE"/> + <column name="CONTACT_ID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/> + <column name="ADDRIDENTIFIER" value="Tor 1"/> + <column name="REGION" value=""/> + <column name="ADDRESSID" value="92a244c5-6065-458c-abc7-57d0dc955011"/> + <column name="BUILDINGNO" value="48"/> + <column name="ADDRESSADDITION"/> + <column name="ZIP" value="63847"/> + <column name="ADDRESS" value="Hildburghausen"/> + <column name="DISTRICT" value="Oberbayern"/> + <column name="USER_NEW" value="Admin"/> + <column name="DATE_NEW" valueComputed="current_datetime"/> + </insert> + <update tableName="CONTACT"> + <column name="ADDRESS_ID" value="92a244c5-6065-458c-abc7-57d0dc955011"/> + <where>CONTACTID = ? and ADDRESS_ID is null</where> + <whereParams> + <param value="e83c45e0-c30b-436e-b445-00a8b58383b0" /> + </whereParams> + </update> + + <!--Pichelmaier Financial AG--> + <insert tableName="ADDRESS"> + <column name="STATE" value="Bayern"/> + <column name="ADDR_TYPE" value="b3292432-bca2-4674-8b06-b78b2b06351e"/> + <column name="CITY" value="München"/> + <column name="COUNTRY" value="DE"/> + <column name="CONTACT_ID" value="fd082db5-be43-4219-a705-588f9c06e59b"/> + <column name="ADDRIDENTIFIER" value="Tor 1"/> + <column name="REGION" value=""/> + <column name="ADDRESSID" value="90726b19-f23c-42dd-847a-7eacf4c71d18"/> + <column name="BUILDINGNO" value="6"/> + <column name="ADDRESSADDITION"/> + <column name="ZIP" value="54595"/> + <column name="ADDRESS" value="Rudower Strasse"/> + <column name="DISTRICT" value="Oberbayern"/> + <column name="USER_NEW" value="Admin"/> + <column name="DATE_NEW" valueComputed="current_datetime"/> + </insert> + <update tableName="CONTACT"> + <column name="ADDRESS_ID" value="90726b19-f23c-42dd-847a-7eacf4c71d18"/> + <where>CONTACTID = ? and ADDRESS_ID is null</where> + <whereParams> + <param value="fd082db5-be43-4219-a705-588f9c06e59b" /> + </whereParams> + </update> + + <!--Peter Pfiffig--> + <update tableName="CONTACT"> + <column name="ADDRESS_ID" value="14d01332-985b-4efe-a634-da71ae482907"/> + <where>CONTACTID = ? and ADDRESS_ID is null</where> + <whereParams> + <param value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d" /> + </whereParams> + </update> + + <!--Franz Müller--> + <insert tableName="ADDRESS"> + <column name="STATE" value="Bayern"/> + <column name="ADDR_TYPE" value="a7466ee5-3fba-40bf-93cf-aa20a2b32ad6"/> + <column name="CITY" value="Bergkirchen"/> + <column name="COUNTRY" value="DE"/> + <column name="CONTACT_ID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/> + <column name="ADDRIDENTIFIER"/> + <column name="REGION" value=""/> + <column name="ADDRESSID" value="5773392d-cc7a-4170-8ffe-867807634c3c"/> + <column name="BUILDINGNO" value="32"/> + <column name="ADDRESSADDITION"/> + <column name="ZIP" value="85230"/> + <column name="ADDRESS" value="Büsingstrasse"/> + <column name="DISTRICT" value="Oberbayern"/> + <column name="USER_NEW" value="Admin"/> + <column name="DATE_NEW" valueComputed="current_datetime"/> + </insert> + <update tableName="CONTACT"> + <column name="ADDRESS_ID" value="5773392d-cc7a-4170-8ffe-867807634c3c"/> + <where>CONTACTID = ? and ADDRESS_ID is null</where> + <whereParams> + <param value="f0fb7676-8183-4bc7-beca-ca32c1e11c10" /> + </whereParams> + </update> + + <!--Birgit Leicht--> + <update tableName="CONTACT"> + <column name="ADDRESS_ID" value="ce990566-3b86-48fe-bd0c-1167142e584b"/> + <where>CONTACTID = ? and ADDRESS_ID is null</where> + <whereParams> + <param value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> + </whereParams> + </update> + + <!--Ludwig Kanzler--> + <insert tableName="ADDRESS"> + <column name="STATE" value="Bayern"/> + <column name="ADDR_TYPE" value="a7466ee5-3fba-40bf-93cf-aa20a2b32ad6"/> + <column name="CITY" value="München"/> + <column name="COUNTRY" value="DE"/> + <column name="CONTACT_ID" value="73d731a2-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="ADDRIDENTIFIER"/> + <column name="REGION" value=""/> + <column name="ADDRESSID" value="8f6da43d-adc5-410e-8bc5-14adca88ebfe"/> + <column name="BUILDINGNO" value="83"/> + <column name="ADDRESSADDITION"/> + <column name="ZIP" value="80456"/> + <column name="ADDRESS" value="Landsberger Allee"/> + <column name="DISTRICT" value="Oberbayern"/> + <column name="USER_NEW" value="Admin"/> + <column name="DATE_NEW" valueComputed="current_datetime"/> + </insert> + <update tableName="CONTACT"> + <column name="ADDRESS_ID" value="8f6da43d-adc5-410e-8bc5-14adca88ebfe"/> + <where>CONTACTID = ? and ADDRESS_ID is null</where> + <whereParams> + <param value="73d731a2-e7f5-11e8-9f32-f2801f1b9fd1" /> + </whereParams> + </update> + + <!--Jerome Grüner--> + <insert tableName="ADDRESS"> + <column name="STATE" value="Bayern"/> + <column name="ADDR_TYPE" value="a7466ee5-3fba-40bf-93cf-aa20a2b32ad6"/> + <column name="CITY" value="Niederkirchen"/> + <column name="COUNTRY" value="DE"/> + <column name="CONTACT_ID" value="73d73404-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="ADDRIDENTIFIER"/> + <column name="REGION" value=""/> + <column name="ADDRESSID" value="84e040be-5a5f-48e7-be2c-769d4a169390"/> + <column name="BUILDINGNO" value="48"/> + <column name="ADDRESSADDITION"/> + <column name="ZIP" value="67700"/> + <column name="ADDRESS" value="Grosse Praesidenten Str."/> + <column name="DISTRICT" value="Oberbayern"/> + <column name="USER_NEW" value="Admin"/> + <column name="DATE_NEW" valueComputed="current_datetime"/> + </insert> + <update tableName="CONTACT"> + <column name="ADDRESS_ID" value="84e040be-5a5f-48e7-be2c-769d4a169390"/> + <where>CONTACTID = ? and ADDRESS_ID is null</where> + <whereParams> + <param value="73d73404-e7f5-11e8-9f32-f2801f1b9fd1" /> + </whereParams> + </update> + + <!--Herbert Obermeier--> + <insert tableName="ADDRESS"> + <column name="STATE" value="Bayern"/> + <column name="ADDR_TYPE" value="a7466ee5-3fba-40bf-93cf-aa20a2b32ad6"/> + <column name="CITY" value="Bielefeld Babenhausen"/> + <column name="COUNTRY" value="DE"/> + <column name="CONTACT_ID" value="57d524f6-ad66-4550-be83-fee6e31b7a52"/> + <column name="ADDRIDENTIFIER"/> + <column name="REGION" value=""/> + <column name="ADDRESSID" value="f00966ec-693b-4bb5-8c66-26a40f18394f"/> + <column name="BUILDINGNO" value="67"/> + <column name="ADDRESSADDITION"/> + <column name="ZIP" value="33739"/> + <column name="ADDRESS" value="Spresstrasse"/> + <column name="DISTRICT" value="Oberbayern"/> + <column name="USER_NEW" value="Admin"/> + <column name="DATE_NEW" valueComputed="current_datetime"/> + </insert> + <update tableName="CONTACT"> + <column name="ADDRESS_ID" value="f00966ec-693b-4bb5-8c66-26a40f18394f"/> + <where>CONTACTID = ? and ADDRESS_ID is null</where> + <whereParams> + <param value="57d524f6-ad66-4550-be83-fee6e31b7a52" /> + </whereParams> + </update> + + <!--Harold Smith--> + <insert tableName="ADDRESS"> + <column name="STATE" value="Mecklenburg-Vorpommern"/> + <column name="ADDR_TYPE" value="a7466ee5-3fba-40bf-93cf-aa20a2b32ad6"/> + <column name="CITY" value="Rostock"/> + <column name="COUNTRY" value="DE"/> + <column name="CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9"/> + <column name="ADDRIDENTIFIER"/> + <column name="REGION" value=""/> + <column name="ADDRESSID" value="85bc81b9-5553-42a8-a643-eb47e1ed3c42"/> + <column name="BUILDINGNO" value="95"/> + <column name="ADDRESSADDITION"/> + <column name="ZIP" value="18074"/> + <column name="ADDRESS" value="Kurfürstendamm"/> + <column name="DISTRICT" value="Mecklenburg-Vorpommern"/> + <column name="USER_NEW" value="Admin"/> + <column name="DATE_NEW" valueComputed="current_datetime"/> + </insert> + <update tableName="CONTACT"> + <column name="ADDRESS_ID" value="85bc81b9-5553-42a8-a643-eb47e1ed3c42"/> + <where>CONTACTID = ? and ADDRESS_ID is null</where> + <whereParams> + <param value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9" /> + </whereParams> + </update> + + <!--Susanne Lustig--> + <update tableName="CONTACT"> + <column name="ADDRESS_ID" value="89cbad0e-9901-42e2-ae40-a5a20c7ed5c8"/> + <where>CONTACTID = ? and ADDRESS_ID is null</where> + <whereParams> + <param value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7" /> + </whereParams> + </update> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2019.2/change_Milestone_datatype_to_new_Keyword_logic_Derby.xml b/.liquibase/Data_alias/basic/2019.2/change_Milestone_datatype_to_new_Keyword_logic_Derby.xml new file mode 100644 index 0000000000000000000000000000000000000000..fa2c3652ee188650237957106649b056346a3c5c --- /dev/null +++ b/.liquibase/Data_alias/basic/2019.2/change_Milestone_datatype_to_new_Keyword_logic_Derby.xml @@ -0,0 +1,16 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet dbms="derby" author="j.hoermann" id="be098ba0-30ed-4e01-893e-928b1ac86923"> + <sql> + ALTER TABLE SALESPROJECT_MILESTONE ADD COLUMN TYPE_NEW VARCHAR(80); + UPDATE SALESPROJECT_MILESTONE SET TYPE_NEW=CHAR(TYPE); + ALTER TABLE SALESPROJECT_MILESTONE DROP COLUMN TYPE; + RENAME COLUMN SALESPROJECT_MILESTONE.TYPE_NEW TO TYPE; + + ALTER TABLE SALESPROJECT_MILESTONE ADD COLUMN VALUE_NEW CHAR(36); + UPDATE SALESPROJECT_MILESTONE SET VALUE_NEW=CHAR(VALUE); + ALTER TABLE SALESPROJECT_MILESTONE DROP COLUMN VALUE; + RENAME COLUMN SALESPROJECT_MILESTONE.VALUE_NEW TO VALUE; + </sql> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2019.2/change_Milestone_datatype_to_new_Keyword_logic_notDerby.xml b/.liquibase/Data_alias/basic/2019.2/change_Milestone_datatype_to_new_Keyword_logic_notDerby.xml new file mode 100644 index 0000000000000000000000000000000000000000..41fdab8d76669d6e338ccad579c2745d9f1efb61 --- /dev/null +++ b/.liquibase/Data_alias/basic/2019.2/change_Milestone_datatype_to_new_Keyword_logic_notDerby.xml @@ -0,0 +1,7 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet dbms="!derby" author="j.hoermann" id="f5074961-4aa0-4cd8-8541-7381ddfb0b71"> + <modifyDataType tableName="SALESPROJECT_MILESTONE" columnName="TYPE" newDataType="NVARCHAR(80)"/> + <modifyDataType tableName="SALESPROJECT_MILESTONE" columnName="VALUE" newDataType="CHAR(36)"/> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2019.2/changelog.xml b/.liquibase/Data_alias/basic/2019.2/changelog.xml index 6f93491024becfd2f83b731b29f4e47794fd1782..c018844e469ed9c0fe96763cab6b8372a568feee 100644 --- a/.liquibase/Data_alias/basic/2019.2/changelog.xml +++ b/.liquibase/Data_alias/basic/2019.2/changelog.xml @@ -136,6 +136,16 @@ <!-- Derby needs special handling --> <include relativeToChangelogFile="true" file="alter_activityLink_notDerby.xml" /> <include relativeToChangelogFile="true" file="alter_activityLink_Derby.xml" /> - + + <include relativeToChangelogFile="true" file="renameCycle_to_Milestone.xml" /> + <!-- Derby needs special handling --> + <include relativeToChangelogFile="true" file="change_Milestone_datatype_to_new_Keyword_logic_notDerby.xml" /> + <include relativeToChangelogFile="true" file="change_Milestone_datatype_to_new_Keyword_logic_Derby.xml" /> + <include relativeToChangelogFile="true" file="update_Milestone_to_new_Keyword.xml" /> + + <include relativeToChangelogFile="true" file="data/example_person/PERSON_admin.xml" context="example"/> + + <include relativeToChangelogFile="true" file="addDefaultAddresses.xml" context="example"/> <include relativeToChangelogFile="true" file="AditoBasic/create_ab_loghistory.xml"/> + </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_admin.xml b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_admin.xml new file mode 100644 index 0000000000000000000000000000000000000000..0c15468561e1105847a568f7e64803487f37cbeb --- /dev/null +++ b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_admin.xml @@ -0,0 +1,78 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> +<changeSet author="j.hoermann" id="d750c022-e34c-4903-8146-bd89121c0214"> + <insert tableName="PERSON"> + <column name="PERSONID" value="b16282bd-254e-4569-a56e-675449821467"/> + <column name="FIRSTNAME" value="Tim"/> + <column name="MIDDLENAME"/> + <column name="LASTNAME" value="Admin"/> + <column name="SALUTATION" value="Herr"/> + <column name="DATEOFBIRTH" valueDate="1993-05-07"/> + <column name="USER_NEW" value="Admin"/> + <column name="DATE_NEW" valueComputed="current_datetime"/> + </insert> + <insert tableName="CONTACT"> + <column name="RELATIONSHIP" valueNumeric="1"/> + <column name="LANGUAGE" value="deu"/> + <column name="PERSON_ID" value="b16282bd-254e-4569-a56e-675449821467"/> + <column name="CONTACTID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> + <column name="ORGANISATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="STATUS" value="BSIC0rel-stat-actv-ae03-b6b04430e90b"/> + <column name="ADDRESS_ID" value="0e6d2504-adda-453a-bb36-981e6d0f06c7"/> + <column name="USER_NEW" value="Admin"/> + <column name="DATE_NEW" valueComputed="current_datetime"/> + </insert> + <insert tableName="ADDRESS"> + <column name="STATE" value="Freistaat Bayern"/> + <column name="ADDR_TYPE" value="a7466ee5-3fba-40bf-93cf-aa20a2b32ad6"/> + <column name="CITY" value="Heinrichsthal"/> + <column name="COUNTRY" value="DE"/> + <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> + <column name="ADDRIDENTIFIER"/> + <column name="REGION" value=""/> + <column name="ADDRESSID" value="0e6d2504-adda-453a-bb36-981e6d0f06c7"/> + <column name="BUILDINGNO" value="77"/> + <column name="ADDRESSADDITION"/> + <column name="ZIP" value="18074"/> + <column name="ADDRESS" value="Rudolstaedter Strasse"/> + <column name="DISTRICT" value="Bayern"/> + <column name="USER_NEW" value="Admin"/> + <column name="DATE_NEW" valueComputed="current_datetime"/> + </insert> + <insert tableName="COMMUNICATION"> + <column name="COMMUNICATIONID" value="3ccc54d5-dfb0-4da9-a0a0-472025f65994"/> + <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> + <column name="MEDIUM_ID" value="85ee16dd-c878-4463-be6a-324c25e76764"/> + <column name="ADDR" value="Admin@domain.local"/> + <column name="STANDARD" valueNumeric="1"/> + <column name="USER_NEW" value="Admin"/> + <column name="DATE_NEW" valueComputed="current_datetime"/> + </insert> + <rollback> + <delete tableName="CONTACT"> + <where>CONTACTID = ?</where> + <whereParams> + <param value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + </whereParams> + </delete> + <delete tableName="COMMUNICATION"> + <where>CONTACTID = ?</where> + <whereParams> + <param value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + </whereParams> + </delete> + <delete tableName="PERSON"> + <where>PERSONID = ?</where> + <whereParams> + <param value="b16282bd-254e-4569-a56e-675449821467" /> + </whereParams> + </delete> + <delete tableName="ADDRESS"> + <where>CONTACT_ID = ?</where> + <whereParams> + <param value="c7ddf982-0e58-4152-b82b-8f5673b0b729" /> + </whereParams> + </delete> + </rollback> +</changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2019.2/renameCycle_to_Milestone.xml b/.liquibase/Data_alias/basic/2019.2/renameCycle_to_Milestone.xml new file mode 100644 index 0000000000000000000000000000000000000000..94183e1d8dc5c55dbd95db8652fc83e37cfe3143 --- /dev/null +++ b/.liquibase/Data_alias/basic/2019.2/renameCycle_to_Milestone.xml @@ -0,0 +1,9 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="j.hoermann" id="da0982c9-8541-43a2-ae3f-cfb179a6b8c3"> + <renameTable oldTableName="SALESPROJECT_CYCLE" newTableName="SALESPROJECT_MILESTONE"/> + <renameColumn tableName="SALESPROJECT_MILESTONE" columnDataType="CHAR(36)" newColumnName="SALESPROJECT_MILESTONEID" oldColumnName="SALESPROJECT_CYCLEID"/> + <dropPrimaryKey tableName="SALESPROJECT_MILESTONE" constraintName="PK_SALESPROJECT_CYCLE_SALESPROJECT_CYCLEID"/> + <addPrimaryKey tableName="SALESPROJECT_MILESTONE" constraintName="PK_SALESPROJECT_MILESTONE_SALESPROJECT_MILESTONEID" columnNames="SALESPROJECT_MILESTONEID"/> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2019.2/update_Milestone_to_new_Keyword.xml b/.liquibase/Data_alias/basic/2019.2/update_Milestone_to_new_Keyword.xml new file mode 100644 index 0000000000000000000000000000000000000000..78058cb375498026ca1ab75ec33e674970b569f2 --- /dev/null +++ b/.liquibase/Data_alias/basic/2019.2/update_Milestone_to_new_Keyword.xml @@ -0,0 +1,135 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="j.hoermann" id="ec9bae68-ca27-4597-9808-fc333246b3a0"> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="TYPE" value="SalesprojectPhase"/> + <where>TYPE = ?</where> + <whereParams> + <param value="1" /> + </whereParams> + </update> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="VALUE" value="9f7d1fa9-7c09-4037-8f7c-8458def14d89"/> + <where>TYPE = ? and VALUE in (?,?,?,?,?,?,?,?,?,?,?)</where> + <whereParams> + <param value="SalesprojectPhase" /> + <param value="1" /> + <param value="7" /> + <param value="8" /> + <param value="9" /> + <param value="10" /> + <param value="11" /> + <param value="12" /> + <param value="13" /> + <param value="14" /> + <param value="15" /> + <param value="16" /> + </whereParams> + </update> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="VALUE" value="292628f1-d9a5-432d-8130-f6690c14a5d4"/> + <where>TYPE = ? and VALUE = ?</where> + <whereParams> + <param value="SalesprojectPhase" /> + <param value="2" /> + </whereParams> + </update> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="VALUE" value="4467b33c-3a68-4c8b-ba4a-1eb666a6c774"/> + <where>TYPE = ? and VALUE = ?</where> + <whereParams> + <param value="SalesprojectPhase" /> + <param value="3" /> + </whereParams> + </update> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="VALUE" value="1e42f183-fb97-415f-9917-b43ca159fde4"/> + <where>TYPE = ? and VALUE = ?</where> + <whereParams> + <param value="SalesprojectPhase" /> + <param value="4" /> + </whereParams> + </update> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="VALUE" value="972a41dc-a8ae-43cd-a03b-522ea84efbfb"/> + <where>TYPE = ? and VALUE = ?</where> + <whereParams> + <param value="SalesprojectPhase" /> + <param value="5" /> + </whereParams> + </update> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="VALUE" value="60d09bb1-7e02-4003-99bf-18b739a577ad"/> + <where>TYPE = ? and VALUE = ?</where> + <whereParams> + <param value="SalesprojectPhase" /> + <param value="6" /> + </whereParams> + </update> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="VALUE" value="213c8184-f930-457e-8605-703baaf21d4a"/> + <where>TYPE = ? and VALUE = ?</where> + <whereParams> + <param value="SalesprojectPhase" /> + <param value="7" /> + </whereParams> + </update> + + + <update tableName="SALESPROJECT_MILESTONE"> + <column name="TYPE" value="SalesprojectState"/> + <where>TYPE = ?</where> + <whereParams> + <param value="2" /> + </whereParams> + </update> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="VALUE" value="483bcaeb-1e5b-4772-b54e-7d7d8aa65712"/> + <where>TYPE = ? and VALUE = ?</where> + <whereParams> + <param value="SalesprojectState" /> + <param value="1" /> + </whereParams> + </update> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="VALUE" value="23d38486-4cce-41ce-a8df-164ad44df706"/> + <where>TYPE = ? and VALUE = ?</where> + <whereParams> + <param value="SalesprojectState" /> + <param value="2" /> + </whereParams> + </update> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="VALUE" value="8916e241-9452-4541-a323-d479ad5f2e4d"/> + <where>TYPE = ? and VALUE = ?</where> + <whereParams> + <param value="SalesprojectState" /> + <param value="3" /> + </whereParams> + </update> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="VALUE" value="1606cf46-a87b-4797-830e-55ebdd70a001"/> + <where>TYPE = ? and VALUE = ?</where> + <whereParams> + <param value="SalesprojectState" /> + <param value="4" /> + </whereParams> + </update> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="VALUE" value="130bb53a-a97e-455e-8f34-8d445e985474"/> + <where>TYPE = ? and VALUE = ?</where> + <whereParams> + <param value="SalesprojectState" /> + <param value="5" /> + </whereParams> + </update> + <update tableName="SALESPROJECT_MILESTONE"> + <column name="VALUE" value="d8a60f60-a4e6-46ee-88ec-bac53e1afedd"/> + <where>TYPE = ? and VALUE = ?</where> + <whereParams> + <param value="SalesprojectState" /> + <param value="6" /> + </whereParams> + </update> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/_____configuration.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/_____configuration.xml index 0808967704be0c95f53d4cad4524a9660e07eb8a..a57bd0f04271547aaf28e4f103e6a625bd2d8804 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/_____configuration.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/_____configuration.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<aliasConfig xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/aliasConfig/1.0.7"> +<aliasConfig 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/aliasConfig/1.1.0"> <name>_____CONFIGURATION</name> <serverId>default</serverId> <definitionName>_____CONFIGURATION</definitionName> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/_____system_sysdb_version.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/_____system_sysdb_version.xml index 59bf0767b66fe17465aa47e845310a64b932ea6d..263bf76d5d876fa69aaabaef1f06f01b5e4e1c01 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/_____system_sysdb_version.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/_____system_sysdb_version.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <sysDbVersion xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/sysDbVersion/1.2.0"> <name>_____SYSTEM_SYSDB_VERSION</name> - <systemDbVersion>2.5.1</systemDbVersion> + <systemDbVersion>2.6.0</systemDbVersion> </sysDbVersion> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/data_alias.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/data_alias.xml index 96e374b63bfba36595e9eef04af49ece136932a9..e6eb125c832854bf0e6dd3e0c5f88d2ee198db51 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/data_alias.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/data_alias.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<aliasConfig xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/aliasConfig/1.0.7"> +<aliasConfig 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/aliasConfig/1.1.0"> <name>f50ee138-12d9-420d-a4f9-9b8257e207e4</name> <description>jdbc:derby://localhost:1527/basic_data</description> <serverId>default</serverId> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_system.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_system.xml index 5065651e3bced3f53c7fcd357f402fba4ba1384c..38d99e05952657760911852cb369a4853b78e69e 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_system.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_system.xml @@ -7,7 +7,7 @@ <column name="DATE_NEW" valueDate="2018-05-24T14:53:57.763"/> <column name="KIND" valueNumeric="600"/> <column name="NAME" value="_____SYSTEM_SYSDB_VERSION"/> - <column name="TITLE" value="2.5.1"/> + <column name="TITLE" value="2.6.0"/> <column name="USER_EDIT" value="_____DESIGNERANONYM"/> <column name="USER_NEW" value="_____DESIGNERANONYM"/> <column name="XMLDATA" valueBlobFile="defaultBlob/_____system_sysdb_version.xml"/> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_users-admin.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_users-admin.xml index 985b5d19534f4f4ffcc60ecd673f6c907f1e0730..33f7425c15c97e76ac83a3a172c4c79849fb88bb 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_users-admin.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_users-admin.xml @@ -10,6 +10,15 @@ <column name="PROPKEY" value="lastModified"/> <column name="PROPVAL" value="1544193908535"/> </insert> + <insert tableName="ASYS_USERS"> + <column name="DATE_EDIT" valueDate="2018-12-07T15:45:08.535"/> + <column name="DATE_NEW" valueDate="2018-05-25T09:52:30.361"/> + <column name="GROUPID" value="BASIC"/> + <column name="ID" value="cdb34f95-e414-4807-bbdb-f369138ee49f"/> + <column name="NAME" value="_____USER_bcdfb521-c7d0-4ef1-8916-78e7d3232046"/> + <column name="PROPKEY" value="contactID"/> + <column name="PROPVAL" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/> + </insert> <insert tableName="ASYS_USERS"> <column name="DATE_EDIT" valueDate="2018-12-07T15:45:08.535"/> <column name="DATE_NEW" valueDate="2018-05-25T09:52:30.361"/> @@ -19,6 +28,15 @@ <column name="PROPKEY" value="name"/> <column name="PROPVAL" value="_____USER_bcdfb521-c7d0-4ef1-8916-78e7d3232046"/> </insert> + <insert tableName="ASYS_USERS"> + <column name="DATE_EDIT" valueDate="2018-12-07T15:45:08.535"/> + <column name="DATE_NEW" valueDate="2018-05-25T09:52:30.361"/> + <column name="GROUPID" value="BASIC"/> + <column name="ID" value="c17c88f5-74e2-44a1-ae68-8130918b43d3"/> + <column name="NAME" value="_____USER_bcdfb521-c7d0-4ef1-8916-78e7d3232046"/> + <column name="PROPKEY" value="isActive"/> + <column name="PROPVAL" value="true"/> + </insert> <insert tableName="ASYS_USERS"> <column name="DATE_EDIT" valueDate="2018-12-07T15:45:08.535"/> <column name="DATE_NEW" valueDate="2018-05-25T09:52:30.361"/> @@ -28,6 +46,15 @@ <column name="PROPKEY" value="title"/> <column name="PROPVAL" value="Admin"/> </insert> + <insert tableName="ASYS_USERS"> + <column name="DATE_EDIT" valueDate="2018-12-07T15:45:08.535"/> + <column name="DATE_NEW" valueDate="2018-05-25T09:52:30.361"/> + <column name="GROUPID" value="PERSONAL"/> + <column name="ID" value="93c88dff-a6b0-49ce-b7b4-e474b7ca7fb6"/> + <column name="NAME" value="_____USER_bcdfb521-c7d0-4ef1-8916-78e7d3232046"/> + <column name="PROPKEY" value="firstname"/> + <column name="PROPVAL" value="Tim"/> + </insert> <insert tableName="ASYS_USERS"> <column name="DATE_EDIT" valueDate="2018-12-07T15:45:08.535"/> <column name="DATE_NEW" valueDate="2018-05-25T09:52:30.361"/> @@ -35,7 +62,7 @@ <column name="ID" value="f63d0946-3960-43bb-9888-4c36d962f955"/> <column name="NAME" value="_____USER_bcdfb521-c7d0-4ef1-8916-78e7d3232046"/> <column name="PROPKEY" value="lastname"/> - <column name="PROPVAL" value="Administrator"/> + <column name="PROPVAL" value="Admin"/> </insert> <insert tableName="ASYS_USERS"> <column name="DATE_EDIT" valueDate="2018-12-07T15:45:08.535"/> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/init.xml b/.liquibase/_____SYSTEMALIAS/basic/init/init.xml index 4e94f2543871caa8a6c85f12715d0856d3f6a6e2..d29b9203a5b0089545e87bd7641479f7fa4003e9 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/init.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/init.xml @@ -1,18 +1,18 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> - <include file="struct/create_asys_aliasconfig.xml"/> - <include file="struct/create_asys_binaries.xml"/> - <include file="struct/create_asys_dashletconfigurations.xml"/> - <include file="struct/create_asys_dashlets.xml"/> - <include file="struct/create_asys_notifications.xml"/> - <include file="struct/create_asys_sequences.xml"/> - <include file="struct/create_asys_system.xml"/> - <include file="struct/create_asys_timer.xml"/> - <include file="struct/create_asys_users.xml"/> - <include file="struct/create_asys_calendarbackend.xml"/> - <include file="struct/create_asys_calendarlink.xml"/> + <include relativeToChangelogFile="true" file="struct/create_asys_aliasconfig.xml"/> + <include relativeToChangelogFile="true" file="struct/create_asys_binaries.xml"/> + <include relativeToChangelogFile="true" file="struct/create_asys_dashletconfigurations.xml"/> + <include relativeToChangelogFile="true" file="struct/create_asys_dashlets.xml"/> + <include relativeToChangelogFile="true" file="struct/create_asys_notifications.xml"/> + <include relativeToChangelogFile="true" file="struct/create_asys_sequences.xml"/> + <include relativeToChangelogFile="true" file="struct/create_asys_system.xml"/> + <include relativeToChangelogFile="true" file="struct/create_asys_timer.xml"/> + <include relativeToChangelogFile="true" file="struct/create_asys_users.xml"/> + <include relativeToChangelogFile="true" file="struct/create_asys_calendarbackend.xml"/> + <include relativeToChangelogFile="true" file="struct/create_asys_calendarlink.xml"/> - <include file="data/insert_asys_aliasconfig.xml"/> - <include file="data/insert_asys_system.xml"/> - <include file="data/insert_asys_users-admin.xml"/> + <include relativeToChangelogFile="true" file="data/insert_asys_aliasconfig.xml"/> + <include relativeToChangelogFile="true" file="data/insert_asys_system.xml"/> + <include relativeToChangelogFile="true" file="data/insert_asys_users-admin.xml"/> </databaseChangeLog> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/system_aliasTestdata.xml b/.liquibase/_____SYSTEMALIAS/basic/init/system_aliasTestdata.xml index 12e4b957ade3bd0f87acb1decb681cb98398f0df..9471a52c15d6bcf528b3d86b509fba763553a793 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/system_aliasTestdata.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/system_aliasTestdata.xml @@ -1,13 +1,13 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> - <include file="data/example_asys_users/Birgit_Leicht.xml"/> - <include file="data/example_asys_binaries/Birgit_Leicht_Image.xml"/> - <include file="data/example_asys_users/Harold_Smith.xml"/> - <include file="data/example_asys_binaries/Harold_Smith_Image.xml"/> - <include file="data/example_asys_users/Herbert_Obermeier.xml"/> - <include file="data/example_asys_binaries/Herbert_Obermeier_Image.xml"/> - <include file="data/example_asys_users/Lisa_Sommer.xml"/> - <include file="data/example_asys_binaries/Lisa_Sommer_Image.xml"/> - <include file="data/example_asys_users/Susanne_Lustig.xml"/> - <include file="data/example_asys_binaries/Susanne_Lustig_Image.xml"/> + <include relativeToChangelogFile="true" file="data/example_asys_users/Birgit_Leicht.xml"/> + <include relativeToChangelogFile="true" file="data/example_asys_binaries/Birgit_Leicht_Image.xml"/> + <include relativeToChangelogFile="true" file="data/example_asys_users/Harold_Smith.xml"/> + <include relativeToChangelogFile="true" file="data/example_asys_binaries/Harold_Smith_Image.xml"/> + <include relativeToChangelogFile="true" file="data/example_asys_users/Herbert_Obermeier.xml"/> + <include relativeToChangelogFile="true" file="data/example_asys_binaries/Herbert_Obermeier_Image.xml"/> + <include relativeToChangelogFile="true" file="data/example_asys_users/Lisa_Sommer.xml"/> + <include relativeToChangelogFile="true" file="data/example_asys_binaries/Lisa_Sommer_Image.xml"/> + <include relativeToChangelogFile="true" file="data/example_asys_users/Susanne_Lustig.xml"/> + <include relativeToChangelogFile="true" file="data/example_asys_binaries/Susanne_Lustig_Image.xml"/> </databaseChangeLog> diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 4297b5fe7326d3da65160bbcf5725a41b0b405d8..b2e73a04e975097de4b9cdaca86cb59205c1808c 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -2742,109 +2742,6 @@ </entityFieldDb> </entityFields> </entityDb> - <entityDb> - <name>SALESPROJECT_CYCLE</name> - <dbName></dbName> - <idColumn>SALESPROJECT_CYCLEID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <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>SALESPROJECT_CYCLEID</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>DATE_START</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>VALUE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SALESPROJECT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_END</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> <entityDb> <name>SALESPROJECT_FORECAST</name> <dbName></dbName> @@ -6189,6 +6086,106 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>SALESPROJECT_MILESTONE</name> + <dbName></dbName> + <idColumn>SALESPROJECT_MILESTONEID</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>DATE_START</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>VALUE</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>SALESPROJECT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>TYPE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="80" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DATE_END</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>SALESPROJECT_MILESTONEID</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> diff --git a/entity/360Degree_entity/360Degree_entity.aod b/entity/360Degree_entity/360Degree_entity.aod index 66b17d986f3f77f93e3bea9c803ef2a87d1a95bb..1d4bdeca355a54d16fe7f61f2f6eb3f37e3295da 100644 --- a/entity/360Degree_entity/360Degree_entity.aod +++ b/entity/360Degree_entity/360Degree_entity.aod @@ -14,6 +14,7 @@ </entityField> <entityField> <name>TITLE</name> + <linkedContextProcess>%aditoprj%/entity/360Degree_entity/entityfields/title/linkedContextProcess.js</linkedContextProcess> <searchable v="false" /> </entityField> <entityParameter> diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newcontract/onActionProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/onActionProcess.js index c441f436ac1b006d8c653a13d4095207a9752c56..0593c0ea1d681ac441b346e130c12bfbf7c0564c 100644 --- a/entity/360Degree_entity/entityfields/newmodule/children/newcontract/onActionProcess.js +++ b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/onActionProcess.js @@ -1,5 +1,4 @@ import("system.vars"); import("Contract_lib"); -import("system.logging"); ContractUtils.createNewContract(vars.getString("$param.ObjectRowId_param")); \ No newline at end of file diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js index 45d4c0d1cadf0fd4f0a44a660ff1a9a8e481e879..fc6fedaff886e1b4b13e066605063f5c595b795b 100644 --- a/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js +++ b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js @@ -1,7 +1,6 @@ import("system.result"); import("system.vars"); import("system.neon"); -import("system.logging"); var contextList = JSON.parse(vars.getString("$param.ObjectType_param")); var found = false; diff --git a/entity/360Degree_entity/entityfields/title/linkedContextProcess.js b/entity/360Degree_entity/entityfields/title/linkedContextProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c493945bed68e5998cc4a2e8f2f18aa500683f72 --- /dev/null +++ b/entity/360Degree_entity/entityfields/title/linkedContextProcess.js @@ -0,0 +1,3 @@ +import("system.vars"); +import("system.result"); +result.string(vars.get("$field.TARGET_CONTEXT")); \ No newline at end of file diff --git a/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js b/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js index f74342ef8fe31213bd81788524244cb58c2a2271..5f91637c836c317480dc04958cdc4563b0da8611 100644 --- a/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js @@ -1,11 +1,9 @@ -import("system.logging"); import("system.util"); import("system.db"); import("system.vars"); import("system.result"); import("Context_lib"); import("system.translate"); -import("system.logging"); var resultList = []; if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param") && vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param")) diff --git a/entity/ActivityLink_entity/ActivityLink_entity.aod b/entity/ActivityLink_entity/ActivityLink_entity.aod index 312eb108037270268629d5641532f061c3d07e27..00d2c837e4ba4cdbb7253c1baa75966e9cc111ef 100644 --- a/entity/ActivityLink_entity/ActivityLink_entity.aod +++ b/entity/ActivityLink_entity/ActivityLink_entity.aod @@ -16,6 +16,7 @@ <name>OBJECT_TYPE</name> <title>{$OBJECTLINK_TYPE}</title> <consumer>Context</consumer> + <mandatory v="true" /> <displayValueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess> </entityField> <entityField> @@ -23,6 +24,7 @@ <title>{$OBJECTLINK_OBJECT}</title> <consumer>Objects</consumer> <linkedContextProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/object_rowid/linkedContextProcess.js</linkedContextProcess> + <mandatory v="true" /> <displayValueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js</displayValueProcess> </entityField> <entityField> diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index 8d1f8c7048a5dbf2e54d0213c01465d38cbe0fbc..cd65065c38663b5ab510ec227d4807fbf1260f4d 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -58,6 +58,7 @@ </entityParameter> <entityField> <name>SUBJECT_DETAILS</name> + <linkedContext>Activity</linkedContext> <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/subject_details/valueProcess.js</valueProcess> </entityField> <entityField> diff --git a/entity/Address_entity/recordcontainers/db/onDBInsert.js b/entity/Address_entity/recordcontainers/db/onDBInsert.js index 4f0f20e26a8335a324327f5df12e37c8399545e3..0b06b98f3f4d02529bd274832a28057377d16bd6 100644 --- a/entity/Address_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Address_entity/recordcontainers/db/onDBInsert.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.vars"); import("StandardObject_lib"); diff --git a/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js b/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js index 844708f89dc0cc824e7651eade24917d5a38e4fb..b603d5545bf136c0f5ab87ec05c4ab83d3ac6cc0 100644 --- a/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js +++ b/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.db"); import("system.vars"); import("system.result"); diff --git a/entity/AppointmentLink_entity/entityfields/objecttype/displayValueProcess.js b/entity/AppointmentLink_entity/entityfields/objecttype/displayValueProcess.js index 9e7fb9a949fc371e06d22408fb69bf998b9488e7..bc84d07a9f8ab6e9bbfde0de443cd0322a26a69b 100644 --- a/entity/AppointmentLink_entity/entityfields/objecttype/displayValueProcess.js +++ b/entity/AppointmentLink_entity/entityfields/objecttype/displayValueProcess.js @@ -1,11 +1,9 @@ -import("system.logging"); -import("system.result"); -import("system.neon"); -import("system.vars"); -import("system.project"); - -if (vars.exists("$field.OBJECTTYPE") && vars.get("$field.OBJECTTYPE")) -{ - logging.log("objecttype value: " + project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECTTYPE"))[1]); - result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECTTYPE"))[1]); +import("system.result"); +import("system.neon"); +import("system.vars"); +import("system.project"); + +if (vars.exists("$field.OBJECTTYPE") && vars.get("$field.OBJECTTYPE")) +{ + result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECTTYPE"))[1]); } \ No newline at end of file diff --git a/entity/Appointment_entity/entityfields/summary/valueProcess.js b/entity/Appointment_entity/entityfields/summary/valueProcess.js index 8fd3d347cac2df60651d46bdab6fb9caffbd7ca6..c42150fdff40e956026f65addcdcadc10049df0b 100644 --- a/entity/Appointment_entity/entityfields/summary/valueProcess.js +++ b/entity/Appointment_entity/entityfields/summary/valueProcess.js @@ -9,8 +9,6 @@ import("system.result"); */ if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.Entry_param")) { - logging.log() - var event = JSON.parse(vars.getString("$param.Entry_param")); if(event[calendars.SUMMARY]) diff --git a/entity/AttributeRelationTree_entity/recordcontainers/jdito/contentProcess.js b/entity/AttributeRelationTree_entity/recordcontainers/jdito/contentProcess.js index e6b4f8a5171e30c73818b120f6f4de53eabef89f..3bc714d701a23a938e5cca97131fd2ee59a579cb 100644 --- a/entity/AttributeRelationTree_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/AttributeRelationTree_entity/recordcontainers/jdito/contentProcess.js @@ -1,44 +1,71 @@ -import("system.vars"); -import("system.result"); -import("system.db"); -import("Attribute_lib"); -import("Sql_lib"); - -var objectType = vars.get("$param.ObjectType_param"); -var rowId = vars.get("$param.ObjectRowId_param"); -var attributeObj = {}; -var allAttributes = []; -var sqlSelect = "select AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, ATTRIBUTE_NAME, ATTRIBUTE_LEVEL from AB_ATTRIBUTE"; - -var attributeValues = AttributeRelationUtils.getAllAttributes(rowId, objectType, false, true); - -_fetchAttributes(attributeValues.map(function (row) {return row[1]})); - -allAttributes = allAttributes - .sort(function (a, b) {return a[3] - b[3];}) //sort by level to make sure parents are added first - .map(function (row) {return [row[0], row[1], row[2]];}) //remove level from array - .concat(attributeValues); -result.object(allAttributes); - -function _fetchAttributes (pAttributeIds) -{ - var condition = SqlCondition.begin(); - var nextIds = []; - pAttributeIds.forEach(function (id) - { - if (!(id in this)) - condition.orPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", id); - }, attributeObj); - db.table(condition.buildSql(sqlSelect, "1=2")) - .forEach(function (row) - { - this[row[0]] = true; - if (row[1]) - nextIds.push(row[1]); - else - row[1] = null; - allAttributes.push(row); - }, attributeObj); - if (nextIds.length) - _fetchAttributes(nextIds); +import("system.vars"); +import("system.result"); +import("system.db"); +import("Attribute_lib"); +import("Sql_lib"); + +var objectType = vars.get("$param.ObjectType_param"); +var rowId = vars.get("$param.ObjectRowId_param"); +var attributeObj = {}; +var allAttributes = []; +var sqlSelect = "select AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, ATTRIBUTE_NAME from AB_ATTRIBUTE"; + +var attributeValues = AttributeRelationUtils.getAllAttributes(rowId, objectType, false, true); + +_fetchAttributes(attributeValues.map(function (row) {return row[1]})); + +allAttributes = _sortArrayForTree(allAttributes).concat(attributeValues); +result.object(allAttributes); + +function _fetchAttributes (pAttributeIds) +{ + var condition = SqlCondition.begin(); + var nextIds = []; + pAttributeIds.forEach(function (id) + { + if (!(id in this)) + condition.orPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", id); + }, attributeObj); + db.table(condition.buildSql(sqlSelect, "1=2")) + .forEach(function (row) + { + this[row[0]] = true; + if (row[1]) + nextIds.push(row[1]); + else + row[1] = null; + allAttributes.push(row); + }, attributeObj); + if (nextIds.length) + _fetchAttributes(nextIds); +} + +function _sortArrayForTree (pArray) +{ + var rows = {}; + var allIds = {}; + var idIndex = 1; + var parentIdIndex = 4; + + pArray.forEach(function (row) {allIds[row[idIndex]] = true;}); + + var index = 0; + + for (let itemsAdded = true; itemsAdded; itemsAdded = oldIndex != index) + { + var oldIndex = index; + pArray.forEach(function (row) + { + if (!(row[idIndex] in this) && (row[parentIdIndex] in this || !allIds[row[parentIdIndex]])) + this[row[idIndex]] = { + data : row, + index : index++ + }; + }, rows); + } + var sortedArray = new Array(Object.keys(rows).length); + for (let i in rows) + sortedArray[rows[i].index] = rows[i].data; + + return sortedArray; } \ No newline at end of file diff --git a/entity/Attribute_entity/Attribute_entity.aod b/entity/Attribute_entity/Attribute_entity.aod index 7a53655d326d89c0f289e70d22176c8ed389a346..a33899be37800f733596dee69847ff941dcd9efc 100644 --- a/entity/Attribute_entity/Attribute_entity.aod +++ b/entity/Attribute_entity/Attribute_entity.aod @@ -7,7 +7,7 @@ <afterUiInit>%aditoprj%/entity/Attribute_entity/afterUiInit.js</afterUiInit> <iconId>VAADIN:TAG</iconId> <titleProcess>%aditoprj%/entity/Attribute_entity/titleProcess.js</titleProcess> - <recordContainer>db</recordContainer> + <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> @@ -278,57 +278,32 @@ </entityParameter> </children> </entityConsumer> + <entityField> + <name>IMAGE</name> + <contentType>IMAGE</contentType> + </entityField> + <entityField> + <name>UID</name> + </entityField> </entityFields> <recordContainers> - <dbRecordContainer> - <name>db</name> - <alias>Data_alias</alias> - <conditionProcess>%aditoprj%/entity/Attribute_entity/recordcontainers/db/conditionProcess.js</conditionProcess> - <orderClauseProcess>%aditoprj%/entity/Attribute_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> - <onDBUpdate>%aditoprj%/entity/Attribute_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> - <onDBDelete>%aditoprj%/entity/Attribute_entity/recordcontainers/db/onDBDelete.js</onDBDelete> - <linkInformation> - <linkInformation> - <name>b5fd38e1-b315-4e66-bd68-569dfc04710c</name> - <tableName>AB_ATTRIBUTE</tableName> - <primaryKey>AB_ATTRIBUTEID</primaryKey> - <isUIDTable v="true" /> - </linkInformation> - </linkInformation> - <recordFieldMappings> - <dbRecordFieldMapping> - <name>AB_ATTRIBUTEID.value</name> - <recordfield>AB_ATTRIBUTE.AB_ATTRIBUTEID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ATTRIBUTE_PARENT_ID.value</name> - <recordfield>AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ATTRIBUTE_TYPE.value</name> - <recordfield>AB_ATTRIBUTE.ATTRIBUTE_TYPE</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ATTRIBUTE_ACTIVE.value</name> - <recordfield>AB_ATTRIBUTE.ATTRIBUTE_ACTIVE</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ATTRIBUTE_TYPE.displayValue</name> - <expression>%aditoprj%/entity/Attribute_entity/recordcontainers/db/recordfieldmappings/attribute_type.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ATTRIBUTE_NAME.value</name> - <recordfield>AB_ATTRIBUTE.ATTRIBUTE_NAME</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ATTRIBUTE_LEVEL.value</name> - <recordfield>AB_ATTRIBUTE.ATTRIBUTE_LEVEL</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>KEYWORD_CONTAINER.value</name> - <recordfield>AB_ATTRIBUTE.KEYWORD_CONTAINER</recordfield> - </dbRecordFieldMapping> - </recordFieldMappings> - </dbRecordContainer> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/Attribute_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/Attribute_entity/recordcontainers/jdito/onInsert.js</onInsert> + <onUpdate>%aditoprj%/entity/Attribute_entity/recordcontainers/jdito/onUpdate.js</onUpdate> + <onDelete>%aditoprj%/entity/Attribute_entity/recordcontainers/jdito/onDelete.js</onDelete> + <recordFields> + <element>UID.value</element> + <element>AB_ATTRIBUTEID.value</element> + <element>ATTRIBUTE_ACTIVE.value</element> + <element>ATTRIBUTE_NAME.value</element> + <element>ATTRIBUTE_PARENT_ID.value</element> + <element>ATTRIBUTE_TYPE.value</element> + <element>ATTRIBUTE_TYPE.displayValue</element> + <element>KEYWORD_CONTAINER.value</element> + </recordFields> + </jDitoRecordContainer> </recordContainers> </entity> diff --git a/entity/Attribute_entity/entityfields/attribute_level/valueProcess.js b/entity/Attribute_entity/entityfields/attribute_level/valueProcess.js deleted file mode 100644 index e91a822698ae74d9b594ed31998920eb6f639c74..0000000000000000000000000000000000000000 --- a/entity/Attribute_entity/entityfields/attribute_level/valueProcess.js +++ /dev/null @@ -1,16 +0,0 @@ -import("system.db"); -import("system.neon"); -import("system.result"); -import("system.vars"); -import("Sql_lib"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) - if (vars.get("$field.ATTRIBUTE_PARENT_ID") != "") - { - var level = db.cell(SqlCondition.begin() - .andPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", vars.get("$field.ATTRIBUTE_PARENT_ID")) - .buildSql("select ATTRIBUTE_LEVEL from AB_ATTRIBUTE")); - result.string(parseInt(level) + 1); - } - else - result.string("0"); diff --git a/entity/Attribute_entity/entityfields/name_with_type/valueProcess.js b/entity/Attribute_entity/entityfields/name_with_type/valueProcess.js index d14e07a8442ddff79c9c39b211cd7bd25024f153..747a495cf7bb42324c1fb691b2609eae4e6df7cf 100644 --- a/entity/Attribute_entity/entityfields/name_with_type/valueProcess.js +++ b/entity/Attribute_entity/entityfields/name_with_type/valueProcess.js @@ -1,12 +1,9 @@ -import("system.translate"); -import("system.result"); -import("system.vars"); -import("Attribute_lib"); -import("Keyword_lib"); -import("KeywordRegistry_basic") - -var name = vars.get("$field.ATTRIBUTE_NAME"); -var type = vars.get("$field.ATTRIBUTE_TYPE"); -if (type.trim() != $AttributeTypes.COMBOVALUE) - name += " (" + translate.text("Type") + ": " + KeywordUtils.getViewValue($KeywordRegistry.attributeType(), type) + ")"; +import("system.translate"); +import("system.result"); +import("system.vars"); +import("Attribute_lib"); + +var name = vars.get("$field.ATTRIBUTE_NAME"); +if (vars.get("$field.ATTRIBUTE_TYPE").trim() != $AttributeTypes.COMBOVALUE) + name += " (" + translate.text("Type") + ": " + vars.get("$field.ATTRIBUTE_TYPE.displayValue") + ")"; result.string(name); \ No newline at end of file diff --git a/entity/Attribute_entity/recordcontainers/db/conditionProcess.js b/entity/Attribute_entity/recordcontainers/db/conditionProcess.js deleted file mode 100644 index ed323a5c82da868f9b3ae4deafd54ad035520109..0000000000000000000000000000000000000000 --- a/entity/Attribute_entity/recordcontainers/db/conditionProcess.js +++ /dev/null @@ -1,46 +0,0 @@ -import("system.db"); -import("system.vars"); -import("system.result"); -import("Sql_lib"); -import("Attribute_lib"); - -var condition = "1 = 2"; - -var getGroups = vars.exists("$param.GetGroups_param") && vars.get("$param.GetGroups_param"); -var objectType = vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param"); -if (getGroups) -{ - //this is for the selection of the superordinate attribute, this condition - //filters out the own id and the children to prevent loops - condition = db.translateCondition(SqlCondition.begin() - .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.GROUP) - .andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$param.AttrParentId_param", "# != ?") - .and("AB_ATTRIBUTE.AB_ATTRIBUTEID not in ('" + AttributeUtil.getAllChildren(vars.getString("$param.AttrParentId_param")).join("','") + "')") - .build()); -} -else if (objectType) //if there's an objectType, it comes from the AttributeRelation entity -{ - var filteredAttributes = []; - if (vars.exists("$param.FilteredAttributeIds_param") && vars.get("$param.FilteredAttributeIds_param")) - filteredAttributes = JSON.parse(vars.get("$param.FilteredAttributeIds_param")); - - var ids = AttributeUtil.getPossibleAttributes(objectType, false, filteredAttributes); - condition = "AB_ATTRIBUTE.AB_ATTRIBUTEID in ('" + ids.join("','") + "')"; -} -else -{ - var type = vars.exists("$param.AttrParentType_param") && vars.get("$param.AttrParentType_param"); - if (type == $AttributeTypes.COMBO) - condition = SqlCondition.begin() - .andPrepareVars("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", "$param.AttrParentId_param") - .build(); - - var parentId = vars.exists("$param.AttrParentId_param") && vars.get("$param.AttrParentId_param"); - if (parentId) - condition = "AB_ATTRIBUTE.AB_ATTRIBUTEID in ('" + AttributeUtil.getAllChildren(vars.getString("$param.AttrParentId_param")).join("','") + "')"; - else if (!type) - condition = ""; - -} - -result.string(condition); diff --git a/entity/Attribute_entity/recordcontainers/db/onDBDelete.js b/entity/Attribute_entity/recordcontainers/db/onDBDelete.js deleted file mode 100644 index 7d1eb8b477436101b8cacb2fa7aa00241708adae..0000000000000000000000000000000000000000 --- a/entity/Attribute_entity/recordcontainers/db/onDBDelete.js +++ /dev/null @@ -1,29 +0,0 @@ -import("system.vars"); -import("system.db"); -import("Sql_lib"); -import("Attribute_lib"); - -var attributeId = vars.get("$field.AB_ATTRIBUTEID"); - -var childIds = AttributeUtil.getAllChildren(attributeId).concat(attributeId); - -var condition = SqlCondition.begin() - .and("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID in ('" + childIds.join("','") + "')") - .build(); - -//delete all entries in AB_ATTRIBUTEUSAGE belonging to the attribute to avoid unrelated entries -db.deleteData("AB_ATTRIBUTEUSAGE", condition); - -condition = SqlCondition.begin() - .and("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID in ('" + childIds.join("','") + "')") - .build(); - -//delete all entries in AB_ATTRIBUTERELATION for the attributes -db.deleteData("AB_ATTRIBUTERELATION", condition); - -condition = SqlCondition.begin() - .and("AB_ATTRIBUTE.AB_ATTRIBUTEID in ('" + childIds.join("','") + "')") - .build(); - -//delete all attribute children -db.deleteData("AB_ATTRIBUTE", condition); diff --git a/entity/Attribute_entity/recordcontainers/db/onDBUpdate.js b/entity/Attribute_entity/recordcontainers/db/onDBUpdate.js deleted file mode 100644 index 38704929f969ef673a7fafd41ac71a1fa2c05282..0000000000000000000000000000000000000000 --- a/entity/Attribute_entity/recordcontainers/db/onDBUpdate.js +++ /dev/null @@ -1,27 +0,0 @@ -import("system.db"); -import("system.neon"); -import("system.vars"); -import("Attribute_lib"); - -var level = parseInt(vars.get("$field.ATTRIBUTE_LEVEL")); - -var table = "AB_ATTRIBUTE"; -var columns = ["ATTRIBUTE_LEVEL"]; -var types = db.getColumnTypes(table, columns); -var toUpdate = []; - -var attributes = [vars.get("$field.AB_ATTRIBUTEID")]; -while (attributes.length > 0) -{ - var condition = SqlCondition.begin() - .and("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID in ('" + attributes.join("','") + "')"); - - toUpdate.push([table, columns, types, [String(++level)], condition.build()]); - - attributes = db.array(db.COLUMN, SqlCondition.begin() - .and("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID in ('" + attributes.join("','") + "')") - .buildSql("select AB_ATTRIBUTEID from AB_ATTRIBUTE") - ); -} - -db.updates(toUpdate); diff --git a/entity/Attribute_entity/recordcontainers/db/orderClauseProcess.js b/entity/Attribute_entity/recordcontainers/db/orderClauseProcess.js deleted file mode 100644 index 003688a8bb9231d8f68eada88a41012db8d2ac2c..0000000000000000000000000000000000000000 --- a/entity/Attribute_entity/recordcontainers/db/orderClauseProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.db"); -import("system.result"); -result.object({ - "AB_ATTRIBUTE.ATTRIBUTE_LEVEL" : db.ASCENDING, - "AB_ATTRIBUTE.ATTRIBUTE_NAME" : db.ASCENDING -}); \ No newline at end of file diff --git a/entity/Attribute_entity/recordcontainers/db/recordfieldmappings/attribute_type.displayvalue/expression.js b/entity/Attribute_entity/recordcontainers/db/recordfieldmappings/attribute_type.displayvalue/expression.js deleted file mode 100644 index 70d91a13284d4fe84c3ac11898f9818d944f46a2..0000000000000000000000000000000000000000 --- a/entity/Attribute_entity/recordcontainers/db/recordfieldmappings/attribute_type.displayvalue/expression.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.attributeType(), "AB_ATTRIBUTE.ATTRIBUTE_TYPE"); -result.string(sql); \ No newline at end of file diff --git a/entity/Communication_entity/recordcontainers/db/onDBUpdate.js b/entity/Communication_entity/recordcontainers/db/onDBUpdate.js index 7e2690d20ab6fcf371c1b12e9e4fa2f4e8a7ef39..30d791c0aa3c8923654612982f95153d38605fca 100644 --- a/entity/Communication_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/Communication_entity/recordcontainers/db/onDBUpdate.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.vars"); import("StandardObject_lib"); diff --git a/entity/Contact_entity/entityfields/address_id/valueProcess.js b/entity/Contact_entity/entityfields/address_id/valueProcess.js index d1d6810b0429c11c9c2a96791677caa7d557f9e8..0ddd690f6cc1711705c2243205b1483a84da6fc8 100644 --- a/entity/Contact_entity/entityfields/address_id/valueProcess.js +++ b/entity/Contact_entity/entityfields/address_id/valueProcess.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.result"); import("system.vars"); import("StandardObject_lib"); diff --git a/entity/Context_entity/Context_entity.aod b/entity/Context_entity/Context_entity.aod index df505cf73583fb1a97566a887270b53c34be8595..ae0b115f7aeb9e8496d700685ebd2bf01c2271c8 100644 --- a/entity/Context_entity/Context_entity.aod +++ b/entity/Context_entity/Context_entity.aod @@ -10,12 +10,6 @@ <name>#PROVIDER</name> <recordContainer>jdito</recordContainer> <dependencies> - <entityDependency> - <name>fcccd077-46c9-4d57-9d9f-27915e40dbce</name> - <entityName>ObjectRelation_entity</entityName> - <fieldName>Context</fieldName> - <isConsumer v="false" /> - </entityDependency> <entityDependency> <name>37559258-24f1-4c8c-b462-23ddf8de4e1e</name> <entityName>AppointmentLink_entity</entityName> diff --git a/entity/Contract_entity/entityfields/contractcode_display_fieldgroup/valueProcess.js b/entity/Contract_entity/entityfields/contractcode_display_fieldgroup/valueProcess.js index 5739345823bc0b832b6e7814fc7b97291a9f599c..1abc4310f52f05ab4ad9bd7881bf102cdde2fc71 100644 --- a/entity/Contract_entity/entityfields/contractcode_display_fieldgroup/valueProcess.js +++ b/entity/Contract_entity/entityfields/contractcode_display_fieldgroup/valueProcess.js @@ -4,7 +4,7 @@ import("system.result"); import("Keyword_lib"); import("KeywordRegistry_basic"); -var contractType = KeywordUtils.getViewValue($KeywordRegistry.contractType(), vars.get("$field.CONTRACTTYPE")); +var contractType = vars.getString("$field.CONTRACTTYPE.displayValue"); var contractCode = vars.get("$field.CONTRACTCODE"); result.string((contractType || translate.text("Contract")) + " " + contractCode); \ No newline at end of file diff --git a/entity/Contract_entity/entityfields/image/valueProcess.js b/entity/Contract_entity/entityfields/image/valueProcess.js index 7d2a0e8c8f6947c8c57a61074628e05f4bb1d7a3..d27cd1b74c498362844ab909c344a4e59a08d389 100644 --- a/entity/Contract_entity/entityfields/image/valueProcess.js +++ b/entity/Contract_entity/entityfields/image/valueProcess.js @@ -1,6 +1,4 @@ import("system.vars"); import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); -result.string("TEXT:" + KeywordUtils.getViewValue($KeywordRegistry.contractType(), vars.getString("$field.CONTRACTTYPE")) ); \ No newline at end of file +result.string("TEXT:" + vars.getString("$field.CONTRACTTYPE.displayValue")); \ No newline at end of file diff --git a/entity/Countries_Entity/entityfields/flag/valueProcess.js b/entity/Countries_Entity/entityfields/flag/valueProcess.js index d0b6d84cce31272ed67c38bf7da65fcfee34abae..d0ca80ab822ee9e0812b9d160ceeac1a6e62fd5c 100644 --- a/entity/Countries_Entity/entityfields/flag/valueProcess.js +++ b/entity/Countries_Entity/entityfields/flag/valueProcess.js @@ -2,6 +2,6 @@ import("system.vars"); import("system.result"); var b64 = vars.get("$field.FLAG_RAW");//TODO !move flags from AB_COUNTRYINFO to binaries (asys_binaries for meta) -var dataUri = "data:image/svg+xml;base64," + b64; +var dataUri = "data:image/svg+xml;base64," + b64;//TODO: currently workaround to get SVGs running result.string("URL:" + dataUri); \ No newline at end of file diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod index cc14877d0f62f3d79739e5988419cfe5dee5fbe3..172115bc01b310b95503e7794baa03ebf85fe85d 100644 --- a/entity/Document_entity/Document_entity.aod +++ b/entity/Document_entity/Document_entity.aod @@ -96,6 +96,11 @@ <name>DESCRIPTION</name> <title>Beschreibung</title> <contentType>LONG_TEXT</contentType> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> </entityField> <entityField> <name>KEYWORD</name> diff --git a/entity/Document_entity/recordcontainers/jdito/contentProcess.js b/entity/Document_entity/recordcontainers/jdito/contentProcess.js index ccee9b0372c42613f4f3fb78de22b7bfff755ef9..d58680419fb0222dbafbccafa1e60bb03cce7c8a 100644 --- a/entity/Document_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Document_entity/recordcontainers/jdito/contentProcess.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.vars"); import("system.result"); import("system.db"); diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index 3c8458d4e012e9b23427b7f7c9214c647d75e491..d507d0d138a404daf59354d1e1a1beb40fe0da7c 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -367,6 +367,12 @@ <fieldName>KeywordContactStates</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>740a9696-d394-48ea-bcbf-a5484a093bde</name> + <entityName>SalesprojectMilestone_entity</entityName> + <fieldName>Keywords</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> <children> <entityParameter> diff --git a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod index ad564c0c7354b4692adc0ef11ff6983f5ebd06d2..317e4db13fb31047f0a6817205dedc0e5ec93dd6 100644 --- a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod +++ b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod @@ -1,6 +1,7 @@ <?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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1"> <name>ObjectRelationType_entity</name> + <title>Relation type</title> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:SPLIT</icon> <titleProcess>%aditoprj%/entity/ObjectRelationType_entity/titleProcess.js</titleProcess> @@ -8,14 +9,6 @@ <entityFields> <entityProvider> <name>#PROVIDER</name> - <dependencies> - <entityDependency> - <name>e66086ed-667b-4270-9ffb-ccb41e894ac3</name> - <entityName>ObjectRelation_entity</entityName> - <fieldName>ObjectRelationTypes</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> </entityProvider> <entityField> <name>UID</name> @@ -80,6 +73,8 @@ <name>DEST_OBJECT_TYPE</name> <title>Context 2</title> <consumer>Contexts</consumer> + <mandatoryProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/dest_object_type/mandatoryProcess.js</mandatoryProcess> + <stateProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/dest_object_type/stateProcess.js</stateProcess> <displayValueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/dest_object_type/displayValueProcess.js</displayValueProcess> </entityField> <entityField> @@ -104,6 +99,8 @@ <entityField> <name>DEST_RELATION_TITLE</name> <title>Relation type 2</title> + <mandatoryProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/dest_relation_title/mandatoryProcess.js</mandatoryProcess> + <stateProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/dest_relation_title/stateProcess.js</stateProcess> <displayValueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/dest_relation_title/displayValueProcess.js</displayValueProcess> </entityField> <entityConsumer> @@ -122,6 +119,13 @@ <onActionProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/removeusage/onActionProcess.js</onActionProcess> <iconId>NEON:TRASH</iconId> </entityActionField> + <entityField> + <name>Type2Enabled_proxy</name> + <title>Enable relation type 2</title> + <contentType>BOOLEAN</contentType> + <possibleItemsProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/possibleItemsProcess.js</possibleItemsProcess> + <valueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/valueProcess.js</valueProcess> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -144,6 +148,7 @@ <element>SIDE.value</element> <element>DEST_OBJECTRELATIONTYPEID.value</element> <element>DEST_RELATION_TITLE.value</element> + <element>Type2Enabled_proxy.value</element> </recordFields> </jDitoRecordContainer> </recordContainers> diff --git a/entity/ObjectRelationType_entity/entityfields/dest_object_type/displayValueProcess.js b/entity/ObjectRelationType_entity/entityfields/dest_object_type/displayValueProcess.js index 4cee3b90ca1fb124959d0d75bdbbed6a728fac65..40aa4394b28d55270a839e0ead448446f78e8686 100644 --- a/entity/ObjectRelationType_entity/entityfields/dest_object_type/displayValueProcess.js +++ b/entity/ObjectRelationType_entity/entityfields/dest_object_type/displayValueProcess.js @@ -3,7 +3,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.DEST_OBJECT_TYPE")) { +if(!vars.get("$field.DEST_OBJECT_TYPE")) { result.string(""); } else if (vars.exists("$field.DEST_OBJECT_TYPE") && vars.get("$field.DEST_OBJECT_TYPE")) { result.string(ContextUtils.getContext(vars.get("$field.DEST_OBJECT_TYPE"))[2]); diff --git a/entity/ObjectRelationType_entity/entityfields/dest_object_type/mandatoryProcess.js b/entity/ObjectRelationType_entity/entityfields/dest_object_type/mandatoryProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..5f8ceb31ad2d7152f52576f7f0e520061d1ebc04 --- /dev/null +++ b/entity/ObjectRelationType_entity/entityfields/dest_object_type/mandatoryProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.getString("$field.Type2Enabled_proxy") == "1") \ No newline at end of file diff --git a/entity/ObjectRelationType_entity/entityfields/dest_object_type/stateProcess.js b/entity/ObjectRelationType_entity/entityfields/dest_object_type/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..74da791552b4d4a7ea1b5064319c589d9f3bea38 --- /dev/null +++ b/entity/ObjectRelationType_entity/entityfields/dest_object_type/stateProcess.js @@ -0,0 +1,12 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if (vars.getString("$field.Type2Enabled_proxy") == "0") +{ + result.string(neon.COMPONENTSTATE_DISABLED); +} +else +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/ObjectRelationType_entity/entityfields/dest_relation_title/mandatoryProcess.js b/entity/ObjectRelationType_entity/entityfields/dest_relation_title/mandatoryProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..0151ae8326830dccf8b5aebcb65d476182b113c7 --- /dev/null +++ b/entity/ObjectRelationType_entity/entityfields/dest_relation_title/mandatoryProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.getString("$field.Type2Enabled_proxy") == "1"); \ No newline at end of file diff --git a/entity/ObjectRelationType_entity/entityfields/dest_relation_title/stateProcess.js b/entity/ObjectRelationType_entity/entityfields/dest_relation_title/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..74da791552b4d4a7ea1b5064319c589d9f3bea38 --- /dev/null +++ b/entity/ObjectRelationType_entity/entityfields/dest_relation_title/stateProcess.js @@ -0,0 +1,12 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if (vars.getString("$field.Type2Enabled_proxy") == "0") +{ + result.string(neon.COMPONENTSTATE_DISABLED); +} +else +{ + result.string(neon.COMPONENTSTATE_EDITABLE); +} \ No newline at end of file diff --git a/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/possibleItemsProcess.js b/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/possibleItemsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b88d5392d1a40aa827f90e9dfcdd26303c4b1baa --- /dev/null +++ b/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/possibleItemsProcess.js @@ -0,0 +1,7 @@ +import("system.translate"); +import("system.result"); + +result.object([ + ["1", translate.text("Yes")] + ,["0", translate.text("No")] +]); \ No newline at end of file diff --git a/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/valueProcess.js b/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ee7b68c6f9c712c45af6a147dc23c15d9bc7b1ec --- /dev/null +++ b/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/valueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); + +if (!vars.get("$field.Type2Enabled_proxy")) + result.string(vars.get("$field.DIRECTION") == "same" ? 0 : 1); \ No newline at end of file diff --git a/entity/ObjectRelationType_entity/recordcontainers/jdito/contentProcess.js b/entity/ObjectRelationType_entity/recordcontainers/jdito/contentProcess.js index 698419fadb815a40dc6bea058c6e873183f6881f..e3b5147b2a0d188cc8121b65f5748eb67200edf7 100644 --- a/entity/ObjectRelationType_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/ObjectRelationType_entity/recordcontainers/jdito/contentProcess.js @@ -4,9 +4,9 @@ import("ObjectRelation_lib"); if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) { - result.object([ObjectRelationUtils.getRelationType(vars.get("$local.idvalues")[0])]); + result.object([ObjectRelationUtils.getRelationType(vars.get("$local.idvalues")[0], true)]); } else { - result.object(ObjectRelationUtils.getPossibleRelationTypes(vars.get("$param.SourceObjectType_param"), true, vars.get("$param.OnlyFirstSide_param") == "1")); + result.object(ObjectRelationUtils.getPossibleRelationTypes(vars.get("$param.SourceObjectType_param"), true, vars.get("$param.OnlyFirstSide_param") == "1", undefined, true)); } \ No newline at end of file diff --git a/entity/ObjectRelationType_entity/recordcontainers/jdito/onDelete.js b/entity/ObjectRelationType_entity/recordcontainers/jdito/onDelete.js index 0c99d246e9ad41792904cece09329cdc6157d746..be2ad9cda09046be0972a65a678891217fa62039 100644 --- a/entity/ObjectRelationType_entity/recordcontainers/jdito/onDelete.js +++ b/entity/ObjectRelationType_entity/recordcontainers/jdito/onDelete.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.vars"); import("system.db"); import("system.translate"); diff --git a/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js b/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js index b9f87162f4bbcf88c0a2b17e83a581a51d7c9572..9c7155c513a43eef2afadf630ee6b6ef12bad3c9 100644 --- a/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js +++ b/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js @@ -22,8 +22,9 @@ db.insertData("AB_OBJECTRELATIONTYPE", [ vars.get("$field.HIERARCHY") ]); -if ((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.DEST_OBJECT_TYPE") && vars.get("$field.DEST_RELATION_TITLE")) +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"))) { db.insertData("AB_OBJECTRELATIONTYPE", [ "AB_OBJECTRELATIONTYPEID", diff --git a/entity/ObjectRelationType_entity/recordcontainers/jdito/onUpdate.js b/entity/ObjectRelationType_entity/recordcontainers/jdito/onUpdate.js index bca1f7d3477c66f2d713e61a358243f41349aafb..e31eccf005c475e5c3fe863126e88a523f991a8f 100644 --- a/entity/ObjectRelationType_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/ObjectRelationType_entity/recordcontainers/jdito/onUpdate.js @@ -1,3 +1,4 @@ +import("Entity_lib"); import("system.util"); import("Sql_lib"); import("system.db"); @@ -25,6 +26,8 @@ if (usageCount <= 0) case "DEST": type2Fields[fieldName.replace("DEST_", "")] = vars.get("$field." + fieldName); break; + case "Type2Enabled": + break; default: type1Fields[fieldName] = vars.get("$field." + fieldName); type2Fields[fieldName] = vars.get("$field." + fieldName); @@ -32,16 +35,20 @@ if (usageCount <= 0) }); var updates = []; - var type1Cond = SqlCondition.begin().andPrepareVars("AB_OBJECTRELATIONTYPE.AB_OBJECTRELATIONTYPEID", "$field.UID").build("1=2"); - var type2Cond = SqlCondition.begin().andPrepareVars("AB_OBJECTRELATIONTYPE.AB_OBJECTRELATIONTYPEID", "$field.DEST_OBJECTRELATIONTYPEID").build("1=2"); + var type1Cond = SqlCondition.begin().andPrepare("AB_OBJECTRELATIONTYPE.RELATION_TYPE", vars.get("$field.RELATION_TYPE")) + .andPrepare("AB_OBJECTRELATIONTYPE.SIDE", "1").build("1=2"); + var type2Cond = SqlCondition.begin().andPrepare("AB_OBJECTRELATIONTYPE.RELATION_TYPE", vars.get("$field.RELATION_TYPE")) + .andPrepare("AB_OBJECTRELATIONTYPE.SIDE", "2").build("1=2"); for (let field in type1Fields) { updates.push(["AB_OBJECTRELATIONTYPE", [field], null, [type1Fields[field]], type1Cond]); } + var type2Enabled = vars.getString("$field.Type2Enabled_proxy"); + // delete, if type2 is empty -> convert it to a "same"-type - if ((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.DEST_OBJECT_TYPE") && !vars.get("$field.DEST_RELATION_TITLE")) + if (type2Enabled == "0" || ((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.DEST_OBJECT_TYPE") && !vars.get("$field.DEST_RELATION_TITLE"))) { db.deleteData("AB_OBJECTRELATIONTYPE", type2Cond); } diff --git a/entity/ObjectRelation_entity/ObjectRelation_entity.aod b/entity/ObjectRelation_entity/ObjectRelation_entity.aod deleted file mode 100644 index 1a3854b6597d50888dbbfb4f9735a17f94265763..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/ObjectRelation_entity.aod +++ /dev/null @@ -1,227 +0,0 @@ -<?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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1"> - <name>ObjectRelation_entity</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <documentation>%aditoprj%/entity/ObjectRelation_entity/documentation.adoc</documentation> - <recordContainer>db</recordContainer> - <entityFields> - <entityProvider> - <name>#PROVIDER</name> - <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>6789c40b-d70b-4133-af1d-40cbf548d460</name> - <entityName>Organisation_entity</entityName> - <fieldName>ObjectRelations</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> - </entityProvider> - <entityField> - <name>AB_OBJECTRELATIONTYPE1</name> - <title>Type 1</title> - <mandatory v="true" /> - </entityField> - <entityField> - <name>OBJECT1_ROWID</name> - <title>Object 1</title> - <mandatory v="true" /> - </entityField> - <entityField> - <name>AB_OBJECTRELATIONID</name> - <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/ab_objectrelationid/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>OBJECT2_ROWID</name> - <title>Object 2</title> - <mandatory v="true" /> - <titleProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object2_rowid/titleProcess.js</titleProcess> - </entityField> - <entityField> - <name>AB_OBJECTRELATIONTYPE2</name> - <title>Type 2</title> - <mandatory v="true" /> - </entityField> - <entityConsumer> - <name>Contexts</name> - <fieldType>DEPENDENCY_OUT</fieldType> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> - </entityConsumer> - <entityConsumer> - <name>Objects</name> - <fieldType>DEPENDENCY_OUT</fieldType> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>AllObjects</fieldName> - </dependency> - <children> - <entityParameter> - <name>ObjectType_param</name> - <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> - </entityParameter> - </children> - </entityConsumer> - <entityProvider> - <name>ObjectRelations</name> - <fieldType>DEPENDENCY_IN</fieldType> - <targetContextField>objectTypeProxy</targetContextField> - <targetIdField>rowIdProxy</targetIdField> - <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>30a7c954-3127-4ceb-9838-a0b7b55d0c8c</name> - <entityName>Person_entity</entityName> - <fieldName>ObjectRelations</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> - <children> - <entityParameter> - <name>ObjectRowid_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - <entityParameter> - <name>ObjectType_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - </children> - </entityProvider> - <entityConsumer> - <name>ObjectRelationTypes</name> - <fieldType>DEPENDENCY_OUT</fieldType> - <dependency> - <name>dependency</name> - <entityName>ObjectRelationType_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> - <children> - <entityParameter> - <name>SourceObjectType_param</name> - <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/objectrelationtypes/children/sourceobjecttype_param/valueProcess.js</valueProcess> - <triggerRecalculation v="true" /> - </entityParameter> - </children> - </entityConsumer> - <entityParameter> - <name>ObjectType_param</name> - <expose v="true" /> - <triggerRecalculation v="true" /> - <mandatory v="true" /> - <description>PARAMETER</description> - </entityParameter> - <entityParameter> - <name>ObjectRowid_param</name> - <expose v="true" /> - <triggerRecalculation v="true" /> - <mandatory v="true" /> - <description>PARAMETER</description> - </entityParameter> - <entityField> - <name>selectedObjectRelationTypeIdProxy</name> - <title>Relationtype</title> - <possibleItemsProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/possibleItemsProcess.js</possibleItemsProcess> - <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/valueProcess.js</valueProcess> - <onValueChange>%aditoprj%/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/onValueChange.js</onValueChange> - </entityField> - <entityField> - <name>relationTypeProxy</name> - <title>Relationtype</title> - <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/relationtypeproxy/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>rowIdProxy</name> - <title>Object</title> - <consumer>Objects</consumer> - <linkedContextProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/rowidproxy/linkedContextProcess.js</linkedContextProcess> - <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/rowidproxy/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/rowidproxy/displayValueProcess.js</displayValueProcess> - <onValueChange>%aditoprj%/entity/ObjectRelation_entity/entityfields/rowidproxy/onValueChange.js</onValueChange> - </entityField> - <entityField> - <name>objectTypeProxy</name> - <title>Object type</title> - <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/objecttypeproxy/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>mySide</name> - <description>Is always the side the current Object (from the parameters) is in the currently selected ObjectRelationType</description> - </entityField> - <entityField> - <name>OBJECT1_TYPE</name> - </entityField> - <entityField> - <name>OBJECT2_TYPE</name> - </entityField> - <entityField> - <name>INFO</name> - <title>Description</title> - </entityField> - </entityFields> - <recordContainers> - <dbRecordContainer> - <name>db</name> - <description><null value></description> - <alias>Data_alias</alias> - <fromClauseProcess>%aditoprj%/entity/ObjectRelation_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> - <conditionProcess>%aditoprj%/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js</conditionProcess> - <linkInformation> - <linkInformation> - <name>e64669fe-3252-42b9-9b9b-56a2166d81b7</name> - <tableName>AB_OBJECTRELATION</tableName> - <primaryKey>AB_OBJECTRELATIONID</primaryKey> - <isUIDTable v="true" /> - <readonly v="false" /> - </linkInformation> - <linkInformation> - <name>2ff74f14-9e9c-458d-9100-1c2c9fb34b89</name> - <tableName>AB_OBJECTRELATIONTYPE</tableName> - <primaryKey>AB_OBJECTRELATIONTYPEID</primaryKey> - <isUIDTable v="false" /> - <readonly v="true" /> - </linkInformation> - </linkInformation> - <recordFieldMappings> - <dbRecordFieldMapping> - <name>AB_OBJECTRELATIONID.value</name> - <recordfield>AB_OBJECTRELATION.AB_OBJECTRELATIONID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT1_ROWID.value</name> - <recordfield>AB_OBJECTRELATION.OBJECT1_ROWID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT2_ROWID.value</name> - <recordfield>AB_OBJECTRELATION.OBJECT2_ROWID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>AB_OBJECTRELATIONTYPE1.value</name> - <recordfield>AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE1</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>AB_OBJECTRELATIONTYPE2.value</name> - <recordfield>AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE2</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT2_TYPE.value</name> - <expression>%aditoprj%/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object2_type.value/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT1_TYPE.value</name> - <expression>%aditoprj%/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object1_type.value/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>INFO.value</name> - <recordfield>AB_OBJECTRELATION.INFO</recordfield> - </dbRecordFieldMapping> - </recordFieldMappings> - </dbRecordContainer> - </recordContainers> -</entity> diff --git a/entity/ObjectRelation_entity/documentation.adoc b/entity/ObjectRelation_entity/documentation.adoc deleted file mode 100644 index 687b98cb73cd11d9e6d6cbaf44457be3377ea0af..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/documentation.adoc +++ /dev/null @@ -1,51 +0,0 @@ -Object Relation -=============== -:toc2: left -:numbered: - -(how it works currently 13.03.2019) - -== How the ObjectRelation_entity works == -The entity works with the AB_OBJECTRELATION and AB_OBJECTRELATIONTYPE db-tables. - -The AB_OBJECTRELATIONTYPE defines which relations are possible. -It always defines one "side" of the relation. So for each relation you always need two of them and both have to be from the same RELATION_TYPE. - -So for example if you would like to have a relation between a child and parent you need these two types: - ----- -AB_OBJECTRELATIONTYPEID = UID_1 -OBJECT_TYPE = Person -RELATION_TITLE = child of -RELATION_TYPE = TypeUID_1 -SIDE = 1 - -and - -AB_OBJECTRELATIONTYPEID = UID_2 -OBJECT_TYPE = Person -RELATION_TITLE = parent of -RELATION_TYPE = TypeUID_1 -SIDE = 2 ----- - -Note that the RELATION_TYPE is the same. - - -If you create a new relation between two persons it looks like this: - ----- -AB_OBJECTRELATIONID = RelUID_1 -OBJECT1_ROWID = UID_Lisa_Sommer -OBJECT2_ROWID = UID_Franz_Mueller -AB_OBJECTRELATIONTYPE1 = UID_1 -AB_OBJECTRELATIONTYPE2 = UID_2 ----- - --> So: - -* Most relationtypes consist of two separate types connected by the RELATION_TYPE-id -* Each type also has a SIDE, which defines, if it is for side 1 or side 2 -* If both sides are from the same type, then there is only one OBJECTRELATIONTYPE with the side 1 and Objects use the same one. - -The provider use the targetContext-feature to show the preview of the linked objects directly. (see targetContext-docu in the ohers/guide folder) \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/ab_objectrelationid/valueProcess.js b/entity/ObjectRelation_entity/entityfields/ab_objectrelationid/valueProcess.js deleted file mode 100644 index f6b9da922bcaccb0006690f599c1d3cee4d00c55..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/ab_objectrelationid/valueProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.neon"); -import("system.util"); -import("system.vars"); -import("system.result"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(util.getNewUUID()); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/keywordobjectrelationtype/children/containername_param/valueProcess.js b/entity/ObjectRelation_entity/entityfields/keywordobjectrelationtype/children/containername_param/valueProcess.js deleted file mode 100644 index 48379a6374dacddb9ccbcaa323c9a24e96e105c1..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/keywordobjectrelationtype/children/containername_param/valueProcess.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string("ObjectRelationType"); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/object2/children/objecttype_param/valueProcess.js b/entity/ObjectRelation_entity/entityfields/object2/children/objecttype_param/valueProcess.js deleted file mode 100644 index e4c1084f9a07683a0ceaab1f42521b8a2819c3dc..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/object2/children/objecttype_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.OBJECT2_TYPE")) \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/object2_rowid/titleProcess.js b/entity/ObjectRelation_entity/entityfields/object2_rowid/titleProcess.js deleted file mode 100644 index dc39a528c34c8e610d4f6f53ea6f83b98699f497..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/object2_rowid/titleProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.translate"); -import("system.vars"); -import("system.result"); -import("Context_lib"); -result.string(vars.exists("$param.Object2RowidTitle_param") ? vars.get("$param.Object2RowidTitle_param") : "Object 2"); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/objectrelations/children/providertype_param/valueProcess.js b/entity/ObjectRelation_entity/entityfields/objectrelations/children/providertype_param/valueProcess.js deleted file mode 100644 index 4a2d2e1c96782b8407f30181246efb90a9efd35a..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/objectrelations/children/providertype_param/valueProcess.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string("tree"); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/objectrelationtypes/children/sourceobjecttype_param/valueProcess.js b/entity/ObjectRelation_entity/entityfields/objectrelationtypes/children/sourceobjecttype_param/valueProcess.js deleted file mode 100644 index 1a0c474771a9e04dbe87f9ea547c2bd843ff4a25..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/objectrelationtypes/children/sourceobjecttype_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$param.ObjectType_param")) \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/objects/children/objecttype_param/valueProcess.js b/entity/ObjectRelation_entity/entityfields/objects/children/objecttype_param/valueProcess.js deleted file mode 100644 index b1f7548ec5943881ae5b9fe74dc423635555f85b..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/objects/children/objecttype_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.objectTypeProxy")) \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/objects2/children/objecttype_param/valueProcess.js b/entity/ObjectRelation_entity/entityfields/objects2/children/objecttype_param/valueProcess.js deleted file mode 100644 index e4c1084f9a07683a0ceaab1f42521b8a2819c3dc..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/objects2/children/objecttype_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.OBJECT2_TYPE")) \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/objecttree/children/providertype_param/code.js b/entity/ObjectRelation_entity/entityfields/objecttree/children/providertype_param/code.js deleted file mode 100644 index 4a2d2e1c96782b8407f30181246efb90a9efd35a..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/objecttree/children/providertype_param/code.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string("tree"); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/objecttypeproxy/valueProcess.js b/entity/ObjectRelation_entity/entityfields/objecttypeproxy/valueProcess.js deleted file mode 100644 index 463b2525125de2404ec16b3a17273df8d9851d6f..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/objecttypeproxy/valueProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.db"); -import("system.result"); -import("Sql_lib"); - -result.string(db.cell(SqlCondition.begin() - .andPrepareVars("AB_OBJECTRELATIONTYPE.AB_OBJECTRELATIONTYPEID", "$field.selectedObjectRelationTypeIdProxy") - .buildSql("select OBJECT_TYPE from AB_OBJECTRELATIONTYPE", "1=2"))); diff --git a/entity/ObjectRelation_entity/entityfields/relationtypeproxy/valueProcess.js b/entity/ObjectRelation_entity/entityfields/relationtypeproxy/valueProcess.js deleted file mode 100644 index 76668648c060b4a8d158cd2b655f142291ef25af..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/relationtypeproxy/valueProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.db"); -import("system.result"); -import("Sql_lib"); - -result.string(db.cell(SqlCondition.begin() - .andPrepareVars("AB_OBJECTRELATIONTYPE.AB_OBJECTRELATIONTYPEID", "$field.selectedObjectRelationTypeIdProxy") - .buildSql("select RELATION_TYPE from AB_OBJECTRELATIONTYPE", "1=2"))); diff --git a/entity/ObjectRelation_entity/entityfields/rowidproxy/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/rowidproxy/displayValueProcess.js deleted file mode 100644 index a93e4e38004f09f00e4a04b102371cf4e9877f46..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/rowidproxy/displayValueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.db"); -import("system.result"); -import("Context_lib"); - -result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.objectTypeProxy"), vars.get("$field.rowIdProxy")))); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/rowidproxy/linkedContextProcess.js b/entity/ObjectRelation_entity/entityfields/rowidproxy/linkedContextProcess.js deleted file mode 100644 index dbb069dff2b35c0d0d2ba499188d33a865aef84a..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/rowidproxy/linkedContextProcess.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.vars"); -import("system.result"); -result.string(vars.get("$field.objectTypeProxy")) \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/rowidproxy/onValueChange.js b/entity/ObjectRelation_entity/entityfields/rowidproxy/onValueChange.js deleted file mode 100644 index 33a17fadf00db3fb20aab978c0db6bdfc129d7dd..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/rowidproxy/onValueChange.js +++ /dev/null @@ -1,22 +0,0 @@ -import("system.neon"); -import("system.vars"); -import("Entity_lib"); - -var selectedRowId = vars.exists("$field.rowIdProxy") ? vars.get("$field.rowIdProxy") : ""; -selectedRowId = ProcessHandlingUtils.getOnValidationValue(selectedRowId); - -var mySide = vars.get("$field.mySide"); - -if (mySide && selectedRowId) -{ - if (mySide == "1") - { - neon.setFieldValue("$field.OBJECT1_ROWID", vars.get("$param.ObjectRowid_param")); - neon.setFieldValue("$field.OBJECT2_ROWID", selectedRowId); - } - else - { - neon.setFieldValue("$field.OBJECT1_ROWID", selectedRowId); - neon.setFieldValue("$field.OBJECT2_ROWID", vars.get("$param.ObjectRowid_param")); - } -} \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/rowidproxy/valueProcess.js b/entity/ObjectRelation_entity/entityfields/rowidproxy/valueProcess.js deleted file mode 100644 index 709876feae8ab16d398f6fcaaa468f1ff101b9d6..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/rowidproxy/valueProcess.js +++ /dev/null @@ -1,23 +0,0 @@ -import("system.neon"); -import("system.vars"); -import("system.result"); - -if(vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW) -{ - var type1 = vars.get("$field.OBJECT1_TYPE"); - var type2 = vars.get("$field.OBJECT2_TYPE"); - var rowid1 = vars.get("$field.OBJECT1_ROWID"); - var rowid2 = vars.get("$field.OBJECT2_ROWID"); - - var currentType = vars.get("$param.ObjectType_param"); - var currentRowid = vars.get("$param.ObjectRowid_param"); - - if (type1 == currentType && rowid1 == currentRowid) - { - result.string(rowid2) - } - else if (type2 == currentType && rowid2 == currentRowid) - { - result.string(rowid1) - } -} \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/onValueChange.js b/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/onValueChange.js deleted file mode 100644 index 0154c7d4a2a3a404ca83c2ec00078ea563ff425d..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/onValueChange.js +++ /dev/null @@ -1,38 +0,0 @@ -import("system.vars"); -import("system.db"); -import("system.result"); -import("system.neon"); -import("Sql_lib"); -import("Entity_lib"); - -var selectedObjectRelationTypeId = vars.exists("$field.selectedObjectRelationTypeIdProxy") ? vars.get("$field.selectedObjectRelationTypeIdProxy") : ""; -selectedObjectRelationTypeId = ProcessHandlingUtils.getOnValidationValue(selectedObjectRelationTypeId); - -var relationTypeData = db.array(db.ROW, SqlCondition.begin() - .andPrepare("AB_OBJECTRELATIONTYPE.AB_OBJECTRELATIONTYPEID", selectedObjectRelationTypeId) - .buildSql("select AB_OBJECTRELATIONTYPEID, OBJECT_TYPE, RELATION_TITLE, RELATION_TYPE, SIDE from AB_OBJECTRELATIONTYPE", "1=2")); - -if (relationTypeData[0]) -{ - var otherRelationTypeData = db.array(db.ROW, SqlCondition.begin() - .andPrepare("AB_OBJECTRELATIONTYPE.RELATION_TYPE", relationTypeData[3]) - .andPrepare("AB_OBJECTRELATIONTYPE.SIDE", (relationTypeData[4] == "1" ? "2" : "1")) - .buildSql("select AB_OBJECTRELATIONTYPEID, OBJECT_TYPE, RELATION_TITLE, RELATION_TYPE, SIDE from AB_OBJECTRELATIONTYPE", "1=2")) - if (!otherRelationTypeData[0]) - { - otherRelationTypeData = relationTypeData; - } - - if (relationTypeData[4] == "2") - { - neon.setFieldValue("$field.AB_OBJECTRELATIONTYPE2", relationTypeData[0]); - neon.setFieldValue("$field.AB_OBJECTRELATIONTYPE1", otherRelationTypeData[0]); - } - else if (relationTypeData[4] == "1") - { - neon.setFieldValue("$field.AB_OBJECTRELATIONTYPE1", relationTypeData[0]); - neon.setFieldValue("$field.AB_OBJECTRELATIONTYPE2", otherRelationTypeData[0]); - } - - neon.setFieldValue("$field.mySide", otherRelationTypeData[4]); -} diff --git a/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/possibleItemsProcess.js b/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/possibleItemsProcess.js deleted file mode 100644 index 41ddaad8d5dc1f6a137232492c62683cab4da7e0..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/possibleItemsProcess.js +++ /dev/null @@ -1,16 +0,0 @@ -import("system.translate"); -import("system.db"); -import("system.result"); -import("system.vars"); - -result.object(db.table( -["select main.AB_OBJECTRELATIONTYPEID, main.RELATION_TITLE \n\ - from AB_OBJECTRELATIONTYPE main \n\ - left join AB_OBJECTRELATIONTYPE type2 on (type2.AB_OBJECTRELATIONTYPEID <> main.AB_OBJECTRELATIONTYPEID and type2.RELATION_TYPE = main.RELATION_TYPE) \n\ - where case when type2.OBJECT_TYPE is null then main.OBJECT_TYPE else type2.OBJECT_TYPE end = ? " -, [ - [vars.get("$param.ObjectType_param"), db.getColumnTypes("AB_OBJECTRELATIONTYPE", ["OBJECT_TYPE"])[0]] -]]).map(function(pItem) -{ - return [pItem[0], translate.text(pItem[1])]; -})); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/valueProcess.js b/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/valueProcess.js deleted file mode 100644 index 2e1e59bf7a9e242aaa2aeaaff8aca3255b2b12fc..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/valueProcess.js +++ /dev/null @@ -1,23 +0,0 @@ -import("system.neon"); -import("system.vars"); -import("system.result"); - -if(vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW) -{ - var type1 = vars.get("$field.OBJECT1_TYPE"); - var type2 = vars.get("$field.OBJECT2_TYPE"); - var rowid1 = vars.get("$field.OBJECT1_ROWID"); - var rowid2 = vars.get("$field.OBJECT2_ROWID"); - - var currentType = vars.get("$param.ObjectType_param"); - var currentRowid = vars.get("$param.ObjectRowid_param"); - - if (type1 == currentType && rowid1 == currentRowid) - { - result.string(vars.get("$field.AB_OBJECTRELATIONTYPE2")) - } - else if (type2 == currentType && rowid2 == currentRowid) - { - result.string(vars.get("$field.AB_OBJECTRELATIONTYPE1")) - } -} \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/targetobjectrowid/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/targetobjectrowid/displayValueProcess.js deleted file mode 100644 index f262c44d341bd7722a749aaaf5551dfac9ec5ced..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/targetobjectrowid/displayValueProcess.js +++ /dev/null @@ -1,12 +0,0 @@ -import("system.db"); -import("system.result"); -import("system.vars"); -import("Context_lib"); - -var providerType = vars.getString("$param.ProviderType_param"); - -// any object -if (providerType == "any") -{ - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.AnyObjectType"), vars.get("$field.AnyObjectRowid")))); -} diff --git a/entity/ObjectRelation_entity/entityfields/targetobjectrowid/documentation.adoc b/entity/ObjectRelation_entity/entityfields/targetobjectrowid/documentation.adoc deleted file mode 100644 index 336799b4617739da6a7435355cd9e7bde4e3650f..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/targetobjectrowid/documentation.adoc +++ /dev/null @@ -1,3 +0,0 @@ -This field is only filled when using the AnyObject Provider. - -Calculates the opposite side of the given AnyObject parameters. diff --git a/entity/ObjectRelation_entity/entityfields/targetobjecttype/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/targetobjecttype/displayValueProcess.js deleted file mode 100644 index 24c141470a2c2abc3d1f6f0f81af2ddbdbf9fbc0..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/targetobjecttype/displayValueProcess.js +++ /dev/null @@ -1,11 +0,0 @@ -import("system.project"); -import("system.result"); -import("system.vars"); - -var providerType = vars.getString("$param.ProviderType_param"); - -// any object -if (providerType == "any") -{ - result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.AnyObjectType"))[1]); -} \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/targetobjecttype/documentation.adoc b/entity/ObjectRelation_entity/entityfields/targetobjecttype/documentation.adoc deleted file mode 100644 index fba180b53ae87bb36854010f09dbb75125fd3159..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/targetobjecttype/documentation.adoc +++ /dev/null @@ -1,3 +0,0 @@ -This field is only filled when using the AnyObject Provider. - -Calculates the opposite side of the given AnyObject parameters. \ No newline at end of file diff --git a/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js b/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js deleted file mode 100644 index f985eee1123c0fb78d105c2843f9557735b01831..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js +++ /dev/null @@ -1,25 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.db"); -import("Sql_lib"); - -var fullCondition = SqlCondition.begin() - -// the parameters have to be present -if (vars.exists("$param.ObjectType_param") && vars.exists("$param.ObjectRowid_param")) -{ - var objectType = vars.getString("$param.ObjectType_param"); - var objectRowid = vars.getString("$param.ObjectRowid_param"); - if (objectType && objectRowid) - { - fullCondition.orSqlCondition(SqlCondition.begin() - .andPrepare(["AB_OBJECTRELATIONTYPE", "OBJECT_TYPE", "type1"], objectType) - .andPrepare("AB_OBJECTRELATION.OBJECT1_ROWID", objectRowid)) - .orSqlCondition(SqlCondition.begin() - .andPrepare(["AB_OBJECTRELATIONTYPE", "OBJECT_TYPE", "type2"], objectType) - .andPrepare("AB_OBJECTRELATION.OBJECT2_ROWID", objectRowid)); - } - -} - -result.string(db.translateCondition(fullCondition.build("1=2"))); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/recordcontainers/db/fromClauseProcess.js b/entity/ObjectRelation_entity/recordcontainers/db/fromClauseProcess.js deleted file mode 100644 index 1b526b9dcedf69e6198fa4e34138a39a7c390b8f..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/recordcontainers/db/fromClauseProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); - -result.string("AB_OBJECTRELATION \n\ - join AB_OBJECTRELATIONTYPE type1 on AB_OBJECTRELATIONTYPE1 = type1.AB_OBJECTRELATIONTYPEID \n\ - join AB_OBJECTRELATIONTYPE type2 on AB_OBJECTRELATIONTYPE2 = type2.AB_OBJECTRELATIONTYPEID"); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object1_type.value/expression.js b/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object1_type.value/expression.js deleted file mode 100644 index e5b18cf00226b694da7e012b6424c939f70228a6..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object1_type.value/expression.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string("type1.OBJECT_TYPE"); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object2_type.value/expression.js b/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object2_type.value/expression.js deleted file mode 100644 index 13fa2a157f1b92f7c7727465280ef56d98580e20..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object2_type.value/expression.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string("type2.OBJECT_TYPE"); \ No newline at end of file diff --git a/entity/ObjectTree_entity/ObjectTree_entity.aod b/entity/ObjectTree_entity/ObjectTree_entity.aod index 78ee2dcbcd62f54fb31db4eb1250d354f369a99f..732a7815ac7d2253db4ed90aa3965728076c95b4 100644 --- a/entity/ObjectTree_entity/ObjectTree_entity.aod +++ b/entity/ObjectTree_entity/ObjectTree_entity.aod @@ -61,6 +61,7 @@ <entityField> <name>PARENT_ID</name> <searchable v="false" /> + <tooltip></tooltip> <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/parent_id/valueProcess.js</valueProcess> </entityField> <entityField> @@ -123,6 +124,7 @@ <title>Description</title> <contentType>LONG_TEXT</contentType> <searchable v="false" /> + <tooltipProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/info/tooltipProcess.js</tooltipProcess> </entityField> <entityField> <name>OBJECTRELATIONTYPEID</name> @@ -162,15 +164,15 @@ <name>insert</name> <fieldType>ACTION</fieldType> <onActionProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js</onActionProcess> - <isSelectionAction v="true" /> <iconId>VAADIN:FILE_TREE_SMALL</iconId> + <stateProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/alter/children/insert/stateProcess.js</stateProcess> </entityActionField> <entityActionField> <name>edit</name> <fieldType>ACTION</fieldType> <onActionProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/alter/children/edit/onActionProcess.js</onActionProcess> - <isSelectionAction v="true" /> <iconId>NEON:PENCIL</iconId> + <stateProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/alter/children/edit/stateProcess.js</stateProcess> </entityActionField> </children> </entityActionGroup> diff --git a/entity/ObjectTree_entity/entityfields/alter/children/edit/stateProcess.js b/entity/ObjectTree_entity/entityfields/alter/children/edit/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e46436ab939b94aa8d697e23d9d92390d1384404 --- /dev/null +++ b/entity/ObjectTree_entity/entityfields/alter/children/edit/stateProcess.js @@ -0,0 +1,25 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +if (vars.exists("$sys.selection") && vars.get("$sys.selection")) +{ + var selectedRows = JSON.parse(vars.get("$sys.selection")); + var isObjectRelationNode = false; + if (selectedRows.length > 0) + { + var uid = JSON.parse(selectedRows[0]); + isObjectRelationNode = typeof uid[2] == "string"; + } + + if (isObjectRelationNode) + { + result.string(neon.COMPONENTSTATE_EDITABLE) + } + else + { + result.string(neon.COMPONENTSTATE_DISABLED) + } +} +else + result.string(neon.COMPONENTSTATE_DISABLED) \ No newline at end of file diff --git a/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js b/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js index 16288da8047743cf9d006aa8eab8a7264fc3ec65..cbeeeb007e4e98249f4cc3d011932efece2af4b2 100644 --- a/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js +++ b/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js @@ -1,33 +1,33 @@ -import("ObjectRelation_lib"); +import("system.result"); import("system.neon"); import("system.vars"); -if (vars.exists("$local.rows") && vars.get("$local.rows")) -{ - var selectedRows = JSON.parse(vars.get("$local.rows")); - var uid = JSON.parse(selectedRows[0]["#LOOKUPID"]); - var isObjectRelationNode = typeof uid[2] == "string"; - - var parentId; - var parentObjectType; - var relationType; - - if (isObjectRelationNode) - { - parentId = uid[0]; - parentObjectType = uid[3]; - } - else +if (vars.exists("$sys.selection") && vars.get("$sys.selection")) +{ + var selectedRows = JSON.parse(vars.get("$sys.selection")); + var isObjectRelationNode = false; + if (selectedRows.length > 0) { - parentId = vars.getString("$param.ObjectId_param"); - parentObjectType = vars.getString("$param.ObjectType_param"); - } - - var params = { - "ObjectId_param" : parentId, - "ObjectType_param" : parentObjectType, - "RelationType_param" : vars.get("$field.OBJECTRELATIONTYPEID") - }; + var uid = JSON.parse(selectedRows[0]); + isObjectRelationNode = typeof uid[2] == "string"; + + if (isObjectRelationNode) + { + parentId = uid[0]; + parentObjectType = uid[3]; + } + else + { + parentId = vars.getString("$param.ObjectId_param"); + parentObjectType = vars.getString("$param.ObjectType_param"); + } - neon.openContext("ObjectTree", "ObjectTreeEdit_view", null, neon.OPERATINGSTATE_NEW, params); + var params = { + "ObjectId_param" : parentId, + "ObjectType_param" : parentObjectType, + "RelationType_param" : vars.get("$field.OBJECTRELATIONTYPEID") + }; + + neon.openContext("ObjectTree", "ObjectTreeEdit_view", null, neon.OPERATINGSTATE_NEW, params); + } } \ No newline at end of file diff --git a/entity/ObjectTree_entity/entityfields/alter/children/insert/stateProcess.js b/entity/ObjectTree_entity/entityfields/alter/children/insert/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..5e1e7308c70d180decdf001e23bdb853e3e1e4c4 --- /dev/null +++ b/entity/ObjectTree_entity/entityfields/alter/children/insert/stateProcess.js @@ -0,0 +1,26 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); +import("system.neon"); + +if (vars.exists("$sys.selection") && vars.get("$sys.selection")) +{ + var selectedRows = JSON.parse(vars.get("$sys.selection")); + var isObjectRelationNode = false; + if (selectedRows.length > 0) + { + var uid = JSON.parse(selectedRows[0]); + isObjectRelationNode = typeof uid[2] == "string"; + + if (!isObjectRelationNode || isObjectRelationNode && uid[7] == 1) + { + result.string(neon.COMPONENTSTATE_EDITABLE); + } + else + result.string(neon.COMPONENTSTATE_DISABLED); + } + else + result.string(neon.COMPONENTSTATE_DISABLED); +} +else + result.string(neon.COMPONENTSTATE_DISABLED); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/objects1/children/objecttype_param/valueProcess.js b/entity/ObjectTree_entity/entityfields/info/tooltipProcess.js similarity index 51% rename from entity/ObjectRelation_entity/entityfields/objects1/children/objecttype_param/valueProcess.js rename to entity/ObjectTree_entity/entityfields/info/tooltipProcess.js index 0e35811c9fc30b9f87c3e4dda4235787fb0066f7..702c61b00fa47d188e32deb347b70106f4fb9d29 100644 --- a/entity/ObjectRelation_entity/entityfields/objects1/children/objecttype_param/valueProcess.js +++ b/entity/ObjectTree_entity/entityfields/info/tooltipProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.OBJECT1_TYPE")) \ No newline at end of file +result.string(vars.get("$field.INFO")); \ No newline at end of file diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js index fe657ea0e68d9b03bfeceddc9ac26fc81051f69f..b7e9b9983dd60bc75dcbc6f51d4d0bd084536986 100644 --- a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.db"); import("system.translate"); import("system.result"); @@ -28,7 +27,7 @@ if (uidParam) if (isObjectRelationNode) { let relationTypeData = ObjectRelationUtils.getRelationType(uid[2]); - _insertEntry(tree, _getEntryData(uid[0], relationTypeData[3], relationTypeData[7], relationTypeData[8], undefined, false, uid[6]), "", 0, uid[3], relationTypeData[10]); + _insertEntry(tree, _getEntryData(uid[0], relationTypeData[3], relationTypeData[7], relationTypeData[8], undefined, false, uid[6]), "", 0, uid[3], relationTypeData[10], relationTypeData[4]); } } @@ -80,8 +79,8 @@ function _loadObjectRelationTree(pObjectId, pObjectType, pObjectRelationTypeId, relationTypeData = ObjectRelationUtils.getRelationType(relationTypeData[8]); currentObjectId = _getRootID(currentObjectId, relationTypeData); } - - let uids = _insertEntry(tree, [[currentObjectId, "", "", "", "", relationTypeData[7]]], pNodeId, pLayer, pObjectType, selectedRelationType) + // true to enable the insert button always --v + let uids = _insertEntry(tree, [[currentObjectId, "", "", "", "", relationTypeData[7]]], pNodeId, pLayer, pObjectType, selectedRelationType, true) for (let i = 0; i < uids.length; i++) { _loadObjectRelationTree(uids[i][0], uids[i][3], relationTypeData[0], uids[i], pLayer+1, relationTypeData); @@ -137,7 +136,7 @@ function _loadObjectRelationTree(pObjectId, pObjectType, pObjectRelationTypeId, relationTypeIdForNew = thisRelationTypeId; - let uids = _insertEntry(tree, myData, pNodeId, pLayer, destObjectType, relationTypeIdForNew) + let uids = _insertEntry(tree, myData, pNodeId, pLayer, destObjectType, relationTypeIdForNew, hierarchy) for (let i = 0; i < uids.length; i++) { _loadObjectRelationTree(uids[i][0], uids[i][3], pObjectRelationTypeId, uids[i], pLayer+1, pRelationTypeData); @@ -158,11 +157,11 @@ function _loadObjectRelationTree(pObjectId, pObjectType, pObjectRelationTypeId, relationTypeIdForNew = thisRelationTypeId // add both sides. Only one will succeed, because the prevObjectId will be filtered - _insertEntry(tree, entryData, pNodeId, pLayer, destObjectType, thisRelationTypeId, 0); + _insertEntry(tree, entryData, pNodeId, pLayer, destObjectType, thisRelationTypeId, hierarchy, 0); if (direction == "same") { var otherEntryData = _getEntryData(pNodeId[0], "normal", relationType1, relationType2, prevObjectId, true); - _insertEntry(tree, otherEntryData, pNodeId, pLayer, destObjectType, thisRelationTypeId, 1); + _insertEntry(tree, otherEntryData, pNodeId, pLayer, destObjectType, thisRelationTypeId, hierarchy, 1); } } } @@ -250,9 +249,9 @@ function _getRelationTypes(pObjectType) * @param {String} pNewRelationTypeId the RelationType, a new relation should have, if this node is selected. * @param {Integer} [pNum=undefined] optional number added to the key. Needed, if the key would not be unique. * - * @return {Array[][]} the uids of the inserted data. Consists of [ObjectId, pEntryData-Index, AB_OBJECTRELATIONTYPEID, pObjectType (from param), pNodeId, objecttype (from entryId), objectrelationid] + * @return {Array[][]} the uids of the inserted data. Consists of [ObjectId, pEntryData-Index, AB_OBJECTRELATIONTYPEID, pObjectType (from param), pNodeId, objecttype (from entryId), objectrelationid, hierarchy] */ -function _insertEntry(pTree, pEntryData, pNodeId, pLayer, pObjectType, pNewRelationTypeId, pNum) +function _insertEntry(pTree, pEntryData, pNodeId, pLayer, pObjectType, pNewRelationTypeId, pHierarchy, pNum) { var expanded = true; if (pLayer > 10) expanded = false; @@ -262,7 +261,7 @@ function _insertEntry(pTree, pEntryData, pNodeId, pLayer, pObjectType, pNewRelat { var display = db.cell(ContextUtils.getNameSql(pObjectType, pEntryData[i][0])); // TODO: Icon - var uid = [pEntryData[i][0], i, pEntryData[i][5], pObjectType, pNodeId, pEntryData[i][2], pEntryData[i][1]] + var uid = [pEntryData[i][0], i, pEntryData[i][5], pObjectType, pNodeId, pEntryData[i][2], pEntryData[i][1], pHierarchy] if (pNum) uid.push(pNum); uids.push(uid); diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod index a35318329e9dad635efdbadc4064e3cf77ec41e4..649fb2c0f4c9b918e7245912d43ed74b40c57a42 100644 --- a/entity/Object_entity/Object_entity.aod +++ b/entity/Object_entity/Object_entity.aod @@ -30,12 +30,6 @@ <documentation>%aditoprj%/entity/Object_entity/entityfields/allobjects/documentation.adoc</documentation> <recordContainer>jdito</recordContainer> <dependencies> - <entityDependency> - <name>9810264a-4e53-4775-98eb-7025668c0021</name> - <entityName>ObjectRelation_entity</entityName> - <fieldName>Objects</fieldName> - <isConsumer v="false" /> - </entityDependency> <entityDependency> <name>445b79b3-e826-40d1-b6c2-46d62daf0818</name> <entityName>TaskLink_entity</entityName> diff --git a/entity/Object_entity/recordcontainers/jdito/contentProcess.js b/entity/Object_entity/recordcontainers/jdito/contentProcess.js index cc897167253658a76227405133616de5a988b233..4497cff4006889629e44c87348ca9169084ad09b 100644 --- a/entity/Object_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Object_entity/recordcontainers/jdito/contentProcess.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.db"); import("system.vars"); import("system.result"); @@ -11,9 +10,6 @@ if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param" if (vars.exists("$param.ExcludedObjectIds_param") && vars.get("$param.ExcludedObjectIds_param")) excludedIds = JSON.parse(vars.get("$param.ExcludedObjectIds_param")); - logging.log("aa22aa" + vars.get("$param.ExcludedObjectIds_param").toSource()) - logging.log("aa22aa" + vars.get("$param.ObjectType_param").toSource()) - result.object(db.table(ContextUtils.getContextDataSql(vars.get("$param.ObjectType_param"), undefined, false, undefined, false, excludedIds))) } else diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod index 36e8bee336ba4f8af8ccd2b908feffe9ff9e4333..51dc0bd7bfd69c2c7c0234e4865cb7fe70415659 100644 --- a/entity/Offer_entity/Offer_entity.aod +++ b/entity/Offer_entity/Offer_entity.aod @@ -359,9 +359,12 @@ <title>Choose address</title> <consumer>PossibleAddresses</consumer> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/chosenaddress/stateProcess.js</stateProcess> + <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/chosenaddress/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/chosenaddress/displayValueProcess.js</displayValueProcess> <onValueChange>%aditoprj%/entity/Offer_entity/entityfields/chosenaddress/onValueChange.js</onValueChange> <onValueChangeTypes> <element>MASK</element> + <element>PROCESS</element> </onValueChangeTypes> </entityField> <entityConsumer> @@ -728,30 +731,23 @@ <onDBDelete>%aditoprj%/entity/Offer_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> <linkInformation> - <name>19634909-a0a3-4fde-b875-e3b2b254e890</name> + <name>fdfae1fd-5eb3-4891-86b7-517803035f23</name> <tableName>OFFER</tableName> <primaryKey>OFFERID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> <linkInformation> - <name>1b7e5346-a8ce-4ef6-a227-a4557cba3294</name> + <name>d49d4390-5567-449b-8702-ee97dbfe1700</name> <tableName>CONTACT</tableName> <primaryKey>CONTACTID</primaryKey> <isUIDTable v="false" /> <readonly v="true" /> </linkInformation> <linkInformation> - <name>9c8f49ae-399f-49e8-a18a-fb4b84a360d0</name> - <tableName>ORGANISATION</tableName> - <primaryKey>ORGANISATIONID</primaryKey> - <isUIDTable v="false" /> - <readonly v="true" /> - </linkInformation> - <linkInformation> - <name>35ac875d-66c4-43b0-9293-b034f45260c8</name> - <tableName>PERSON</tableName> - <primaryKey>PERSONID</primaryKey> + <name>d165322e-cdf3-4611-9fea-0e100853ae80</name> + <tableName>SALESPROJECT</tableName> + <primaryKey>SALESPROJECTID</primaryKey> <isUIDTable v="false" /> <readonly v="true" /> </linkInformation> @@ -873,6 +869,10 @@ <name>DATE_EDIT.value</name> <recordfield>OFFER.DATE_EDIT</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SALESPROJECT_ID.displayValue</name> + <recordfield>SALESPROJECT.PROJECTTITLE</recordfield> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Offer_entity/entityfields/chosenaddress/displayValueProcess.js b/entity/Offer_entity/entityfields/chosenaddress/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..698ddd21921ba4623f9eeae0c1a61f579da714f5 --- /dev/null +++ b/entity/Offer_entity/entityfields/chosenaddress/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("PostalAddress_lib"); +import("system.result"); + +result.string(AddressUtils.getFormattedOnlineAddressById(vars.get("$this.value"))) \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/chosenaddress/valueProcess.js b/entity/Offer_entity/entityfields/chosenaddress/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..6ebcf9a49b9f2a8d6f2a5b7f54b38fb6a2481fce --- /dev/null +++ b/entity/Offer_entity/entityfields/chosenaddress/valueProcess.js @@ -0,0 +1,11 @@ +import("Contact_lib"); +import("system.result"); +import("system.neon"); +import("system.vars"); + +if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) && !vars.get("$field.ADDRESS")) +{ + var defaultAddressId = ContactUtils.getDefaultAddressId(vars.get("$field.CONTACT_ID")); + if (defaultAddressId) + result.string(defaultAddressId); +} \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/contact_id/onValueChange.js b/entity/Offer_entity/entityfields/contact_id/onValueChange.js index 98ae338e181debb430e224d724a4e4fc430d7f2d..21017ee1ee7962854598b28f6b669380403ecac1 100644 --- a/entity/Offer_entity/entityfields/contact_id/onValueChange.js +++ b/entity/Offer_entity/entityfields/contact_id/onValueChange.js @@ -1,20 +1,19 @@ -import("system.logging"); -import("system.neon"); -import("system.vars"); -import("system.db"); -import("Util_lib"); -import("Entity_lib"); -import("Contact_lib"); - -var contactid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID")); -if(contactid != "") -{ - //Language Preset - var relData = db.array(db.ROW, "select LANGUAGE from CONTACT where CONTACTID = '" + contactid + "'"); - if(relData[0] != "") - neon.setFieldValue("field.LANGUAGE", relData[0]); - - // set $field.CONTATCT_ORG_ID per contactid - var orgid = ContactUtils.getPersOrgIds(contactid); - neon.setFieldValue("$field.CONTACT_ORG_ID", orgid[2]); +import("system.neon"); +import("system.vars"); +import("system.db"); +import("Util_lib"); +import("Entity_lib"); +import("Contact_lib"); + +var contactid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID")); +if(contactid != "") +{ + //Language Preset + var relData = db.array(db.ROW, "select LANGUAGE from CONTACT where CONTACTID = '" + contactid + "'"); + if(relData[0] != "") + neon.setFieldValue("field.LANGUAGE", relData[0]); + + // set $field.CONTATCT_ORG_ID per contactid + var orgid = ContactUtils.getPersOrgIds(contactid); + neon.setFieldValue("$field.CONTACT_ORG_ID", orgid[2]); } \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/image/valueProcess.js b/entity/Offer_entity/entityfields/image/valueProcess.js index 17664f2a052b736ff699cf8cdee04a6b10d73fdc..0b7267521a413a9284fa209c96e92bdea08a20ae 100644 --- a/entity/Offer_entity/entityfields/image/valueProcess.js +++ b/entity/Offer_entity/entityfields/image/valueProcess.js @@ -1,6 +1,4 @@ import("system.vars"); import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); -result.string("TEXT:" + KeywordUtils.getViewValue($KeywordRegistry.offerStatus(), vars.getString("$field.STATUS")) ); \ No newline at end of file +result.string("TEXT:" + vars.get("$field.STATUS.displayValue")); \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/salesproject_id/stateProcess.js b/entity/Offer_entity/entityfields/salesproject_id/stateProcess.js index 1a1eb537b9b727aa99c48fe7236750b5c19c8e5a..1b35d9149a31ff3bebe48f47d48c54f55315e375 100644 --- a/entity/Offer_entity/entityfields/salesproject_id/stateProcess.js +++ b/entity/Offer_entity/entityfields/salesproject_id/stateProcess.js @@ -1,19 +1,17 @@ -import("system.logging"); -import("system.neon"); -import("system.result"); -import("system.vars"); -import("Entity_lib"); - - -switch (vars.get("$sys.recordstate")) -{ - case neon.OPERATINGSTATE_NEW: - //only EDITABLE if $field.CONTACT_ID is set - if(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID"))) - result.object(neon.COMPONENTSTATE_EDITABLE); - else - result.object(neon.COMPONENTSTATE_READONLY); - break; - default: - result.object(neon.COMPONENTSTATE_READONLY); +import("system.neon"); +import("system.result"); +import("system.vars"); +import("Entity_lib"); + +switch (vars.get("$sys.recordstate")) +{ + case neon.OPERATINGSTATE_NEW: + //only EDITABLE if $field.CONTACT_ID is set + if(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID"))) + result.object(neon.COMPONENTSTATE_EDITABLE); + else + result.object(neon.COMPONENTSTATE_READONLY); + break; + default: + result.object(neon.COMPONENTSTATE_READONLY); } \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js b/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js index 2b24f74fc8720337e690ffb5b66610529cdbb859..f2c342bc94674b7899c756a441619cddb1769980 100644 --- a/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js +++ b/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js @@ -1,7 +1,5 @@ -import("system.logging"); -import("system.vars"); -import("system.result"); -import("Entity_lib"); - -var contact = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ORG_ID")); -result.string(contact); \ No newline at end of file +import("system.vars"); +import("system.result"); +import("Entity_lib"); + +result.string(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ORG_ID"))); \ 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 2c33b4d7a687c225b0539799cc7262fab4048368..73ea32201ab969db8600af5c66bcafa1ad5523f6 100644 --- a/entity/Offer_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Offer_entity/recordcontainers/db/fromClauseProcess.js @@ -1,4 +1,4 @@ import("system.result"); result.string("OFFER 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 +left join SALESPROJECT on SALESPROJECTID = SALESPROJECT_ID"); \ No newline at end of file diff --git a/entity/Offeritem_entity/entityfields/discount/onValidation.js b/entity/Offeritem_entity/entityfields/discount/onValidation.js index a929b1d08a849904282a2e7c8d3a05bb77a7e4eb..2864ac016f3a9b00e8cc491bcf3fac9204e2ec90 100644 --- a/entity/Offeritem_entity/entityfields/discount/onValidation.js +++ b/entity/Offeritem_entity/entityfields/discount/onValidation.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.result"); import("system.vars"); import("Util_lib"); diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod index 30b9585984658b4e37c7a6c25280bf4221c1cbc6..92de79ba4fa97d6419751e7271a6bc246005e0b2 100644 --- a/entity/Order_entity/Order_entity.aod +++ b/entity/Order_entity/Order_entity.aod @@ -456,30 +456,23 @@ <onDBDelete>%aditoprj%/entity/Order_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> <linkInformation> - <name>f84d86a8-867d-44ea-bce5-3489bbee55a0</name> + <name>c1a83567-58d0-44bd-ae08-14018311a6ae</name> <tableName>SALESORDER</tableName> <primaryKey>SALESORDERID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> <linkInformation> - <name>2c489a72-00ee-4bad-929f-25ef82dbc714</name> + <name>7d433584-df9f-4b5b-bae4-f3b0a1962d59</name> <tableName>CONTACT</tableName> <primaryKey>CONTACTID</primaryKey> <isUIDTable v="false" /> <readonly v="true" /> </linkInformation> <linkInformation> - <name>3888fb8c-6d2a-42e6-8abd-e4a9ac7a74ac</name> - <tableName>ORGANISATION</tableName> - <primaryKey>ORGANISATIONID</primaryKey> - <isUIDTable v="false" /> - <readonly v="true" /> - </linkInformation> - <linkInformation> - <name>75470798-2097-41a2-95c2-22cf80d2f0c4</name> - <tableName>PERSON</tableName> - <primaryKey>PERSONID</primaryKey> + <name>33653e5e-df52-413c-9a91-349fd989ab89</name> + <tableName>SALESPROJECT</tableName> + <primaryKey>SALESPROJECTID</primaryKey> <isUIDTable v="false" /> <readonly v="true" /> </linkInformation> @@ -565,6 +558,10 @@ <name>OFFER_ID.value</name> <recordfield>SALESORDER.OFFER_ID</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SALESPROJECT_ID.displayValue</name> + <recordfield>SALESPROJECT.PROJECTTITLE</recordfield> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Order_entity/entityfields/image/valueProcess.js b/entity/Order_entity/entityfields/image/valueProcess.js index c02371b12bec59c4dcc278169f2d08c6fb919cc0..17507224aefcb223da7f2e3edca6b79ea9281930 100644 --- a/entity/Order_entity/entityfields/image/valueProcess.js +++ b/entity/Order_entity/entityfields/image/valueProcess.js @@ -1,6 +1,4 @@ import("system.vars"); import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); -result.string("TEXT:" + KeywordUtils.getViewValue($KeywordRegistry.salesorderState(), vars.getString("$field.STATUS")) ); +result.string("TEXT:" + vars.getString("$field.STATUS.displayValue")); diff --git a/entity/Order_entity/entityfields/language/displayValueProcess.js b/entity/Order_entity/entityfields/language/displayValueProcess.js index 528cfe6e1659e4d9d720cd96594f2aa5be7ac58d..d60342f7264e2cb7c41a787563070a80c827eb53 100644 --- a/entity/Order_entity/entityfields/language/displayValueProcess.js +++ b/entity/Order_entity/entityfields/language/displayValueProcess.js @@ -1,15 +1,15 @@ -import("system.db"); -import("system.translate"); -import("system.result"); -import("system.vars"); -import("Sql_lib"); - -if (vars.exists("$param.OrderLanguage_param")) -{ - var iso3 = vars.get("$param.OrderLanguage_param"); - var latinName = db.cell(SqlCondition.begin() - .andPrepare("AB_LANGUAGE.ISO3", iso3) - .buildSql("select NAME_LATIN from AB_LANGUAGE", "1=0")); - latinName = translate.text(latinName); - result.string(latinName); +import("system.db"); +import("system.translate"); +import("system.result"); +import("system.vars"); +import("Sql_lib"); + +if (vars.exists("$param.OrderLanguage_param") && vars.get("$param.OrderLanguage_param")) +{ + var iso3 = vars.get("$param.OrderLanguage_param"); + var latinName = db.cell(SqlCondition.begin() + .andPrepare("AB_LANGUAGE.ISO3", iso3) + .buildSql("select NAME_LATIN from AB_LANGUAGE", "1=0")); + latinName = translate.text(latinName); + result.string(latinName); } \ No newline at end of file diff --git a/entity/Order_entity/entityfields/status/displayValueProcess.js b/entity/Order_entity/entityfields/status/displayValueProcess.js index 70976b2e028f23867e8f6addad7cdd3517f3c5e0..4a9b7bcc8b2f66e295eafc8c09f796d693249001 100644 --- a/entity/Order_entity/entityfields/status/displayValueProcess.js +++ b/entity/Order_entity/entityfields/status/displayValueProcess.js @@ -1,6 +1,6 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string(KeywordUtils.getViewValue($KeywordRegistry.salesorderState(), vars.get("$field.STATUS"))); +import("system.result"); +import("system.vars"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + +result.string(KeywordUtils.getViewValue($KeywordRegistry.salesorderState(), vars.get("$field.STATUS"))); diff --git a/entity/Order_entity/recordcontainers/db/fromClauseProcess.js b/entity/Order_entity/recordcontainers/db/fromClauseProcess.js index 24ccfcf71b16a96c4d72afc35d8340a254b90baf..5972289c6996fa45ee4b680dfa87ef3d2e0c2048 100644 --- a/entity/Order_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Order_entity/recordcontainers/db/fromClauseProcess.js @@ -1,3 +1,4 @@ import("system.result"); -result.string("SALESORDER left join CONTACT on CONTACTID = CONTACT_ID left join ORGANISATION on ORGANISATIONID = ORGANISATION_ID"); \ No newline at end of file +result.string("SALESORDER left join CONTACT on CONTACTID = CONTACT_ID \n\ +left join SALESPROJECT on SALESPROJECTID = SALESPROJECT_ID"); \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js index f2b9a0bfd51ec122ed45118cc0db8673efa32eb4..aa54f4f9efa30b7b8af672c9c43e70ed29d54b6c 100644 --- a/entity/Order_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js +++ b/entity/Order_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js @@ -2,5 +2,4 @@ import("system.result"); import("Keyword_lib"); import("KeywordRegistry_basic"); -var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesorderState(), "SALESORDER.STATUS"); -result.string(sql); +result.string(KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesorderState(), "SALESORDER.STATUS")); diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index f9ace0913133af8421cbd1462193143eec6e1b36..ad19186315b3869a0a3b1be60a5bf80d3cf6100f 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -390,8 +390,6 @@ <fieldType>DEPENDENCY_OUT</fieldType> <dependency> <name>dependency</name> - <entityName>ObjectRelation_entity</entityName> - <fieldName>ObjectRelations</fieldName> </dependency> <children> <entityParameter> diff --git a/entity/Organisation_entity/entityfields/newappointment/onActionProcess.js b/entity/Organisation_entity/entityfields/newappointment/onActionProcess.js index 475936e13803b10cfb274cf925f189ffbc54049c..fde05a49a0df1146c17e05dc3775b82ea0de6f12 100644 --- a/entity/Organisation_entity/entityfields/newappointment/onActionProcess.js +++ b/entity/Organisation_entity/entityfields/newappointment/onActionProcess.js @@ -1,14 +1,13 @@ -import("system.vars"); -import("system.logging"); -import("system.neon"); -import("system.calendars"); -import("Calendar_lib"); -import("system.date"); -import("Context_lib"); - - -var params = {}; -params["Entry_param"] = JSON.stringify(CalendarUtil.createEntry(calendars.VEVENT, "neue Termin weissu", "", false, ContextUtils.getCurrentContextId(), vars.get("$field.ORGANISATIONID"))); - -neon.openContext("Appointment", "AppointmentEdit_view", null, neon.OPERATINGSTATE_NEW, params); - +import("system.vars"); +import("system.neon"); +import("system.calendars"); +import("Calendar_lib"); +import("system.date"); +import("Context_lib"); + + +var params = {}; +params["Entry_param"] = JSON.stringify(CalendarUtil.createEntry(calendars.VEVENT, "neue Termin weissu", "", false, ContextUtils.getCurrentContextId(), vars.get("$field.ORGANISATIONID"))); + +neon.openContext("Appointment", "AppointmentEdit_view", null, neon.OPERATINGSTATE_NEW, params); + diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index c224f074ad62d8477b0462eb39cf415b9eedfc21..d4cf26bf841cfe120cc2b36103c2d3c2de591e0d 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -421,6 +421,11 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <consumer>EmailCommunications</consumer> <searchable v="false" /> <onValueChange>%aditoprj%/entity/Person_entity/entityfields/standard_email_communication/onValueChange.js</onValueChange> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> </entityField> <entityField> <name>STANDARD_PHONE_COMMUNICATION</name> @@ -490,8 +495,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <fieldType>DEPENDENCY_OUT</fieldType> <dependency> <name>dependency</name> - <entityName>ObjectRelation_entity</entityName> - <fieldName>ObjectRelations</fieldName> </dependency> <children> <entityParameter> diff --git a/entity/Person_entity/entityfields/address_id/valueProcess.js b/entity/Person_entity/entityfields/address_id/valueProcess.js index 72dfe18cc06b3c7b652af1305f4498c40fc101ae..f5131447594b4ae38c216e849e0bca9324adaa78 100644 --- a/entity/Person_entity/entityfields/address_id/valueProcess.js +++ b/entity/Person_entity/entityfields/address_id/valueProcess.js @@ -1,7 +1,7 @@ -import("system.logging"); import("system.result"); import("system.vars"); import("StandardObject_lib"); + // Check if the standard address is already set. if (vars.get("$field.ADDRESS_ID") === null || vars.get("$field.ADDRESS_ID") === "" || vars.get("$field.ADDRESS_ID") == 0) { var possibleStandardAddressID = new StandardObject("Address", null, "Person", vars.get("$field.PERSONID")) diff --git a/entity/Person_entity/entityfields/status/displayValueProcess.js b/entity/Person_entity/entityfields/status/displayValueProcess.js index 4ce3577f00ef6af8c3cf3886f6a3d7a729b9e064..b9185cff9ec6fc9022ed92033e064118bfc493b7 100644 --- a/entity/Person_entity/entityfields/status/displayValueProcess.js +++ b/entity/Person_entity/entityfields/status/displayValueProcess.js @@ -9,4 +9,4 @@ if (key) var res = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), key); result.string(res); } - + \ No newline at end of file diff --git a/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js b/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js index eeef1e962f6196a9eb632698f6860c216068cb51..bb5fcc0559027a3fd5ab7534a4cc4a53a2ea2a71 100644 --- a/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.neon"); import("system.result"); import("system.vars"); diff --git a/entity/Productprice_entity/entityfields/image/valueProcess.js b/entity/Productprice_entity/entityfields/image/valueProcess.js index 1a61d32b892076cb93d6b4a4faeec1cf026a9ea8..8ba121f73f08d59b6efda0fbaa02d9761e31b5b3 100644 --- a/entity/Productprice_entity/entityfields/image/valueProcess.js +++ b/entity/Productprice_entity/entityfields/image/valueProcess.js @@ -1,5 +1,4 @@ import("system.vars"); import("system.result"); -import("Keyword_lib"); -result.string("TEXT:" + vars.get("$field.BUYSELL") ); \ No newline at end of file +result.string("TEXT:" + vars.getString("$field.PRICELIST.displayValue")); \ No newline at end of file diff --git a/entity/SalesprojectAnalyses_entity/entityfields/open_salesprojects/valueProcess.js b/entity/SalesprojectAnalyses_entity/entityfields/open_salesprojects/valueProcess.js index d58be99a6a23f3797888dbc9fe370413dad3b9a1..edfcaddcb840d27088338ff6d7b3624ce73938ff 100644 --- a/entity/SalesprojectAnalyses_entity/entityfields/open_salesprojects/valueProcess.js +++ b/entity/SalesprojectAnalyses_entity/entityfields/open_salesprojects/valueProcess.js @@ -1,14 +1,13 @@ -import("system.datetime"); -import("system.db"); -import("system.result"); -import("system.vars"); -import("Date_lib"); -import("system.logging"); -import("Sql_lib"); -import("system.SQLTYPES") - -var opensp = db.cell("select count(STATE) from SALESPROJECT \n\ -join AB_KEYWORD_ENTRY on KEYID = STATE and CONTAINER = 'SalesprojectState' and TITLE = 'Open' \n\ -group by KEYID, AB_KEYWORD_ENTRY.TITLE"); - +import("system.datetime"); +import("system.db"); +import("system.result"); +import("system.vars"); +import("Date_lib"); +import("Sql_lib"); +import("system.SQLTYPES") + +var opensp = db.cell("select count(STATE) from SALESPROJECT \n\ +join AB_KEYWORD_ENTRY on KEYID = STATE and CONTAINER = 'SalesprojectState' and TITLE = 'Open' \n\ +group by KEYID, AB_KEYWORD_ENTRY.TITLE"); + result.string(opensp); \ No newline at end of file diff --git a/entity/SalesprojectAnalyses_entity/entityfields/overall_forecast/valueProcess.js b/entity/SalesprojectAnalyses_entity/entityfields/overall_forecast/valueProcess.js index b1f1ae8c0052bfa40c6ffb555ff4197450caf553..48cfc6320620c6baf8bba6379b6dffe9f3cc6e15 100644 --- a/entity/SalesprojectAnalyses_entity/entityfields/overall_forecast/valueProcess.js +++ b/entity/SalesprojectAnalyses_entity/entityfields/overall_forecast/valueProcess.js @@ -1,14 +1,13 @@ -import("system.datetime"); -import("system.db"); -import("system.result"); -import("system.vars"); -import("Date_lib"); -import("system.logging"); -import("Sql_lib"); -import("system.SQLTYPES") - -var forecast = db.cell(SqlCondition.begin() - .andPrepare("SALESPROJECT_FORECAST.DATE_START", datetime.toDate(vars.get("$sys.date"), "yyyy"), "year(#) = ?", SQLTYPES.INTEGER) - .buildSql("select sum(VOLUME * 1000) from SALESPROJECT_FORECAST", "1=2")); - +import("system.datetime"); +import("system.db"); +import("system.result"); +import("system.vars"); +import("Date_lib"); +import("Sql_lib"); +import("system.SQLTYPES") + +var forecast = db.cell(SqlCondition.begin() + .andPrepare("SALESPROJECT_FORECAST.DATE_START", datetime.toDate(vars.get("$sys.date"), "yyyy"), "year(#) = ?", SQLTYPES.INTEGER) + .buildSql("select sum(VOLUME * 1000) from SALESPROJECT_FORECAST", "1=2")); + result.string(forecast); \ No newline at end of file diff --git a/entity/SalesprojectAnalyses_entity/entityfields/overall_turnover/valueProcess.js b/entity/SalesprojectAnalyses_entity/entityfields/overall_turnover/valueProcess.js index a08d40a129380b9383c59d1a175f75b5e31f5767..9c8e5ea68dc50dc8a1b7f3ddb63eeffa651d316f 100644 --- a/entity/SalesprojectAnalyses_entity/entityfields/overall_turnover/valueProcess.js +++ b/entity/SalesprojectAnalyses_entity/entityfields/overall_turnover/valueProcess.js @@ -1,14 +1,13 @@ -import("system.datetime"); -import("system.db"); -import("system.result"); -import("system.vars"); -import("Date_lib"); -import("system.logging"); -import("Sql_lib"); -import("system.SQLTYPES") - -var turnover = db.cell(SqlCondition.begin() - .andPrepare("SALESORDER.SALESORDERDATE", datetime.toDate(vars.get("$sys.date"), "yyyy"), "year(#) = ?", SQLTYPES.INTEGER) - .buildSql("select sum(NET + VAT) from SALESORDER", "1=2")); - +import("system.datetime"); +import("system.db"); +import("system.result"); +import("system.vars"); +import("Date_lib"); +import("Sql_lib"); +import("system.SQLTYPES") + +var turnover = db.cell(SqlCondition.begin() + .andPrepare("SALESORDER.SALESORDERDATE", datetime.toDate(vars.get("$sys.date"), "yyyy"), "year(#) = ?", SQLTYPES.INTEGER) + .buildSql("select sum(NET + VAT) from SALESORDER", "1=2")); + result.string(turnover); \ No newline at end of file diff --git a/entity/SalesprojectAnalyses_entity/entityfields/sent_offers/valueProcess.js b/entity/SalesprojectAnalyses_entity/entityfields/sent_offers/valueProcess.js index c415d73135ceb0683dd670668442589b62e5660a..8d610d08abc6ca281facdb29e790696741a5dd85 100644 --- a/entity/SalesprojectAnalyses_entity/entityfields/sent_offers/valueProcess.js +++ b/entity/SalesprojectAnalyses_entity/entityfields/sent_offers/valueProcess.js @@ -1,13 +1,12 @@ -import("system.datetime"); -import("system.db"); -import("system.result"); -import("system.vars"); -import("Date_lib"); -import("system.logging"); -import("Sql_lib"); -import("system.SQLTYPES") - -var sentoffer = db.cell("select count(STATUS) from OFFER join AB_KEYWORD_ENTRY \n\ -on KEYID = STATUS and CONTAINER = 'OfferStatus' and TITLE = 'Sent' group by KEYID, AB_KEYWORD_ENTRY.TITLE"); - +import("system.datetime"); +import("system.db"); +import("system.result"); +import("system.vars"); +import("Date_lib"); +import("Sql_lib"); +import("system.SQLTYPES") + +var sentoffer = db.cell("select count(STATUS) from OFFER join AB_KEYWORD_ENTRY \n\ +on KEYID = STATUS and CONTAINER = 'OfferStatus' and TITLE = 'Sent' group by KEYID, AB_KEYWORD_ENTRY.TITLE"); + result.string(sentoffer); \ No newline at end of file diff --git a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod index f479afb820b077913c99b9e6e8d8b705ea07aad8..2424d7542058a15e42df7b7e48896db39b7a579f 100644 --- a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod +++ b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod @@ -18,6 +18,7 @@ <entityField> <name>INFO</name> <title>Info</title> + <contentType>LONG_TEXT</contentType> </entityField> <entityField> <name>REASON</name> @@ -258,6 +259,12 @@ </entityParameter> </children> </entityConsumer> + <entityField> + <name>IMAGE</name> + <contentType>IMAGE</contentType> + <valueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/image/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/image/displayValueProcess.js</displayValueProcess> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/SalesprojectCompetition_entity/entityfields/image/displayValueProcess.js b/entity/SalesprojectCompetition_entity/entityfields/image/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/entity/SalesprojectCompetition_entity/entityfields/image/valueProcess.js b/entity/SalesprojectCompetition_entity/entityfields/image/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d071e384e95b26e1b3013d43ac5c4f45ae4cc579 --- /dev/null +++ b/entity/SalesprojectCompetition_entity/entityfields/image/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string("TEXT:" + vars.getString("$field.ORGANISATION_NAME")); \ No newline at end of file diff --git a/entity/SalesprojectCycle_entity/entityfields/date_edit/valueProcess.js b/entity/SalesprojectCycle_entity/entityfields/date_edit/valueProcess.js deleted file mode 100644 index 710ac8a06a9911f82ff222c7d9d231846ca93fb2..0000000000000000000000000000000000000000 --- a/entity/SalesprojectCycle_entity/entityfields/date_edit/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) - result.string(vars.getString("$sys.date")); \ No newline at end of file diff --git a/entity/SalesprojectCycle_entity/entityfields/date_new/valueProcess.js b/entity/SalesprojectCycle_entity/entityfields/date_new/valueProcess.js deleted file mode 100644 index 3a0d59096cd2de39b6098f1ed95af580dcebfce0..0000000000000000000000000000000000000000 --- a/entity/SalesprojectCycle_entity/entityfields/date_new/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.getString("$sys.date")); \ No newline at end of file diff --git a/entity/SalesprojectCycle_entity/entityfields/type/possibleItemsProcess.js b/entity/SalesprojectCycle_entity/entityfields/type/possibleItemsProcess.js deleted file mode 100644 index effac991d6646dd9c7969dedb551820331abebf9..0000000000000000000000000000000000000000 --- a/entity/SalesprojectCycle_entity/entityfields/type/possibleItemsProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); - -var items = LegacyKeywordUtils.getStandardArray("SALESPROJECT.CYCLE.TYPE"); -result.object(items); \ No newline at end of file diff --git a/entity/SalesprojectCycle_entity/entityfields/user_edit/valueProcess.js b/entity/SalesprojectCycle_entity/entityfields/user_edit/valueProcess.js deleted file mode 100644 index 1581e18d9763043ae602b98658f87cb0a3b0c967..0000000000000000000000000000000000000000 --- a/entity/SalesprojectCycle_entity/entityfields/user_edit/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) - result.string(vars.getString("$sys.user")); \ No newline at end of file diff --git a/entity/SalesprojectCycle_entity/entityfields/user_new/valueProcess.js b/entity/SalesprojectCycle_entity/entityfields/user_new/valueProcess.js deleted file mode 100644 index 7c566863b493d778b72dea7d8822f6a59333e77d..0000000000000000000000000000000000000000 --- a/entity/SalesprojectCycle_entity/entityfields/user_new/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.getString("$sys.user")); \ No newline at end of file diff --git a/entity/SalesprojectCycle_entity/entityfields/value/possibleItemsProcess.js b/entity/SalesprojectCycle_entity/entityfields/value/possibleItemsProcess.js deleted file mode 100644 index 512b10f2cc7f884a6d5a532ce0223ad938e8fcb0..0000000000000000000000000000000000000000 --- a/entity/SalesprojectCycle_entity/entityfields/value/possibleItemsProcess.js +++ /dev/null @@ -1,20 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); - -var items, keyword, type; - -items = []; - -type = vars.getString("$field.TYPE"); - -// load the possible values based on the type. -if (type) { - keyword = LegacyKeywordUtils.get("SALESPROJECT.CYCLE.TYPE", type)[2].keyword; - - if (keyword) { - items = LegacyKeywordUtils.getStandardArray(keyword); - } -} - -result.object(items); diff --git a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod b/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod index 945e940b05d1be8647b5655996ccf1b92b6d45ea..7a4816bce187d9b02b224a6baed1b8d05867a3f5 100644 --- a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod +++ b/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod @@ -24,6 +24,7 @@ <entityField> <name>INFO</name> <title>Info</title> + <contentType>LONG_TEXT</contentType> </entityField> <entityField> <name>SALESPROJECT_FORECASTID</name> diff --git a/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod similarity index 51% rename from entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod rename to entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod index fbf0ff3b285905a417c48780fe7940f73534a02d..d390c31108e434406bb56161e32cbe4d650f5a9f 100644 --- a/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod +++ b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod @@ -1,6 +1,6 @@ <?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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1"> - <name>SalesprojectCycle_entity</name> + <name>SalesprojectMilestone_entity</name> <title>Milestones</title> <majorModelMode>DISTRIBUTED</majorModelMode> <recordContainer>db</recordContainer> @@ -24,24 +24,27 @@ <outputFormat>dd.MM.yyyy</outputFormat> </entityField> <entityField> - <name>SALESPROJECT_CYCLEID</name> - <valueProcess>%aditoprj%/entity/SalesprojectCycle_entity/entityfields/salesproject_cycleid/valueProcess.js</valueProcess> + <name>SALESPROJECT_MILESTONEID</name> + <searchable v="false" /> + <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/salesproject_milestoneid/valueProcess.js</valueProcess> </entityField> <entityField> <name>SALESPROJECT_ID</name> - <valueProcess>%aditoprj%/entity/SalesprojectCycle_entity/entityfields/salesproject_id/valueProcess.js</valueProcess> + <searchable v="false" /> + <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/salesproject_id/valueProcess.js</valueProcess> </entityField> <entityField> <name>TYPE</name> <title>Type</title> <mandatory v="true" /> - <possibleItemsProcess>%aditoprj%/entity/SalesprojectCycle_entity/entityfields/type/possibleItemsProcess.js</possibleItemsProcess> + <displayValueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/type/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>VALUE</name> <title>Milestone</title> + <consumer>Keywords</consumer> <mandatory v="true" /> - <possibleItemsProcess>%aditoprj%/entity/SalesprojectCycle_entity/entityfields/value/possibleItemsProcess.js</possibleItemsProcess> + <displayValueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js</displayValueProcess> </entityField> <entityParameter> <name>SalesprojectId_param</name> @@ -51,14 +54,14 @@ <description>PARAMETER</description> </entityParameter> <entityProvider> - <name>SalesprojectCycles</name> + <name>SalesprojectMilestones</name> <fieldType>DEPENDENCY_IN</fieldType> <recordContainer>db</recordContainer> <dependencies> <entityDependency> <name>b05e2bdf-5d8b-4ba2-8dba-a8560c255470</name> <entityName>Salesproject_entity</entityName> - <fieldName>SalesprojectCycles</fieldName> + <fieldName>SalesprojectMilestones</fieldName> <isConsumer v="false" /> </entityDependency> </dependencies> @@ -69,19 +72,43 @@ </entityParameter> </children> </entityProvider> + <entityField> + <name>DaysCount</name> + <title>Days count</title> + <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/dayscount/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>PARENT</name> + </entityField> + <entityConsumer> + <name>Keywords</name> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> <name>db</name> <title></title> <alias>Data_alias</alias> - <conditionProcess>%aditoprj%/entity/SalesprojectCycle_entity/recordcontainers/db/conditionProcess.js</conditionProcess> - <onDBUpdate>%aditoprj%/entity/SalesprojectCycle_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> + <conditionProcess>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <orderClauseProcess>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> + <onDBUpdate>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> <linkInformation> <linkInformation> <name>464f1fd7-e5b6-4cfc-92f8-4873d4e10ce3</name> - <tableName>SALESPROJECT_CYCLE</tableName> - <primaryKey>SALESPROJECT_CYCLEID</primaryKey> + <tableName>SALESPROJECT_MILESTONE</tableName> + <primaryKey>SALESPROJECT_MILESTONEID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> @@ -89,27 +116,31 @@ <recordFieldMappings> <dbRecordFieldMapping> <name>DATE_END.value</name> - <recordfield>SALESPROJECT_CYCLE.DATE_END</recordfield> + <recordfield>SALESPROJECT_MILESTONE.DATE_END</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>DATE_START.value</name> - <recordfield>SALESPROJECT_CYCLE.DATE_START</recordfield> + <recordfield>SALESPROJECT_MILESTONE.DATE_START</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> - <name>SALESPROJECT_CYCLEID.value</name> - <recordfield>SALESPROJECT_CYCLE.SALESPROJECT_CYCLEID</recordfield> + <name>SALESPROJECT_MILESTONEID.value</name> + <recordfield>SALESPROJECT_MILESTONE.SALESPROJECT_MILESTONEID</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>TYPE.value</name> - <recordfield>SALESPROJECT_CYCLE.TYPE</recordfield> + <recordfield>SALESPROJECT_MILESTONE.TYPE</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>VALUE.value</name> - <recordfield>SALESPROJECT_CYCLE.VALUE</recordfield> + <recordfield>SALESPROJECT_MILESTONE.VALUE</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>SALESPROJECT_ID.value</name> - <recordfield>SALESPROJECT_CYCLE.SALESPROJECT_ID</recordfield> + <recordfield>SALESPROJECT_MILESTONE.SALESPROJECT_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PARENT.value</name> + <expression>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js</expression> </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> diff --git a/entity/SalesprojectCycle_entity/conditionProcess.js b/entity/SalesprojectMilestone_entity/conditionProcess.js similarity index 72% rename from entity/SalesprojectCycle_entity/conditionProcess.js rename to entity/SalesprojectMilestone_entity/conditionProcess.js index 01636c9c6c0e376f52c0a692d6d6bd7e8d755e9b..7711ad471a8ed5e095a39703339fdedc6bc6153f 100644 --- a/entity/SalesprojectCycle_entity/conditionProcess.js +++ b/entity/SalesprojectMilestone_entity/conditionProcess.js @@ -4,7 +4,7 @@ import("system.vars"); import("Sql_lib"); var cond = new SqlCondition(); -cond.andPrepareVars("SALESPROJECT_CYCLE.SALESPROJECT_ID", "$param.SalesprojectId_param"); +cond.andPrepareVars("SALESPROJECT_MILESTONE.SALESPROJECT_ID", "$param.SalesprojectId_param"); //TODO: use a preparedCondition when available #1030812 #1034026 result.string(db.translateCondition(cond.build("1 = 1"))); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/date_edit/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/date_edit/valueProcess.js similarity index 100% rename from entity/ObjectRelation_entity/entityfields/date_edit/valueProcess.js rename to entity/SalesprojectMilestone_entity/entityfields/date_edit/valueProcess.js diff --git a/entity/ObjectRelation_entity/entityfields/date_new/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/date_new/valueProcess.js similarity index 100% rename from entity/ObjectRelation_entity/entityfields/date_new/valueProcess.js rename to entity/SalesprojectMilestone_entity/entityfields/date_new/valueProcess.js diff --git a/entity/SalesprojectMilestone_entity/entityfields/dayscount/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/dayscount/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c8db7ec7ba0e820f2e89fa0c6bb48100073811e5 --- /dev/null +++ b/entity/SalesprojectMilestone_entity/entityfields/dayscount/valueProcess.js @@ -0,0 +1,15 @@ +import("system.result"); +import("system.vars"); +import("system.datetime"); + +var start = parseInt(vars.get("$field.DATE_START")); +var end = vars.get("$field.DATE_END"); + +if (!end) + end = parseInt(vars.get("$sys.date")); + +end = parseInt(end); + +var oneDay = datetime.ONE_DAY; +var diffDays = Math.round(Math.abs((end - start)/(oneDay))); +result.string(diffDays); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/object1/children/objecttype_param/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js similarity index 51% rename from entity/ObjectRelation_entity/entityfields/object1/children/objecttype_param/valueProcess.js rename to entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js index 0e35811c9fc30b9f87c3e4dda4235787fb0066f7..1b532aec63043fba84acf422369129fb9706bc12 100644 --- a/entity/ObjectRelation_entity/entityfields/object1/children/objecttype_param/valueProcess.js +++ b/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.OBJECT1_TYPE")) \ No newline at end of file +result.string(vars.get("$field.TYPE")); \ No newline at end of file diff --git a/entity/SalesprojectCycle_entity/entityfields/salesproject_id/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/salesproject_id/valueProcess.js similarity index 100% rename from entity/SalesprojectCycle_entity/entityfields/salesproject_id/valueProcess.js rename to entity/SalesprojectMilestone_entity/entityfields/salesproject_id/valueProcess.js diff --git a/entity/SalesprojectCycle_entity/entityfields/salesproject_cycleid/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/salesproject_milestoneid/valueProcess.js similarity index 100% rename from entity/SalesprojectCycle_entity/entityfields/salesproject_cycleid/valueProcess.js rename to entity/SalesprojectMilestone_entity/entityfields/salesproject_milestoneid/valueProcess.js diff --git a/entity/SalesprojectMilestone_entity/entityfields/type/displayValueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/type/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..20dd9c7dc7b04a439a16a2a9b4cd833c78f3f964 --- /dev/null +++ b/entity/SalesprojectMilestone_entity/entityfields/type/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("Keyword_lib"); + +result.string(KeywordUtils.getTranslatedContainer(vars.get("$field.TYPE"))); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/user_edit/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/user_edit/valueProcess.js similarity index 100% rename from entity/ObjectRelation_entity/entityfields/user_edit/valueProcess.js rename to entity/SalesprojectMilestone_entity/entityfields/user_edit/valueProcess.js diff --git a/entity/ObjectRelation_entity/entityfields/user_new/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/user_new/valueProcess.js similarity index 100% rename from entity/ObjectRelation_entity/entityfields/user_new/valueProcess.js rename to entity/SalesprojectMilestone_entity/entityfields/user_new/valueProcess.js diff --git a/entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..5a8a9c5933eb25e1aadbbdc66fa8ac545c1d12b5 --- /dev/null +++ b/entity/SalesprojectMilestone_entity/entityfields/value/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("Keyword_lib"); + +result.string(KeywordUtils.getViewValue(vars.get("$field.TYPE"), vars.get("$field.VALUE"))) \ No newline at end of file diff --git a/entity/SalesprojectCycle_entity/recordcontainers/db/conditionProcess.js b/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js similarity index 72% rename from entity/SalesprojectCycle_entity/recordcontainers/db/conditionProcess.js rename to entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js index 01636c9c6c0e376f52c0a692d6d6bd7e8d755e9b..7711ad471a8ed5e095a39703339fdedc6bc6153f 100644 --- a/entity/SalesprojectCycle_entity/recordcontainers/db/conditionProcess.js +++ b/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js @@ -4,7 +4,7 @@ import("system.vars"); import("Sql_lib"); var cond = new SqlCondition(); -cond.andPrepareVars("SALESPROJECT_CYCLE.SALESPROJECT_ID", "$param.SalesprojectId_param"); +cond.andPrepareVars("SALESPROJECT_MILESTONE.SALESPROJECT_ID", "$param.SalesprojectId_param"); //TODO: use a preparedCondition when available #1030812 #1034026 result.string(db.translateCondition(cond.build("1 = 1"))); \ No newline at end of file diff --git a/entity/SalesprojectCycle_entity/recordcontainers/db/onDBUpdate.js b/entity/SalesprojectMilestone_entity/recordcontainers/db/onDBUpdate.js similarity index 100% rename from entity/SalesprojectCycle_entity/recordcontainers/db/onDBUpdate.js rename to entity/SalesprojectMilestone_entity/recordcontainers/db/onDBUpdate.js diff --git a/entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js b/entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f05ac4a9bca40cede00cff420feb6e4343d2c2cd --- /dev/null +++ b/entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +result.object({ + "SALESPROJECT_MILESTONE.DATE_END": false +}); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/entityfields/providertype_param/valueProcess.js b/entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js similarity index 52% rename from entity/ObjectRelation_entity/entityfields/providertype_param/valueProcess.js rename to entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js index 981503eee34d83611c7bf484a2fab5e86840bf03..e5c82e9c86a2c395736339cb57fe1e2fede85a2e 100644 --- a/entity/ObjectRelation_entity/entityfields/providertype_param/valueProcess.js +++ b/entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js @@ -1,3 +1,2 @@ import("system.result"); - -result.string("none"); \ No newline at end of file +result.string("''") \ No newline at end of file diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index fc82706d6730f269f6bb3b6e4c086aa88e2ae458..a7c8206d47e7428825c0f1c5f304530f20e5f385 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -36,6 +36,7 @@ <entityField> <name>INFO</name> <title>Information</title> + <contentType>LONG_TEXT</contentType> </entityField> <entityField> <name>PHASE</name> @@ -88,6 +89,10 @@ <mandatory v="true" /> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/state/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/state/displayValueProcess.js</displayValueProcess> + <onValueChange>%aditoprj%/entity/Salesproject_entity/entityfields/state/onValueChange.js</onValueChange> + <onValueChangeTypes> + <element>MASK</element> + </onValueChangeTypes> </entityField> <entityField> <name>VOLUME</name> @@ -130,18 +135,18 @@ </children> </entityConsumer> <entityConsumer> - <name>SalesprojectCycles</name> + <name>SalesprojectMilestones</name> <title>Milestone</title> <fieldType>DEPENDENCY_OUT</fieldType> <dependency> <name>dependency</name> - <entityName>SalesprojectCycle_entity</entityName> - <fieldName>SalesprojectCycles</fieldName> + <entityName>SalesprojectMilestone_entity</entityName> + <fieldName>SalesprojectMilestones</fieldName> </dependency> <children> <entityParameter> <name>SalesprojectId_param</name> - <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectcycles/children/salesprojectid_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectmilestones/children/salesprojectid_param/valueProcess.js</valueProcess> <triggerRecalculation v="true" /> </entityParameter> </children> diff --git a/entity/Salesproject_entity/entityfields/image/valueProcess.js b/entity/Salesproject_entity/entityfields/image/valueProcess.js index c04626b8e075d07b742f63f4810cde51d710516e..9f3f41e5b0ec89b6d2c4146f107984b702575a95 100644 --- a/entity/Salesproject_entity/entityfields/image/valueProcess.js +++ b/entity/Salesproject_entity/entityfields/image/valueProcess.js @@ -1,6 +1,4 @@ import("system.vars"); import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); -result.string("TEXT:" + KeywordUtils.getViewValue($KeywordRegistry.salesprojectState(), vars.getString("$field.STATE")) ); \ No newline at end of file +result.string("TEXT:" + vars.getString("$field.PROJECTTITLE")); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/reasons/possibleItemsProcess.js b/entity/Salesproject_entity/entityfields/reasons/possibleItemsProcess.js index 82ceaf9374045d62c97d1b960f3d336663b4517c..650da662b99acacb43ca5af76c2556762f8a33f1 100644 --- a/entity/Salesproject_entity/entityfields/reasons/possibleItemsProcess.js +++ b/entity/Salesproject_entity/entityfields/reasons/possibleItemsProcess.js @@ -1,6 +1,5 @@ -import("system.logging"); -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - +import("system.result"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + result.object(KeywordUtils.getEntryNamesAndIdsByContainer("SalesprojectWonLost")); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/salesprojectcycles/children/salesprojectid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/salesprojectmilestones/children/salesprojectid_param/valueProcess.js similarity index 100% rename from entity/Salesproject_entity/entityfields/salesprojectcycles/children/salesprojectid_param/valueProcess.js rename to entity/Salesproject_entity/entityfields/salesprojectmilestones/children/salesprojectid_param/valueProcess.js diff --git a/entity/Salesproject_entity/entityfields/state/onValueChange.js b/entity/Salesproject_entity/entityfields/state/onValueChange.js new file mode 100644 index 0000000000000000000000000000000000000000..fd8dae9d669334bc145bbc55b693b70a55e63726 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/state/onValueChange.js @@ -0,0 +1,28 @@ +import("system.vars"); +import("Sql_lib"); +import("system.db"); +import("KeywordRegistry_basic"); +import("Keyword_lib"); +import("system.translate"); +import("system.question"); +import("system.neon"); + +if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW) +{ + var state = vars.get("$field.STATE"); + + // Postponed + if (state == '23d38486-4cce-41ce-a8df-164ad44df706') + { + var stateName = KeywordUtils.getViewValue($KeywordRegistry.salesprojectState(), state); + var clearForecast = question.askYesNo(translate.withArguments("Clear forecast and set state to '%0'?", [stateName]), translate.withArguments("Would you really like to clear the forecast and set the state to '%0'?" + "\n" + translate.text("This cannot be undone!"), [stateName]), false); + + if (!clearForecast) + { + // reset to value from db + neon.setFieldValue("$field.STATE", db.cell(SqlCondition.begin() + .andPrepareVars("SALESPROJECT.SALESPROJECTID", "$field.SALESPROJECTID") + .buildSql("select STATE from SALESPROJECT", "1=2"))); + } + } +} diff --git a/entity/Salesproject_entity/onDBInsert.js b/entity/Salesproject_entity/onDBInsert.js deleted file mode 100644 index 46e16c3d687c541b66574fd13cfaa2c00fff2b87..0000000000000000000000000000000000000000 --- a/entity/Salesproject_entity/onDBInsert.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.vars"); -import("Salesproject_lib"); - -Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), 1, vars.get("$field.PHASE"), false); -Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), 2, vars.get("$field.STATE"), true); \ No newline at end of file diff --git a/entity/Salesproject_entity/onDBUpdate.js b/entity/Salesproject_entity/onDBUpdate.js deleted file mode 100644 index 514b528e696d35c1b2116d3fa05826d6e030790e..0000000000000000000000000000000000000000 --- a/entity/Salesproject_entity/onDBUpdate.js +++ /dev/null @@ -1,24 +0,0 @@ -import("system.vars"); -import("Salesproject_lib"); - -var typeValue, fieldVar - -// create Milestones if changed -vars.get("$local.changed").forEach(function(fieldName) { - switch (fieldName) { - case "SALESPROJECT.PHASE": - typeValue = 1; - fieldVar = "$field.PHASE"; - break; - case "SALESPROJECT.STATE": - typeValue = 2; - fieldVar = "$field.STATE"; - break; - } - - if (typeValue) { - Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), typeValue, vars.getString(fieldVar), true); - } -}); - - diff --git a/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js b/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js index 49d846ad22819fbcb59e5dd83febe4a886c64412..f3a32a333dafdf4816b96cb701a339e4613f2827 100644 --- a/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js @@ -1,21 +1,20 @@ -import("system.logging"); -import("system.db"); -import("system.result"); -import("system.vars"); -import("Sql_lib"); - -if(vars.exists("$param.State_param") && vars.get("$param.State_param") && vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param")) -{ - result.string(db.translateCondition( - SqlCondition.begin() - .andPrepareVars("SALESPROJECT.CONTACT_ID", "$param.ContactId_param") - .andPrepareVars("SALESPROJECT.STATE", "$param.State_param") - .build("1 = 2"))); -} -else -{ - result.string(db.translateCondition( - SqlCondition.begin() - .andPrepareVars("SALESPROJECT.CONTACT_ID", "$param.ContactId_param") - .build("1 = 1"))); +import("system.db"); +import("system.result"); +import("system.vars"); +import("Sql_lib"); + +if(vars.exists("$param.State_param") && vars.get("$param.State_param") && vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param")) +{ + result.string(db.translateCondition( + SqlCondition.begin() + .andPrepareVars("SALESPROJECT.CONTACT_ID", "$param.ContactId_param") + .andPrepareVars("SALESPROJECT.STATE", "$param.State_param") + .build("1 = 2"))); +} +else +{ + result.string(db.translateCondition( + SqlCondition.begin() + .andPrepareVars("SALESPROJECT.CONTACT_ID", "$param.ContactId_param") + .build("1 = 1"))); } \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js b/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js index 6d045ce9112fca4328a5253e983ff41f722cb449..65d94ab76dadcf8189255ca1a84187d9132b9f1f 100644 --- a/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js +++ b/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js @@ -1,5 +1,4 @@ import("system.db"); -import("system.logging"); import("system.vars"); import("Sql_lib"); @@ -10,7 +9,7 @@ if (currentId) var toDelete = [ "SALESPROJECT_COMPETITION", "SALESPROJECT_CLASSIFICATION", - "SALESPROJECT_CYCLE", + "SALESPROJECT_MILESTONE", "SALESPROJECT_FORECAST", "SALESPROJECT_MEMBER", "SALESPROJECT_SOURCE" diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js b/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js index 47067fdfe5c683417c30b9d75a0d753324d8534d..49491bda0074fa9406df07580128dfd6240db2cb 100644 --- a/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js @@ -1,6 +1,5 @@ import("system.vars"); import("Salesproject_lib"); -// TODO Milestone Value is still an Integer but has to be a String (varchar) -// Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), 1, vars.get("$field.PHASE"), false); -// Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), 2, vars.get("$field.STATE"), true); \ No newline at end of file +Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), "SalesprojectPhase", vars.get("$field.PHASE"), false); +Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), "SalesprojectState", vars.get("$field.STATE"), true); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js index 2d558ee7cdb5dd210634cf5484ad18187e706d0b..95c901de86dfdf90d075c1311539cfe8971f4886 100644 --- a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js @@ -4,9 +4,11 @@ import("system.vars"); import("Salesproject_lib"); import("Sql_lib"); import("system.db"); +import("system.question"); import("KeywordRegistry_basic"); +import("Keyword_lib"); -var needToUpdateForecast = false; +var needToUpdateForecast = null; // create Milestones if changed vars.get("$local.changed").forEach(function(fieldName) { @@ -17,18 +19,18 @@ vars.get("$local.changed").forEach(function(fieldName) { switch (fieldName) { case "SALESPROJECT.PHASE": - typeValue = 1; + typeValue = "SalesprojectPhase"; fieldVar = "$field.PHASE"; break; case "SALESPROJECT.STATE": // Milestone - typeValue = 2; + typeValue = "SalesprojectState"; fieldVar = "$field.STATE"; - + var state = vars.get(fieldVar); // set COMPETITION / OFFER to Lost // Lost - if ( vars.get("$field.STATE") == 'd8a60f60-a4e6-46ee-88ec-bac53e1afedd') + if (state == 'd8a60f60-a4e6-46ee-88ec-bac53e1afedd') { // set all offers of the salesproject to lost db.updateData("OFFER", ["STATUS"], null, ["a5682630-01ae-4769-8f03-47dc1db44da4"], SqlCondition.equals("OFFER.SALESPROJECT_ID", vars.getString("$field.SALESPROJECTID"), "1=2")); @@ -36,15 +38,22 @@ vars.get("$local.changed").forEach(function(fieldName) { clearReason = false; } // Order - else if (vars.get("$field.STATE") == '130bb53a-a97e-455e-8f34-8d445e985474') + else if (state == '130bb53a-a97e-455e-8f34-8d445e985474') { // set all competitions of the salesproject to lost db.updateData("SALESPROJECT_COMPETITION", ["STATUS"], null, ["ff73172c-8517-4b6e-98cb-43aebacd9af1"], SqlCondition.equals("SALESPROJECT_COMPETITION.SALESPROJECT_ID", vars.getString("$field.SALESPROJECTID"), "1=2")); _updateReasons(); clearReason = false; } + // Postponed + else if (state == '23d38486-4cce-41ce-a8df-164ad44df706') + { + // do not notify as the user just got a question, if he really would like to clear the forecast + needToUpdateForecast = false; + db.deleteData("SALESPROJECT_FORECAST", SqlCondition.equals("SALESPROJECT_FORECAST.SALESPROJECT_ID", vars.getString("$field.SALESPROJECTID"), "1=2")); + } // if state changed, but not to one of the above states - else if (clearReason == undefined) + else { clearReason = true; } @@ -59,9 +68,11 @@ vars.get("$local.changed").forEach(function(fieldName) { if (typeValue) { - needToUpdateForecast = true; - // TODO Milestone Value is still an Integer but has to be a String (varchar) -> use new keywords - //Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), typeValue, vars.getString(fieldVar)); + // only notify, if not explicitely set to false above + if (needToUpdateForecast === null) + needToUpdateForecast = true; + + Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), typeValue, vars.getString(fieldVar)); } }); diff --git a/entity/Stock_entity/entityfields/image/valueProcess.js b/entity/Stock_entity/entityfields/image/valueProcess.js index 0693b6bd4810fe8d10495205a0383559738d533a..7a22eb5dbcdaa6b5c7e0651873ced2a6bdad0623 100644 --- a/entity/Stock_entity/entityfields/image/valueProcess.js +++ b/entity/Stock_entity/entityfields/image/valueProcess.js @@ -1,6 +1,5 @@ import("system.translate"); import("system.vars"); import("system.result"); -import("Keyword_lib"); result.string("TEXT:" + (vars.get("$field.IN_OUT") == "1" ? translate.text("IN") : translate.text("OUT") ) ); \ No newline at end of file diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod index 5a6394af6a270b012f70e4325dd0bf2410126902..1f5d2049a1880f6c66d2ab5d0e68b620ca0c5e52 100644 --- a/entity/Task_entity/Task_entity.aod +++ b/entity/Task_entity/Task_entity.aod @@ -51,6 +51,7 @@ <consumer>ContactRequestors</consumer> <linkedContext>Person</linkedContext> <mandatory v="true" /> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/requestor_contact_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js</displayValueProcess> </entityField> <entityField> @@ -383,6 +384,12 @@ <documentation>%aditoprj%/entity/Task_entity/entityfields/presetlinks_param/documentation.adoc</documentation> <description>PARAMETER</description> </entityParameter> + <entityField> + <name>SUBJECT_DETAILS</name> + <title>subject</title> + <linkedContext>Task</linkedContext> + <mandatory v="true" /> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -485,6 +492,10 @@ <name>PROGRESS.displayValue</name> <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/progress.displayvalue/expression.js</expression> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SUBJECT_DETAILS.value</name> + <recordfield>TASK.SUBJECT</recordfield> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Task_entity/entityfields/requestor_contact_id/valueProcess.js b/entity/Task_entity/entityfields/requestor_contact_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..1e62e7551ccb20b0b0d7aca34f64b6e448b5dda7 --- /dev/null +++ b/entity/Task_entity/entityfields/requestor_contact_id/valueProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); +import("Employee_lib"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(EmployeeUtils.getCurrentContactId()); \ No newline at end of file diff --git a/entity/Timetracking_entity/Timetracking_entity.aod b/entity/Timetracking_entity/Timetracking_entity.aod index 621e193b43e4142e3a8588ba17876d95cb549f77..5ecb9a7fa6f694d0a682f27818d42801abee4958 100644 --- a/entity/Timetracking_entity/Timetracking_entity.aod +++ b/entity/Timetracking_entity/Timetracking_entity.aod @@ -12,6 +12,11 @@ <name>INFO</name> <title>Description</title> <contentType>LONG_TEXT</contentType> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> </entityField> <entityField> <name>MINUTES</name> diff --git a/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js b/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js index e25db6b1024be40f497efdb97d94f7ff2ba0f925..cee26913021aaca4b49d84e0a50eca912e8a2799 100644 --- a/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js @@ -101,6 +101,9 @@ function _addMonth(pYear, pMonth, pData, pCategory) function _addProducts(pYear, pMonth, pData, pCategory) { + var monthDate = new Date(pYear, pMonth-1); + monthDate = datetime.toDate(monthDate.getTime(), "MMM yyyy", "UTC"); + var groupcodeSums = {}; for (let i = 0; i < pData.length; i++) @@ -131,6 +134,8 @@ function _addProducts(pYear, pMonth, pData, pCategory) for (let groupcode in groupcodeSums) { if (groupcodeSums[groupcode]["sum"]) - chartData.add(pCategory + pYear + pMonth + groupcode, pCategory + pYear + pMonth, [pCategory, groupcodeSums[groupcode]["name"], groupcodeSums[groupcode]["sum"]]); + { + chartData.add(pCategory + pYear + pMonth + groupcode, pCategory + pYear + pMonth, [pCategory, groupcodeSums[groupcode]["name"] + " (" + monthDate.toString() + ")", groupcodeSums[groupcode]["sum"]]); + } } } diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index d879997ad260f2afece34d77e0eab26400fcba93..c3ee7d877f3d269da36b01d0933bf562b9707051 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -2829,6 +2829,42 @@ <entry> <key>Zeigt wie viele Vertriebsprojekte in den einzelnen Vertriebsphasen sind. </key> </entry> + <entry> + <key>Enable relation type 2</key> + </entry> + <entry> + <key>Salesproject Analyses</key> + </entry> + <entry> + <key>Wichtigste Kennzahlen zu den Vertriebsprojekten.</key> + </entry> + <entry> + <key>ObjectRelationType</key> + </entry> + <entry> + <key>SalesprojectPhase</key> + </entry> + <entry> + <key>SalesprojectState</key> + </entry> + <entry> + <key>Days count</key> + </entry> + <entry> + <key>Clear forecast and set state to \"%0\"?</key> + </entry> + <entry> + <key>Would you like to clear the forecast and set the state to \"%0\"?</key> + </entry> + <entry> + <key>Clear forecast and set state to '%0'?</key> + </entry> + <entry> + <key>Would you really like to clear the forecast and set the state to '%0'?</key> + </entry> + <entry> + <key>This cannot be undone!</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 418ed9962b822f3d766434ef0b1ad623d6d61bf4..c50f65492bcce2295d8bed1c178044b9d7188142 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -6,6 +6,10 @@ <country></country> <variant></variant> <keyValueMap> + <entry> + <key>SalesprojectState</key> + <value>Status</value> + </entry> <entry> <key>Project management</key> <value>Projektmanagement</value> @@ -46,6 +50,10 @@ <key>Discount %</key> <value>Rabatt %</value> </entry> + <entry> + <key>SalesprojectPhase</key> + <value>Phase</value> + </entry> <entry> <key>Email must be unique!</key> <value>Die E-Mail-Adresse muss eindeutig sein!</value> @@ -2125,6 +2133,10 @@ <key>Spain</key> <value>Spanien</value> </entry> + <entry> + <key>ObjectRelationType</key> + <value>Beziehungstyp</value> + </entry> <entry> <key>Palau</key> <value>Palau</value> @@ -3609,11 +3621,11 @@ </entry> <entry> <key>Context 1</key> - <value>Kontext 1</value> + <value>Context 1</value> </entry> <entry> <key>Context 2</key> - <value>Kontext2</value> + <value>Context 2</value> </entry> <entry> <key>Tochter</key> @@ -3632,6 +3644,38 @@ <entry> <key>Successful</key> </entry> + <entry> + <key>Enable relation type 2</key> + <value>Beziehungsart 2 aktiv</value> + </entry> + <entry> + <key>Salesproject Analyses</key> + </entry> + <entry> + <key>Wichtigste Kennzahlen zu den Vertriebsprojekten.</key> + </entry> + <entry> + <key>Days count</key> + <value>Anzahl Tage</value> + </entry> + <entry> + <key>Clear forecast and set state to '%0'?</key> + <value>Forecast löschen und status auf '%0' setzen?</value> + </entry> + <entry> + <key>Would you really like to clear the forecast and set the state to '%0'?</key> + <value>Möchten Sie wirklich den Forecast löschen und den status auf '%0' setzen?</value> + </entry> + <entry> + <key>This cannot be undone!</key> + <value>Das kann nicht rückgängig gemacht werden!</value> + </entry> + <entry> + <key>Clear forecast and set state to \"%0\"?</key> + </entry> + <entry> + <key>Would you like to clear the forecast and set the state to \"%0\"?</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 7e420651fbbf10eaf035cdde342c5accd91830f8..d928e37d3dd103737d20031ddce232595e85c0ad 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -2861,6 +2861,42 @@ <entry> <key>Zeigt wie viele Vertriebsprojekte in den einzelnen Vertriebsphasen sind. </key> </entry> + <entry> + <key>Enable relation type 2</key> + </entry> + <entry> + <key>Salesproject Analyses</key> + </entry> + <entry> + <key>Wichtigste Kennzahlen zu den Vertriebsprojekten.</key> + </entry> + <entry> + <key>ObjectRelationType</key> + </entry> + <entry> + <key>SalesprojectPhase</key> + </entry> + <entry> + <key>SalesprojectState</key> + </entry> + <entry> + <key>Days count</key> + </entry> + <entry> + <key>Clear forecast and set state to \"%0\"?</key> + </entry> + <entry> + <key>Would you like to clear the forecast and set the state to \"%0\"?</key> + </entry> + <entry> + <key>Clear forecast and set state to '%0'?</key> + </entry> + <entry> + <key>Would you really like to clear the forecast and set the state to '%0'?</key> + </entry> + <entry> + <key>This cannot be undone!</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/Activity/Activity.aod b/neonContext/Activity/Activity.aod index 7cadf528888dcd44e0b3aa271f9b7420a78600cc..25ae52541afc98821f91d6cc70a13005028d0803 100644 --- a/neonContext/Activity/Activity.aod +++ b/neonContext/Activity/Activity.aod @@ -21,10 +21,6 @@ <name>9b432ee5-c767-4c47-ad2a-66d2163557d1</name> <view>ActivityEdit_view</view> </neonViewReference> - <neonViewReference> - <name>e0af0a30-934b-4063-a4cf-9ba0c848a4db</name> - <view>ActivityTimeline_view</view> - </neonViewReference> <neonViewReference> <name>23964361-3977-4d2d-8af4-5cac94406d3d</name> <view>ActivityMain_view</view> diff --git a/neonContext/ObjectRelation/ObjectRelation.aod b/neonContext/ObjectRelation/ObjectRelation.aod deleted file mode 100644 index ea16cff33f05f5f1638a7376279ffa11ec90a32b..0000000000000000000000000000000000000000 --- a/neonContext/ObjectRelation/ObjectRelation.aod +++ /dev/null @@ -1,23 +0,0 @@ -<?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>ObjectRelation</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <filterview>ObjectRelationFilter_view</filterview> - <editview>ObjectRelationEdit_view</editview> - <preview>ObjectRelationPreview_view</preview> - <entity>ObjectRelation_entity</entity> - <references> - <neonViewReference> - <name>dc0bd793-a472-4a7b-8394-06c4bc31258a</name> - <view>ObjectRelationPreview_view</view> - </neonViewReference> - <neonViewReference> - <name>30334c84-5e46-4a4e-a5c4-3c42d1cb109b</name> - <view>ObjectRelationEdit_view</view> - </neonViewReference> - <neonViewReference> - <name>ec83a8eb-11a5-4544-8a06-47789704a626</name> - <view>ObjectRelationFilter_view</view> - </neonViewReference> - </references> -</neonContext> diff --git a/neonContext/ObjectRelationType/ObjectRelationType.aod b/neonContext/ObjectRelationType/ObjectRelationType.aod index 2cfbf3567d625732b3fa18caa800ada1ccc514b7..c90b46ece5109ab161d5df449e410baa5bcfc690 100644 --- a/neonContext/ObjectRelationType/ObjectRelationType.aod +++ b/neonContext/ObjectRelationType/ObjectRelationType.aod @@ -6,7 +6,6 @@ <icon>VAADIN:SPLIT</icon> <filterview>ObjectRelationTypeFilter_view</filterview> <editview>ObjectRelationTypeEdit_view</editview> - <preview>ObjectRelationTypePreview_view</preview> <entity>ObjectRelationType_entity</entity> <references> <neonViewReference> @@ -17,9 +16,5 @@ <name>afb5b3c7-fb34-4511-8b72-34808d64e226</name> <view>ObjectRelationTypeEdit_view</view> </neonViewReference> - <neonViewReference> - <name>b4cb3fc0-03ed-48d5-bd0c-725623865bc3</name> - <view>ObjectRelationTypePreview_view</view> - </neonViewReference> </references> </neonContext> diff --git a/neonContext/Offer/Offer.aod b/neonContext/Offer/Offer.aod index e1d68da5ca5cac83a93742e7ee2cdd8e82dbede4..ff88eb5a2d7980c3abf9393624b544b07a813d0d 100644 --- a/neonContext/Offer/Offer.aod +++ b/neonContext/Offer/Offer.aod @@ -28,7 +28,7 @@ </neonViewReference> <neonViewReference> <name>a68c9d63-aff4-4e82-af23-72d20c2b6b76</name> - <view>OfferDetail_view</view> + <view>OfferCoverLetter_view</view> </neonViewReference> </references> </neonContext> diff --git a/neonContext/Salesproject/Salesproject.aod b/neonContext/Salesproject/Salesproject.aod index feef4560535219df0acd527d75fd4d3a46569d5c..a5422082d260a0e651632846afbc6b826ae25ff3 100644 --- a/neonContext/Salesproject/Salesproject.aod +++ b/neonContext/Salesproject/Salesproject.aod @@ -26,9 +26,5 @@ <name>c35cc718-94a8-43cf-afe4-f02d251d4e9f</name> <view>SalesprojectEdit_view</view> </neonViewReference> - <neonViewReference> - <name>d7fb7e2b-c932-4b96-be2c-ae5ec3d36beb</name> - <view>SalesprojectCycle_view</view> - </neonViewReference> </references> </neonContext> diff --git a/neonContext/SalesprojectCycle/SalesprojectCycle.aod b/neonContext/SalesprojectCycle/SalesprojectCycle.aod deleted file mode 100644 index 59f07fb175bfea67747b8d4b582d3ece986a0d2b..0000000000000000000000000000000000000000 --- a/neonContext/SalesprojectCycle/SalesprojectCycle.aod +++ /dev/null @@ -1,24 +0,0 @@ -<?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>SalesprojectCycle</name> - <description>Milestones of a salesproject</description> - <majorModelMode>DISTRIBUTED</majorModelMode> - <filterview>SalesprojectCycleFilter_view</filterview> - <editview>SalesprojectCycleEdit_view</editview> - <preview>SalesprojectCyclePreview_view</preview> - <entity>SalesprojectCycle_entity</entity> - <references> - <neonViewReference> - <name>5de9785c-92cc-4fe1-ae13-8d65b9a68ce0</name> - <view>SalesprojectCycleFilter_view</view> - </neonViewReference> - <neonViewReference> - <name>04073406-1035-4a3b-919b-7e0bfda699e0</name> - <view>SalesprojectCycleEdit_view</view> - </neonViewReference> - <neonViewReference> - <name>b3a4073e-9431-4de1-a4d5-c9d11a71a214</name> - <view>SalesprojectCyclePreview_view</view> - </neonViewReference> - </references> -</neonContext> diff --git a/neonContext/SalesprojectMilestone/SalesprojectMilestone.aod b/neonContext/SalesprojectMilestone/SalesprojectMilestone.aod new file mode 100644 index 0000000000000000000000000000000000000000..3626804e1c32ebcc9f4fbb25529c806c6937080f --- /dev/null +++ b/neonContext/SalesprojectMilestone/SalesprojectMilestone.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>SalesprojectMilestone</name> + <description>Milestones of a salesproject</description> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterview>SalesprojectMilestoneChart_view</filterview> + <entity>SalesprojectMilestone_entity</entity> + <references> + <neonViewReference> + <name>54bee07a-f45d-458a-bfc6-56ba4992b63d</name> + <view>SalesprojectMilestoneChart_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonView/ActivityFilter_view/ActivityFilter_view.aod b/neonView/ActivityFilter_view/ActivityFilter_view.aod index 23705e8e116a6b2eb35774168fab902f939b03a2..78a81d68932c0bf91139e730cb800fc2b19df0a3 100644 --- a/neonView/ActivityFilter_view/ActivityFilter_view.aod +++ b/neonView/ActivityFilter_view/ActivityFilter_view.aod @@ -55,11 +55,16 @@ </groupLayout> </layout> <children> - <neonViewReference> - <name>0e5e5791-af45-4f3f-a8fb-44656e1556c3</name> + <timelineViewTemplate> + <name>ActivitiesTimeline</name> + <dateField>ENTRYDATE</dateField> + <titleField>SUBJECT_DETAILS</titleField> + <descriptionField>INFO</descriptionField> + <iconIdField>DIRECTION_ICON</iconIdField> + <hideTime v="true" /> <entityField>#ENTITY</entityField> - <view>ActivityTimeline_view</view> - </neonViewReference> + <maxDBRow v="400" /> + </timelineViewTemplate> <tableViewTemplate> <name>ActivitiesTable</name> <entityField>#ENTITY</entityField> @@ -88,7 +93,7 @@ </tableViewTemplate> <treeViewTemplate> <name>ActivitiesTreetable</name> - <titleField>SUBJECT</titleField> + <titleField>SUBJECT_DETAILS</titleField> <descriptionField>INFO</descriptionField> <iconField>#IMAGE</iconField> <entityField>#ENTITY</entityField> diff --git a/neonView/ActivityMain_view/ActivityMain_view.aod b/neonView/ActivityMain_view/ActivityMain_view.aod index 5b4191c6e9cf1a0ea8a561619e53f979f6d95c0c..57a928f08c54150ae14580797d167ace94c4aba2 100644 --- a/neonView/ActivityMain_view/ActivityMain_view.aod +++ b/neonView/ActivityMain_view/ActivityMain_view.aod @@ -29,11 +29,6 @@ <entityField>Documents</entityField> <view>DocumentFilter_view</view> </neonViewReference> - <neonViewReference> - <name>6066d539-d392-4688-931a-409c10fa1fbe</name> - <entityField>Links</entityField> - <view>ActivityLinkFilter_view</view> - </neonViewReference> <neonViewReference> <name>8ffd03a7-a841-4674-96bf-04689d46cf48</name> <entityField>Attributes</entityField> diff --git a/neonView/ActivityTimeline_view/ActivityTimeline_view.aod b/neonView/ActivityTimeline_view/ActivityTimeline_view.aod index 843f80320fbc70ff39617c013a4984c3d6dfe880..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/neonView/ActivityTimeline_view/ActivityTimeline_view.aod +++ b/neonView/ActivityTimeline_view/ActivityTimeline_view.aod @@ -1,22 +0,0 @@ -<?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>ActivityTimeline_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <timelineViewTemplate> - <name>Activities</name> - <dateField>ENTRYDATE</dateField> - <titleField>SUBJECT_DETAILS</titleField> - <descriptionField>INFO</descriptionField> - <iconIdField>DIRECTION_ICON</iconIdField> - <hideTime v="true" /> - <entityField>#ENTITY</entityField> - <maxDBRow v="500" /> - </timelineViewTemplate> - </children> -</neonView> diff --git a/neonView/ContractFilter_view/ContractFilter_view.aod b/neonView/ContractFilter_view/ContractFilter_view.aod index 4933b78162863b690531c4dfb8d4d145f8e90a0d..c508588317a7ad788ca44f004382c3120b2f2bc6 100644 --- a/neonView/ContractFilter_view/ContractFilter_view.aod +++ b/neonView/ContractFilter_view/ContractFilter_view.aod @@ -62,14 +62,6 @@ <name>845c3a71-0fa9-4299-9b85-8fa25f92436d</name> <entityField>CONTRACTEND</entityField> </neonTableColumn> - <neonTableColumn> - <name>b72f0fa5-43ba-4852-9dfa-db592193e5a6</name> - <entityField>PAYMENT</entityField> - </neonTableColumn> - <neonTableColumn> - <name>ae80fe48-c0c7-4b53-b014-a25417c6fb35</name> - <entityField>CONTRACTDUE</entityField> - </neonTableColumn> </columns> </tableViewTemplate> </children> diff --git a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod index 31283c6fff3ca4221d2f5c881bba0963824645ee..061bbb6eebafc1131e711f7ab64fe66fb11bba7d 100644 --- a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod +++ b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod @@ -2,6 +2,7 @@ <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>KeywordEntryEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <isSmall v="true" /> <layout> <boxLayout> <name>layout</name> diff --git a/neonView/ObjectRelationEdit_view/ObjectRelationEdit_view.aod b/neonView/ObjectRelationEdit_view/ObjectRelationEdit_view.aod deleted file mode 100644 index 7f3ae6c82059100ec5d878d094c2b6a53398658b..0000000000000000000000000000000000000000 --- a/neonView/ObjectRelationEdit_view/ObjectRelationEdit_view.aod +++ /dev/null @@ -1,31 +0,0 @@ -<?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>ObjectRelationEdit_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <genericViewTemplate> - <name>Edit</name> - <editMode v="true" /> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>c3ef719e-2453-4216-a13a-1c1debafe410</name> - <entityField>selectedObjectRelationTypeIdProxy</entityField> - </entityFieldLink> - <entityFieldLink> - <name>f60a0e0d-c3a9-4ab7-9b52-b33f5bb61d31</name> - <entityField>rowIdProxy</entityField> - </entityFieldLink> - <entityFieldLink> - <name>04579da5-0609-4a43-97dd-9e773ec1a29b</name> - <entityField>INFO</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - </children> -</neonView> diff --git a/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod b/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod deleted file mode 100644 index 0199c5d9ca0cb5b21d21753de06d4d23125798f3..0000000000000000000000000000000000000000 --- a/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod +++ /dev/null @@ -1,32 +0,0 @@ -<?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>ObjectRelationFilter_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <filterable v="true" /> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <tableViewTemplate> - <name>ObjectRelations</name> - <autoNewRow v="true" /> - <entityField>#ENTITY</entityField> - <columns> - <neonTableColumn> - <name>02c397e9-092b-4df0-be67-0fa3a1b02432</name> - <entityField>selectedObjectRelationTypeIdProxy</entityField> - </neonTableColumn> - <neonTableColumn> - <name>ab25081c-cb63-4d28-87d0-e4c022aac878</name> - <entityField>rowIdProxy</entityField> - </neonTableColumn> - <neonTableColumn> - <name>a5e8b3d6-ff83-461a-ba28-d67e0df5d93d</name> - <entityField>INFO</entityField> - </neonTableColumn> - </columns> - </tableViewTemplate> - </children> -</neonView> diff --git a/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod b/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod deleted file mode 100644 index 6e5496348316ec265eda9c40167c3750dc10bcba..0000000000000000000000000000000000000000 --- a/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod +++ /dev/null @@ -1,27 +0,0 @@ -<?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>ObjectRelationPreview_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <genericViewTemplate> - <name>Objects</name> - <entityField>#ENTITY</entityField> - <title>Object</title> - <fields> - <entityFieldLink> - <name>8b21eea2-b6ec-492f-9bfe-4937b61ba1ef</name> - <entityField>OBJECT1_ROWID</entityField> - </entityFieldLink> - <entityFieldLink> - <name>eabe1737-7a31-4181-8c32-bda6a9f7d7e9</name> - <entityField>OBJECT2_ROWID</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - </children> -</neonView> diff --git a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod index 03950156117d7a1eb4f37b9efb67b833453a8c7b..6560a70b55a6184da2e9bb2fcfd0cf2ca821d37f 100644 --- a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod +++ b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod @@ -21,6 +21,10 @@ <name>ffaf9de0-6866-4d0a-80af-42b57169d83e</name> <entityField>SOURCE_OBJECT_TYPE</entityField> </entityFieldLink> + <entityFieldLink> + <name>8c839d7f-31c2-4339-a74a-ff5fb83288df</name> + <entityField>Type2Enabled_proxy</entityField> + </entityFieldLink> <entityFieldLink> <name>0fd227e4-2896-4ce3-b699-8e5ce82a2862</name> <entityField>DEST_RELATION_TITLE</entityField> diff --git a/neonView/OfferDetail_view/OfferDetail_view.aod b/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod similarity index 68% rename from neonView/OfferDetail_view/OfferDetail_view.aod rename to neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod index a465d174bc221a0fa4ada807e8f2cb3aa9d104d3..3eb7add5eefa24bba18d5cee1d847b29ddb3118a 100644 --- a/neonView/OfferDetail_view/OfferDetail_view.aod +++ b/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> - <name>OfferDetail_view</name> - <title>Details</title> + <name>OfferCoverLetter_view</name> + <title>Cover letter</title> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> <boxLayout> @@ -12,18 +12,10 @@ <genericViewTemplate> <name>Details</name> <showDrawer v="true" /> - <drawerCaption>Detail</drawerCaption> + <drawerCaption>Cover letter</drawerCaption> <entityField>#ENTITY</entityField> <title></title> <fields> - <entityFieldLink> - <name>f0d0c68a-8437-4d9e-b852-575efaa984e8</name> - <entityField>DELIVERYTERMS</entityField> - </entityFieldLink> - <entityFieldLink> - <name>c66f5e5b-82ad-4f93-9951-d96dfb802dbe</name> - <entityField>PAYMENTTERMS</entityField> - </entityFieldLink> <entityFieldLink> <name>ab742325-7d03-4dfd-8afb-779dd8da805b</name> <entityField>INFO</entityField> diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod index 541ac072d5e3df256b4b726da078a091dd94bd8f..ee8f03128aa738e1bdce1f7eb404d0ebd6eeb547 100644 --- a/neonView/OfferFilter_view/OfferFilter_view.aod +++ b/neonView/OfferFilter_view/OfferFilter_view.aod @@ -53,6 +53,10 @@ <name>Offers</name> <entityField>#ENTITY</entityField> <columns> + <neonTableColumn> + <name>5755c4a7-0ec4-4ba8-9fa8-a64c440042f8</name> + <entityField>IMAGE</entityField> + </neonTableColumn> <neonTableColumn> <name>4d40cee3-bcb1-4e67-8c1d-d5fc2e49cc11</name> <entityField>FullOfferCode</entityField> diff --git a/neonView/OfferMain_view/OfferMain_view.aod b/neonView/OfferMain_view/OfferMain_view.aod index fd194c1b379bf81e5201f48d3f4bf360ff3fb234..ea4a89a44810d450579b611e28b0e28cf923ff86 100644 --- a/neonView/OfferMain_view/OfferMain_view.aod +++ b/neonView/OfferMain_view/OfferMain_view.aod @@ -22,7 +22,7 @@ <neonViewReference> <name>e6b12eed-d67e-467c-9302-f6340f901235</name> <entityField>#ENTITY</entityField> - <view>OfferDetail_view</view> + <view>OfferCoverLetter_view</view> </neonViewReference> <neonViewReference> <name>a3702740-418d-40d5-9415-788542c14abb</name> diff --git a/neonView/OfferPreview_view/OfferPreview_view.aod b/neonView/OfferPreview_view/OfferPreview_view.aod index 5a36edbfc7aa6617c5da3e4dffde6d27c92f7ffd..5ebc5733ab8f4abba5d853538e634828874a9593 100644 --- a/neonView/OfferPreview_view/OfferPreview_view.aod +++ b/neonView/OfferPreview_view/OfferPreview_view.aod @@ -82,6 +82,14 @@ <name>3317b73e-68e8-41a8-a678-89c7c7c8513e</name> <entityField>SALESPROJECT_ID</entityField> </entityFieldLink> + <entityFieldLink> + <name>59daee43-0e79-49d8-a36a-5ce4c491def9</name> + <entityField>PAYMENTTERMS</entityField> + </entityFieldLink> + <entityFieldLink> + <name>a3a9ee30-bdd2-4907-b215-d4b4adcc0f1d</name> + <entityField>DELIVERYTERMS</entityField> + </entityFieldLink> </fields> </genericViewTemplate> <neonViewReference> diff --git a/neonView/OrderFilter_view/OrderFilter_view.aod b/neonView/OrderFilter_view/OrderFilter_view.aod index f631fc736b5d10bc66abd6f4ea02ff47273dd088..0c2cb08ffc4b05dab0f2d3a167f55501d47086f1 100644 --- a/neonView/OrderFilter_view/OrderFilter_view.aod +++ b/neonView/OrderFilter_view/OrderFilter_view.aod @@ -53,6 +53,10 @@ <name>Orders</name> <entityField>#ENTITY</entityField> <columns> + <neonTableColumn> + <name>8d4948c3-40cb-45dd-ae04-32ae06458b26</name> + <entityField>IMAGE</entityField> + </neonTableColumn> <neonTableColumn> <name>60b83daa-9349-4bef-94d8-5f1fc350da59</name> <entityField>SALESORDERCODE</entityField> diff --git a/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod b/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod index ae8dfc222cf2f206b7905db3294cd6c06b599d30..e3f46d0784614e5bfe394425774171e73e0d5b8c 100644 --- a/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod +++ b/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod @@ -10,7 +10,9 @@ <children> <cardViewTemplate> <name>Header</name> + <iconField>IMAGE</iconField> <titleField>CONTACT_ID</titleField> + <subtitleField>CONTACT_ID</subtitleField> <descriptionField>INFO</descriptionField> <entityField>#ENTITY</entityField> </cardViewTemplate> diff --git a/neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod b/neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod deleted file mode 100644 index de1a3461bb5e7138fb90ae3348fb4f79c2134ebc..0000000000000000000000000000000000000000 --- a/neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod +++ /dev/null @@ -1,35 +0,0 @@ -<?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>SalesprojectCycleEdit_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <genericViewTemplate> - <name>Edit</name> - <editMode v="true" /> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>ea501589-7a01-42d3-b0f4-521041554ee7</name> - <entityField>DATE_START</entityField> - </entityFieldLink> - <entityFieldLink> - <name>5df5e35b-4967-4efd-98ac-a57f757e04b4</name> - <entityField>DATE_END</entityField> - </entityFieldLink> - <entityFieldLink> - <name>db138f88-0cc7-42d9-a5d6-2bfc4f13985c</name> - <entityField>TYPE</entityField> - </entityFieldLink> - <entityFieldLink> - <name>71891f0f-e610-4584-8936-f2249e99e7ac</name> - <entityField>VALUE</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - </children> -</neonView> diff --git a/neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod b/neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod deleted file mode 100644 index 55809e21f25a772051eff44caa23f2fdbc259d4a..0000000000000000000000000000000000000000 --- a/neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod +++ /dev/null @@ -1,32 +0,0 @@ -<?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>SalesprojectCycleFilter_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <filterable v="true" /> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <tableViewTemplate> - <name>Cycles</name> - <autoNewRow v="true" /> - <entityField>#ENTITY</entityField> - <columns> - <neonTableColumn> - <name>1f66befa-a479-437e-b68f-da3cac6fed90</name> - <entityField>DATE_START</entityField> - </neonTableColumn> - <neonTableColumn> - <name>5001e853-a479-4e63-a0c6-3021926402b6</name> - <entityField>TYPE</entityField> - </neonTableColumn> - <neonTableColumn> - <name>8a4c91ad-a1e4-4a94-acad-de232c7b0be7</name> - <entityField>VALUE</entityField> - </neonTableColumn> - </columns> - </tableViewTemplate> - </children> -</neonView> diff --git a/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod b/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod deleted file mode 100644 index 41114194e655c15ee0487f9e0a3d7df2d1043f9c..0000000000000000000000000000000000000000 --- a/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod +++ /dev/null @@ -1,28 +0,0 @@ -<?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>SalesprojectCyclePreview_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <cardViewTemplate> - <name>Header</name> - <titleField>VALUE</titleField> - <descriptionField>DATE_START</descriptionField> - <entityField>#ENTITY</entityField> - </cardViewTemplate> - <genericViewTemplate> - <name>Info</name> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>e77b903f-a06f-4437-9b25-693b6f2aa45f</name> - <entityField>DATE_END</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - </children> -</neonView> diff --git a/neonView/SalesprojectCycle_view/SalesprojectCycle_view.aod b/neonView/SalesprojectCycle_view/SalesprojectCycle_view.aod deleted file mode 100644 index edacdea2adf843ed29d30a7eb4850f3bcd4fd932..0000000000000000000000000000000000000000 --- a/neonView/SalesprojectCycle_view/SalesprojectCycle_view.aod +++ /dev/null @@ -1,23 +0,0 @@ -<?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>SalesprojectCycle_view</name> - <title>Milestones</title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <neonViewReference> - <name>c68c50b8-6ff9-4be4-ab1e-c8bd9b93f650</name> - <entityField>SalesprojectCycles</entityField> - <view>SalesprojectCycleFilter_view</view> - </neonViewReference> - <neonViewReference> - <name>b172fd14-209d-412f-9250-aeb0f37091b5</name> - <entityField>SalesprojectForecasts</entityField> - <view>SalesprojectForecastFilter_view</view> - </neonViewReference> - </children> -</neonView> diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod index 4f429107957c57843a11aaff1328c91c90cac815..d2651987d7b1400048898ae5d5ad86b2f5b670d3 100644 --- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod +++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod @@ -59,5 +59,10 @@ <entityField>Documents</entityField> <view>DocumentFilter_view</view> </neonViewReference> + <neonViewReference> + <name>349a82ad-4a83-4718-b37e-b0adf1ddb0b2</name> + <entityField>SalesprojectMilestones</entityField> + <view>SalesprojectMilestoneChart_view</view> + </neonViewReference> </children> </neonView> diff --git a/neonView/ObjectRelationTypePreview_view/ObjectRelationTypePreview_view.aod b/neonView/SalesprojectMilestoneChart_view/SalesprojectMilestoneChart_view.aod similarity index 61% rename from neonView/ObjectRelationTypePreview_view/ObjectRelationTypePreview_view.aod rename to neonView/SalesprojectMilestoneChart_view/SalesprojectMilestoneChart_view.aod index 0b02d9141e2ecf589fc746a1b7ad2547da75ed6b..5075336ab8a62209ae9b092900eec7b8f8496614 100644 --- a/neonView/ObjectRelationTypePreview_view/ObjectRelationTypePreview_view.aod +++ b/neonView/SalesprojectMilestoneChart_view/SalesprojectMilestoneChart_view.aod @@ -1,6 +1,6 @@ <?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>ObjectRelationTypePreview_view</name> + <name>SalesprojectMilestoneChart_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> <boxLayout> @@ -8,10 +8,13 @@ </boxLayout> </layout> <children> - <cardViewTemplate> - <name>header</name> - <titleField>SOURCE_RELATION_TITLE</titleField> + <multiDataChartViewTemplate> + <name>MilestoneChart</name> + <chartType>COLUMN</chartType> + <xAxis>VALUE</xAxis> + <yAxis>DaysCount</yAxis> + <categoryField>TYPE</categoryField> <entityField>#ENTITY</entityField> - </cardViewTemplate> + </multiDataChartViewTemplate> </children> </neonView> diff --git a/neonView/TaskFilter_view/TaskFilter_view.aod b/neonView/TaskFilter_view/TaskFilter_view.aod index 0b8c264401f9179e1080095d019415bb750cfad2..b075f1542cc2f91349f2aee9d820156dd96184cc 100644 --- a/neonView/TaskFilter_view/TaskFilter_view.aod +++ b/neonView/TaskFilter_view/TaskFilter_view.aod @@ -28,8 +28,8 @@ <children> <timelineViewTemplate> <name>TasksTimeline</name> - <dateField>START_DATE</dateField> - <titleField>SUBJECT</titleField> + <dateField>MATURITY_DATE</dateField> + <titleField>SUBJECT_DETAILS</titleField> <descriptionField>DESCRIPTION</descriptionField> <iconIdField>#ICON</iconIdField> <entityField>#ENTITY</entityField> @@ -64,7 +64,7 @@ </tableViewTemplate> <treeViewTemplate> <name>TasksTreetable</name> - <titleField>SUBJECT</titleField> + <titleField>SUBJECT_DETAILS</titleField> <descriptionField>DESCRIPTION</descriptionField> <iconField>#ICON</iconField> <entityField>#ENTITY</entityField> diff --git a/neonView/TaskMain_view/TaskMain_view.aod b/neonView/TaskMain_view/TaskMain_view.aod index 1c962435644b495ed5b00f2f0509b297d5cbc1e7..ac9d30a87c148300144507fe39e7274db8338ba3 100644 --- a/neonView/TaskMain_view/TaskMain_view.aod +++ b/neonView/TaskMain_view/TaskMain_view.aod @@ -41,10 +41,5 @@ <entityField>MainDocuments</entityField> <view>DocumentFilter_view</view> </neonViewReference> - <neonViewReference> - <name>37975d30-f449-4a9f-8eac-81dcad4bbf97</name> - <entityField>Links</entityField> - <view>TaskLinkFilter_view</view> - </neonViewReference> </children> </neonView> diff --git a/others/db_changes/Data_alias/basic/2019.2/AttributeKeyword.xml b/others/db_changes/Data_alias/basic/2019.2/AttributeKeyword.xml new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod index 2e627c2e517e6de8e51a348a72ea341be0d36ca5..35430f5089fee2c2b0e5c87d3278c5f9d34a897c 100644 --- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod +++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod @@ -2,7 +2,7 @@ <preferences xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="3.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/preferences/3.1.0"> <name>_____PREFERENCES_PROJECT</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <projectName>xRM-Basic2019</projectName> + <projectName>xRM-Basic5</projectName> <jditoMaxContentSize v="57671680" /> <calendarCategoriesEvent> <entry> diff --git a/process/ActivityTask_lib/process.js b/process/ActivityTask_lib/process.js index 8f7de2b78e5f70871594f05d7cf2f9c83b04c845..f68618c2379dddff760583ee455a00191d06b8a0 100644 --- a/process/ActivityTask_lib/process.js +++ b/process/ActivityTask_lib/process.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.vars"); import("system.util"); import("system.datetime"); diff --git a/process/Attribute_lib/process.js b/process/Attribute_lib/process.js index af3d24d9585b86cd16d243fb69b02a0087e47aaf..4833062c4d4339456153be1f9e59a7978ce05498 100644 --- a/process/Attribute_lib/process.js +++ b/process/Attribute_lib/process.js @@ -50,8 +50,8 @@ AttributeUtil.getPossibleAttributes = function (pObjectType, pIncludeGroups, pFi attrCond.andSqlCondition(filteredIdsCondition); } -// if (!pIncludeGroups) -// attrCond.and("ATTRIBUTE_TYPE != '" + $AttributeTypes.GROUP + "'"); + if (!pIncludeGroups) + attrCond.and("ATTRIBUTE_TYPE != '" + $AttributeTypes.GROUP + "'"); var attributes = db.array(db.COLUMN, attrCond.buildSql(attrSql)); diff --git a/process/Contact_lib/process.js b/process/Contact_lib/process.js index 7539546b86e240ee05c0c28df960fec4ef92a420..f533b09e7c845e0beb0501277af23ea1a42e228b 100644 --- a/process/Contact_lib/process.js +++ b/process/Contact_lib/process.js @@ -332,6 +332,17 @@ ContactUtils.getFullContactString = function() + " 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 diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index 82ea3eef6b21f0e6a8541a7021808c027235e9ed..881dbcdf80a726edd9f13f4d1ccd402719345ef1 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -6,7 +6,6 @@ import("Keyword_lib"); import("Sql_lib"); import("Proto_lib"); import("Contact_lib"); -import("system.logging"); /** * Methods to manage contexts. @@ -195,11 +194,22 @@ ContextSelector.create = function(pTableName, pIdField, pTitleExpression) return new ContextSelector(pTableName, pIdField, pTitleExpression); }; /** - * @return {String} full id field containing tablename and column + * @param {String} pField the fieldname that shall be returned as full string + * @return {String} full field containing tablename and the column; if the column itself is already a full qualified field that field is returned + */ +ContextSelector.prototype.getFullField = function(pField) +{ + if (SqlUtils.isFullFieldQualifier(pField)) + return pField; + else + return this.tableName + "." + pField; +}; +/** + * @return {String} full id field containing tablename and column; if the column itself is already a full qualified field that field is returned */ ContextSelector.prototype.getFullIdField = function() { - return this.tableName + "." + this.idField; + return this.getFullField(this.idField); }; /** * @return {String} full from-expression with tablename and join-part @@ -347,7 +357,7 @@ ContextUtils.getNameSubselectSql = function(pContextIdDbField, pRowIdDbField) var selectMap = ContextUtils.getSelectMap () for (let contextId in selectMap) { - select += "when '" + contextId + "' then (select " + selectMap[contextId].titleExpression + " from " + selectMap[contextId].getFullFromClause() + (pRowIdDbField ? " where " + selectMap[contextId].idField + " = " + pRowIdDbField : " ") + ") "; + select += "when '" + contextId + "' then (select " + selectMap[contextId].titleExpression + " from " + selectMap[contextId].getFullFromClause() + (pRowIdDbField ? " where " + selectMap[pContextId].getFullIdField() + " = " + pRowIdDbField : " ") + ") "; } select += "else 'Not defined in ContextUtils.getNameSql()!'"; @@ -382,7 +392,7 @@ ContextUtils.getContextDataSql = function(pContextId, pContactId, pWithDate, pAc var cond = SqlCondition.begin(); if (pContactId) { - cond.andPrepare(ownContextSelector.tableName + "." + ownContextSelector.contactIdField, pContactId) + cond.andPrepare(ownContextSelector.getFullField(ownContextSelector.contactIdField), pContactId) } if (pActive != undefined) @@ -408,7 +418,7 @@ ContextUtils.getContextDataSql = function(pContextId, pContactId, pWithDate, pAc pExcludedObjectIds.forEach(function(id) { - this.andPrepare(ownContextSelector.tableName + "." + ownContextSelector.idField, id, "# <> ?"); + this.andPrepare(ownContextSelector.getFullIdField(), id, "# <> ?"); }, exludedIdsCond) cond.andSqlCondition(exludedIdsCond); diff --git a/process/Data_lib/process.js b/process/Data_lib/process.js index fe628720ef18b4a5d94ab82884a9cc3bf2f4cd96..e6802ed44f10df422da714d12f634bafda9918e8 100644 --- a/process/Data_lib/process.js +++ b/process/Data_lib/process.js @@ -366,7 +366,7 @@ DataTree.prototype.addArray = function(pData, pManipulateNodeFn) DataTree.prototype.toArray = function(pMaxDepth) { var that = this; - // TODO: maybe implement without recursion to prevent stack overflow even on deep cycles... + // TODO: maybe implement without recursion to prevent stack overflow even on deep milestones... var treeArray = []; var tree = this._dataTree; diff --git a/process/Employee_lib/process.js b/process/Employee_lib/process.js index dac86b25c4f2515a8db0a6b58585a9026a6f1c46..17ca0efa8f9fb5878a1b5ff4599310c11d48f7b9 100644 --- a/process/Employee_lib/process.js +++ b/process/Employee_lib/process.js @@ -1,113 +1,116 @@ -import("system.db"); -import("Sql_lib"); -import("system.tools"); - -/** - * Provides functions for employees and users.j - * - * Do not create an instance of this! - * - * @class - */ -function EmployeeUtils () {} - -/** - * Returns the contact id of the current user - * - * @return the contact id - */ -EmployeeUtils.getCurrentContactId = function () -{ - var user = tools.getCurrentUser(); - return user ? user[tools.PARAMS][tools.CONTACTID] : null; -} - -/** - * Returns the username id of the current user - * - * @return the username - */ -EmployeeUtils.getCurrentUserName = function () -{ - var user = tools.getCurrentUser(); - return user ? user[tools.TITLE] : null; -} - -EmployeeUtils.sliceUserId = function (pUserId) -{ - return pUserId.substr(10, 36); -} - -/** - * generates a username from the firstname and lastname with the given structure - * - * @param {String} pFirstName - * @param {String} pLastName - * @param {String} pStructure the structure of the username, special characters: - * f - one letter of the firstname in lowercase - * F - one letter of the firstname in uppsercase - * l - one letter of the lastname in lowercase - * L - one letter of the lastname in uppsercase - * f+ - the complete firstname in lowercase - * F+ - the complete firstname - * l+ - the complete lastname in lowercae - * L+ - the complete lastname - * - * @return {String} the generated username - */ -EmployeeUtils.generateUserName = function (pFirstName, pLastName, pStructure) -{ - if (!pStructure || (!pFirstName && !pLastName)) - return null; - - var firstNameIndex = 0; - var lastNameIndex = 0; - var userName = pStructure.replace(/(f\+|l\+|f|l)/ig, function (type) - { - switch (type) - { - case "f+": - return pFirstName.toLowerCase() || ""; - case "F+": - return pFirstName || ""; - case "l+": - return pLastName.toLowerCase() || ""; - case "L+": - return pLastName || ""; - case "f": - return pFirstName.charAt(firstNameIndex++).toLowerCase() || ""; - case "F": - return pFirstName.charAt(firstNameIndex++).toUpperCase() || ""; - case "l": - return pLastName.charAt(lastNameIndex++).toLowerCase() || ""; - case "L": - return pLastName.charAt(lastNameIndex++).toUpperCase() || ""; - } - }); - - return userName; -} - -/** - * checks if an employee is used somewhere - * - * @param {String} pContactId the contact id of the user - * - * @return {boolean} if the employee has relations - */ -EmployeeUtils.hasRelations = function (pContactId) -{ - //sql queries with selects on tables where an employee can be used - var queries = [ - SqlCondition.begin() - .andPrepare("ACTIVITY.CREATOR", pContactId) - .buildSql("select 1 from ACTIVITY"), - SqlCondition.begin() - .andPrepare("TIMETRACKING.CONTACT_ID", pContactId) - .buildSql("select 1 from TIMETRACKING") - ]; - return queries.some(function (sql) - { - return db.cell(sql) != ""; - }); +import("system.db"); +import("Sql_lib"); +import("system.tools"); + +/** + * Provides functions for employees and users.j + * + * Do not create an instance of this! + * + * @class + */ +function EmployeeUtils () {} + +/** + * Returns the contact id of the current user + * + * @return the contact id + */ +EmployeeUtils.getCurrentContactId = function () +{ + var user = tools.getCurrentUser(); + return user ? user[tools.PARAMS][tools.CONTACTID] : null; +} + +/** + * Returns the username id of the current user + * + * @return the username + */ +EmployeeUtils.getCurrentUserName = function () +{ + var user = tools.getCurrentUser(); + return user ? user[tools.TITLE] : null; +} + +EmployeeUtils.sliceUserId = function (pUserId) +{ + return pUserId.substr(10, 36); +} + +/** + * generates a username from the firstname and lastname with the given structure + * + * @param {String} pFirstName + * @param {String} pLastName + * @param {String} pStructure the structure of the username, special characters: + * f - one letter of the firstname in lowercase + * F - one letter of the firstname in uppsercase + * l - one letter of the lastname in lowercase + * L - one letter of the lastname in uppsercase + * f+ - the complete firstname in lowercase + * F+ - the complete firstname + * l+ - the complete lastname in lowercae + * L+ - the complete lastname + * + * @return {String} the generated username + */ +EmployeeUtils.generateUserName = function (pFirstName, pLastName, pStructure) +{ + if (!pStructure || (!pFirstName && !pLastName)) + return null; + + var firstNameIndex = 0; + var lastNameIndex = 0; + var userName = pStructure.replace(/(f\+|l\+|f|l)/ig, function (type) + { + switch (type) + { + case "f+": + return pFirstName.toLowerCase() || ""; + case "F+": + return pFirstName || ""; + case "l+": + return pLastName.toLowerCase() || ""; + case "L+": + return pLastName || ""; + case "f": + return pFirstName.charAt(firstNameIndex++).toLowerCase() || ""; + case "F": + return pFirstName.charAt(firstNameIndex++).toUpperCase() || ""; + case "l": + return pLastName.charAt(lastNameIndex++).toLowerCase() || ""; + case "L": + return pLastName.charAt(lastNameIndex++).toUpperCase() || ""; + } + }); + + return userName; +} + +/** + * checks if an employee is used somewhere + * + * @param {String} pContactId the contact id of the user + * + * @return {boolean} if the employee has relations + */ +EmployeeUtils.hasRelations = function (pContactId) +{ + //sql queries with selects on tables where an employee can be used + var queries = [ + SqlCondition.begin() + .andPrepare("ACTIVITY.CREATOR", pContactId) + .buildSql("select 1 from ACTIVITY"), + SqlCondition.begin() + .andPrepare("TASK.REQUESTOR_CONTACT_ID", pContactId) + .buildSql("select 1 from TASK"), + SqlCondition.begin() + .andPrepare("TIMETRACKING.CONTACT_ID", pContactId) + .buildSql("select 1 from TIMETRACKING") + ]; + return queries.some(function (sql) + { + return db.cell(sql) != ""; + }); } \ No newline at end of file diff --git a/process/JditoFilter_lib/process.js b/process/JditoFilter_lib/process.js index 64d5ea5a3107407acc64475b059ccb2a721858a7..47338a2ea2b09bb468ef588daa1784a150f5fad0 100644 --- a/process/JditoFilter_lib/process.js +++ b/process/JditoFilter_lib/process.js @@ -1,112 +1,199 @@ - -/** - * object for filtering records - * - * @param {Array} pColumns the column names - * @param {String|Object} pFilter the filter object - */ -function JditoFilter (pColumns, pFilter) -{ - var columnMap = {}; - pColumns.forEach(function (row, i) - { - columnMap[row] = i; - }); - this._columnMap = columnMap; - - if (pFilter.length) //check if pFilter is a string - pFilter = JSON.parse(pFilter); - - this._operator = pFilter.operator; - this._filters = pFilter.childs; -} - -/** - * tests the given row if it matches the filter - * - * @param {Array} pRow one record - * - * @return {boolean} true, if it matches the condition - */ -JditoFilter.prototype.checkRecord = function (pRow) -{ - if (this._filters.length == 0) - return true; - - if (this._operator == "AND") - return this._filters.every(_testFn, this); - - return this._filters.some(_testFn, this); - - function _testFn (pFilter) - { - let value = pRow[this._columnMap[pFilter.name]]; - return this._testValue(value, (pFilter.key || pFilter.value), pFilter.operator); - } -} - -/** - * compares two values with the given operator - */ -JditoFilter.prototype._testValue = function (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. You should only use this - * if there is no other, faster way to filter the records - * - * Do not instanciate this! - * - * @class - */ -function JditoFilterUtils () {} - -/** - * Filters the given records - * - * @param {Array} pColumns one dimensional array with all column names, the order has to match the columns of pRecords - * @param {Array} pRecords two dimensional array with all records - * @param {String|Object} pFilter the value of $local.filter - * - * @return {Array} the filtered records - */ -JditoFilterUtils.filterRecords = function (pColumns, pRecords, pFilter) -{ - if (!pFilter) - return pRecords; - - var filter = new JditoFilter(pColumns, pFilter); - - return pRecords.filter(function (row) - { - return this.checkRecord(row); - }, filter); +import("Sql_lib"); + +/** + * object for filtering records + * + * @param {Array} pColumns the column names + * @param {String|Object} pFilter the filter object + */ +function JditoFilter (pColumns, pFilter) +{ + var columnMap = {}; + pColumns.forEach(function (row, i) + { + columnMap[row] = i; + }); + this._columnMap = columnMap; + + if (pFilter.length) //check if pFilter is a string + pFilter = JSON.parse(pFilter); + + this._operator = pFilter.operator; + this._filters = pFilter.childs; +} + +/** + * tests the given row if it matches the filter + * + * @param {Array} pRow one record + * + * @return {boolean} true, if it matches the condition + */ +JditoFilter.prototype.checkRecord = function (pRow) +{ + if (this._filters.length == 0) + return true; + + if (this._operator == "AND") + return this._filters.every(_testFn, this); + + return this._filters.some(_testFn, this); + + function _testFn (pFilter) + { + let value = pRow[this._columnMap[pFilter.name]]; + return this._testValue(value, (pFilter.key || pFilter.value), pFilter.operator); + } +} + +/** + * compares two values with the given operator + */ +JditoFilter.prototype._testValue = function (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. You should only use this + * if there is no other, faster way to filter the records + * + * Do not instanciate this! + * + * @class + */ +function JditoFilterUtils () {} + +/** + * Filters the given records + * + * @param {Array} pColumns one dimensional array with all column names, the order has to match the columns of pRecords + * @param {Array} pRecords two dimensional array with all records + * @param {String|Object} pFilter the value of $local.filter + * + * @return {Array} the filtered records + */ +JditoFilterUtils.filterRecords = function (pColumns, pRecords, pFilter) +{ + if (!pFilter) + return pRecords; + + var filter = new JditoFilter(pColumns, pFilter); + + return pRecords.filter(function (row) + { + return this.checkRecord(row); + }, filter); +} + +JditoFilterUtils.getSqlCondition = function (pFilter, pTable, pColumnMap) +{ + var condition = new SqlCondition(); + + if (!pFilter) + return condition; + if (pFilter.length) //check if pFilter is a string + pFilter = JSON.parse(pFilter); + 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) + 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/Keyword_lib/process.js b/process/Keyword_lib/process.js index a4527c2594eb3c43724bfa790cb6de3ffd803294..971a45c6306a22c4b6508ffbe6a0fd8cfc834aa3 100644 --- a/process/Keyword_lib/process.js +++ b/process/Keyword_lib/process.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.vars"); import("system.SQLTYPES"); import("system.db"); @@ -189,6 +188,46 @@ KeywordUtils.getEntryNamesAndIdsByContainer = function(pContainerName) return list; }; +/** + * checks, if a specific keyword exists + * + * @param {String} pKeyId the key of an element within a containerName - this is the value that is stored in the reference-table (e.g. "DE") + * @param {String} pContainerName specifies the type of the keyword and therefore the list elements; + * e.g. "COUNTRY"; use an entry of the $KeywordRegistry here + * + * @return {Boolean} + */ +KeywordUtils.exists = function(pKeyId, pContainerName) +{ + var sql = SqlCondition.begin() + .andPrepare("AB_KEYWORD_ENTRY.KEYID", pKeyId) + .andPrepare("AB_KEYWORD_ENTRY.CONTAINER", pContainerName) + .buildSql("select count(*) from AB_KEYWORD_ENTRY", "1=2") + return parseInt(db.cell(sql)) > 0; +}; + +/** + * get the translated container name. + * + * @param {String} pContainerName specifies the type of the keyword and therefore the list elements; + * e.g. "COUNTRY"; use an entry of the $KeywordRegistry here + * @return translated name, if it exists in the switch case + */ +KeywordUtils.getTranslatedContainer = function(pContainerName) +{ + switch (pContainerName) + { + case "SalesprojectPhase": + return translate.text("Phase"); + case "SalesprojectState": + return translate.text("State"); + break; + default: + return "Please add " + pContainerName + " to the switch case in Salesproject_lib"; + } + +} + /** * object that provides featrues for a single keyword attribute; initalizes itself on creation with a specific keyword-attribute * @@ -434,7 +473,7 @@ function LegacyKeywordUtils(){} ,_createKeywordEntry("16", translate.text("Lead", locale)) ]); break; - case "SALESPROJECT.CYCLE.TYPE": + case "SALESPROJECT.MILESTONE.TYPE": valueContainer = _createKeywordEntriesContainer([ _createKeywordEntry("1", translate.text("Phase", locale), null, {keyword: "SALESPROJECT.PHASE"}) ,_createKeywordEntry("2", translate.text("State", locale), null, {keyword: "SALESPROJECT.STATE"}) diff --git a/process/ObjectRelation_lib/process.js b/process/ObjectRelation_lib/process.js index 710f0c64e95ef07b4835a417bb2f5a216ee9d4ae..336694ba5c9a214c14842ea3d212c2f632b5d8e9 100644 --- a/process/ObjectRelation_lib/process.js +++ b/process/ObjectRelation_lib/process.js @@ -15,10 +15,13 @@ function ObjectRelationUtils() {} * * @param {String} [pObjectType=undefined] the object type to load the relation types for.] * @param {Boolean} [pFullInfo=false] return also RELATION_TYPE, direction (normal, reverse, same), hierarchy, OBJECT_TYPE dest, OBJECT_TYPE source, objectrelationtypeId1, objectrelationtypeId2, side, objectrelationtypeId, other title + * @param {Boolean} [pOnlyFirstSide=false] load all types only for the first side. + * @param {String} [pRelationTypeId=undefined] load only the specified relationType + * @param {Boolean} [pDummyField=false] empty dummy-field needed for Type2Enabled_proxy-field in ObjectRelationType_entity to get changes of the Type2Enabled_proxy-field in the onUpdate Process * * @return {String[][]} */ -ObjectRelationUtils.getPossibleRelationTypes = function(pObjectType, pFullInfo, pOnlyFirstSide, pRelationTypeId) +ObjectRelationUtils.getPossibleRelationTypes = function(pObjectType, pFullInfo, pOnlyFirstSide, pRelationTypeId, pDummyField) { var sql = " from AB_OBJECTRELATIONTYPE main \n\ left join AB_OBJECTRELATIONTYPE type2 on (type2.AB_OBJECTRELATIONTYPEID <> main.AB_OBJECTRELATIONTYPEID and type2.RELATION_TYPE = main.RELATION_TYPE) "; @@ -78,7 +81,7 @@ ObjectRelationUtils.getPossibleRelationTypes = function(pObjectType, pFullInfo, else type2.AB_OBJECTRELATIONTYPEID end objectrelationtypeId2, \n\ main.SIDE,\n\ case when type2.AB_OBJECTRELATIONTYPEID is null then main.AB_OBJECTRELATIONTYPEID else type2.AB_OBJECTRELATIONTYPEID end,\n\ - type2.RELATION_TITLE" + sql; + type2.RELATION_TITLE" + (pDummyField ? ", ''" : "") + sql; } // full info: @@ -90,12 +93,13 @@ ObjectRelationUtils.getPossibleRelationTypes = function(pObjectType, pFullInfo, * returns the objectrelationtypeId, title, RELATION_TYPE, direction (normal, reverse, same), hierarchy, OBJECT_TYPE dest, OBJECT_TYPE source, objectrelationtypeId1, objectrelationtypeId2, side,objectrelationtypeId, other title * * @param {String} pRelationTypeId the RelationTypeId to load the full relation type for. + * @param {Boolean} [pDummyField=false] empty dummy-field needed for Type2Enabled_proxy-field in ObjectRelationType_entity to get changes of the Type2Enabled_proxy-field in the onUpdate Process * * @return {String[][]} */ -ObjectRelationUtils.getRelationType = function(pRelationTypeId) +ObjectRelationUtils.getRelationType = function(pRelationTypeId, pDummyField) { - var data = ObjectRelationUtils.getPossibleRelationTypes(undefined, true, false, pRelationTypeId); + var data = ObjectRelationUtils.getPossibleRelationTypes(undefined, true, false, pRelationTypeId, pDummyField); if (data.length > 0) return data[0]; else diff --git a/process/Product_lib/process.js b/process/Product_lib/process.js index 4780833eed4d897a49e271e49349fde17c00d5ca..cc2645e75e5f32a2205e6000f598f16c6536b024 100644 --- a/process/Product_lib/process.js +++ b/process/Product_lib/process.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.util"); import("system.SQLTYPES"); import("system.datetime"); diff --git a/process/Salesproject_lib/process.js b/process/Salesproject_lib/process.js index 380aecbc0df64c6f1984150721286c52dfcecdf7..ba78c7709d79f194884fe965eb7a80bf68a00ce1 100644 --- a/process/Salesproject_lib/process.js +++ b/process/Salesproject_lib/process.js @@ -1,3 +1,4 @@ +import("Sql_lib"); import("system.neon"); import("system.vars"); import("system.util"); @@ -40,17 +41,28 @@ Salesproject.validateProjectNumber = function(projectNumber) { * Insert a new milestone. * * @param {String} salesprojectId of the salesproject - * @param {Integer} type can be any value of the keyword SALESPROJECT.CYCLE.TYPE + * @param {Integer} type can be any value of the keyword SALESPROJECT.MILESTONE.TYPE * @param {Integer} value value of the phase or state - * @param {Boolean} notifyForecast if true, notify user to update the forecast + * @param {Boolean} [notifyForecast=false] if true, notify user to update the forecast * * @result {Boolean} true if inserted, else false */ Salesproject.insertMilestone = function(salesprojectId, type, value, notifyForecast) { - if (LegacyKeywordUtils.createKeyword("SALESPROJECT.CYCLE.TYPE").exists(type)) { + if (KeywordUtils.exists(value, type)) { + db.updateData( + "SALESPROJECT_MILESTONE", + ["DATE_END"], + null, + [vars.get("$sys.date")], + SqlCondition.begin() + .andPrepare("SALESPROJECT_MILESTONE.SALESPROJECT_ID", salesprojectId) + .andPrepare("SALESPROJECT_MILESTONE.TYPE", type) + .and("SALESPROJECT_MILESTONE.DATE_END is null") + .build("1=2")); + db.insertData( - "SALESPROJECT_CYCLE", - ["SALESPROJECT_CYCLEID", "SALESPROJECT_ID", "TYPE", "VALUE", "DATE_START"], + "SALESPROJECT_MILESTONE", + ["SALESPROJECT_MILESTONEID", "SALESPROJECT_ID", "TYPE", "VALUE", "DATE_START"], null, [util.getNewUUID(), salesprojectId, type, value, vars.get("$sys.date")]); if (notifyForecast) { @@ -92,4 +104,4 @@ Salesproject.createNewSalesproject= function(pRelationId) params["ContactId_param"] = pRelationId; neon.openContext("Salesproject", null, null, neon.OPERATINGSTATE_NEW, params); -} +} \ No newline at end of file diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index ffeaa776d32b61b284bf2447b4ded80a40b4c140..4c68f069fb8f6417e6ce3b78795cc4f0cc8b2091 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -1033,42 +1033,129 @@ SqlMaskingUtils.prototype.yearFromDate = function(pField) return retSql; } +/** + * functions for various Sql-actions + * Do not create an instance of this! + * + * @class + * @static + */ function SqlUtils() {} -SqlUtils.getSingleColumnType = function(fieldOrTableName, columnName, alias) { - var tableName, fieldVarType; - if (columnName == undefined){ - fieldVarType = typeof(fieldOrTableName); - if (fieldVarType == "string") { - fieldOrTableName = text.split(fieldOrTableName, "\\."); - } else if (fieldVarType != "object") { - throw new TypeError(translate.text("${SQL_LIB_WRONG_FIELD_TYPE}")); +/** +* parses given name of table and name of column to clearly find out the tablename and columnanme +* +* @param {String|Array} pFieldOrTableName you've got several possibilites to pass here: +* <br/> 1. the name of the table if also a pColumnName is specified +* <br/> 2. the name of the table and columname as "tablename.columnname" (e.g. "ORGANISATION.NAME") if no pColumnName is specified +* <br/> 3. an array with 2 elements: [tablename, columnname] (e.g. ["ORGANISATION", "NAME"]) if no pColumnName is specified +* <br/> Everything else will raise an error +* +* @param {String} [pColumnName] depending on pFieldOrTableName this should be undefined/null or the name of a column +* +* @return {Object|TypeError} TypeError if something wrong has been passed or returns a object with these properties: +* 1. "table" which is the tablename +* 2. "column" which is the columnname +* e.g. {table: "ORGANISATION", column: "NAME"} +* +* +*/ +SqlUtils._parseFieldQualifier = function(pFieldOrTableName, pColumnName) +{ + var tableName, columnName; + if (pColumnName != undefined) + { + tableName = pFieldOrTableName; + columnName = pColumnName; + } + else + { + var fnName = "SqlUtils._parseFieldQualifier";//for return errors + var fieldVarType = typeof(pFieldOrTableName); + if (fieldVarType == "string") + { + pFieldOrTableName = text.split(pFieldOrTableName, "\\."); + } + else if (fieldVarType != "object") //check for object since there exists JavaArrays and JavaScript arrays which are both valid + { + return new TypeError(translate.withArguments("[%0]%1 has to be a string or array but it is %2", [fnName, "pFieldOrTableName", + fieldVarType])); } - if (fieldOrTableName.hasOwnProperty("length")) { - if (fieldOrTableName.length == 2) { + if (pFieldOrTableName.hasOwnProperty("length")) + { + if (pFieldOrTableName.length != 2) + return new TypeError(translate.withArguments("[%0]has now an incorrect length; estimated 2 elements but got %1", [ + fnName, pFieldOrTableName.length ])); - } else { - throw new TypeError(translate.text("${SQL_LIB_WRONG_FIELD_TYPE}")) - } - tableName = fieldOrTableName[0]; - columnName = fieldOrTableName[1]; + tableName = pFieldOrTableName[0]; + columnName = pFieldOrTableName[1]; } - else - throw new TypeError(translate.text("${SQL_LIB_WRONG_FIELD_TYPE}")); + else //check for object happens since there exists JavaArrays and JavaScript arrays which are both valid + return new TypeError(translate.withArguments("[%0]%1 is an object but seems not to be a valid array or array-like", [ + fnName, "pFieldOrTableName"])); } - else - tableName = fieldOrTableName; if (typeof(columnName) != "string") - throw new TypeError(translate.text("${SQL_LIB_WRONG_FIELD_TYPE}")); + return new TypeError(translate.withArguments("[%0]the columnName is not a string after interpreting", [fnName])); if (typeof(tableName) != "string") - throw new TypeError(translate.text("${SQL_LIB_WRONG_FIELD_TYPE}")); + return new TypeError(translate.withArguments("[%0]the tableName is not a string after interpreting", [fnName])); - if (alias == undefined) - alias = db.getCurrentAlias(); + return { + table: tableName, + column: columnName + }; +}; + + +/** +* determines if given values match a full field qualifier (name of table and name of column) +* +* @param {String|Array} pFieldOrTableName you've got several possibilites to pass here: +* <br/> 1. the name of the table if also a pColumnName is specified +* <br/> 2. the name of the table and columname as "tablename.columnname" (e.g. "ORGANISATION.NAME") if no pColumnName is specified +* <br/> 3. an array with 2 elements: [tablename, columnname] (e.g. ["ORGANISATION", "NAME"]) if no pColumnName is specified +* <br/> Everything else will raise an error +* +* @param {String} [pColumnName] depending on pFieldOrTableName this should be undefined/null or the name of a column +* +* @return {Boolean} returns true if it's a full qualifier or false if not +* +*/ +SqlUtils.isFullFieldQualifier = function(pFieldOrTableName, pColumnName) +{ + var parsed = SqlUtils._parseFieldQualifier(pFieldOrTableName, pColumnName); + if (parsed instanceof TypeError) + return false; + return true; +}; + +/** +* determines the type of a single database column in a table; if you want to get several columntypes at once use db.getColumnTypes instead +* +* @param {String|Array} pFieldOrTableName you've got several possibilites to pass here: +* <br/> 1. the name of the table if also a pColumnName is specified +* <br/> 2. the name of the table and columname as "tablename.columnname" (e.g. "ORGANISATION.NAME") if no pColumnName is specified +* <br/> 3. an array with 2 elements: [tablename, columnname] (e.g. ["ORGANISATION", "NAME"]) if no pColumnName is specified +* <br/> Everything else will raise an error +* +* @param {String} [pColumnName] depending on pFieldOrTableName this should be undefined/null or the name of a column +* @param {String} [pAlias=the current alias] Database-Aliasname, where the SQL-Statement shall be executed; default is the current dbalias +* +* @throws TypeError if a wrong format is passed as table/column-combination +* +* @return {Number} returns the corresponding SQLTYPES-value +* +*/ +SqlUtils.getSingleColumnType = function(pFieldOrTableName, pColumnName, pAlias) { + var fields = SqlUtils._parseFieldQualifier(pFieldOrTableName, pColumnName); + if (fields instanceof TypeError) + throw fields; + + if (pAlias == undefined) + pAlias = db.getCurrentAlias(); - return db.getColumnTypes(tableName, [columnName], alias)[0]; + return db.getColumnTypes(fields.table, [fields.column], pAlias)[0]; }; /** diff --git a/process/StandardObject_lib/process.js b/process/StandardObject_lib/process.js index 4e39fc12e4b74103b26e936065aa1367993c2427..11ad559a925e55d2baa3d5b2c3216b4d30751130 100644 --- a/process/StandardObject_lib/process.js +++ b/process/StandardObject_lib/process.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.db"); import("Keyword_lib"); import("KeywordRegistry_basic");