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 98f078c1634736a5edf560f8ec3e9fbe68af7c0e..696a1530088850673a2bf9f11448cd27a197ce00 100644 --- a/.liquibase/Data_alias/basic/2019.2/changelog.xml +++ b/.liquibase/Data_alias/basic/2019.2/changelog.xml @@ -132,15 +132,21 @@ <include relativeToChangelogFile="true" file="update_Keyword_Essentials.xml" /> <include relativeToChangelogFile="true" file="Contactmanagement_added_ImageBlobs.xml" /> - + <!-- 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="CampaignManagement/create_campaign.xml"/> <include relativeToChangelogFile="true" file="CampaignManagement/create_campaignStep.xml"/> <include relativeToChangelogFile="true" file="CampaignManagement/create_campaignParticipant.xml"/> <include relativeToChangelogFile="true" file="CampaignManagement/create_campaignParticipantLog.xml"/> <include relativeToChangelogFile="true" file="CampaignManagement/create_campaignState.xml"/> <include relativeToChangelogFile="true" file="CampaignManagement/create_campaignStepState.xml"/> -</databaseChangeLog> \ No newline at end of file +</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/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 931f020236b7c094f01a827689b6f449611009b4..b541a63604568f96ca5af924ff5725964efd9208 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -2702,109 +2702,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> @@ -5982,6 +5879,110 @@ </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> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> <entityDb> <name>CAMPAIGNPARTICIPANT</name> <dbName></dbName> 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/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/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/Attribute_entity/Attribute_entity.aod b/entity/Attribute_entity/Attribute_entity.aod index 7a53655d326d89c0f289e70d22176c8ed389a346..27bd01462c6cfe52e580468756201a33b84bd200 100644 --- a/entity/Attribute_entity/Attribute_entity.aod +++ b/entity/Attribute_entity/Attribute_entity.aod @@ -278,6 +278,10 @@ </entityParameter> </children> </entityConsumer> + <entityField> + <name>IMAGE</name> + <contentType>IMAGE</contentType> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> 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/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 f01081e61fe46561cf416fe70f216adc920c205e..3a3330c16589bac7f545e94ff4accf9865cc3b1d 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> <entityDependency> <name>b5c39776-509e-4758-8d05-a64eac4e7f38</name> <entityName>CampaignStep_entity</entityName> 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 78bb374858de35e55f8003509b94d9bcc861e735..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"); @@ -18,6 +17,6 @@ if (usageCount <= 0) } else { - // TODO: server hängt bei question.showMessage + // TODO: Show message hier nicht möglich: mit Grant-Prozess ausführung komplett verhindern, wenn es diese gibt. //question.showMessage(translate.withArguments("There are still %0 relations using the type %1.", [usageCount, translate.text(vars.get("$field.SOURCE_RELATION_TITLE")) + " -> " + translate.text(vars.get("$field.DEST_RELATION_TITLE"))]), question.WARNING, translate.text("Cannot remove relation type")) } \ No newline at end of file diff --git a/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js b/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js index 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 4df0c2df9ece10a5c2e64a8506ac0f0597a0e174..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); } @@ -82,7 +89,7 @@ if (usageCount <= 0) } else { - // TODO: server hängt bei question.showMessage + // TODO: Show message hier nicht möglich: mit Grant-Prozess ausführung komplett verhindern, wenn es diese gibt. //question.showMessage(translate.withArguments("There are still %0 relations using the type %1.", [usageCount, translate.text(vars.get("$field.SOURCE_RELATION_TITLE")) + " -> " + translate.text(vars.get("$field.DEST_RELATION_TITLE"))]), question.WARNING, translate.text("Cannot remove relation type")) } 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_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/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/objects1/children/objecttype_param/valueProcess.js b/entity/ObjectRelation_entity/entityfields/objects1/children/objecttype_param/valueProcess.js deleted file mode 100644 index 0e35811c9fc30b9f87c3e4dda4235787fb0066f7..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/objects1/children/objecttype_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.OBJECT1_TYPE")) \ 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/providertype_param/valueProcess.js b/entity/ObjectRelation_entity/entityfields/providertype_param/valueProcess.js deleted file mode 100644 index 981503eee34d83611c7bf484a2fab5e86840bf03..0000000000000000000000000000000000000000 --- a/entity/ObjectRelation_entity/entityfields/providertype_param/valueProcess.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string("none"); \ No newline at end of file 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/object2/children/objecttype_param/valueProcess.js b/entity/ObjectTree_entity/entityfields/info/tooltipProcess.js similarity index 51% rename from entity/ObjectRelation_entity/entityfields/object2/children/objecttype_param/valueProcess.js rename to entity/ObjectTree_entity/entityfields/info/tooltipProcess.js index e4c1084f9a07683a0ceaab1f42521b8a2819c3dc..702c61b00fa47d188e32deb347b70106f4fb9d29 100644 --- a/entity/ObjectRelation_entity/entityfields/object2/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.OBJECT2_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..3e594fdf6c0dd8614fd4b85533e42f1ba771bb8c 100644 --- a/entity/Offer_entity/Offer_entity.aod +++ b/entity/Offer_entity/Offer_entity.aod @@ -728,30 +728,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 +866,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/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/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 28fb3becb19e236812a86c4a4b6762bea4d35a9e..0d7643173af7613e0f3e739c5e449d858d44cbed 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 d59f95c32a0b786ff89b9419b5f0a10bededddea..bd40b44a11b1920bb4f75febd9933345c6472eb9 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/objectrelations/children/providertype_param/valueProcess.js b/entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js similarity index 52% rename from entity/ObjectRelation_entity/entityfields/objectrelations/children/providertype_param/valueProcess.js rename to entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js index 4a2d2e1c96782b8407f30181246efb90a9efd35a..e5c82e9c86a2c395736339cb57fe1e2fede85a2e 100644 --- a/entity/ObjectRelation_entity/entityfields/objectrelations/children/providertype_param/valueProcess.js +++ b/entity/SalesprojectMilestone_entity/recordcontainers/db/recordfieldmappings/parent.value/expression.js @@ -1,3 +1,2 @@ import("system.result"); - -result.string("tree"); \ 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..370f210a8fd53d25f1f55b93cb6f94af250d0fbf 100644 --- a/entity/Task_entity/Task_entity.aod +++ b/entity/Task_entity/Task_entity.aod @@ -25,6 +25,7 @@ <entityField> <name>SUBJECT</name> <title>subject</title> + <linkedContext>Task</linkedContext> <mandatory v="true" /> </entityField> <entityField> 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 d250a6d427d58a4ba364bb28ef05d464a9d5d4df..8d4e21b1c94884c183dfc6af1235e605495611cd 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -2916,6 +2916,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 9689aac09eed78dfb192053f2d07675e5abfad12..2b4091c0772e3861ad6a8c9fd33c009e29243e7c 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> @@ -50,6 +54,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> @@ -2177,6 +2185,10 @@ <key>Spain</key> <value>Spanien</value> </entry> + <entry> + <key>ObjectRelationType</key> + <value>Beziehungstyp</value> + </entry> <entry> <key>Palau</key> <value>Palau</value> @@ -3661,11 +3673,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> @@ -3684,6 +3696,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> <entry> <key>Approved</key> <value>Freigegeben</value> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 2308d3644bfcf22d29914f8641ee4354f058d803..a5fe0c8172457cc1d14a011fa076416828b4b51e 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -2947,6 +2947,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 5e82a5275611386b972a0109437cf5a6a97dbf9d..c90b46ece5109ab161d5df449e410baa5bcfc690 100644 --- a/neonContext/ObjectRelationType/ObjectRelationType.aod +++ b/neonContext/ObjectRelationType/ObjectRelationType.aod @@ -3,9 +3,9 @@ <name>ObjectRelationType</name> <title>Relation type</title> <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:SPLIT</icon> <filterview>ObjectRelationTypeFilter_view</filterview> <editview>ObjectRelationTypeEdit_view</editview> - <preview>ObjectRelationTypePreview_view</preview> <entity>ObjectRelationType_entity</entity> <references> <neonViewReference> @@ -16,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 e9f268d0105e123f791eb8715f7fd8f107d2ea6b..fd33556f856997695ea211f98288dd4a7d791259 100644 --- a/neonView/ActivityFilter_view/ActivityFilter_view.aod +++ b/neonView/ActivityFilter_view/ActivityFilter_view.aod @@ -63,6 +63,7 @@ <iconIdField>DIRECTION_ICON</iconIdField> <hideTime v="true" /> <entityField>#ENTITY</entityField> + <maxDBRow v="400" /> </timelineViewTemplate> <tableViewTemplate> <name>ActivitiesTable</name> 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 deleted file mode 100644 index 9056b55d310ac4338db187dfe63c8eb50a2dea49..0000000000000000000000000000000000000000 --- a/neonView/ActivityTimeline_view/ActivityTimeline_view.aod +++ /dev/null @@ -1,20 +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> - <entityField>#ENTITY</entityField> - </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/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..a04bd4d99520afa22000c81decd2b2f623d7caaa 100644 --- a/neonView/TaskFilter_view/TaskFilter_view.aod +++ b/neonView/TaskFilter_view/TaskFilter_view.aod @@ -28,7 +28,7 @@ <children> <timelineViewTemplate> <name>TasksTimeline</name> - <dateField>START_DATE</dateField> + <dateField>MATURITY_DATE</dateField> <titleField>SUBJECT</titleField> <descriptionField>DESCRIPTION</descriptionField> <iconIdField>#ICON</iconIdField> 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/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/Context_lib/process.js b/process/Context_lib/process.js index d64c9583f3cd1855ebc4019d87982c79e96a719b..6f9f0b718ceeb526e62bf6371f381a78d93b665b 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 @@ -359,7 +369,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()!'"; @@ -394,7 +404,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) @@ -420,7 +430,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/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");